Rev 41 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** PHP Version 5** @category PHP* @package annuaire* @author aurelien <aurelien@tela-botanica.org>* @copyright 2010 Tela-Botanica* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @version SVN: <svn_id>* @link /doc/annuaire/*/class VerificationControleur extends Controleur {// TODO: utiliser les fonction de mappage définies plus haut/*** Vérifie que les valeurs pour des champs de mappage d'un annuaire donné* sont correctes* @param int $id_annuaire l'identifiant de l'annuaire* @param Array $valeurs les valeurs à vérifier*/public function verifierErreursChamps($id_annuaire, $valeurs, $tableau_mappage) {$erreurs = false;if(!$this->mailValide($valeurs['champ_mail'])) {$erreurs['text_'.$tableau_mappage[1]['champ_mail']] = 'mail invalide';}$this->chargerModele('AnnuaireModele');if($this->AnnuaireModele->utilisateurExisteParMail($id_annuaire, $valeurs['champ_mail'])) {$erreurs['text_'.$tableau_mappage[1]['champ_mail']] = 'cet email est déjà utilisé par quelqu\'un d\'autre';}if(trim($valeurs['champ_pass']) == ''|| $valeurs['champ_pass'] != $valeurs['champ_pass_conf']) {$erreurs['password_'.$tableau_mappage[1]['champ_pass']] = 'mot de passe invalide';}if(trim($valeurs['champ_nom']) == '') {$erreurs['text_'.$tableau_mappage[1]['champ_prenom']] = 'le nom est obligatoire';}if(trim($valeurs['champ_prenom']) == '') {$erreurs['text_'.$tableau_mappage[1]['champ_nom']] = 'le prénom est obligatoire';}return $erreurs;}public function verifierErreurChampModification($id_annuaire, $id_utilisateur ,$valeurs, $tableau_mappage) {if(!$this->mailValide($valeurs['champ_mail'])) {$erreurs['text_'.$tableau_mappage[1]['champ_mail']] = 'mail invalide';}$this->chargerModele('AnnuaireModele');$ancien_mail = $this->AnnuaireModele->obtenirMailParId($id_annuaire,$id_utilisateur);if($ancien_mail != $valeurs['champ_mail'] && $this->AnnuaireModele->utilisateurExisteParMail($id_annuaire, $valeurs['champ_mail'])) {$erreurs['text_'.$tableau_mappage[1]['champ_mail']] = 'cet email est déjà utilisé par quelqu\'un d\'autre';}if(trim($valeurs['champ_pass']) == ''|| $valeurs['champ_pass'] != $valeurs['champ_pass_conf']) {$erreurs['password_'.$tableau_mappage[1]['champ_pass']] = 'mot de passe invalide';}return $erreurs;}public function remplacerValeurChampPourInsertion($type, $valeur, $mail_utilisateur) {$valeur_modifiee = $valeur;switch($type) {// cas du champ texte, à priori, rien de particuliercase 'text':$valeur_modifiee = $valeur;break;// cas du champ password : on le cryptecase 'password':$valeur_modifiee = $this->encrypterMotDePasse($valeur);break;// cas du champ checkboxcase 'checkbox':// Si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologieif(is_array($valeur)) {// on stocke les valeurs d'ontologies liées au cases cochées$valeur_modifiee = implode(Config::get('separateur_metadonnee'), array_keys($valeur));} else {if($valeur == 'on') {// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)$valeur_modifiee = 1;} else {$valeur_modifiee = 0;}}break;case 'lettre':if($valeur == 'on') {// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)$valeur_modifiee = 1;// Si c'est une inscription à la lettre d'actualité, on appelle la fonction d'inscription$lettre_controleur = new LettreControleur();$lettre_controleur->inscriptionLettreActualite($mail_utilisateur);} else {$valeur_modifiee = 0;}default:$valeur_modifiee = $valeur;break;}return $valeur_modifiee;}public function remplacerValeurChampPourModification($type, $valeur, $mail_utilisateur) {$valeur_modifiee = $valeur;switch($type) {// cas du champ texte, à priori, rien de particuliercase 'text':$valeur_modifiee = $valeur;break;// cas du champ password : on le cryptecase 'password':$valeur_modifiee = $this->encrypterMotDePasse($valeur);break;// cas du champ checkboxcase 'checkbox':// Si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologieif(is_array($valeur)) {// on stocke les valeurs d'ontologies liées au cases cochées$valeur_modifiee = implode(Config::get('separateur_metadonnee'), array_keys($valeur));} else {if($valeur == 'on') {// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)$valeur_modifiee = 1;} else {$valeur_modifiee = 0;}}break;case 'lettre':// Si c'est une inscription à la lettre d'actualité, on appelle la fonction d'inscription$lettre_controleur = new LettreControleur();if($valeur == 'on') {// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)$valeur_modifiee = 1;$lettre_controleur->inscriptionLettreActualite($mail_utilisateur);} else {$valeur_modifiee = 0;$lettre_controleur->desinscriptionLettreActualite($mail_utilisateur);}break;default:$valeur_modifiee = $valeur;break;}return $valeur_modifiee;}public function verifierEtRemplacerValeurChampPourAffichage($type, $valeur, $id_annuaire) {if(!$type) {$valeur_modifiee = array();$valeur_modifiee['amv_type'] = 'champ_annuaire';$valeur_modifiee['amv_valeur_affichage'] = $valeur;} else {$valeur_modifiee = $valeur;switch($type) {// cas du champ texte, à priori, rien de particuliercase 'text':$valeur_modifiee['amv_valeur_affichage'] = $valeur['amv_valeur'];break;// cas du champ checkboxcase 'checkbox':// si c'est un groupe checkbox, alors c'est une liste de checkbox liée à une ontologieif(isset($valeur['amo_nom'])) {if(is_array($valeur['amo_nom']) && count($valeur['amo_nom']) > 0) {// on stocke les valeurs d'ontologies liées au cases cochées$valeur_modifiee['amv_valeur_affichage'] = implode(', ', $valeur['amo_nom']);} else {$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];}} else {// sinon on stocke 1 pour indique que la case est cochée (cas de la checkbox oui/non)if($valeur_modifiee == 1) {$valeur_modifiee['amv_valeur_affichage'] = 'oui';} else {$valeur_modifiee['amv_valeur_affichage'] = 'non';}}break;case 'select':$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];break;case 'radio':$valeur_modifiee['amv_valeur_affichage'] = $valeur['amo_nom'];break;case 'image':// si c'est une image, on recherche son url véritable à partir de l'id donnée en paramètreif(isset($valeur['amv_valeur']) && $valeur['amv_valeur'] != '') {$this->chargerModele('ImageModele');$valeur_modifiee['amv_valeur_affichage'] = $this->ImageModele->obtenirEmplacementFichierParId($valeur['amv_valeur'],$id_annuaire, 'S');}break;// cas du champ lettrecase 'lettre':// on affiche oui ou nonif($valeur_modifiee['amv_valeur'] == 1) {$valeur_modifiee['amv_valeur_affichage'] = 'oui';} else {$valeur_modifiee['amv_valeur_affichage'] = 'non';}break;default:$valeur_modifiee['amv_valeur_affichage'] = $valeur['amv_valeur'];break;}}return $valeur_modifiee;}/*** Renvoie vrai ou faux suivant qu'un mail donné en paramètre est syntaxiquement valide (ne vérifie pas l'existence* de l'adresse)* @param string $mail le mail à tester* @return boolean vrai ou faux suivant que le mail est valide ou non*/public function mailValide($mail) {$regexp_mail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';return preg_match($regexp_mail, $mail);}/*** Renvoie un mot de passe crypté selon la fonction d'encryptage définie dans le fichier de configuration* (si celle-ci n'existe pas on utilise une fonction par défaut)* @param string $pass le mot de passe à encrypter* @return string le mot de passe encrypté*/public function encrypterMotDePasse($pass) {$fonction = Config::get('pass_crypt_fonct');if(function_exists($fonction)) {return $fonction($pass);} else {return md5($pass);}}}?>