function emprunteur ($id=0, $message='', $niveau_message=FALSE, $type_fiche=0) {
// initialisation des proprétés si l'id est défini
if($id) {
$this->id = $id;
$this->type_fiche = $type_fiche;
$this->serious_message = $niveau_message;
$this->prets = array();
$this->nb_pret =0;
$this->nb_reservations = 0;
$this->nb_previsions = 0;
$this->fetch_info();
if ($type_fiche>0) $this->fetch_info_suite();
$this->message = $message;
if ($type_fiche==1) $this->do_fiche();
elseif ($type_fiche==2) $this->do_fiche_affichage() ;
elseif ($type_fiche==3) $this->do_fiche_consultation() ;
}
}
// renseignement des propriétés avec requête MySQL
function fetch_info() {
global $dbh;
global $msg;
global $charset;
global $val_list_empr;
global $pmb_gestion_financiere, $pmb_gestion_abonnement,$pmb_gestion_tarif_prets,$pmb_gestion_amende,$empr_header_format;
global $deflt_docs_location ;
global $pmb_opac_view_activate,$pmb_sur_location_activate;
if(!$this->id || !$dbh)
return FALSE;
$requete = "SELECT e.*, c.libelle AS code1, s.libelle AS code2, es.statut_libelle AS empr_statut_libelle, allow_loan, allow_book, allow_opac, allow_dsi, allow_dsi_priv, allow_sugg, allow_prol, d.location_libelle as localisation, date_format(empr_date_adhesion, '".$msg["format_date"]."') as aff_empr_date_adhesion, date_format(empr_date_expiration, '".$msg["format_date"]."') as aff_empr_date_expiration,date_format(last_loan_date, '".$msg["format_date"]."') as aff_last_loan_date FROM empr e left join docs_location as d on e.empr_location=d.idlocation, empr_categ c, empr_codestat s, empr_statut es ";
$requete .= " WHERE e.id_empr='".$this->id."' " ;
$requete .= " AND c.id_categ_empr=e.empr_categ";
$requete .= " AND s.idcode=e.empr_codestat";
$requete .= " AND es.idstatut=e.empr_statut";
$requete .= " LIMIT 1";
$result = mysql_query($requete, $dbh) or die (mysql_error()." ".$requete) ;
if(!mysql_num_rows($result))
return FALSE;
$empr = mysql_fetch_object($result);
// affectation des propriétés
$this->cb = $empr->empr_cb ; // code barre emprunteur
$this->nom = $empr->empr_nom ; // nom emprunteur
$this->prenom = $empr->empr_prenom ; // prénom mprunteur
$this->adr1 = $empr->empr_adr1 ; // adresse ligne 1
$this->adr2 = $empr->empr_adr2 ; // adresse ligne 2
$this->cp = $empr->empr_cp ; // code postal
$this->ville = $empr->empr_ville ; // ville
$this->pays = $empr->empr_pays ; // ville
$this->mail = $empr->empr_mail ; // adresse email
$this->tel1 = $empr->empr_tel1 ; // téléphone 1
$this->sms = $empr->empr_sms ; // sms activation
$this->tel2 = $empr->empr_tel2 ; // téléphone 2
$this->prof = $empr->empr_prof ; // profession
$this->birth = $empr->empr_year ; // année de naissance
$this->categ = $empr->empr_categ ; // catégorie emprunteur
$this->cstat = $empr->empr_codestat ; // code statistique
$this->cdate = $empr->empr_creation ; // date de création
$this->mdate = $empr->empr_modif ; // date de modification
$this->sexe = $empr->empr_sexe ; // sexe de l'emprunteur
$this->login = $empr->empr_login ; // login pour services OPAC
$this->pwd = $empr->empr_password ; // mot de passe OPAC
$this->type_abt = $empr->type_abt; // type d'abonnement
$this->empr_location = $empr->empr_location; // localisation
$this->empr_location_l = $empr->localisation; // localisation
$this->date_blocage= $empr->date_fin_blocage; // Date de fin de blocage de l'emprunteur
$this->empr_statut= $empr->empr_statut;
$this->empr_statut_libelle= $empr->empr_statut_libelle;
$this->total_loans= $empr->total_loans;
$this->allow_loan =$empr->allow_loan;
$this->allow_book =$empr->allow_book;
$this->allow_opac =$empr->allow_opac;
$this->allow_dsi =$empr->allow_dsi;
$this->allow_dsi_priv =$empr->allow_dsi_priv;
$this->allow_sugg =$empr->allow_sugg;
$this->allow_prol =$empr->allow_prol;
global $selector_prop_ajout_caddie_empr, $empr_show_caddie ;
if ($empr_show_caddie) {
$this->img_ajout_empr_caddie = "img_ajout_empr_caddie .= "onClick=\"openPopUp('./cart.php?object_type=EMPR&item=".$this->id."', 'cart', 600, 700, -2, -2, '$selector_prop_ajout_caddie_empr');\">";
} else
$this->img_ajout_empr_caddie="";
$this->lien_nom_prenom="$this->nom, $this->prenom";
if($pmb_opac_view_activate ){
$this->opac_view = new opac_view(0,$this->id);
}
if($pmb_sur_location_activate){
$sur_loc= sur_location::get_info_surloc_from_location($expl->idlocation);
}
$date_blocage=array();
$date_blocage=explode("-",$this->date_blocage);
if (mktime(0,0,0,$date_blocage[1],$date_blocage[2],$date_blocage[0])>time()) {
$this->blocage_active=true;
}
//Groupes
$requete="select id_groupe, libelle_groupe from groupe, empr_groupe where empr_id='".$this->id."' and id_groupe=groupe_id";
$result=mysql_query($requete);
if (mysql_num_rows($result)) {
while ($grp_temp=mysql_fetch_object($result)) {
$this->groupes[] = "".htmlentities($grp_temp->libelle_groupe,ENT_QUOTES,$charset)."";
}
} else
$this->groupes=array();
if ($empr->empr_ldap){
$this->ldap='LDAP'; // flag AuthLdap
} else {
$this->ldap='MYSQL';
}
$this->date_adhesion = $empr->empr_date_adhesion ; // début adhésion
$this->date_expiration = $empr->empr_date_expiration ; // fin adhésion
$this->last_loan_date = $empr->last_loan_date ; // date du dernier emprunt
$this->aff_date_adhesion = $empr->aff_empr_date_adhesion ; // début adhésion
$this->aff_date_expiration = $empr->aff_empr_date_expiration ; // fin adhésion
$this->aff_last_loan_date = $empr->aff_last_loan_date ; // date du dernier emprunt
$this->empr_msg = $empr->empr_msg ; // message emprunteur
$this->cat_l = $empr->code1 ; // libellé catégorie emprunteur
$this->cstat_l = $empr->code2 ; // libellé code statistique. voir ce bug avec Eric
//Paramètres perso
//Liste des champs
$p_perso = new parametres_perso("empr");
$perso_ = $p_perso->show_fields($this->id);
$perso="";
$header_format="";
$class="colonne3";
$c=0;
if (count($perso_["FIELDS"])) {
for ($i=0; $i";
$perso.="
".$p["TITRE"];
$perso.=$p["AFF"]."
";
$perso.="";
if ($c==0) {
$c=1;
} else {
if ($c==1) {
$class="colonne_suite";
$c=2;
} else {
if ($c==2) {
$class="colonne3";
$c=0;
}
}
}
}
$reste=2-$c;
if ($c!=0) {
for ($i=0; $i<$reste; $i++) {
$perso.="
";
$c++;
}
$perso.="
";
}
}
$this->header_format=$header_format;
$this->perso=$perso;
}
// histoire de ne pas aller chercher tout le reste
function fetch_info_suite() {
global $dbh;
global $msg;
global $charset;
global $val_list_empr;
global $pmb_gestion_financiere, $pmb_gestion_abonnement,$pmb_gestion_tarif_prets,$pmb_gestion_amende,$empr_header_format;
global $deflt_docs_location ;
global $pmb_sur_location_activate;
global $pmb_resa_planning;
//Comptes si gestion financiere
$compte="";
$n_c=0;
$neg="%s";
$pos="%s";
if ($pmb_gestion_financiere) {
$compte.="
";
if ($pmb_gestion_abonnement) {
$cpt_id=comptes::get_compte_id_from_empr($this->id,1);
$cpt=new comptes($cpt_id);
$solde=$cpt->update_solde();
$novalid=$cpt->summarize_transactions("","",0,0);
if ($cpt_id) {
$compte.="
";
}
$n_c++;
}
// Autre compte, que s'il y a des types de transaction
$transactype=new transactype_list();
if ($transactype->get_count()) {
$cpt_id=comptes::get_compte_id_from_empr($this->id,4);
$cpt=new comptes($cpt_id);
$solde=$cpt->update_solde();
$novalid=$cpt->summarize_transactions("","",0,0);
$compte.="
";
$n_c++;
}
if ($n_c<3) {
for ($i=$n_c; $i<4; $i++)
$compte.="
";
}
$compte.="
";
}
$this->compte=$compte;
if($pmb_gestion_amende && $pmb_gestion_financiere)$this->relance.= $this->do_tablo_relance();
// ces propriétés sont absentes de la table emprunteurs pour le moment
// $this->adate = $empr->empr_??? ; // date d'abonnement
// $this->rdate = $empr->empr_??? ; // date de réabonnement
if($this->message) {
$this->message = $empr->message.''.$this->message;
} else {
$this->message = $empr->message;
}
$order = " order by p.pret_retour, p.pret_date, e.expl_cb";
$requete_nb_pret = "select count(1) as nb_pret from pret where pret_idempr=".$this->id;
$result_nb_pret = mysql_query($requete_nb_pret, $dbh);
$r_nb_pret = mysql_fetch_object($result_nb_pret);
$this->nb_pret = $r_nb_pret->nb_pret ;
// récupération du tableau des exemplaires empruntés
// il nous faut : code barre exemplaire, titre/auteur, type doc, date de pret, date de retour
$requete = "select e.expl_cb, e.expl_id, e.expl_notice, docs_location.location_libelle, docs_location.idlocation, docs_section.section_libelle, e.expl_bulletin,";
$requete.= " p.pret_date, p.pret_retour, p.short_loan_flag, t.tdoc_libelle,";
$requete.= " date_format(pret_date, '".$msg["format_date"]."') as aff_pret_date, date_format(pret_retour, '".$msg["format_date"]."') as aff_pret_retour,";
$requete.= " if (pret_retour< CURDATE(),1 ,0 ) as retard , date_format(retour_initial, '".$msg["format_date"]."') as aff_retour_initial, cpt_prolongation";
$requete.= " from pret p, exemplaires e, docs_type t, docs_location, docs_section ";
$requete.= " where p.pret_idempr=".$this->id;
$requete.= " and p.pret_idexpl=e.expl_id";
$requete.= " and e.expl_section=docs_section.idsection";
$requete.= " and e.expl_location=docs_location.idlocation";
$requete.= " and t.idtyp_doc=e.expl_typdoc";
$requete.= " ".$order;
$result = mysql_query($requete, $dbh);
$this->retard=0;
while($pret = mysql_fetch_object($result)) {
if($pmb_sur_location_activate) {
$sur_loc= sur_location::get_info_surloc_from_location($pret->idlocation);
}
if ($pret->expl_notice) {
$notice = new mono_display($pret->expl_notice, 0);
$this->prets[] = array(
'cb' => $pret->expl_cb,
'id' => $pret->expl_id,
'libelle' => $notice->header,
'typdoc' => $pret->tdoc_libelle,
'section' => $pret->section_libelle,
'location' => $pret->location_libelle,
'idlocation' => $pret->idlocation,
'date_pret' => $pret->aff_pret_date,
'date_retour' => $pret->aff_pret_retour,
'short_loan_flag' => $pret->short_loan_flag,
'sql_date_retour' => $pret->pret_retour,
'org_ret_date' => str_replace('-', '', $pret->pret_retour),
'pret_retard' => $pret->retard,
'retour_initial' => $pret->aff_retour_initial,
'cpt_prolongation' => $pret->cpt_prolongation,
'sur_location' => $sur_loc->libelle
);
}
if ($pret->expl_bulletin) {
$bulletin = new bulletinage_display($pret->expl_bulletin);
$this->prets[] = array(
'cb' => $pret->expl_cb,
'id' => $pret->expl_id,
'libelle' => $bulletin->display,
'typdoc' => $pret->tdoc_libelle,
'section' => $pret->section_libelle,
'location' => $pret->location_libelle,
'idlocation' => $pret->idlocation,
'date_pret' => $pret->aff_pret_date,
'date_retour' => $pret->aff_pret_retour,
'short_loan_flag' => $pret->short_loan_flag,
'sql_date_retour' => $pret->pret_retour,
'org_ret_date' => str_replace('-', '', $pret->pret_retour),
'pret_retard' => $pret->retard,
'retour_initial' => $pret->aff_retour_initial,
'cpt_prolongation' => $pret->cpt_prolongation,
'sur_location' => $sur_loc->libelle
);
}
$this->retard = $this->retard+$pret->retard;
}
$requete_resa = "select count(1) as nb_reservations ";
$requete_resa .= " from resa ";
$requete_resa .= " where resa_idempr=".$this->id;
$result_resa = mysql_query($requete_resa, $dbh);
$resa = mysql_fetch_object($result_resa);
$this->nb_reservations = $resa->nb_reservations ;
if ($pmb_resa_planning) {
$requete_resa_planning = "select count(1) as nb_previsions ";
$requete_resa_planning .= " from resa_planning ";
$requete_resa_planning .= " where resa_idempr=".$this->id;
$result_resa_planning = mysql_query($requete_resa_planning, $dbh);
$resa_planning = mysql_fetch_object($result_resa_planning);
$this->nb_previsions = $resa_planning->nb_previsions ;
}
return TRUE;
}
// fabrication de la fiche lecteur
function do_fiche() {
global $empr_tmpl, $empr_pret_allowed;
global $msg,$charset;
global $groupID;
global $biblio_email;
global $pmb_lecteurs_localises ;
global $pmb_gestion_abonnement,$pmb_gestion_financiere, $pmb_gestion_tarif_prets, $pmb_gestion_amende;
global $finance_blocage_abt,$finance_blocage_amende,$finance_blocage_pret,$pmb_blocage_retard,$pmb_blocage_retard_force;
global $force_finance;
global $pmb_resa_planning;
global $dbh;
global $pmb_blocage_retard,$pmb_blocage_coef,$pmb_blocage_max,$pmb_blocage_delai;
global $empr_fiche_depliee;
global $pmb_opac_view_activate;
global $pmb_sur_location_activate;
global $alert_sound_list; // l'utilisateur veut-il les sons d'alerte
global $pmb_short_loan_management;
$this->fiche = $empr_tmpl;
$this->fiche = str_replace('!!cb!!' , $this->cb , $this->fiche);
$this->fiche = str_replace('!!nom!!' , pmb_strtoupper($this->nom) , $this->fiche);
$this->fiche = str_replace('!!prenom!!' , $this->prenom , $this->fiche);
$this->fiche = str_replace('!!image_caddie_empr!!', $this->img_ajout_empr_caddie, $this->fiche);
$this->fiche = str_replace('!!info_nb_pret!!' , $this->nb_pret , $this->fiche);
$this->fiche = str_replace('!!info_nb_resa!!' , $this->nb_reservations , $this->fiche);
if ($pmb_resa_planning)
$this->fiche = str_replace('!!info_resa_planning!!' , $msg[empr_nb_resa_planning].":".$this->nb_previsions , $this->fiche);
else
$this->fiche = str_replace('!!info_resa_planning!!' , "", $this->fiche);
$this->fiche = str_replace('!!info_authldap!!' , $this->ldap, $this->fiche);
$this->fiche = str_replace('!!id!!' , $this->id , $this->fiche);
$this->fiche = str_replace('!!adr1!!' , $this->adr1 , $this->fiche);
$this->fiche = str_replace('!!adr2!!' , $this->adr2 , $this->fiche);
$this->fiche = str_replace('!!tel1!!' , $this->tel1 , $this->fiche);
$this->fiche = str_replace('!!sms!!' , $this->sms , $this->fiche);
$this->fiche = str_replace('!!tel2!!' , $this->tel2 , $this->fiche);
$this->fiche = str_replace('!!cp!!' , $this->cp , $this->fiche);
$this->fiche = str_replace('!!ville!!' , $this->ville , $this->fiche);
$this->fiche = str_replace('!!pays!!' , $this->pays , $this->fiche);
$emails=array();
$email_final=array();
$emails = explode(';',$this->mail);
for ($i=0;$i".$emails[$i]."";
$this->fiche = str_replace('!!mail_all!!' , implode(" ",$email_final) , $this->fiche);
$this->fiche = str_replace('!!prof!!' , $this->prof , $this->fiche);
$this->fiche = str_replace('!!date!!' , $this->birth , $this->fiche);
$this->fiche = str_replace('!!categ!!' , $this->cat_l , $this->fiche);
$this->fiche = str_replace('!!codestat!!' , $this->cstat_l, $this->fiche);
$this->fiche = str_replace('!!adhesion!!' , $this->aff_date_adhesion, $this->fiche);
$this->fiche = str_replace('!!expiration!!' , $this->aff_date_expiration, $this->fiche);
$this->fiche = str_replace('!!last_loan_date!!' , $this->aff_last_loan_date, $this->fiche);
$this->fiche = str_replace('!!perso!!' , $this->perso, $this->fiche);
$this->fiche = str_replace('!!header_format!!' , $this->header_format, $this->fiche);
$this->fiche = str_replace('!!empr_login!!' , $this->login, $this->fiche);
if ($this->pwd)
$this->fiche = str_replace('!!empr_pwd!!',"".$msg["empr_pwd_opac_affected"]."",$this->fiche);
else
$this->fiche = str_replace('!!empr_pwd!!',"",$this->fiche);
$this->fiche = str_replace('!!comptes!!' , $this->compte, $this->fiche);
$this->fiche = str_replace('!!empr_statut_libelle!!', $this->empr_statut_libelle, $this->fiche);
$this->fiche = str_replace('!!empr_picture!!', $this->picture_empr($this->cb), $this->fiche);
if ($empr_fiche_depliee=="1")
$this->fiche = str_replace('!!depliee!!'," startOpen=\"Yes\"", $this->fiche);
else
$this->fiche = str_replace('!!depliee!!',"", $this->fiche);
if ($pmb_lecteurs_localises) {
$this->fiche = str_replace("", "
$msg[empr_location] : ".$this->empr_location_l."
", $this->fiche);
$resume_localisation=$this->empr_location_l;
}
if ($pmb_opac_view_activate) {
}
//Groupes
if (count($this->groupes)) {
$this->fiche = str_replace('!!groupes!!',"".$msg[groupes_empr]." : ".implode(" / ",$this->groupes)."\n",$this->fiche);
$resume_groupe=implode(" / ",$this->groupes);
} else {
$this->fiche = str_replace('!!groupes!!'," ",$this->fiche);
}
// Ajout d'infos complémentaires lorsque la fiche lecteur est repliée par défaut
$empr_resume='';
if ($empr_fiche_depliee=="0") {
//localisation
if($resume_localisation) $empr_resume=$resume_localisation." - ";
//categ
if($this->cat_l) $empr_resume.=$this->cat_l." - ";
//groupe
if($resume_groupe) $empr_resume.=$resume_groupe." - ";
}
$this->fiche = str_replace('!!empr_resume!!',$empr_resume,$this->fiche);
//Pret autorisé ou non ?
$pret_ok=0;
if (($pmb_gestion_financiere)&&($force_finance==0)) {
$message_pret="";
if ($pmb_gestion_abonnement) {
//Vérification du compte
$cpte_abt_id=comptes::get_compte_id_from_empr($this->id,1);
if ($cpte_abt_id) {
$cpte_abt=new comptes($cpte_abt_id);
$solde_neg=$cpte_abt->get_solde();
if (($finance_blocage_abt)&&($solde_neg*1<0)) {
if ($pret_ok<2) $pret_ok=$finance_blocage_abt;
$message_pret.=sprintf($msg["finance_pret_solde_abt"],comptes::format($solde_neg))." ";
$this->blocage_abt=$finance_blocage_abt;
}
if ($solde_neg*1<0) $this->compte_abt=abs($solde_neg);
}
}
if ($pmb_gestion_tarif_prets) {
//Vérification du compte
$cpte_pret_id=comptes::get_compte_id_from_empr($this->id,3);
if ($cpte_pret_id) {
$cpte_pret=new comptes($cpte_pret_id);
$solde_neg=$cpte_pret->get_solde();
if (($finance_blocage_pret)&&($solde_neg*1<0)) {
if ($pret_ok<2)
$pret_ok=$finance_blocage_pret;
$message_pret.=sprintf($msg["finance_pret_solde_pret"],comptes::format($solde_neg))." ";
$this->blocage_tarifs=$finance_blocage_pret;
}
if ($solde_neg*1<0) $this->compte_tarifs=abs($solde_neg);
}
}
if ($pmb_gestion_amende) {
//Vérification du compte
$cpte_amende_id=comptes::get_compte_id_from_empr($this->id,2);
if ($cpte_amende_id) {
$cpte_amende=new comptes($cpte_amende_id);
$solde_neg=$cpte_amende->get_solde();
$amende=new amende($this->id,true);
$amende_neg=$amende->get_total_amendes();
if (($finance_blocage_amende)&&(($solde_neg*1<0)||($amende_neg*1))) {
$this->blocage_amendes=$finance_blocage_amende;
if ($pret_ok<2) $pret_ok=$finance_blocage_amende;
if ($solde_neg*1<0)
$message_pret.=sprintf($msg["finance_pret_solde_amende"],comptes::format($solde_neg))." ";
if ($amende_neg*1)
$message_pret.=sprintf($msg["finance_pret_amende_en_cours_blocage"],comptes::format($amende_neg))." ";
}
if ($solde_neg*1<0) $this->compte_amendes=abs($solde_neg);
if ($amende_neg*1) $this->amendes_en_cours=abs($amende_neg);
}
}
}
if (($pmb_blocage_retard)&&($force_finance==0)) {
if (($this->date_blocage)&&($this->blocage_active)) {
$this->blocage_retard=$pmb_blocage_retard_force;
//pas de forçage possible
if ($pmb_blocage_retard_force == 2) {
$message_pret.=sprintf($msg["blocage_retard_pret"],formatdate($this->date_blocage))." ";
} else {
$message_pret.=sprintf($msg["blocage_retard_pret"],formatdate($this->date_blocage))." id."','blocage_params',400,200,-2,-2,'toolbar=no, dependent=yes,resizable=yes');\"/> ";
}
if ($pret_ok<2) $pret_ok=$pmb_blocage_retard_force;
}
}
// Ajout de l'impossibilité d'effectuer un prêt si un document n'est pas rendu
// alors qu'il a dépassé le délai de blocage (NG72) .
if (($pmb_blocage_retard)&&($force_finance==0)) {
// Recherche la date de retour du document la plus petite, soit le plus gros retard potentiel
$requete = "select MIN(pret_retour)as pret_retour";
$requete .= " from pret p";
$requete .= " where p.pret_idempr=".$this->id;
$result = mysql_query($requete, $dbh);
while($bloca = mysql_fetch_object($result)) {
if ($bloca->pret_retour){
$pret_retour=$bloca->pret_retour;
$date_debut=explode("-",$pret_retour);
$ndays=calendar::get_open_days($date_debut[2],$date_debut[1],$date_debut[0],date("d"),date("m"),date("Y"));
if ($ndays>$pmb_blocage_delai) {
$ndays=$ndays*$pmb_blocage_coef;
if (($ndays>$pmb_blocage_max)&&($pmb_blocage_max!=0)) {
$ndays=$pmb_blocage_max;
}
} else $ndays=0;
if ($ndays) {
// Interdire alors de nouveau pret
if ($pret_ok<2) $pret_ok=$pmb_blocage_retard_force;
$this->blocage_retard=$pmb_blocage_retard_force;
}
}
}
}
if (!$pret_ok && $this->allow_loan) {
$this->fiche = str_replace("!!empr_case_pret!!", $empr_pret_allowed,$this->fiche);
$this->fiche = str_replace('!!id!!' , $this->id , $this->fiche);
} else {
if ($pret_ok==1 && $this->allow_loan) {
$message_pret.="";
} elseif($this->allow_loan) {
$message_pret.="
".$msg["finance_pret_bloque"]."
";
} else $message_pret.="
".$msg["empr_no_allow_loan"]."
";
$this->fiche = str_replace("!!empr_case_pret!!", $message_pret,$this->fiche);
}
$abonnement="";
if (($pmb_gestion_financiere)&&($pmb_gestion_abonnement==2)) {
if ($this->type_abt) {
$requete="select type_abt_libelle from type_abts where id_type_abt='".$this->type_abt."'";
$resultat_type_abt=mysql_query($requete);
if (@mysql_num_rows($resultat_type_abt)) {
$abonnement=mysql_result($resultat_type_abt,0,0);
}
}
}
if ($abonnement) {
$this->fiche = str_replace("!!abonnement!!", "
";
$alert_sound_list[]="information";
$this->fiche = str_replace('!!empr_msg!!' ,$message_fiche_empr , $this->fiche);
} else
$this->fiche = str_replace('!!empr_msg!!', "", $this->fiche);
// on distingue les messages de prêts du message sur l'emprunteur
$this->fiche = str_replace('!!pret_msg!!' , $this->message , $this->fiche);
if ($this->adhesion_renouv_proche()) {
$message_date_depassee = $msg[empr_date_renouv_proche];
} elseif ($this->adhesion_depassee()) {
$message_date_depassee = $msg[empr_date_depassee];
} else {
$message_date_depassee="";
}
if ($message_date_depassee) $alert_sound_list[]="critique";
$this->fiche = str_replace('!!empr_date_depassee!!', $message_date_depassee, $this->fiche);
if ($this->age_categ_change()) {
$message_categ_age_change = $msg[empr_categ_age_change];
} else {
$message_categ_age_change="";
}
if ($message_categ_age_change) $alert_sound_list[]="information";
$this->fiche = str_replace('!!empr_categ_age_change!!', $message_categ_age_change, $this->fiche);
$group_zone = "$msg[64]";
if($groupID)
$group_zone .= " $msg[grp_autre_lecteur]" ;
$this->fiche = str_replace('!!group_zone!!', $group_zone, $this->fiche);
$fsexe[0] = $msg[128];
$fsexe[1] = $msg[126];
$fsexe[2] = $msg[127];
$this->fiche = str_replace('!!sexe!!' , $fsexe[$this->sexe], $this->fiche);
// valeur pour les champ hidden du prêt. L'id empr est pris en charge plus haut (voir Eric)
$this->fiche = str_replace('!!cb!!' , $this->cb , $this->fiche);
// traitement liste exemplaires en prêt
$this->fiche = str_replace('!!nb_prets_encours!!' , $this->nb_pret , $this->fiche);
//On affiche le bouton de mail si le destinataire a une adresse mail
if ($this->mail) {
$mail_click = "onclick=\"if (confirm('".$msg["mail_pret_confirm"]."')) { openPopUp('./pdf.php?pdfdoc=mail_liste_pret&id_empr=".$this->id."', 'print_PDF', 600, 500, -2, -2, '$PDF_win_prop');} return(false) \"";
$bouton_mail_liste_pret="";
} else {
$bouton_mail_liste_pret="";
}
$this->fiche=str_replace("!!mail_liste_pret!!",$bouton_mail_liste_pret,$this->fiche);
//Si mail de rappel affecté au responsable du groupe
$requete="select id_groupe,resp_groupe from groupe,empr_groupe where id_groupe=groupe_id and empr_id=".$this->id." and resp_groupe and mail_rappel limit 1";
$res=mysql_query($requete);
if(mysql_num_rows($res) > 0) {
$requete="select id_empr, empr_mail from empr where id_empr='".mysql_result($res, 0,1)."'";
$result=mysql_query($requete);
$has_mail = (mysql_result($result, 0,1) ? 1 : 0);
} else {
$has_mail = ($this->mail ? 1 : 0);
}
//Si retard sur un document, proposer la lettre de retard ou l'email de retard
if ($this->retard>=1) {
$imprime_click = "onclick=\"openPopUp('./pdf.php?pdfdoc=lettre_retard&id_empr=".$this->id."', 'lettre', 600, 500, -2, -2, 'toolbar=no, dependent=yes, resizable=yes'); return(false) \"";
$bouton_lettre_retard=$msg['retard']." ";
if (($has_mail)&&($biblio_email)) {
$mail_click = "onclick=\"if (confirm('".$msg["mail_retard_confirm"]."')) { openPopUp('./mail.php?type_mail=mail_retard&id_empr=".$this->id."', 'mail', 600, 500, -2,- 2, 'toolbar=no, dependent=yes, resizable=yes, scrollbars=yes');} return(false) \"";
$bouton_mail_retard="";
} else {
$bouton_mail_retard="";
}
} else {
$bouton_lettre_retard="";
$bouton_mail_retard="";
}
$this->fiche=str_replace("!!lettre_retard!!",$bouton_lettre_retard,$this->fiche);
$this->fiche=str_replace("!!mail_retard!!",$bouton_mail_retard,$this->fiche);
$voir_tout_pret="";
//separation prets classiques et prets courts
$prets_list=array('0'=>'','1'=>'');
if(!count($this->prets)) {
// dans ce cas, le lecteur n'a rien en prêt
$prets_list[0] = "
$msg[650]
";
$prets_list[1] = '';
} else {
// constitution du code HTML
$vdr=0;
$id_bloc=$id_inpret='';
$odd_even = 0 ;
// Gestion de limitation de la visualisation de la liste de pret.
global $pmb_pret_aff_limitation;
global $pmb_pret_aff_nombre;
global $see_all_pret;
global $current_module;
while(list($cle, $valeur) = each($this->prets)) {
$id_inpret .= $valeur['id'].'|';
if ($valeur['pret_retard']==1) $tit_color="color='RED'";
else $tit_color="";
//Affichage des prolongations
global $pmb_pret_restriction_prolongation,$pmb_pret_nombre_prolongation,$pmb_utiliser_calendrier;
$pret_nombre_prolongation=0;
$forcage_prolongation=TRUE;
$duree_prolongation=0;
// Limitation simple du pret
if($pmb_pret_restriction_prolongation==1) {
$pret_nombre_prolongation=$pmb_pret_nombre_prolongation;
} elseif($pmb_pret_restriction_prolongation==2) {
// Limitation du pret par les quotas
//Initialisation des quotas pour nombre de prolongations
$qt = new quota("PROLONG_NMBR_QUOTA");
//Tableau de passage des paramètres
$struct["READER"] = $this->id;
$struct["EXPL"] = $valeur['id'];
$pret_nombre_prolongation=$qt -> get_quota_value($struct);
$forcage_prolongation=$qt -> get_force_value($struct);
//Initialisation des quotas de durée de prolongation
$qt = new quota("PROLONG_TIME_QUOTA");
$struct["READER"] = $this->id;
$struct["EXPL"] = $valeur['id'];
$duree_prolongation=$qt -> get_quota_value($struct);
}
//$forcage_prolongation=FALSE;
/* on prépare la date de début*/
$pret_date = $valeur['sql_date_retour'];
$rqt_date = "select date_add('".$pret_date."', INTERVAL '$duree_prolongation' DAY) as date_prolongation ";
$resultatdate = mysql_query($rqt_date);
$res = mysql_fetch_object($resultatdate) ;
$date_prolongation=str_replace('-' , "" , $res->date_prolongation);
if ($pmb_utiliser_calendrier) {
$req_date_calendrier = "select date_ouverture from ouvertures where ouvert=1 and num_location='".$valeur["idlocation"]."' and DATEDIFF(date_ouverture,'$date_prolongation')>=0 order by date_ouverture asc limit 1";
$res_date_calendrier = mysql_query($req_date_calendrier);
if (mysql_num_rows($res_date_calendrier) > 0) {
$date_prolongation=str_replace('-' , "" , mysql_result($res_date_calendrier,0,0));
}
}
if ($odd_even==0) {
$pair_impair = "odd";
$odd_even=1;
} else if ($odd_even==1) {
$pair_impair = "even";
$odd_even=0;
}
$expl_sur_loc="";
if($pmb_sur_location_activate){
$expl_sur_loc= "
";
}
// Gestion de limitation de la visualisation de la liste de pret.
if( $pmb_pret_aff_limitation==1 && $pmb_pret_aff_nombre && !$see_all_pret && ($cle+1 >= $pmb_pret_aff_nombre)) {
break;
}
}
// Gestion de limitation de la visualisation de la liste de pret.
if( $pmb_pret_aff_limitation==1 && $pmb_pret_aff_nombre && !$see_all_pret && ($this->nb_pret > $pmb_pret_aff_nombre)) {
// le bouton 'Voir tous les prets' n'a pas été posté et on arrive à la limite imposée
//Affichage du bouton 'Voir tous les prets'
$tout_voir_click = "onclick=\"document.location='circ.php?categ=pret&see_all_pret=1&form_cb=".$this->cb."'\"";
$voir_tout_pret="";
}
}
/* 1ere option */
//$prets_list = $prets_list[0].(($pmb_short_loan_management==1 && count($prets_list[1]))?("
".$msg['short_loans']."
".$prets_list[1]):'');
/* 2eme option*/
$id_inpret=substr($id_inpret,0,-1);
$date_format_SQL = substr($vdr,0,4).'-'.substr($vdr,4,2).'-'.substr($vdr,6,2);
$svdr=formatdate($date_format_SQL);
$date_prol = " onClick=\"openPopUp('./select.php?what=calendrier";
$date_prol .= "&caller=prolong_bloc";
$date_prol .= "&date_caller=$vdr";
$date_prol .= "¶m1=date_retbloc¶m2=date_retbloc_lib&auto_submit=YES',";
$date_prol .= " 'date_retbloc',";
$date_prol .= " 250,260,-2,-2,'toolbar=no, dependent=yes, resizable=yes')\"";
$butt_prol = "
";
$this->fiche = str_replace('!!id_inpret!!' , $id_inpret , $this->fiche);
if ($vdr) {
$this->fiche = str_replace('!!prol_date!!' , $butt_prol , $this->fiche);
$this->fiche = str_replace('!!bouton_cocher_prolong!!' , "", $this->fiche);
} else {
$this->fiche = str_replace('!!prol_date!!' , "", $this->fiche);
$this->fiche = str_replace('!!bouton_cocher_prolong!!' , " ", $this->fiche);
}
$this->fiche = str_replace('!!voir_tout_pret!!' , $voir_tout_pret , $this->fiche);
/* 1ere option */
//$this->fiche = str_replace('!!pret_list!!', $prets_list, $this->fiche);
/* 2eme option */
$this->fiche = str_replace('!!pret_list!!', $prets_list[0], $this->fiche);
if ($pmb_short_loan_management==1) {
if (count($prets_list[1])) {
$this->fiche = str_replace('!!short_loan_list!!', $prets_list[1], $this->fiche);
} else {
$this->fiche = str_replace('!!short_loan_list!!', '', $this->fiche);
}
}
//tableau des relances
$this->fiche = str_replace('!!relance!!', $this->relance, $this->fiche);
if($pmb_gestion_amende && $pmb_gestion_financiere) $bt_histo_relance=" id' \" />";
else $bt_histo_relance="";
$this->fiche = str_replace('!!bt_histo_relance!!',$bt_histo_relance, $this->fiche);
// mise à jour de la liste des réservations
$this->fiche = str_replace('!!resa_list!!', $this->fetch_resa(), $this->fiche);
if($pmb_resa_planning) {
// mise à jour de la liste des réservations plannifiées
$this->fiche = str_replace('!!resa_planning_list!!', $this->fetch_resa_planning(), $this->fiche);
} else {
$this->fiche = str_replace('!!resa_planning_list!!', '', $this->fiche);
}
if($this->allow_sugg && (SESSrights & ACQUISITION_AUTH)){
$req = "select count(id_suggestion) as nb from suggestions, suggestions_origine where num_suggestion=id_suggestion and origine='".$this->id."' and type_origine='1' ";
$res=mysql_query($req,$dbh);
$btn_sug = "";
$sug = mysql_fetch_object($res);
if($sug->nb){
$btn_sug = "id&user_statut=1' \" />";
}
$this->fiche = str_replace('!!voir_sugg!!',$btn_sug,$this->fiche);
}else{
$this->fiche = str_replace('!!voir_sugg!!',"",$this->fiche);
}
// mise à jour de la liste des abonnement de circulation de pério
$this->fiche = str_replace('!!serialcirc_empr!!', $this->fetch_serial_circ(), $this->fiche);
}
function do_fiche_compte($typ_compte) {
global $msg,$charset;
global $empr_comptes_tmpl;
global $empr_autre_compte_tmpl;
global $show_transactions,$date_debut;
$this->fiche_compte="";
if($typ_compte==4) $form=$empr_autre_compte_tmpl;
else $form=$empr_comptes_tmpl;
$form=str_replace("!!nom!!",$this->nom,$form);
$form=str_replace("!!prenom!!",$this->prenom,$form);
$form=str_replace("!!info_nb_pret!!",$this->nb_pret,$form);
$form=str_replace("!!info_nb_resa!!",$this->nb_reservations,$form);
$id_compte=comptes::get_compte_id_from_empr($this->id,$typ_compte);
if ($id_compte) {
$cpte=new comptes($id_compte);
if (!$show_transactions) $show_transactions=2;
$form=str_replace("!!id_compte!!",$id_compte,$form);
$form=str_replace("!!type_compte!!",$cpte->get_typ_compte_lib($typ_compte),$form);
$form=str_replace("!!typ_compte!!",$typ_compte,$form);
$form=str_replace("!!solde!!",comptes::format($cpte->get_solde()),$form);
$form=str_replace("!!non_valide!!",comptes::format($cpte->summarize_transactions("","",0,0)),$form);
$form=str_replace("!!show_transactions!!",$show_transactions,$form);
$form=str_replace("!!date_debut!!",htmlentities(stripslashes($date_debut),ENT_QUOTES,$charset),$form);
if (!$show_transactions) $show_transactions=1;
for ($i=1; $i<=3; $i++) {
if ($i==$show_transactions)
$form=str_replace("!!checked$i!!","checked",$form);
else
$form=str_replace("!!checked$i!!","",$form);
}
}
if($typ_compte==4){ // autre compte: afficher les types de transaction...
$transactype=new transactype_list();
$type_transac_list=$transactype->get_data();
foreach($type_transac_list as $transac){
if($transac["quick_allowed"] && $transac["unit_price"] > 0){
$transac_form.="
";
}elseif($transac["quick_allowed"] ){
$transac_form.="
";;
}
}
$form=str_replace("!!transactype_list!!",$transac_form,$form);
}
$this->fiche_compte=$form;
}
// fabrication de la fiche lecteur pour affichage uniquement, pas de bouton, allégé
function do_fiche_affichage() {
global $empr_tmpl_fiche_affichage;
global $msg;
global $groupID;
global $biblio_email;
global $pmb_resa_planning;
global $alert_sound_list; // l'utilisateur veut-il les sons d'alerte
$this->fiche_affichage = $empr_tmpl_fiche_affichage;
$this->fiche_affichage = str_replace('!!cb!!' , $this->cb , $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!nom!!' , pmb_strtoupper($this->nom) , $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!prenom!!' , $this->prenom , $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!info_nb_pret!!' , $this->nb_pret , $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!info_nb_resa!!' , $this->nb_reservations , $this->fiche_affichage);
if ($pmb_resa_planning)
$this->fiche_affichage = str_replace('!!info_resa_planning!!' , $msg[empr_nb_resa_planning].":".$this->nb_previsions , $this->fiche_affichage);
else
$this->fiche_affichage = str_replace('!!info_resa_planning!!' , "", $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!info_authldap!!' , $this->ldap, $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!id!!' , $this->id , $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!date!!' , $this->birth , $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!adhesion!!' , $this->aff_date_adhesion, $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!expiration!!' , $this->aff_date_expiration, $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!last_loan_date!!' , $this->aff_last_loan_date, $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!empr_statut_libelle!!' , $this->empr_statut_libelle , $this->fiche_affichage);
if ($this->empr_msg) {
$message_fiche_empr= "
$this->empr_msg
";
$alert_sound_list[]="information";
$this->fiche_affichage = str_replace('!!empr_msg!!' ,$message_fiche_empr , $this->fiche_affichage);
} else
$this->fiche_affichage = str_replace('!!empr_msg!!', "", $this->fiche_affichage);
// on distingue les messages de prêts du message sur l'emprunteur
$this->fiche_affichage = str_replace('!!pret_msg!!' , $this->message , $this->fiche_affichage);
if ($this->adhesion_renouv_proche()) {
$message_date_depassee = $msg[empr_date_renouv_proche];
} elseif ($this->adhesion_depassee()) {
$message_date_depassee = $msg[empr_date_depassee];
} else {
$message_date_depassee="";
}
if ($message_date_depassee) $alert_sound_list[]="critique";
$this->fiche_affichage = str_replace('!!empr_date_depassee!!', $message_date_depassee, $this->fiche_affichage);
if ($this->age_categ_change()) {
$message_categ_age_change = $msg[empr_categ_age_change];
} else {
$message_categ_age_change="";
}
if ($message_categ_age_change) $alert_sound_list[]="information";
$this->fiche_affichage = str_replace('!!empr_categ_age_change!!', $message_categ_age_change, $this->fiche_affichage);
$fsexe[0] = $msg[128];
$fsexe[1] = $msg[126];
$fsexe[2] = $msg[127];
$this->fiche_affichage = str_replace('!!sexe!!' , $fsexe[$this->sexe], $this->fiche_affichage);
// valeur pour les champ hidden du prêt. L'id empr est pris en charge plus haut
$this->fiche_affichage = str_replace('!!cb!!' , $this->cb , $this->fiche_affichage);
// traitement liste exemplaires en prêt
$this->fiche_affichage = str_replace('!!nb_prets_encours!!' , $this->nb_pret , $this->fiche_affichage);
if(!count($this->prets))
// dans ce cas, le lecteur n'a rien en prêt
$prets_list = "
$msg[650]
";
else {
// constitution du code HTML
$odd_even = 0 ;
// Gestion de limitation de la visualisation de la liste de pret.
global $pmb_pret_aff_limitation;
global $pmb_pret_aff_nombre;
global $see_all_pret;
global $current_module;
while(list($cle, $valeur) = each($this->prets)) {
if ($valeur['pret_retard']==1){
$tit_color="color='RED'";
}else{
$tit_color="";
}
if ($odd_even==0) {
$pair_impair = "odd";
$odd_even=1;
} else if ($odd_even==1) {
$pair_impair = "even";
$odd_even=0;
}
$tr_javascript=" onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='$pair_impair'\"";
$prets_list .= "
";
// ouf, c'est fini ;-)
}
// Gestion de limitation de la visualisation de la liste de pret.
if( $pmb_pret_aff_limitation==1) {
if($pmb_pret_aff_nombre) {
if (!$see_all_pret && ($this->nb_pret > $pmb_pret_aff_nombre)) {
// le bouton 'Voir tous les prets' n'a pas été posté et on arrive à la limite imposée
//Affichage du bouton 'Voir tous les prets'
$tout_voir_click = "onclick=\"document.location='circ.php?categ=pret&see_all_pret=1&form_cb=".$this->cb."'\"";
$prets_list .= "
";
//sortir de la boucle liste des prets
}
}
}
} //else
$this->fiche_affichage = str_replace('!!pret_list!!' , $prets_list , $this->fiche_affichage);
// mise à jour de la liste des réservations
$this->fiche_affichage = str_replace('!!resa_list!!', $this->fetch_resa(), $this->fiche_affichage);
if ($pmb_resa_planning) {
// mise à jour de la liste des prévisions
$this->fiche_affichage = str_replace('!!resa_planning_header!!', '
'.$msg[resa_menu_planning].'
', $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!resa_planning_list!!', $this->fetch_resa_planning(), $this->fiche_affichage);
} else {
$this->fiche_affichage = str_replace('!!resa_planning_header!!', '', $this->fiche_affichage);
$this->fiche_affichage = str_replace('!!resa_planning_list!!', $this->fetch_resa_planning(), $this->fiche_affichage);
}
} // fin do_fiche_affichage
// récupération de la liste des réservations pour l'emprunteur
function fetch_resa() {
return resa_list (0, 0, $this->id,"","",LECTEUR_INFO_GESTION,"") ;
// resa_list ($idnotice=0, $idbulletin=0, $idempr=0, $order, $where = "", $info_gestion=0, $url_gestion="")
}
// récupération de la liste des réservations planifiées pour l'emprunteur
function fetch_resa_planning() {
// return empr_planning_list ($this->id) ;
return planning_list ($this->id,0,"",LECTEUR_INFO_GESTION) ;
}
function fetch_serial_circ() {
$serialcirc_empr=new serialcirc_empr($this->id);
if(count($serialcirc_empr->serialcirc_list)){
return $serialcirc_empr->get_list();
}
return "";
}
// fonction de vérification que la date d'adhésion est dépassée ou pas
function adhesion_depassee() {
global $dbh ;
$rqt_date = "select case when empr_date_expiration < now() then 1 ELSE 0 END as test_date ";
$rqt_date .=" from empr where id_empr='".$this->id."' ";
$resultatdate=mysql_query($rqt_date);
$resdate=mysql_fetch_object($resultatdate);
return $resdate->test_date;
}
// fonction de vérification que la date d'adhésion est proche ou pas
function adhesion_renouv_proche() {
global $pmb_relance_adhesion ;
global $dbh ;
$rqt_date = "select case when (((to_days(empr_date_expiration)-to_days(now()))<=$pmb_relance_adhesion) and empr_date_expiration>=now()) then 1 ELSE 0 END as test_date ";
$rqt_date .=" from empr where id_empr='".$this->id."' ";
$resultatdate=mysql_query($rqt_date);
$resdate=mysql_fetch_object($resultatdate);
return $resdate->test_date;
}
// fonction de vérification que le lecteur change de catégorie
function age_categ_change() {
global $dbh ;
$requete = "select case when ((((age_min<> 0) || (age_max <> 0)) && (age_max >= age_min)) && (((DATE_FORMAT( curdate() , '%Y' )-empr_year) < age_min) || ((DATE_FORMAT( curdate() , '%Y' )-empr_year) > age_max))) then 1 ELSE 0 END as test_categ";
$requete .=" from empr left join empr_categ on empr_categ = id_categ_empr where id_empr='".$this->id."' ";
$resultat=mysql_query($requete);
$res=mysql_fetch_object($resultat);
return $res->test_categ;
}
// fonction de suppression
static function del_empr($id=0) {
global $dbh ;
if (!$id) return false;
$rqt_prets = "select 1 from pret where pret_idempr=$id ";
$resultat_prets=mysql_query($rqt_prets,$dbh);
$resprets=mysql_num_rows($resultat_prets);
if (mysql_num_rows($resultat_prets)) {
return false;
} else {
$rqt_del = "delete from empr_caddie_content where object_id=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from empr where id_empr=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$p_perso=new parametres_perso("empr");
$p_perso->delete_values($id);
$rqt_del = "delete from empr_groupe where empr_id=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "update groupe set resp_groupe=0 where resp_groupe=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from recouvrements where empr_id=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from resa where resa_idempr=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from resa_planning where resa_idempr=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from opac_sessions where empr_id=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "update suggestions_origine set origine='', type_origine=2 where origine=$id and type_origine=1 ";
$resultat_del=mysql_query($rqt_del);
$rqt_del = "delete from bannette_abon where num_empr=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from bannette where proprio_bannette=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from equations where proprio_equation=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from compte where proprio_id=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete from opac_views_empr where emprview_empr_num=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "update avis set num_empr=0 where num_empr=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$query = mysql_query("DELETE bannettes FROM bannettes LEFT JOIN empr ON proprio_bannette = id_empr WHERE id_empr IS NULL AND proprio_bannette !=0",$dbh);
$query = mysql_query("DELETE equations FROM equations LEFT JOIN empr ON proprio_equation = id_empr WHERE id_empr IS NULL AND proprio_equation !=0 ",$dbh);
$query = mysql_query("DELETE bannette_equation FROM bannette_equation LEFT JOIN bannettes ON num_bannette = id_bannette WHERE id_bannette IS NULL ",$dbh);
$query = mysql_query("DELETE bannette_equation FROM bannette_equation LEFT JOIN equations on num_equation=id_equation WHERE id_equation is null",$dbh);
$query = mysql_query("DELETE bannette_abon FROM bannette_abon LEFT JOIN empr on num_empr=id_empr WHERE id_empr is null",$dbh);
$query = mysql_query("DELETE bannette_abon FROM bannette_abon LEFT JOIN bannettes ON num_bannette=id_bannette WHERE id_bannette IS NULL ",$dbh);
//listes de lecture partagées
$rqt_del = "delete opac_liste_lecture where num_empr=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$rqt_del = "delete abo_liste_lecture where num_empr=$id ";
$resultat_del=mysql_query($rqt_del,$dbh);
$query = mysql_query("delete abo_liste_lecture from abo_liste_lecture left join empr on num_empr=id_empr where id_empr is null",$dbh);
$query = mysql_query("delete abo_liste_lecture from abo_liste_lecture left join opac_liste_lecture on num_liste=id_liste where id_liste is null",$dbh);
$query = mysql_query("delete opac_liste_lecture from opac_liste_lecture left join empr on num_empr=id_empr where id_empr is null",$dbh);
//Historique des relances
$del_histo = "delete lr, ler from log_retard lr join log_expl_retard ler on lr.id_log=ler.num_log_retard where lr.idempr=$id";
mysql_query($del_histo,$dbh);
// clean de circulation de périodique
$req=" DELETE from serialcirc_group WHERE num_serialcirc_group_empr=$id ";
mysql_query($req, $dbh);
$req=" DELETE from serialcirc_diff WHERE num_serialcirc_diff_empr=$id and serialcirc_diff_empr_type=0";
mysql_query($req, $dbh);
$req=" DELETE from serialcirc_copy WHERE num_serialcirc_copy_empr=$id ";
mysql_query($req, $dbh);
$req=" DELETE from serialcirc_ask WHERE num_serialcirc_ask_empr=$id ";
mysql_query($req, $dbh);
$req=" DELETE from serialcirc_circ WHERE num_serialcirc_circ_empr=$id ";
mysql_query($req, $dbh);
//Suppression des droits d'acces emprunteurs - notices
$q = "delete from acces_usr_2 where usr_num=$id ";
@mysql_query($q, $dbh);
return true;
}
}
// méthode qui retourne un objet avec l'url de la photo de l'emprunteur
function picture_empr($empr_cb) {
global $charset;
global $empr_pics_url, $empr_pics_max_size ;
if ($empr_pics_url) {
$code_chiffre = pmb_preg_replace('/ /', '', $empr_cb);
$url_image = $empr_pics_url ;
$url_image = "./getimage.php?url_image=".urlencode($url_image)."&empr_pic=1" ;
$url_image_ok = str_replace("%21%21num_carte%21%21", $code_chiffre, $url_image) ;
$image = "";
} else
$image="" ;
return $image;
}
// fabrication de la fiche lecteur
function do_fiche_consultation() {
global $empr_tmpl_consultation, $empr_pret_allowed;
global $msg,$charset;
global $groupID;
global $biblio_email;
global $pmb_lecteurs_localises ;
global $pmb_gestion_abonnement,$pmb_gestion_financiere, $pmb_gestion_tarif_prets, $pmb_gestion_amende;
global $finance_blocage_abt,$finance_blocage_amende,$finance_blocage_pret,$pmb_blocage_retard,$pmb_blocage_retard_force;
global $force_finance;
global $pmb_resa_planning;
global $dbh;
global $pmb_blocage_retard,$pmb_blocage_coef,$pmb_blocage_max,$pmb_blocage_delai;
global $empr_fiche_depliee;
//global $cb_inpret;
global $alert_sound_list; // l'utilisateur veut-il les sons d'alerte
$this->fiche_consultation = $empr_tmpl_consultation;
$this->fiche_consultation = str_replace('!!cb!!' , $this->cb , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!nom!!' , pmb_strtoupper($this->nom) , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!prenom!!' , $this->prenom , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!image_caddie_empr!! ', $this->img_ajout_empr_caddie, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!info_nb_pret!!' , $this->nb_pret , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!info_nb_resa!!' , $this->nb_reservations , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!info_authldap!!' , $this->ldap, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!id!!' , $this->id , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!adr1!!' , $this->adr1 , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!adr2!!' , $this->adr2 , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!tel1!!' , $this->tel1 , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!sms!!' , $this->sms , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!tel2!!' , $this->tel2 , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!cp!!' , $this->cp , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!ville!!' , $this->ville , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!pays!!' , $this->pays , $this->fiche_consultation);
$emails=array();
$email_final=array();
$emails = explode(';',$this->mail);
for ($i=0;$i".$emails[$i]."";
$this->fiche_consultation = str_replace('!!mail_all!!' , implode(" ",$email_final) , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!prof!!' , $this->prof , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!date!!' , $this->birth , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!categ!!' , $this->cat_l , $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!codestat!!' , $this->cstat_l, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!adhesion!!' , $this->aff_date_adhesion, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!expiration!!' , $this->aff_date_expiration, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!last_loan_date!!' , $this->aff_last_loan_date, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!perso!!' , $this->perso, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!header_format!!' , $this->header_format, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!empr_login!!' , $this->login, $this->fiche_consultation);
if ($this->pwd) $this->fiche_consultation = str_replace('!!empr_pwd!!',"".$msg["empr_pwd_opac_affected"]."",$this->fiche_consultation);
else $this->fiche_consultation = str_replace('!!empr_pwd!!',"",$this->fiche_consultation);
$this->fiche_consultation = str_replace('!!comptes!!' , $this->compte, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!empr_statut_libelle!!', $this->empr_statut_libelle, $this->fiche_consultation);
$this->fiche_consultation = str_replace('!!empr_picture!!', $this->picture_empr($this->cb), $this->fiche_consultation);
if ($empr_fiche_depliee=="1") $this->fiche_consultation = str_replace('!!depliee!!'," startOpen=\"Yes\"", $this->fiche_consultation);
else $this->fiche_consultation = str_replace('!!depliee!!',"", $this->fiche_consultation);
if ($pmb_lecteurs_localises) $this->fiche_consultation = str_replace("", "
$msg[empr_location] : ".$this->empr_location_l."
", $this->fiche_consultation);
//Groupes
if (count($this->groupes)) {
$this->fiche_consultation = str_replace('!!groupes!!',"".$msg[groupes_empr]." : ".implode(" / ",$this->groupes)."\n",$this->fiche_consultation);
} else {
$this->fiche_consultation = str_replace('!!groupes!!'," ",$this->fiche_consultation);
}
if (($pmb_gestion_financiere)&&($pmb_gestion_abonnement==2)) {
if ($this->type_abt) {
$requete="select type_abt_libelle from type_abts where id_type_abt='".$this->type_abt."'";
$resultat_type_abt=mysql_query($requete);
if (@mysql_num_rows($resultat_type_abt)) {
$abonnement=mysql_result($resultat_type_abt,0,0);
}
}
}
if ($abonnement) {
$this->fiche_consultation = str_replace("!!abonnement!!", "
";
}
return $tableau;
}
//Retourne un tableau (id_empr=>empr_nom empr_prenom) à partir d'un tableau d'id
static function getName($tab=array()) {
global $dbh;
$res=array();
if(is_array($tab) && count($tab)) {
$q ="select id_empr, concat(empr_nom,' ',empr_prenom) as lib from empr where id_empr in ('".implode("','", $tab)."') ";
$r = mysql_query($q,$dbh);
while($row=mysql_fetch_object($r)) {
$res[$row->id_empr]=$row->lib;
}
}
return $res;
}
//Retourne le code-barre d'un emprunteur
static function get_cb_empr($id_empr) {
global $dbh;
if (!$id_empr) return false;
$q ="select empr_cb from empr where id_empr=$id_empr";
$r = mysql_query($q,$dbh);
return mysql_result($r,0,0);
}
static function rec_abonnement($id_empr,$type_abt,$empr_categ,$rec_caution=true) {
global $pmb_gestion_financiere,$pmb_gestion_abonnement;
if ($pmb_gestion_financiere) {
//Récupération du tarif
if ($pmb_gestion_abonnement==1) {
$requete="select tarif_abt, libelle from empr_categ where id_categ_empr=$empr_categ";
$resultat=mysql_query($requete);
} else {
if ($pmb_gestion_abonnement==2) {
$requete="select tarif, type_abt_libelle, caution from type_abts where id_type_abt=$type_abt";
$resultat=mysql_query($requete);
}
}
if (@mysql_num_rows($resultat)) {
$tarif=mysql_result($resultat,0,0);
$libelle=mysql_result($resultat,0,1);
if ($pmb_gestion_abonnement==2) $caution=mysql_result($resultat,0,2);
}
$compte_id=comptes::get_compte_id_from_empr($id_empr,1);
if ($compte_id) {
$cpte=new comptes($compte_id);
}
if ($tarif*1) {
//Enregistrement de la transaction
$cpte->record_transaction("",abs($tarif),-1,"Inscription : ".$libelle,0);
}
if (($caution*1)&&($rec_caution)) {
$cpte->record_transaction("",abs($caution),-1,"Caution : ".$libelle,0);
$requete="update empr set caution='".abs($caution)."' where id_empr=$id_empr";
mysql_query($requete);
}
}
}
static function rec_groupe_empr($id_empr, $tableau_groupe) {
global $dbh;
$requete="delete from empr_groupe where empr_id='$id_empr' ";
mysql_query($requete, $dbh);
for ($i = 0 ; $i < sizeof($tableau_groupe) ; $i++) {
$rqt = "insert into empr_groupe (empr_id, groupe_id) values ('".$id_empr."', '".$tableau_groupe[$i]."') " ;
mysql_query($rqt, $dbh);
}
}
// inscription automatique du lecteur dans la DSI de sa catégorie
static function ins_lect_categ_dsi($id_empr=0, $categorie_lecteurs=0, $anc_categorie_lecteurs=0) {
global $dbh;
global $dsi_insc_categ ;
if (!$dsi_insc_categ || !$id_empr || !$categorie_lecteurs) return ;
// suppression de l'inscription dans les bannettes de son ancienne catégorie
if ($anc_categorie_lecteurs) {
$req_ban = "select id_bannette from bannettes where categorie_lecteurs='$anc_categorie_lecteurs'" ;
$res_ban=mysql_query($req_ban, $dbh) ;
while ($ban=mysql_fetch_object($res_ban)) {
mysql_query("delete from bannette_abon where num_bannette='$ban->id_bannette' and num_empr='$id_empr' ", $dbh) ;
}
}
// inscription du lecteur dans la DSI de sa nouvelle catégorie
$req_ban = "select id_bannette from bannettes where categorie_lecteurs='$categorie_lecteurs'" ;
$res_ban=mysql_query($req_ban, $dbh) ;
while ($ban=mysql_fetch_object($res_ban)) {
mysql_query("delete from bannette_abon where num_bannette='$ban->id_bannette' and num_empr='$id_empr' ", $dbh) ;
mysql_query("insert into bannette_abon (num_bannette, num_empr) values('$ban->id_bannette', '$id_empr')", $dbh) ;
}
return ;
}
} # fin de déclaration classe emprunteur