156 lines
4.4 KiB
PHP
Executable File
156 lines
4.4 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* classe minimaliste permettant de gérer un agenda
|
|
* on ne traite pas ici le stockage des données
|
|
* nécessite la classe utilisateur pour désigner le propriétaire de l'agenda
|
|
*
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
require_once("utilisateur.php");
|
|
class Agenda
|
|
{
|
|
protected $designation; // intitulé de l'entrée de l'agenda
|
|
protected $time_debut;// timestamp de début
|
|
protected $time_fin;// timestamp de fin
|
|
protected $proprietaire;// l'auteur de l'entrée de l'agenda (classe Utilisateur)
|
|
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)))
|
|
{
|
|
$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é d'un intitulé et l'attribuant à l'objet si ok
|
|
*
|
|
* @return booléen suivant succès
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
public function set_designation($designation)
|
|
{
|
|
$designation=strip_tags(strval(trim($designation)));
|
|
$longueur=strlen($designation);
|
|
if(($longueur<AGENDA_MIN_DESIGNATION)||($longueur>AGENDA_MAX_DESIGNATION))
|
|
{
|
|
$this->erreurs=array_merge($this->erreurs,(array) ERREUR_AGENDA_DESIGNATION_LONG);
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
$this->designation=$designation;
|
|
return true;
|
|
}
|
|
}
|
|
/**
|
|
* Méthode testant la validité d'une date de début fournie
|
|
* et la transformant en timestamp unix si ok pour l'attribuer à l'objet
|
|
*
|
|
* @param date de début au format JJ/MM/AAAA
|
|
* @return booléen suivant succès
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
public function set_time_debut($date_debut)
|
|
{
|
|
if(preg_match(DATE_FORMAT_EREG,$date_debut)==0)
|
|
{
|
|
$this->erreurs=array_merge($this->erreurs,(array) ERREUR_AGENDA_DATE_DEBUT_FORMAT);
|
|
return false;
|
|
}
|
|
$tab_debut=explode("/",$date_debut);
|
|
$time_debut=mktime(0,0,0,$tab_debut[1],$tab_debut[0],$tab_debut[2]);
|
|
if($time_debut===false) return false;
|
|
$this->time_debut=$time_debut;
|
|
return true;
|
|
}
|
|
/**
|
|
* Méthode testant la validité d'une date de fin fournie
|
|
* et la transformant en timestamp unix si ok pour l'attribuer à l'objet
|
|
*
|
|
* @param date de fin au format JJ/MM/AAAA
|
|
* @return booléen suivant succès
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
public function set_time_fin($date_fin)
|
|
{
|
|
if(!isset($this->time_debut))
|
|
{
|
|
$this->erreurs=array_merge($this->erreurs,(array) ERREUR_AGENDA_DATE_FIN_DEBUT_ABSENT);
|
|
return false;
|
|
}
|
|
if(preg_match(DATE_FORMAT_EREG,$date_fin)==0)
|
|
{
|
|
$this->erreurs=array_merge($this->erreurs,(array) ERREUR_AGENDA_DATE_FIN_FORMAT);
|
|
return false;
|
|
}
|
|
$tab_fin=explode("/",$date_fin);
|
|
$time_fin=mktime(0,0,0,$tab_fin[1],$tab_fin[0],$tab_fin[2]);
|
|
if($time_fin===false) return false;
|
|
if($time_fin<$this->time_debut)
|
|
{
|
|
$this->erreurs=array_merge($this->erreurs,(array) ERREUR_AGENDA_DATE_FIN_AVANT_DEBUT);
|
|
return false;
|
|
}
|
|
$this->time_fin=$time_fin;
|
|
return true;
|
|
}
|
|
/**
|
|
* Méthode testant la validité du propriétaire fourni
|
|
*
|
|
* @param user : une instance de l'objet Utilisateur
|
|
* @return false si valeur non acceptée, true sinon
|
|
* @author Fabrice PENHOËT
|
|
**/
|
|
public function set_proprietaire($user)
|
|
{
|
|
if(!($user instanceof Utilisateur))
|
|
{
|
|
$ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_PARAM_FORMAT));
|
|
return false;
|
|
}
|
|
if(!isset($user->id_utilisateur))
|
|
{
|
|
$ajout_journal=new journal_erreurs(array(__FILE__,__LINE__,ERREUR_PARAM_MANQUANT));
|
|
return false;
|
|
}
|
|
$this->proprietaire=$user;
|
|
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;
|
|
}
|
|
} |