$valeur) { $methode="set_$attribut"; if(method_exists(__CLASS__,$methode)) { if(!$this->$methode($valeur)) $erreur_ok=true; } else $this->$attribut=$valeur; } if(($erreur_ok)&&(empty($this->erreurs))) $this->erreurs=(array) ERREUR_IMPREVUE; } } /** * Méthode testant la validité d'un pseudo et l'attribuant à l'objet si ok * * @return booléen suivant succès * @author Fabrice PENHOËT **/ public function set_pseudo($pseudo) { $pseudo=strip_tags(strval(trim($pseudo))); $longueur=strlen($pseudo); if(($longueurUTILISATEUR_MAX_PSEUDO)) { $this->erreurs=array_merge($this->erreurs,(array) ERREUR_UTILISA_PSEUDO_LONG); return false; } else { $this->pseudo=$pseudo; return true; } } /** * Méthode testant la validité d'un mot de passe avant de le chiffrer et de l'attribuer à l'objet si ok * * @param mot de passe non chiffré * @return booléen suivant succès * @author Fabrice PENHOËT **/ public function set_passe($passe) { $passe=strval(trim($passe)); $longueur=strlen($passe); if(($longueurUTILISATEUR_MAX_PASSE)) { $this->erreurs=array_merge($this->erreurs,(array) ERREUR_UTILISA_PASSE_LONG); return false; } $chiffre=chiffrement($passe); if($chiffre!=false) { $this->passe=$passe; $this->chiffre=$chiffre; return true; } else return false; } /** * Méthode testant la validité d'un email et l'affectant à l'objet si ok * * @return booléen suivant succès * @author Fabrice PENHOËT **/ public function set_email($email) { $email=strip_tags(strval(trim($email))); $longueur=strlen($email); if($longueur>UTILISATEUR_MAX_EMAIL) $messages[]=ERREUR_UTILISA_EMAIL_LONG; if(!filter_var($email,FILTER_VALIDATE_EMAIL)) $messages[]=ERREUR_EMAIL_ADRESSE_FORMAT; if(empty($messages)) { $this->email=$email; return true; } else { $this->erreurs=array_merge($this->erreurs,$messages); return false; } } /** * Méthode testant la validité du statut et l'affectant à l'objet si ok * * @return booléen suivant succès * @author Fabrice PENHOËT **/ public function set_statut($statut) { $valeurs_ok=explode("|",UTILISATEUR_STATUTS); if(empty($valeurs_ok)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_UTILISA_STATUTS_EXISTE)); return false; } if (!in_array($statut,$valeurs_ok)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_UTILISA_STATUT_VALIDE." >> $statut")); return false; } $this->statut=$statut; return true; } /** * Méthode testant le texte de description avant de l'attribuer * * @return false si valeur non acceptée, true sinon * @author Fabrice PENHOËT **/ public function set_presentation($presentation) { if(!empty($presentation)) { $presentation=strip_tags(strval(trim($presentation))); $longueur=strlen($presentation); if($longueur>UTILISATEUR_MAX_PRESENTATION) { $this->erreurs=array_merge($this->erreurs,(array) ERREUR_UTILISA_PRESENTATION_LONG); return false; } $this->presentation=$presentation; return true; } else return true; } /** * Méthode testant la validité d'un fichier image (nom, format, taille...) * Si ok, une miniature est créée localement et son adresse affectée à l'objet * ! le pseudo doit donc être attribué à l'objet avant car il sert à nommer le fichier image * * @param $fichier : les infos du fichier qui vient d'être téléchargé * @return booléen suivant succès * @author Fabrice PENHOËT **/ public function set_illustration($fichier) { if(!empty($fichier)) { $adresse_temp=$fichier["tmp_name"]; if(!file_exists($adresse_temp)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_FICHIER_EXISTE." >> ".htmlentities($adresse_temp,ENT_QUOTES))); return false; } if(empty($this->pseudo)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_UTILISA_PSEUDO_ABSENT)); return false; } $extension=strtolower(strrchr($fichier["name"],".")); if (strpos(UTILISATEUR_ILLUS_EXTENSIONS,$extension)===false) $messages[]=ERREUR_IMAGE_FORMAT; $taille_max=min(intval(str_replace("M","000000",ini_get("upload_max_filesize"))),UTILISATEUR_ILLUS_MAX_TAILLE); $taille_fichier=filesize($adresse_temp); if($taille_fichier>$taille_max) $messages[]=ERREUR_FICHIER_POIDS." (maximum : ".($taille_max/1000)." ko)"; if(empty($messages)) { $pseudo=nettoye_chaine(strtolower($this->pseudo)); $adresse_illustration=UTILISATEUR_ILLUS_REP."/".$pseudo[0]."/".$pseudo.$extension; $i=1; while(file_exists($adresse_illustration)) { $i++; $adresse_illustration=UTILISATEUR_ILLUS_REP."/".$pseudo[0]."/".$pseudo.$i.$extension; } if(!file_exists(UTILISATEUR_ILLUS_REP."/".$pseudo[0]."/")) { if(!mkdir(UTILISATEUR_ILLUS_REP."/".$pseudo[0]."/",UTILISATEUR_ILLUS_REP_CHMOD,true)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_REP_CREA." >> ".UTILISATEUR_ILLUS_REP."/".$pseudo[0]."/")); return false; } } if((import_image($adresse_temp,$adresse_illustration,0,UTILISATEUR_ILLUS_MAX_LARGEUR)===true)) { $this->illustration=substr(strrchr($adresse_illustration,"/"),1); return true; } else { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_IMAGE_CREATION)); return false; } } else { $this->erreurs=array_merge($this->erreurs,$messages); return false; } } else $this->illustration=""; } /** * Méthode testant la validité d'une origine et l'affectant à l'objet si ok * la valeur fournie doit faire partie de celles déclarées ou être nulle * * @param origin chaine de caractères * @return booléen * @author Fabrice PENHOËT **/ public function set_origine($origine) { if(!empty($origine)) { $valeurs_ok=explode("|",UTILISATEUR_ORIGINES); if(empty($valeurs_ok)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_UTILISA_ORIGINES_EXISTE)); return false; } if (!in_array($origine,$valeurs_ok)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_UTILISA_ORIGINE_VALIDE." >> $origine")); return false; } $this->origine=$origine; return true; } else { $this->origine="inconnue"; return true; } } /** * Méthode supprimant le fichier image d'un utilisateur * * @param null * @return booléen suivant succès * @author Fabrice PENHOËT **/ public function suppr_illustration() { if(!empty($this->illustration)) { $fichier=$this->illustration; $adresse_illustration=UTILISATEUR_ILLUS_REP."/".$fichier[0]."/".$fichier; if(!file_exists($adresse_illustration)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_FICHIER_EXISTE." >> ".htmlentities($adresse_illustration,ENT_QUOTES))); return false; } if(!unlink($adresse_illustration)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_FICHIER_SUPPR." >> ".htmlentities($adresse_illustration,ENT_QUOTES))); return false; } $this->illustration=""; return true; } } /** * Méthode supprimant toutes les fichiers illustration des utilisateurs + les sous-répertoires * * @return booléen suivant succès * @author Fabrice PENHOËT **/ static function suppr_illustrations() { if(supprime_repertoire(UTILISATEUR_ILLUS_REP."/",false)) return true; else return false; } /** * Méthode retournant la valeur des attributs d'un utilisateur dans un tableau * * @param attributs : tableau php listant le nom des attributs que je souhaite exporter * @return tableau php contenant les attributs et leurs valeurs. false si erreur. * @author Fabrice PENHOËT **/ public function export_utilisateur($attributs) { if(!is_array($attributs)) { $ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_PARAM_FORMAT)); return false; } foreach ($attributs as $attribut) { if (isset($this->$attribut)) $tab[$attribut]=$this->$attribut; } return $tab; } /** * Affichage par défaut d'un objet * * @return chaîne de caractères listant la valeur de chaque attribut * @author Fabrice PENHOËT **/ public function __toString() { $texte="

".__CLASS__."

"; foreach($this as $key => $value) { if(is_array($value)) $value=affiche_tableau($value,"
  • #valeur
  • ",""); $texte.="$key : $value\n"; } return $texte; } }