コード例 #1
0
ファイル: import_edit.php プロジェクト: jean-remond/adhclub
/**
 * Integrer table adhintgs 
 * (action apres la saisie des infos du formulaires integ_adhintg)
 *
 * @param  string $ref_saisie[obligatoire]
 * @param  int $id_coti[obligatoire]
 * 
 * @return array
 */
function exec_import_edit($ref_saisie, $id_coti)
{
    /*$debug1= "DEBUG adhclub JR : exec/import_edit - exec_import_edit - Pt01 - <br />";
    	echo "<br />", $debug1;
    	echo "ref_saisie= $ref_saisie.<br />";
    	echo "id_coti= $id_coti.<br />";
    	echo "FIN ", $debug1;
    	*/
    // On doit etre Webmestre pour acceder a cette page
    /*if (!autoriser('webmestre')) {
    		include_spip('inc/minipres');
    		echo minipres();
    		exit;
    	} */
    global $spip_lang_right;
    $assoc_field = array();
    $field_source = array();
    $field_cible_finale = array();
    /** ____________________________________________________________
     *
     *  Preparation des listes de champs et de leur correspondance.
     * _____________________________________________________________
     */
    // Liste de l'ensemble des champs cibles possibles
    $tables = array('spip_auteurs', 'spip_auteurs_elargis');
    $field_cible_finale = adhclub_imp_table_fields($tables, 'unique');
    // Liste de l'ensemble des champs sources possibles
    $tables = array('spip_adhintgs');
    $field_source = adhclub_imp_table_fields($tables, 'source');
    //adhclub_imp_field_configure($data, $table_fields, $assoc_field);
    /** ____________________________________________________________
     *
     * Boucle de traitement d'integration des adherents
     * _____________________________________________________________
     */
    // Lecture table adhintgs ordonnee par licence.
    $adhorderby = "licence";
    $res = sql_select('*', 'spip_adhintgs', '', '', $adhorderby);
    // boucle sur les resultats
    while ($rec_intg = sql_fetch($res)) {
        // Recherche de l'auteur via son code Licence (auteurs.fonctions).
        $adhwhere = "fonction =" . sql_quote(trim($rec_intg['licence']));
        $arg = sql_fetsel("id_auteur", "spip_auteurs", $adhwhere);
        /** ____________________________________________________________
         * 
         * ==> Creation des tables auteurs [et auteurs_elargis].
         * _____________________________________________________________
         */
        // si id_auteur n'est pas un nombre, c'est une creation d'adherent,
        if (!($id_auteur = intval($arg['id_auteur']))) {
            $id_auteur = 'new';
            $assoc_field = array();
            $assoc_field = adhclub_imp_field_associate($id_auteur, $data, $field_cible_finale, $assoc_field, $field_source);
            foreach ($assoc_field as $key => $value) {
                $hidden["assoc_field[" . adhclub_imp_nettoie_key($key) . "]"] = $value;
            }
            //echo "<br />.XXX debug JR : exec/import_edit-exec_import_edit-Pt6.<br />";
            //echo "id_auteur= $id_auteur.<br />";
            //$field=$rec_intg['email'];
            //echo "rec_intgs(email)= $field.<br />";
            // Reformattage des champs
            $rec_creat = adhclub_imp_field_reformate($id_auteur, $assoc_field, $rec_intg);
            /*$debug1= "DEBUG adhclub JR : exec/import_edit-exec_import_edit-Pt07 - <br />";
            		echo "<br />", $debug1;
            		echo "rec_creat= <br />"; var_dump($rec_creat); echo ".<br />";
            		echo "FIN ", $debug1;
            		*/
            $tables = array('spip_auteurs', 'spip_auteurs_elargis');
            //list($erreurs, $auteur) = adhclub_imp_ajoute_table($rec_creat, $tables, $assoc_field, &$erreur);
            list($arg) = adhclub_imp_ajoute_table($rec_creat, $tables, $assoc_field, $erreur);
            if (!$arg) {
                echo adhclub_imp_show_erreurs($erreur);
                return array(false, _T('adhintg:err_auteur_creation' . $rec_creat['nom_famille']));
            }
            /*$debug1= "DEBUG adhclub JR : exec/import_edit-exec_import_edit-Pt09 - <br />";
            		echo "<br />", $debug1;
            		$field=$auteur['id_auteur'];
            		echo "auteur(id_auteur)= $field.<br />";
            		$arg['id_auteur']=$auteur['id_auteur'];
            		echo "FIN ", $debug1;
            		*/
        }
        /*$debug1= "DEBUG adhclub JR : exec/import_edit-exec_import_edit-Pt50 - <br />";
        		echo "<br />", $debug1;
        		echo "Sortie du bloc creation de l'adherent : ";
        		$field=$arg['id_auteur'];
        		echo "arg= $field.<br />";
        		echo "<br />.----------------------------------------------.<br />";
        		echo "FIN ", $debug1;
        		*/
        /** ____________________________________________________________
         * 
         * ==> Mise a jour des tables auteurs [et auteurs_elargis] et +.
         * _____________________________________________________________
         * on poursuit l'integration  par la maj :
         * - de quelques champs des tables auteurs et auteurs_elargis
         *		(en cas de nouvel adherent, il y a redite des memes champs)
         * - des tables complementaires :
         *		- adhcotis_liens avec la reference de saisie
         *		- adhassurs_liens
         */
        // si id_auteur n'est pas un nombre, c'est une creation d'adherent,
        if ($id_auteur = intval($arg['id_auteur'])) {
            $assoc_field = array();
            $assoc_field = adhclub_imp_field_associate($id_auteur, $data, $field_cible_finale, $assoc_field, $field_source);
            foreach ($assoc_field as $key => $value) {
                $hidden["assoc_field[" . adhclub_imp_nettoie_key($key) . "]"] = $value;
            }
            /*$debug1= "DEBUG adhclub JR : exec/adh_import - exec_adh_import - Pt61 - <br />";
            		echo "<br />", $debug1;
            		echo "id_auteur= $id_auteur.<br />";
            		echo "rec_intg= <br />"; var_dump($rec_intg); echo ".<br />";
            		echo "FIN ", $debug1;
            		*/
            // Reformattage des champs
            $rec_maj = adhclub_imp_field_reformate($id_auteur, $assoc_field, $rec_intg);
            /*$debug1= "DEBUG adhclub JR : exec/adh_import - exec_adh_import - Pt62 - <br />";
            		echo "<br />", $debug1;
            		echo "id_auteur= $id_auteur.<br />";
            		echo "rec_maj= <br />"; var_dump($rec_maj); echo ".<br />";
            		echo "FIN ", $debug1;
            		*/
            $tables = array('spip_auteurs', 'spip_auteurs_elargis');
            // JR-20121019-Pb d'appel via reference.
            //list($erreurs, $auteur)  = adhclub_imp_maj_table($id_auteur, $rec_maj, $tables, $assoc_field, &$erreur);
            list($auteur) = adhclub_imp_maj_table($id_auteur, $rec_maj, $tables, $assoc_field, $erreur);
            if (!$auteur) {
                echo adhclub_imp_show_erreurs($erreur);
                return array(false, _L("Echec de la mise &aacute; jour de l'adh&eacute;rent " . $id_auteur . ' ' . $rec_intg['nom'] . ' ' . $rec_intg['prenom']));
            }
            /*$debug1= "DEBUG adhclub JR : exec/adh_import-exec_adh_import-Pt63 - <br />";
            		echo "<br />", $debug1;
            		echo "id_auteur= $id_auteur.<br />";
            		$field=$auteur['id_auteur'];
            		echo "auteur(id_auteur)= $field.<br />";
            		echo "FIN ", $debug1;
            		*/
            $arg['id_auteur'] = $auteur['id_auteur'];
        }
        /*$debug1= "DEBUG adhclub JR : exec/adh_import-exec_adh_import-Pt70 - <br />";
        		echo "<br />", $debug1;
        		echo "Sortie du bloc maj de l'adherent : ";
        		echo "id_auteur= $id_auteur.<br />";
        		echo "FIN ", $debug1;
        		echo "<br />.----------------------------------------------.<br />";
        		*/
        /** ____________________________________________________________
         *
         * ==> Mise a jour de la table adhassurs_liens.
         * _____________________________________________________________
         * On poursuit l'integration  par la creation de l'assurance :
         * - A partir des informations du record rec_intgs :
         *		- assurance = adhassurs.titre
         */
        // Adaptation du titre de l'assurance si 'Aucune' notifiee
        //	==> 'Aucune aaaa' pour recherche dans adhassur.
        if (trim($rec_intg['assurance']) == 'Aucune') {
            $rec_intg['assurance'] = trim($rec_intg['assurance']) . ' ' . trim($rec_intg['saison']);
        }
        /*$debug1= "DEBUG adhclub JR : exec/adh_import-exec_adh_import-Pt71 - <br />";
        		echo "<br />", $debug1;
        		echo "id_auteur= $id_auteur.<br />";
        		$field=$rec_intg['assurance'];
        		echo "rec_intg(assurance)= $field.<br />";
        		echo "FIN ", $debug1;
        		*/
        // Recherche de l'assurance a partir de son titre.
        $arg = adhclub_test_assurtitre_de_auteur(intval($id_auteur), trim($rec_intg['assurance']));
        /*$debug1= "DEBUG adhclub JR : exec/adh_import-exec_adh_import-Pt72 - <br />";
        		echo "<br />", $debug1;
        		echo "id_auteur= $id_auteur.<br />";
        		if ($arg){
        			echo "auteur_assur= TRUE.<br />";
        		}else{
        			$field=intval($arg);
        			echo "id_assur= $field.<br />";
        		}
        		echo "FIN ", $debug1;
        		*/
        // si arg TRUE, assurance deja affectee a auteur, raf.
        // Si arg False, assurance inconnue, message d'alerte.
        if (!$arg) {
            return array(false, _L('adhintg:err_assur_inconnue' . ' ' . $rec_intg['assurance'] . ' ' . 'adhclub:auteur' . ' ' . $id_auteur . ' ' . $rec_intg['prenom'] . ' ' . $rec_intg['nom']));
        }
        // si arg est un nombre, ceci est une creation de cette assurance (pour le titre) pour auteur.
        if ($id_assur_work = intval($arg)) {
            adhclub_revision_adhassur_objets_lies(intval($arg), $id_auteur, 'auteur', 'add');
        }
        /** ____________________________________________________________
         * 
         * ==> Mise a jour de la table adhcotis_liens.
         * _____________________________________________________________
         * On poursuit l'integration  par la creation de la cotisation :
         * - A partir des informations du formulaire
         *		- id_cotisation
         *		- Reference de saisie.
         */
        // Recherche si l'auteur est lie a cette cotisation.
        $auteur_coti_ok = adhclub_test_coti_de_auteur(intval($id_coti), intval($id_auteur));
        /*$debug1= "DEBUG adhclub JR : exec/adh_import-exec_adh_import-Pt82 - <br />";
        		echo "<br />", $debug1;
        		echo "id_auteur= $id_auteur.<br />";
        		$field=intval($auteur_coti_ok);
        		echo "id_coti= $field.<br />";
        		echo "FIN ", $debug1;
        		*/
        // si auteur_coti_ok n'est pas un nombre, c'est une creation de cette cotisation pour l'auteur.
        if (!$auteur_coti_ok) {
            adhclub_revision_adhcoti_objets_lies($id_coti, $id_auteur, 'auteur', 'add', $ref_saisie);
        }
        // On supprime l'enregistrement adhintgs que l'on vient de traiter
        $adhwhere = "licence =" . sql_quote(trim($rec_intg['licence']));
        sql_delete("spip_adhintgs", $adhwhere);
    }
    //$err = action_adhintg_set($id_auteur, $rec_intg);
    //return array($id_auteur,$err);
}
コード例 #2
0
ファイル: adh_import.php プロジェクト: jean-remond/adhclub
/**
 * Maj des donnees des tables auteurs et auteurs_elargis
 * Tous les champs ne sont pas maj.
 * 
 * @param array $data
 * @param array $tables
 * @param array $assoc_field
 * @param array &$majerr
 * 
 * @return array $auteur
 */
