Changeset 8107 in spip-zone


Ignore:
Timestamp:
Dec 18, 2006, 2:42:40 PM (12 years ago)
Author:
cedric@…
Message:

utiliser l'API autoriser pour tester les autorisations insertion ou modification
l'upload d'un doc depuis l'espace privé faisait planter (securite du core !)
un cadre par ci

Location:
_plugins_/_stable_/forms/forms_et_tables_1_9_1
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/exec/template/tables_affichage.php

    r7483 r8107  
    118118       
    119119        debut_droite();
     120        echo debut_cadre_relief();
    120121        if ($id_donnee){
    121122                $instituer_forms_donnee = charger_fonction('instituer_forms_donnee','inc');
     
    123124                echo $instituer_forms_donnee($id_form,$id_donnee,$row['statut']);
    124125        }
     126        echo fin_cadre_relief();
    125127
    126128        echo "<div class='verdana2'>$formulaire</div>";
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/forms_options.php

    r7907 r8107  
    1717include_spip('base/forms');
    1818
    19 function autoriser_form($faire, $type='', $id=0, $qui = NULL, $opt = NULL) {
     19function autoriser_form_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL) {
    2020        if ($type=='form')
    2121                if ($faire=='administrer'){
     
    2525                        return ($qui['statut'] == '0minirezo');
    2626        return false;
     27}
     28function autoriser_form_modifierdonnee_dist($faire, $type, $id_form, $qui, $opt) {
     29        // un admin dans le back office a toujours le droit de modifier
     30        if (($qui['statut'] == '0minirezo')&&!_DIR_RESTREINT) return true;
     31        $result = spip_query("SELECT * FROM spip_forms WHERE id_form="._q($id_form));
     32        if (!$row = spip_fetch_array($result)) return false;
     33        if (!$opt['id_donnee']) return false;
     34        $dejareponse=Forms_verif_cookie_sondage_utilise($id_form);
     35        if (($row['modifiable'] == 'oui') && $dejareponse) {
     36                $q = "SELECT id_donnee FROM spip_forms_donnees WHERE id_form="._q($id_form).
     37                        " AND (cookie="._q($cookie)." OR id_auteur="._q($id_auteur).")";
     38                //si unique, ignorer id_donnee, si pas id_donnee, ne renverra rien
     39                if ($row['multiple']=='oui' || !_DIR_RESTREINT) $q.=" AND id_donnee="._q($opt['id_donnee']);
     40                $r=spip_query($q);
     41                if ($r=spip_fetch_array($r)) return true;
     42        }
     43        return false;
     44}
     45function autoriser_form_insererdonnee_dist($faire, $type, $id_form, $qui, $opt) {
     46        // un admin dans le back office a toujours le droit d'inserer
     47        if (($qui['statut'] == '0minirezo')&&!_DIR_RESTREINT) return true;
     48        $result = spip_query("SELECT * FROM spip_forms WHERE id_form="._q($id_form));
     49        if (!$row = spip_fetch_array($result)) return false;
     50        if ($row['multiple']=='oui') return true;
     51        $dejareponse=Forms_verif_cookie_sondage_utilise($id_form);
     52        if ($dejareponse) return false;
     53        $r=spip_query("SELECT id_donnee FROM spip_forms_donnees WHERE id_form="._q($id_form)." AND (cookie="._q($cookie)." OR id_auteur="._q($id_auteur).")");
     54        if ($r=spip_fetch_array($r)) return false;
     55        return true;
    2756}
    2857
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/formulaires/forms_structure.html

    r7904 r8107  
    4545                                                class='[(#OBLIGATOIRE|=={oui}|?{forml,formo})][(#ENV**{erreur}|forms_valeur{#CHAMP}|?{' ',''}) champ_obli_oubli]'
    4646                                                size='40' />
     47                                        [(#ENV**{valeurs}|forms_valeur{#CHAMP,''})]
    4748                                ]
    4849                                [(#TYPE|=={select}|?{' ',''}) #SET{afficher,0}
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/inc/forms.php

    r7920 r8107  
    175175       
    176176        function Forms_deplacer_fichier_form($source, $dest) {
     177                /* le core interdit l'upload depuis l'espace prive... pourquoi tant de haine ?
    177178                include_spip('inc/getdocument');
    178179                if ($ok = deplacer_fichier_upload($source, $dest, true))
    179180                        if (file_exists($source)) // argument move pas pris en compte avant spip 1.9.2
    180                                 @unlink($source);
    181        
     181                                @unlink($source);*/
     182                $ok = @rename($source, $dest);
     183                if (!$ok) $ok = @move_uploaded_file($source, $dest);
     184                if ($ok)
     185                        @chmod($dest, _SPIP_CHMOD & ~0111);
     186                else {
     187                        $f = @fopen($dest,'w');
     188                        if ($f) {
     189                                fclose ($f);
     190                        } else {
     191                                include_spip('inc/headers');
     192                                redirige_par_entete(generer_url_action("test_dirs", "test_dir=". dirname($dest), true));
     193                        }
     194                        @unlink($dest);
     195                }
    182196                return $ok;
    183197        }
     
    433447        function Forms_enregistrer_reponse_formulaire($id_form, $id_donnee, &$erreur, &$reponse, $script_validation = 'valide_form', $script_args='') {
    434448                $r = '';
     449                if (!include_spip('inc/autoriser'))
     450                        include_spip('inc/autoriser_compat');
    435451       
    436452                $result = spip_query("SELECT * FROM spip_forms WHERE id_form="._q($id_form));
     
    470486                        // D'abord creer la reponse dans la base de donnees
    471487                        if ($ok) {
    472                                 $dejareponse=Forms_verif_cookie_sondage_utilise($id_form);
    473                                 if (($row['modifiable'] == 'oui' || !_DIR_RESTREINT) && $dejareponse) {
    474                                         $q = "SELECT id_donnee FROM spip_forms_donnees WHERE id_form="._q($id_form).
    475                                                 " AND (cookie="._q($cookie)." OR id_auteur="._q($id_auteur).")";
    476                                         //si unique, ignorer id_donnee, si pas id_donnee, ne renverra rien
    477                                         if ($row['multiple']=='oui' || !_DIR_RESTREINT) $q.=" AND donnees_champs.id_donnee="._q($id_donnee);
    478                                         $r=spip_query($q);
    479                                         if ($r=spip_fetch_array($r)){
    480                                                 $id_donnee = $r['id_donnee'];
    481                                                 spip_query("UPDATE spip_forms_donnees SET date=NOW(), ip="._q($GLOBALS['ip']).", url="._q($url).", confirmation="._q($confirmation).", statut="._q($statut).", cookie="._q($cookie)." ".
    482                                                         "WHERE id_donnee="._q($id_donnee));
    483                                                 spip_query("DELETE FROM spip_forms_donnees_champs WHERE id_donnee="._q($id_donnee));
    484                                         } else {
    485                                                 spip_query("INSERT INTO spip_forms_donnees (id_form, id_auteur, date, ip, url, confirmation,statut, cookie) ".
    486                                                 "VALUES ("._q($id_form).","._q($id_auteur).", NOW(),"._q($GLOBALS['ip']).","._q($url).", '$confirmation', '$statut',"._q($cookie).")");
    487                                                 $id_donnee = spip_insert_id();
    488                                         }
    489                                 } elseif (!$id_donnee && (!_DIR_RESTREINT || !($dejareponse && $row['multiple']=='non'))) {
    490                                                 spip_query("INSERT INTO spip_forms_donnees (id_form, id_auteur, date, ip, url, confirmation,statut, cookie) ".
    491                                                 "VALUES ("._q($id_form).","._q($id_auteur).", NOW(),"._q($GLOBALS['ip']).","._q($url).", '$confirmation', '$statut',"._q($cookie).")");
     488                                if (autoriser('modifierdonnee', 'form', $id_form, NULL, array('id_donnee'=>$id_donnee))){
     489                                        spip_query("UPDATE spip_forms_donnees SET date=NOW(), ip="._q($GLOBALS['ip']).", url="._q($url).", confirmation="._q($confirmation).", statut="._q($statut).", cookie="._q($cookie)." ".
     490                                                "WHERE id_donnee="._q($id_donnee));
     491                                        spip_query("DELETE FROM spip_forms_donnees_champs WHERE id_donnee="._q($id_donnee));
     492                                } elseif (autoriser('insererdonnee', 'form', $id_form, NULL, array('id_donnee'=>$id_donnee))){
     493                                        spip_query("INSERT INTO spip_forms_donnees (id_form, id_auteur, date, ip, url, confirmation,statut, cookie) ".
     494                                        "VALUES ("._q($id_form).","._q($id_auteur).", NOW(),"._q($GLOBALS['ip']).","._q($url).", '$confirmation', '$statut',"._q($cookie).")");
    492495                                        $id_donnee = spip_insert_id();
    493496                                }
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/lang/forms_fr.php

    r7901 r8107  
    137137'telecharger' => "T&eacute;l&eacute;charger",
    138138'telecharger_reponses' => "T&eacute;l&eacute;charger les r&eacute;ponses",
     139'texte_donnee_statut' => "Statut de cette donn&eacute;e",
    139140'titre_formulaire' => "Titre du formulaire",
    140141'total_votes' => "Total des votes",
Note: See TracChangeset for help on using the changeset viewer.