157 lines
4.5 KiB
PHP
Executable File
157 lines
4.5 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* classe minimaliste permettant une arborescence de dossiers / rubriques
|
|
* utilisée pour classer d'autres objets
|
|
*
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
class Rubrique
|
|
{
|
|
protected $nom; // désignation de la rubrique.
|
|
protected $description; // texte de description.
|
|
protected $rubrique_sup; // la rubrique supérieure
|
|
public $limites=array(); // tailles limites des attributs
|
|
public $erreurs=array(); // erreurs rencontrées dans les méthodes.
|
|
/**
|
|
* Constructeur qui initialise certains attributs en testant les valeurs fournies
|
|
*
|
|
* @param infos tableau contenant les différentes données correspondant aux attributs (supposés homonymes)
|
|
* @return null
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
public function __construct($infos=null)
|
|
{
|
|
if((!empty($infos))&&(is_array($infos)))
|
|
{
|
|
//les limites doivent être connues avant le reste
|
|
if(!empty($infos["limites"]))
|
|
{
|
|
$this->limites=$infos["limites"];
|
|
unset($infos["limites"]);
|
|
}
|
|
$erreur_ok=false;
|
|
foreach ($infos as $attribut => $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é du nom de la rubrique
|
|
* et l'attribuant à l'objet si ok
|
|
*
|
|
* @param le nom à contrôler
|
|
* @return booléen suivant succès
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
public function set_nom($nom)
|
|
{
|
|
$long_min=(!empty($this->limites["nom_long_min"]))?$this->limites["nom_long_min"]:0;
|
|
if(empty($this->limites["nom_long_max"]))
|
|
{
|
|
$ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_PARAM_MANQUANT));
|
|
return false;
|
|
}
|
|
$long_max=$this->limites["nom_long_max"];
|
|
if((($long_min!=0)&&(!is_int($long_min)))||(!is_int($long_max))||($long_max<$long_min))
|
|
{
|
|
$ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_PARAM_FORMAT));
|
|
return false;
|
|
}
|
|
$nom=strip_tags(strval(trim($nom)));
|
|
$longueur=strlen($nom);
|
|
if(($longueur<$long_min)||($longueur>$long_max))
|
|
{
|
|
$this->erreurs=array_merge($this->erreurs,(array) (str_replace(array("__MIN__","__MAX__"),array($long_min,$long_max),ERREUR_RUBRIQUE_NOM_LONG)));
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
$this->nom=$nom;
|
|
return true;
|
|
}
|
|
}
|
|
/**
|
|
* Méthode testant la validité de la description de la rubrique
|
|
* et l'attribuant à l'objet si ok
|
|
*
|
|
* @param la description à contôler
|
|
* @return booléen suivant succès
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
public function set_description($description)
|
|
{
|
|
$long_min=(!empty($this->limites["description_long_min"]))?$this->limites["description_long_min"]:0;
|
|
if(empty($this->limites["description_long_max"]))
|
|
{
|
|
$ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_PARAM_MANQUANT));
|
|
return false;
|
|
}
|
|
$long_max=$this->limites["description_long_max"];
|
|
if((($long_min!=0)&&(!is_int($long_min)))||(!is_int($long_max))||($long_max<$long_min))
|
|
{
|
|
$ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_PARAM_FORMAT));
|
|
return false;
|
|
}
|
|
$description=strip_tags(strval(trim($description)));
|
|
$longueur=strlen($description);
|
|
if(($longueur<$long_min)||($longueur>$long_max))
|
|
{
|
|
$this->erreurs=array_merge($this->erreurs,(array) (str_replace(array("__MIN__","__MAX__"),array($long_min,$long_max),ERREUR_RUBRIQUE_DESCRIPTION_LONG)));
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
$this->description=$description;
|
|
return true;
|
|
}
|
|
}
|
|
/**
|
|
* Méthode testant la validité de la rubrique supérieure
|
|
* et l'attribuant à l'objet si ok
|
|
* la valeur peut être nulle si on décrit une rubrique racine
|
|
*
|
|
* @param la valeur à contrôler
|
|
* @return booléen suivant succès
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
public function set_rubrique_sup($rubrique_sup=null)
|
|
{
|
|
if((!empty($rubrique_sup))&&(!($rubrique_sup instanceof Rubrique)))
|
|
{
|
|
$ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_PARAM_FORMAT));
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
$this->rubrique_sup=$rubrique_sup;
|
|
return true;
|
|
}
|
|
}
|
|
/**
|
|
* 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="<h3>".__CLASS__."</h3>";
|
|
foreach($this as $key => $value)
|
|
{
|
|
if(is_array($value))
|
|
$value=affiche_tableau($value,"<li>#valeur</li>","<ul>","</ul>");
|
|
$texte.="$key : $value\n";
|
|
}
|
|
return $texte;
|
|
}
|
|
} |