Changeset 7668 in spip-zone


Ignore:
Timestamp:
Nov 29, 2006, 9:40:16 PM (12 years ago)
Author:
cedric@…
Message:

"Forms_revision_donnee pour les widgets"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/forms/forms_et_tables_1_9_1/inc/forms.php

    r7649 r7668  
    329329                return $s;
    330330        }
    331 
    332         function Forms_insertions_reponse_post($id_form,$id_donnee,&$erreur,&$ok){
     331       
     332        function Forms_insertions_reponse_un_champ($id_form,$id_donnee,$champ,$type,$val,&$erreur,&$ok){
     333                $inserts = array();
     334                if ($type == 'fichier') {
     335                        if (($val = $_FILES[$champ]) AND ($val['tmp_name'])) {
     336                                // Fichier telecharge : deplacer dans IMG, stocker le chemin dans la base
     337                                $dir = sous_repertoire(_DIR_IMG, "protege");
     338                                $dir = sous_repertoire($dir, "form".$id_form);
     339                                $source = $val['tmp_name'];
     340                                $dest = $dir.Forms_nommer_fichier_form($val['name'], $dir);
     341                                if (!Forms_deplacer_fichier_form($source, $dest)) {
     342                                        $erreur[$champ] = _T("forms:probleme_technique_upload");
     343                                        $ok = false;
     344                                }
     345                                else {
     346                                        $inserts[] = "("._q($id_donnee).","._q($champ).","._q($dest).")";
     347                                }
     348                        }
     349                }
     350                else if ($val) {
     351                        // Choix multiples : enregistrer chaque valeur separement
     352                        if (is_array($val))
     353                                foreach ($val as $v)
     354                                        $inserts[] = "("._q($id_donnee).","._q($champ).","._q($v).")";
     355                        else
     356                                $inserts[] = "("._q($id_donnee).","._q($champ).","._q($val).")";
     357                }
     358                return $inserts;
     359        }
     360       
     361        function Forms_insertions_reponse_post($id_form,$id_donnee,&$erreur,&$ok, $c = NULL){
    333362                $inserts = array();
    334363                $res = spip_query("SELECT * FROM spip_forms_champs WHERE id_form="._q($id_form));
     
    336365                        $champ = $row['champ'];
    337366                        $type = $row['type'];
    338                         $val = _request($champ);
    339        
    340                         if ($type == 'fichier') {
    341                                 if (($val = $_FILES[$champ]) AND ($val['tmp_name'])) {
    342                                         // Fichier telecharge : deplacer dans IMG, stocker le chemin dans la base
    343                                         $dir = sous_repertoire(_DIR_IMG, "protege");
    344                                         $dir = sous_repertoire($dir, "form".$id_form);
    345                                         $source = $val['tmp_name'];
    346                                         $dest = $dir.Forms_nommer_fichier_form($val['name'], $dir);
    347                                         if (!Forms_deplacer_fichier_form($source, $dest)) {
    348                                                 $erreur[$champ] = _T("forms:probleme_technique_upload");
    349                                                 $ok = false;
    350                                         }
    351                                         else {
    352                                                 $inserts[] = "("._q($id_donnee).","._q($champ).","._q($dest).")";
    353                                         }
    354                                 }
    355                         }
    356                         else if ($val) {
    357                                 // Choix multiples : enregistrer chaque valeur separement
    358                                 if (is_array($val))
    359                                         foreach ($val as $v)
    360                                                 $inserts[] = "("._q($id_donnee).","._q($champ).","._q($v).")";
    361                                 else
    362                                         $inserts[] = "("._q($id_donnee).","._q($champ).","._q($val).")";
    363                         }
     367                        if (!$c)
     368                                $val = _request($champ);
     369                        else
     370                                $val = isset($c[$champ])?$c[$champ]:NULL;
     371                        $ins = Forms_insertions_reponse_un_champ($id_form,$id_donnee,$champ,$type,$val,$erreur,$ok);
     372                        $inserts = $inserts + $ins;
    364373                }
    365374                return $inserts;
    366375        }
    367376
     377        function Forms_revision_donnee($id_donnee,$c,&$erreur){
     378                $result = spip_query("SELECT id_form FROM spip_forms_donnees WHERE id_donnee="._q($id_donnee));
     379                if (!$row = spip_fetch_array($result)) {
     380                        $erreur['@'] = _T("forms:probleme_technique");
     381                }
     382                $id_form = $row['id_form'];
     383                $structure = Forms_structure($id_form);
     384                include_spip("inc/forms_type_champs");
     385                $erreur = Forms_valide_champs_reponse_post($id_form, $c, $structure);
     386                if (!$erreur) {
     387                        $champs_mod = array();
     388                        foreach($c as $champ=>$val){
     389                                $champs_mod[] = $champ;
     390                                $type = $structure[$champ]['type'];
     391                                $inserts = $inserts + Forms_insertions_reponse_un_champ($id_form,$id_donnee,$champ,$type,$val,$erreur,$ok);
     392                        }
     393                        $in_champs = calcul_mysql_in('champ',"(".implode(',',$champs_mod).")");
     394                        spip_query("DELETE FROM spip_forms_donnees_champs WHERE $in_champs AND id_donnee="._q($id_donnee));
     395                        spip_query("INSERT INTO spip_forms_donnees_champs (id_donnee, champ, valeur) ".
     396                                "VALUES ".join(',', $inserts));
     397                }
     398        }
     399       
    368400        function Forms_enregistrer_reponse_formulaire($id_form, $id_donnee, &$erreur, &$reponse, $script_validation = 'valide_form', $script_args='') {
    369401                $r = '';
Note: See TracChangeset for help on using the changeset viewer.