id = $id+0;
// si id; récupération des données du groupe
if($this->id) {
$this->members = array();
$this->get_data();
}
}
// récupération des données du groupe
public function get_data() {
global $dbh;
$requete = "SELECT * FROM groupe";
$requete .= " WHERE id_groupe='".$this->id."' ";
$res = pmb_mysql_query($requete, $dbh);
if(pmb_mysql_num_rows($res)) {
$row = pmb_mysql_fetch_object($res);
$this->libelle = $row->libelle_groupe;
$this->lettre_rappel=$row->lettre_rappel;
$this->mail_rappel=$row->mail_rappel;
$this->lettre_rappel_show_nomgroup=$row->lettre_rappel_show_nomgroup;
// récupération id et libelle du responsable
if($row->resp_groupe) {
$this->id_resp = $row->resp_groupe;
$requete = "SELECT empr_nom, empr_prenom, empr_cb, empr_mail FROM empr";
$requete .= " WHERE id_empr=".$this->id_resp." LIMIT 1";
$res = pmb_mysql_query($requete, $dbh);
if(pmb_mysql_num_rows($res)) {
$row = pmb_mysql_fetch_object($res);
$this->libelle_resp = $row->empr_nom;
if($row->empr_prenom) $this->libelle_resp .= ', '.$row->empr_prenom;
$this->libelle_resp .= ' ('.$row->empr_cb.')';
$this->cb_resp = $row->empr_cb;
$this->mail_resp = $row->empr_mail;
}
}
$this->get_members();
}
return;
}
// génération du form de group
public function form() {
global $group_form;
global $msg;
global $charset;
if($this->id) $titre = $msg[912]; // modification
else $titre = $msg[910]; // création
$group_form = str_replace('!!titre!!', $titre, $group_form);
if ($this->lettre_rappel) $group_form = str_replace('!!lettre_rappel!!', "checked", $group_form);
else $group_form = str_replace('!!lettre_rappel!!', "", $group_form);
if ($this->mail_rappel) $group_form = str_replace('!!mail_rappel!!', "checked", $group_form);
else $group_form = str_replace('!!mail_rappel!!', "", $group_form);
if ($this->lettre_rappel_show_nomgroup) $group_form = str_replace('!!lettre_rappel_show_nomgroup!!', "checked", $group_form);
else $group_form = str_replace('!!lettre_rappel_show_nomgroup!!', "", $group_form);
$group_form = str_replace('!!group_name!!', htmlentities($this->libelle,ENT_QUOTES, $charset), $group_form);
$group_form = str_replace('!!nom_resp!!', $this->libelle_resp, $group_form);
$group_form = str_replace('!!groupID!!', $this->id, $group_form);
$group_form = str_replace('!!respID!!', $this->id_resp, $group_form);
if($this->id) {
$link_annul = './circ.php?categ=groups&action=showgroup&groupID='.$this->id;
$link_suppr = "";
} else {
$link_annul = './circ.php?categ=groups';
$link_suppr = "";
}
$group_form = str_replace('!!link_annul!!', $link_annul, $group_form);
$group_form = str_replace('', $link_suppr, $group_form);
return $group_form;
}
// affectation de nouvelles valeurs
public function set($group_name, $respID=0, $lettre_rappel=0, $mail_rappel=0, $lettre_rappel_show_nomgroup=0) {
if ($group_name) $this->libelle = $group_name;
$this->id_resp = $respID;
$this->lettre_rappel=$lettre_rappel;
$this->mail_rappel=$mail_rappel;
$this->lettre_rappel_show_nomgroup=$lettre_rappel_show_nomgroup;
return;
}
// récupération des membres du groupe (feed : array members)
public function get_members() {
if(!$this->id) return;
global $dbh;
$requete = "select EMPR.id_empr AS id, EMPR.empr_nom AS nom , EMPR.empr_prenom AS prenom, EMPR.empr_cb AS cb, EMPR.empr_categ AS id_categ, EMPR.type_abt AS id_abt";
$requete .= " FROM empr EMPR, empr_groupe MEMBERS";
$requete .= " WHERE MEMBERS.empr_id=EMPR.id_empr";
$requete .= " AND MEMBERS.groupe_id=".$this->id;
$requete .= " ORDER BY EMPR.empr_nom, EMPR.empr_prenom";
$result = pmb_mysql_query($requete, $dbh);
$this->nb_members = pmb_mysql_num_rows($result);
if($this->nb_members) {
while($mb = pmb_mysql_fetch_object($result)) {
$this->members[] = array( 'nom' => $mb->nom,
'prenom' => $mb->prenom,
'cb' => $mb->cb,
'id' => $mb->id,
'id_categ' => $mb->id_categ,
'id_abt' => $mb->id_abt);
}
}
$this->nb_members = sizeof($this->members);
return;
}
// ajout d'un membre
public function add_member($member) {
global $dbh;
if(!$member) return 0;
// checke si ce membre n'est pas déjà dans le groupe
$requete = "SELECT count(1) FROM empr_groupe";
$requete .= " WHERE empr_id=$member AND groupe_id=".$this->id;
$res = pmb_mysql_query($requete, $dbh);
if(pmb_mysql_result($res, 0, 0)) return $member;
// OK. insertion 'pour de vrai'
$requete = "INSERT INTO empr_groupe";
$requete .= " SET empr_id='$member', groupe_id='".$this->id."'";
$res = pmb_mysql_query($requete, $dbh);
if($res) return $member;
else return 0;
}
// suppression du groupe
public function delete() {
global $dbh;
$requete = "DELETE FROM groupe WHERE id_groupe=".$this->id;
$res = pmb_mysql_query($requete, $dbh);
$nb = pmb_mysql_affected_rows($dbh);
$requete = "DELETE FROM empr_groupe WHERE groupe_id=".$this->id;
$res = pmb_mysql_query($requete, $dbh);
return $nb;
}
// suppression d'un membre
public function del_member($member) {
global $dbh;
if(!$member) return 0;
$requete = "DELETE FROM empr_groupe";
$requete .= " WHERE empr_id=$member AND groupe_id=".$this->id;
$res = pmb_mysql_query($requete, $dbh);
return $res;
}
// mise à jour dans la table
public function update() {
global $dbh;
global $msg;
if($this->id) {
// mise à jour
$requete = "UPDATE groupe";
$requete .= " SET libelle_groupe='".$this->libelle."'";
$requete .= ", resp_groupe='".$this->id_resp."'";
$requete .= ", lettre_rappel='".$this->lettre_rappel."'";
$requete .= ", mail_rappel='".$this->mail_rappel."'";
$requete .= ", lettre_rappel_show_nomgroup='".$this->lettre_rappel_show_nomgroup."'";
$requete .= " WHERE id_groupe=".$this->id." LIMIT 1";
$res = pmb_mysql_query($requete, $dbh);
} else {
// on voit si ça n'existe pas
if($this->exists($this->libelle)) return $this->id;
// création
$requete = "INSERT INTO groupe SET id_groupe=''";
$requete .= ", libelle_groupe='".$this->libelle."'";
$requete .= ", resp_groupe='".$this->id_resp."'";
$requete .= ", lettre_rappel='".$this->lettre_rappel."'";
$requete .= ", mail_rappel='".$this->mail_rappel."'";
$requete .= ", lettre_rappel_show_nomgroup='".$this->lettre_rappel_show_nomgroup."'";
$result = pmb_mysql_query($requete, $dbh);
$this->id = pmb_mysql_insert_id();
}
return $this->id;
}
public function exists($name) {
global $dbh;
if(!$name) return;
$requete = "SELECT count(1) FROM groupe";
$requete .= " WHERE libelle_groupe='$name'";
$result = pmb_mysql_query($requete, $dbh);
return pmb_mysql_result($result, 0, 0);
}
// prolongation d'adhésion des membres en fin d'abonnement ou en abonnement dépassé
public function update_members() {
global $dbh;
global $msg;
if($this->id) {
if($this->nb_members) {
while(list($cle, $membre) = each($this->members)) {
$date_prolong = "form_expiration_".$membre['id'];
global ${$date_prolong};
if (${$date_prolong} != "") {
//Ne pas débiter l'abonnement deux fois..
$requete = "SELECT empr_date_expiration FROM empr WHERE id_empr=".$membre['id'];
$resultat = pmb_mysql_query($requete,$dbh);
if ($resultat) {
if (str_replace("-","",pmb_mysql_result($resultat,0,0)) != str_replace("-","",${$date_prolong})) {
// mise à jour
$requete = "UPDATE empr";
$requete .= " SET empr_date_expiration='".${$date_prolong}."'";
$requete .= " WHERE id_empr=".$membre['id']." LIMIT 1";
@pmb_mysql_query($requete, $dbh);
if(!pmb_mysql_errno($dbh)) {
global $debit;
if ($debit) {
if ($debit==2) $rec_caution=true; else $rec_caution=false;
emprunteur::rec_abonnement($membre['id'],$membre['id_abt'],$membre['id_categ'],$rec_caution);
}
} else {
error_message($msg[540], "erreur modification emprunteur", 1, './circ.php?categ=groups&action=showgroup&groupID=".$this->id."');
}
}
}
}
}
}
}
}
public static function gen_combo_box_grp ( $selected=false, $multiple=0, $afficher_aucun=1, $afficher_premier=1, $on_change="" ) {
global $msg,$deflt2docs_location;
if (!$selected) {
$selected=array(0=>$deflt2docs_location);
}
$requete="select idlocation, location_libelle from docs_location order by location_libelle ";
$champ_code="idlocation";
$champ_info="location_libelle";
$nom="group_location_id";
$liste_vide_code="0";
$liste_vide_info=$msg['class_location'];
$option_premier_code="-1";
if ($afficher_premier) $option_premier_info=$msg['all_location'];
$option_aucun_code="-2";
if ($afficher_aucun) $option_aucun_info=$msg['no_location'];
$gen_liste_str="";
$resultat_liste=pmb_mysql_query($requete);
$gen_liste_str = "\n" ;
return $gen_liste_str ;
}
}