Subversion Repositories eFlore/Applications.coel

Rev

Rev 1497 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/**
 * Service fournissant la liste des commentaires et leurs informations.
 * Encodage en entrée : utf8
 * Encodage en sortie : utf8
 *
 * @author Cyprien CLERC <cyprien@tela-botanica.org>
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 * @version $Id$
 * @copyright 2009
 */

class CoelCorrection extends Coel {
        
        public function getElement($params = array()) {
                
                // Identification de l'utilisateur
                $login = $this->config['coel']['correctionLogin'];
                $mdp = $this->config['coel']['correctionMdp'];
                
                // Récupération des paramètres d'identification
                $loginParam = $params[0];
                $mdpParam = $params[1];
                
                // Contrôle du non détournement de l'utilisateur
                if ($login == $loginParam  && $mdp == $mdpParam) {
                        $numeroCorrection = $params[2];
                        switch($numeroCorrection) {
                                case 1 : $this->correction0001($numeroCorrection);
                                        break;
                                default : $this->noCorrection();
                        }
                } else {
                        $this->messages[] = "[ERREUR] Il faut etre identifie pour acceder a ce service";
                }
        }
        
        public function noCorrection() {
                $this->messages[] = "[ERREUR] Aucun numero de correction n'a ete fourni ou le numero fourni est invalide.";
        }
        
        /*-------------------------------------------------------------------*/
        
          //-----------//
         // Correctif //
        //-----------//
        /* Le champ 'pays' de la table 'personne' contient le nom de la liste au lieu de son id, il faut remédier à ça ! */
        private function correction0001($numeroCorrection) {
                $this->messages[] = "APPLICATION DE LA CORRECTION numero ".$numeroCorrection;
                
                // recuperation des pays
                $requete = '
                        SELECT cmlv_id_valeur, cmlv_nom FROM coel_meta_liste_valeur
                        WHERE cmlv_ce_parent=1074
                ';
                $pays = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
                
                $requete = '
                        SELECT cp_id_personne, cp_truk_recolte
                        FROM coel_personne
                ';
                $resultat = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
                
                for($i=0; $i<count($resultat); $i++) {                  
                        
                        if ($resultat[$i]['cp_truk_recolte'] != "") {
                                
                                $tabValeurs = explode(";", $resultat[$i]['cp_truk_recolte']);
                                
                                $nouvelleValeurChamp = "";
                                
                                for($j=0; $j<count($tabValeurs); $j++) {

                                        $tabType = explode("##", $tabValeurs[$j]);
                                        $type = trim($tabType[0]);
                                        
                                        if ($type != "" && !is_numeric($type)) {
                                                
                                                // recherche de l'id_valeur
                                                $trouve = false;
                                                $k=0;
                                                while(!$trouve && $k<count($pays)) {
                                                        if ($pays[$k]['cmlv_nom'] == $tabType[0]) {
                                                                $trouve = true;
                                                        }
                                                        else $k++;
                                                }
                                                $id_valeur = $pays[$k]['cmlv_id_valeur'];
                                                
                                                if ($trouve) $nouvelleValeurChamp .= str_replace($type, $id_valeur, $tabValeurs[$j]).";";
                                        }
                                }
                                
                                $requeteUpdate = "
                                        UPDATE coel_personne
                                        SET cp_truk_recolte = '".$nouvelleValeurChamp."'
                                        WHERE cp_id_personne = '".$resultat[$i]['cp_id_personne']."'
                                ";
                                
                                if ($nouvelleValeurChamp != "") {
                                        echo $requeteUpdate.";<br>";
                                        $resultatRequeteUpdate = $this->bdd->query($requeteUpdate);
                                        
                                        if($resultatRequeteUpdate) $this->messages[] = "Correction effectuee.<br>";
                                        else $this->messages[] = "Echec lors de la correction.";
                                }

                        }

                }
                return true;
                
        }
}