New file |
0,0 → 1,604 |
<?php |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.1 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This library is free software; you can redistribute it and/or | |
// | modify it under the terms of the GNU Lesser General Public | |
// | License as published by the Free Software Foundation; either | |
// | version 2.1 of the License, or (at your option) any later version. | |
// | | |
// | This library is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser General Public | |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
|
// |@author ABDOOL RAHEEM shaheen shaheenar50@hotmail.com | |
// |@version 3 | |
|
include_once CHEMIN_CLASSES."BOG_debogage.inc.php"; |
include_once "DB.php"; |
/** |
* class Absence |
* |
*/ |
|
class Absence |
{ |
|
|
/**Attributes: */ |
|
var $_date_debut_absence=null; |
|
var $_date_fin_absence=null; |
|
var $_date_envoi_lettre=null; |
|
var $_utilisateur=null;//identifiant d'un utilisateur |
|
var $_motif=null;//identifiant d'un motif d'absence |
|
/* |
*constructeur |
*@param u : identifiant de l'utilisateur |
*@param m: motif |
*@param dd: date de debut d'absence |
*/ |
function Absence($u, $m, $dd) |
{ |
$this->_utilisateur=$u; |
$this->_motif=$m; |
$this->_date_debut_absence =$dd; |
} |
|
|
/* |
*construit une absence a partir d'un tableau |
*/ |
function construireAbsence($tableau) |
{ |
$this->_date_debut_absence =$tableau[GEST_CHAMPS_DATE_DEBUT_ABSENCE]; |
$this->_date_fin_absence =$tableau[GEST_CHAMPS_DATE_FIN_ABSENCE]; |
$this->_date_envoi_lettre =$tableau[GEST_CHAMPS_DATE_ENVOI_LETTRE]; |
$this->_utilisateur =$tableau[GEST_CHAMPS_ID_UTILISATEUR]; |
$this->_motif =$tableau[GEST_CHAMPS_ID_MOTIF]; |
} |
|
|
|
/* |
*enregistre une absence dansla base de donnees |
*renvoie 1 si ok, 0 si aucun enregistrement effectue, -1 sinon |
*/ |
|
function enregistrerNewAbsence() |
{ |
$table = GEST_ABSENCE; |
|
$champs =array(GEST_CHAMPS_DATE_DEBUT_ABSENCE => "$this->_date_debut_absence", |
GEST_CHAMPS_DATE_FIN_ABSENCE => "$this->_date_fin_absence", |
GEST_CHAMPS_DATE_ENVOI_LETTRE=> "$this->_date_envoi_lettre", |
GEST_CHAMPS_ID_UTILISATEUR => $this->_utilisateur, |
GEST_CHAMPS_ID_MOTIF => $this->_motif); |
|
$resultat =$GLOBALS['db']->autoExecute($table,$champs,DB_AUTOQUERY_INSERT); |
if (DB::isError($resultat)) { |
die($resultat->getMessage()); |
} |
|
$j=$GLOBALS['db']->affectedRows(); |
|
if ($j==1) |
{ |
return 1; |
}elseif($j==0){ |
return 0; |
}else{ |
return -1; |
} |
|
} |
|
/** |
*fonction qui met a jour une absence |
*dasn la base de donnees |
*@return 1 si modification effectuee |
*@return -1 si erreur |
*/ |
function mettreAJourAbsence() |
{ |
$requete= "UPDATE ".GEST_ABSENCE. |
" SET ".GEST_CHAMPS_ID_MOTIF." = $this->_motif ,". |
GEST_CHAMPS_DATE_DEBUT_ABSENCE." = \"$this->_date_debut_absence\" ,". |
GEST_CHAMPS_DATE_FIN_ABSENCE." =\"$this->_date_fin_absence\" ,". |
GEST_CHAMPS_DATE_ENVOI_LETTRE."= \" $this->_date_envoi_lettre\" ". |
" WHERE ".GEST_CHAMPS_ID_UTILISATEUR." = $this->_utilisateur ". |
" AND ".GEST_CHAMPS_ID_MOTIF." = $this->_motif ". |
" AND ".GEST_CHAMPS_DATE_DEBUT_ABSENCE."= \"$this->_date_debut_absence\" "; |
|
|
|
$resultat=$GLOBALS['db']->query($requete); |
|
$j=$GLOBALS['db']->affectedRows(); |
if ($j==1) |
{ |
return 1; |
}else return -1; |
|
} |
|
|
/** |
*enregistre la date d'envoie de la lettre |
*met a jour le champs date d'envoi de l'instance |
*/ |
function enregistrerDateEnvoi($d) |
{ |
$this->_date_envoi_lettre=$d; |
|
$requete="UPDATE ".GEST_ABSENCE. |
" SET ".GEST_CHAMPS_DATE_ENVOI_LETTRE." ='$d '" |
." WHERE ".GEST_CHAMPS_ID_UTILISATEUR." =$this->_utilisateur AND " |
.GEST_CHAMPS_ID_MOTIF." = $this->_motif AND " |
.GEST_CHAMPS_DATE_DEBUT_ABSENCE." = '$this->_date_debut_absence' "; |
|
$resultat=$GLOBALS['db']->query($requete); |
|
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
$j=$GLOBALS['db']->affectedRows(); |
|
switch ($j) |
{ |
case 1: return 1; |
case 0: return 0; |
default: return -1; |
} |
|
} |
|
/** |
*fonction recuperant lalist des absences de la semaine pour un utilisateur |
*@param :$user identifiant de l'utilisateur |
*@param : $date deb de la semaine |
*@param :$date fin de la semaine |
*les dates sont sosu le format mysql Y-m-d |
*/ |
function recupAbsence($user,$dateDeb,$dateFin) |
{ |
$requete="SELECT ".GEST_CHAMPS_ID_MOTIF." ,".GEST_CHAMPS_DATE_DEBUT_ABSENCE." ,". |
GEST_CHAMPS_DATE_FIN_ABSENCE. |
" FROM ".GEST_ABSENCE. |
" WHERE ".GEST_CHAMPS_ID_UTILISATEUR." = $user ". |
" AND ((".GEST_CHAMPS_DATE_DEBUT_ABSENCE." <= \"$dateDeb\" ". |
" AND ".GEST_CHAMPS_DATE_FIN_ABSENCE." >= \"$dateDeb\" )". |
" OR (".GEST_CHAMPS_DATE_DEBUT_ABSENCE."> \"$dateDeb\" ". |
" AND ".GEST_CHAMPS_DATE_DEBUT_ABSENCE." <= \"$dateFin\") )". |
" ORDER BY ".GEST_CHAMPS_DATE_DEBUT_ABSENCE.""; |
|
$resultat=$GLOBALS['db']->query($requete); |
|
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
|
$j=$resultat->numRows(); |
$tab=array(); |
if ($j>0) |
{ |
while($ligne=$resultat->fetchRow(DB_FETCHMODE_ASSOC)) |
{ |
$case=array(GEST_CHAMPS_ID_MOTIF => $ligne[GEST_CHAMPS_ID_MOTIF], |
GEST_CHAMPS_DATE_DEBUT_ABSENCE => $ligne[GEST_CHAMPS_DATE_DEBUT_ABSENCE], |
GEST_CHAMPS_DATE_FIN_ABSENCE => $ligne[GEST_CHAMPS_DATE_FIN_ABSENCE]); |
array_push($tab,$case); |
} |
|
} |
|
return $tab; |
} |
|
/** |
*fonction qui renvoie la liste des absences qui chevauchent |
*la periode d'absence |
*/ |
function existeAbsence() |
{ |
$requete="SELECT * ". |
" FROM ".GEST_ABSENCE. |
" WHERE ".GEST_CHAMPS_ID_UTILISATEUR." = $this->_utilisateur ". |
" AND ((".GEST_CHAMPS_DATE_DEBUT_ABSENCE." <= \"$this->_date_debut_absence\" ". |
" AND ".GEST_CHAMPS_DATE_FIN_ABSENCE." >= \"$this->_date_debut_absence\" )". |
" OR (".GEST_CHAMPS_DATE_DEBUT_ABSENCE."> \"$this->_date_debut_absence\" ". |
" AND ".GEST_CHAMPS_DATE_DEBUT_ABSENCE." < \"$this->_date_fin_absence\" ))". |
" ORDER BY ".GEST_CHAMPS_DATE_DEBUT_ABSENCE.""; |
|
|
$resultat=$GLOBALS['db']->query($requete); |
|
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
|
$j=$resultat->numRows(); |
$tab=array(); |
if ($j>0) |
{ |
while($ligne=$resultat->fetchRow(DB_FETCHMODE_ASSOC)) |
{ |
$case=array(GEST_CHAMPS_ID_MOTIF => $ligne[GEST_CHAMPS_ID_MOTIF], |
GEST_CHAMPS_DATE_DEBUT_ABSENCE => $ligne[GEST_CHAMPS_DATE_DEBUT_ABSENCE], |
GEST_CHAMPS_DATE_FIN_ABSENCE => $ligne[GEST_CHAMPS_DATE_FIN_ABSENCE], |
GEST_CHAMPS_ID_UTILISATEUR =>$ligne[GEST_CHAMPS_ID_UTILISATEUR], |
GEST_CHAMPS_DATE_ENVOI_LETTRE => $ligne[GEST_CHAMPS_DATE_ENVOI_LETTRE]); |
array_push($tab,$case); |
} |
|
} |
|
return $tab; |
} |
/** |
*fonction qui erifie s'il existe des absences qui chevauchent |
*et si au moins une de ces absences a etet validee |
*@return true si au moins uen absence a ete validee |
*@return false si on peut donc modifier |
*/ |
function existeAbsenceValidee() |
{ |
$tableau=$this->existeAbsence(); |
$validee=false; |
if (count($tableau)>0) |
{ |
|
for($p=0;$p<count($tableau);$p++) |
{ |
$h=$tableau[$p]; |
//test si au moins une lettre a ete envoyee |
if ($h[GEST_CHAMPS_DATE_ENVOI_LETTRE]!='0000-00-00') |
{ |
$validee=true; |
} |
} |
} |
return $validee; |
} |
|
/** |
* renvoie un booleen true si la lettre a ete envoyee et faux sinon |
*/ |
function isEnvoi( ) |
{ |
$requete="SELECT ".GEST_CHAMPS_DATE_ENVOI_LETTRE. |
" FROM ".GEST_ABSENCE. |
" WHERE ".GEST_CHAMPS_ID_ABSENCE. " =$this->_id_absence"; |
|
$resultat=$GLOBALS['db']->query($requete); |
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
|
$j=$resultat->numRows(); |
if ($j==1) |
{ |
return true; |
}else { |
return false; |
} |
} |
|
/** |
*fonction renvoyany l'identifiant d'un utilisateur |
*/ |
function getIdUserAbsence() |
{ |
return $this->_utilisateur; |
} |
/** |
*fonction renvoyant la date de debut d'absence |
*/ |
function getDateDebAbsence() |
{ |
return $this->_date_debut_absence; |
} |
/** |
*fonction renvoyant la date de fin d'absence |
*/ |
function getDateFinAbsence() |
{ |
return $this->_date_fin_absence; |
} |
/** |
*fonction renvoyant le motif d'absence |
*/ |
function getIdMotif() |
{ |
return $this->_motif; |
} |
/** |
*fonction qui renvoit la duree d'une absence |
*/ |
function getDureeAbsence() |
{ |
|
if(($this->_date_fin_absence=='0000-00-00') or($this->_date_debut_absence==$this->_date_fin_absence)) |
{ |
$duree=1; |
}else{ |
$deb=explode('-',$this->getDateDebAbsence()); |
$fin=explode('-',$this->getDateFinAbsence()); |
$dateDeb=mktime(0,0,0,$deb[1],$deb[2],$deb[0]); |
|
$dateFin=mktime(0,0,0,$fin[1],$fin[2],$fin[0]); |
$duree=(intval((($dateFin-$dateDeb)/3600)/24)+1); |
} |
|
return $duree; |
|
} |
/** |
*fonction renvoyant la date d'envoi de la lettre d'absence |
*/ |
function getDateEnvoi() |
{ |
return $this->_date_envoi_lettre; |
} |
/** |
*fonction qui recupere la liste d'absence contigues |
*a une absence donnee t qui ont le meme motif |
*pour un utilisateur donne |
*renvoie l'objet absence precedent |
*renvoie -1 s'il n'existe pas |
*/ |
function getAbsencesPrec() |
{ |
//recuperation de l'absence juste avant |
//recuperation par maximum date de debut |
//recuperation des absences non encore validees |
$requete="SELECT MAX(".GEST_CHAMPS_DATE_FIN_ABSENCE.") ". |
" FROM ".GEST_ABSENCE. |
" WHERE ".GEST_CHAMPS_ID_UTILISATEUR." = $this->_utilisateur ". |
" AND ".GEST_CHAMPS_ID_MOTIF." = $this->_motif ". |
" AND ".GEST_CHAMPS_DATE_ENVOI_LETTRE."= \"0000-00-00\"". |
" AND ".GEST_CHAMPS_DATE_FIN_ABSENCE. "< \"$this->_date_debut_absence\"". |
" AND ".GEST_CHAMPS_DATE_DEBUT_ABSENCE. " <\"$this->_date_debut_absence\""; |
|
|
$resultat=$GLOBALS['db']->query($requete); |
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
$ligne=$resultat->fetchRow(DB_FETCHMODE_ORDERED); |
if($ligne[0]!=null) |
{ |
//recuperation de l'objet absence precedente |
$absence=&Absence::recupererAbsenceDateFin($this->_utilisateur,$this->_motif,$ligne[0]); |
return $absence; |
|
}else return -1; |
} |
/** |
*fonnction qui recuprer l'absence du meme motif situe juste apres |
*cette absence |
*renvoi l'absence |
*renvoie -1 si vide ou erreur |
*/ |
function getAbsencesSuiv() |
{ |
$requete= " SELECT MIN(".GEST_CHAMPS_DATE_DEBUT_ABSENCE.")". |
" FROM ".GEST_ABSENCE. |
" WHERE ".GEST_CHAMPS_ID_MOTIF." = $this->_motif ". |
" AND ".GEST_CHAMPS_ID_UTILISATEUR." = $this->_utilisateur ". |
" AND ".GEST_CHAMPS_DATE_DEBUT_ABSENCE." > \"$this->_date_debut_absence\" ". |
" AND ".GEST_CHAMPS_DATE_ENVOI_LETTRE. " = \"0000-00-00\""; |
|
|
$resultat=$GLOBALS['db']->query($requete); |
|
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
|
$ligne =$resultat->fetchRow(DB_FETCHMODE_ORDERED); |
|
|
if($ligne[0]!=null) |
{ |
//recuperation de l'objet absence precedente |
$absence=&Absence::recupererAbsenceDateFin($this->_utilisateur,$this->_motif,$ligne[0]); |
return $absence; |
|
} else return -1; |
} |
|
|
/** |
*fonction recuperant une absence a partir de |
*@param id : identifiant utiliateur |
*@param : motif |
*@param : datedebut de l'absence |
*@return absence |
*-1 si erreur ou rien |
*/ |
function recupererAbsenceDateDeb($id,$motif,$dateDeb) |
{ |
$requete=" SELECT * FROM ".GEST_ABSENCE. |
" WHERE ".GEST_CHAMPS_ID_UTILISATEUR." =$id ". |
" AND ".GEST_CHAMPS_ID_MOTIF." = $motif ". |
" AND ".GEST_CHAMPS_DATE_DEBUT." =\"$dateDeb\""; |
|
|
|
$resultat=$GLOBALS['db']->query($requete); |
|
$ligne=$resultat->fetchRow(DB_FETCHMODE_ASSOC); |
|
$k=$resultat->numRows(); |
|
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
if($k==1) |
{ |
$absence=new Absence($ligne[GEST_CHAMPS_ID_UTILISATEUR],$ligne[GEST_CHAMPS_ID_MOTIF],$ligne[GEST_CHAMPS_DATE_DEBUT_ABSENCE]); |
|
$absence->setDateFin($ligne[GEST_CHAMPS_DATE_FIN_ABSENCE]); |
|
$absence->setDateEnvoi($ligne[GEST_CHAMPS_DATE_ENVOI_LETTRE]); |
return $absence; |
}else return -1; |
|
} |
|
/**fonction qui recupere une absence de la base de donnees |
*@param : $id : identifiant de l'utilisateur |
*@param: $motif : identifiant du motif d'absence |
*@param : $date: date de fin de l'absence |
*@return -1 si erreur |
*@return objet absence |
*/ |
function recupererAbsenceDateFin($id,$motif,$dateFin) |
{ |
$requete=" SELECT * FROM ".GEST_ABSENCE. |
" WHERE ".GEST_CHAMPS_ID_UTILISATEUR." =$id ". |
" AND ".GEST_CHAMPS_ID_MOTIF." = $motif ". |
" AND ".GEST_CHAMPS_DATE_FIN_ABSENCE." =\"$dateFin\""; |
|
|
$resultat=$GLOBALS['db']->query($requete); |
|
$ligne=$resultat->fetchRow(DB_FETCHMODE_ASSOC); |
|
$k=$resultat->numRows(); |
|
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
if($k==1) |
{ |
$absence=new Absence($ligne[GEST_CHAMPS_ID_UTILISATEUR],$ligne[GEST_CHAMPS_ID_MOTIF],$ligne[GEST_CHAMPS_DATE_DEBUT_ABSENCE]); |
|
$absence->setDateFin($ligne[GEST_CHAMPS_DATE_FIN_ABSENCE]); |
|
$absence->setDateEnvoi($ligne[GEST_CHAMPS_DATE_ENVOI_LETTRE]); |
return $absence; |
}else return -1; |
|
} |
/** |
*met a jour la det de debut |
* |
*/ |
function setDateDeb( $dateDeb ) |
{ |
$this->_date_debut_absence =$dateDeb; |
} |
|
|
/** |
*met a jour la date de fin |
* verification si date de fin superieur ou egale a date debut |
*renvoi 1 si modification effectuee |
*-1 si erreur |
*/ |
function setDateFin($dateFin ) |
{ |
$deb=$this->_date_debut_absence; |
|
|
if ($deb<=$dateFin ) |
{ |
$this->_date_fin_absence=$dateFin; |
return 1; |
}else{ |
return -1; |
} |
|
} |
|
|
/** |
*met a jour la date d'envoi |
* |
*/ |
function setDateEnvoi( $dateEnvoi ) |
{ |
$this->_date_envoi_lettre=$dateEnvoi; |
} |
|
/* |
*supprime une absence |
*@param : $user : identifiant de l'utilisateur |
*@date : date de l'absence : debut d'absence au format Y-m-d |
*/ |
function supprimerAbsence($user,$dateDeb) |
{ |
$requete="DELETE FROM ".GEST_ABSENCE. |
" WHERE ".GEST_CHAMPS_ID_UTILISATEUR." = $user " |
." AND ".GEST_CHAMPS_DATE_DEBUT_ABSENCE." = \"$dateDeb\" "; |
|
$resultat=$GLOBALS['db']->query($requete); |
|
(DB::isError($resultat)) ? |
die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
|
$j=$GLOBALS['db']->affectedRows(); |
return $j; |
} |
|
/** |
*recuperer absence pour un utilisateur |
*@param id : identifiant utilisateur |
*/ |
|
function recupererTableauAbsence($id) |
{ |
$table =array(); |
$requete=" SELECT ".GEST_CHAMPS_DATE_DEBUT_ABSENCE." , ".GEST_CHAMPS_DATE_FIN_ABSENCE. |
" , ".GEST_CHAMPS_DATE_ENVOI_LETTRE." , ".GEST_CHAMPS_LIBELLE_MOTIF. |
" FROM ".GEST_ABSENCE." a, ".GEST_MOTIF_ABSENCE." m WHERE " |
.GEST_CHAMPS_ID_UTILISATEUR." =$id AND " |
."a.".GEST_CHAMPS_ID_MOTIF." = m.".GEST_CHAMPS_ID_MOTIF." "; |
|
|
$resultat =$GLOBALS['db']->query($requete) ; |
|
(DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ; |
while($ligne=$resultat->fetchRow(DB_FETCHMODE_ASSOC)) |
{ |
$case =array( |
GEST_CHAMPS_DATE_DEBUT_ABSENCE =>$ligne[GEST_CHAMPS_DATE_DEBUT_ABSENCE], |
GEST_CHAMPS_DATE_FIN_ABSENCE =>$ligne[GEST_CHAMPS_DATE_FIN_ABSENCE], |
GEST_CHAMPS_DATE_ENVOI_LETTRE =>$ligne[GEST_CHAMPS_DATE_ENVOI_LETTRE], |
GEST_CHAMPS_LIBELLE_MOTIF =>$ligne[GEST_CHAMPS_LIBELLE_MOTIF]); |
|
array_push($table,$case); |
} |
|
return $table; |
} |
/* |
*affichage des absences |
*/ |
|
function afficherAbsence() |
{ |
echo "absence : "; |
|
$t=array( |
$this->_utilisateur,$this->_motif,$this->_date_debut_absence, |
$this->_date_fin_absence,$this->_date_envoi_lettre); |
|
foreach ($t as $p) |
{ |
if (isset($p)){ |
echo "$p <br />";} |
} |
|
|
} |
|
} |
?> |
Property changes: |
Added: svn:executable |