function adhclub_imp_maj_table($id_auteur, $data, $tables, $assoc_field, &$majerr)
{
    $majerr = array();
    $auteur = array();
    $assoc = array_flip($assoc_field);
    /*$debug1= "DEBUG adhclub JR : inc/adh_import - adhclub_imp_maj_table - Pt10 - <br />";
    	echo "<br />", $debug1;
    	echo "id_auteur= $id_auteur.<br />";
    	echo "data= <br />"; var_dump($data); echo ".<br />";
    	echo "FIN ", $debug1;
    	*/
    list($auteurs, $auteurs_elargis) = adhclub_imp_table_fields($tables, 'separe');
    /*$debug1= "DEBUG adhclub JR : inc/adh_import - adhclub_imp_maj_table - Pt12 - <br />";
    	echo "<br />", $debug1;
    	echo "id_auteur= $id_auteur.<br />";
    	echo "data= <br />"; var_dump($data); echo ".<br />";
    	echo "FIN ", $debug1;
    	*/
    $auteurs_obligatoires = array('email');
    if ($data != false) {
        $count_lignes = 0;
        $verifier = charger_fonction('verifier', 'inc', true);
        $champs_a_verifier = pipeline('i3_verifications_specifiques');
        $auteurs_update = array();
        $auteurs_elargis_update = array();
        // on utilise directement la table d'associaton pour les seuls champs a mettre à jour.
        foreach ($assoc as $key => $value) {
            $kc = adhclub_imp_nettoie_key($key);
            $data[$assoc[$kc]] = trim($data[$assoc[$kc]]);
            if (isset($value) && isset($data[$assoc[$kc]])) {
                // On verifie tout d'abord si le champ dispose d'une fonction de validation
                if (array_key_exists($key, $champs_a_verifier)) {
                    $type = $champs_a_verifier[$key];
                    $type['options']['id_auteur'] = $id_auteur;
                    $type['options'] = array_merge($type['options'], $_GET);
                    if ($val = $verifier($data[$assoc[$kc]], $type['type'], $type['options'])) {
                        $majerr[$key] = $val;
                    }
                }
                // Si pas d'erreur sur ce champ on verifie qu'il soit obligatoire [auteurs seulement]
                if (!isset($majerr[$key])) {
                    if (in_array($key, $auteurs)) {
                        if (in_array($key, $auteurs_obligatoires) && strlen($data[$assoc[$kc]]) == 0) {
                            $majerr[$key] = _T("adhclub:champs_oblig", array('champs' => $key));
                        }
                        $auteurs_update[$key] = $data[$assoc[$kc]];
                        $auteur[$key] = $data[$assoc[$kc]];
                    } else {
                        $auteurs_update[$key] = $data[$assoc[$kc]];
                        $auteur[$key] = $data[$assoc[$kc]];
                    }
                }
                unset($assoc[$key]);
            }
        }
        /*$debug1= "DEBUG adhclub JR : inc/adh_import adhclub_imp_maj_table-Pt14 - <br />";
        		echo "<br />", $debug1;
        		echo "id_auteur= $id_auteur.<br />";
        		$field=count($majerr,COUNT_RECURSIVE);
        		echo "count(erreur)= $field.<br />";
        		echo "FIN ", $debug1;
        		*/
        if (count($majerr, COUNT_RECURSIVE) == 0) {
            if (count($auteurs_update)) {
                // Forcer les donnees par défaut
                // On ajoute la date de MAJ qui correspond a maintenant
                $auteurs_update['maj'] = date('Y-m-d H:i:s');
                sql_updateq('spip_auteurs', $auteurs_update, "id_auteur=" . intval($id_auteur));
                $auteur['id_auteur'] = $id_auteur;
            }
        } else {
            unset($auteur);
        }
    }
    return array($auteur);
}