num_bannette = $num_bannette+0; $this->num_empr = $num_empr+0; $this->fetch_data(); } protected function fetch_data() { $this->groups=array(); $query = "select id_groupe, libelle_groupe from groupe join empr_groupe on groupe_id=id_groupe where empr_id='".$this->num_empr."'"; $result = pmb_mysql_query($query); if (pmb_mysql_num_rows($result)) { while ($grp_temp=pmb_mysql_fetch_object($result)) { $this->groups[$grp_temp->id_groupe]=$grp_temp->libelle_groupe; } } } public function save_bannette_abon($bannette_abon, $filtered_list=array()) { $tableau_bannettes = $this->tableau_gerer_bannette("PUB"); foreach ($tableau_bannettes as $bannette) { if(!count($filtered_list) || in_array($bannette->id_bannette, $filtered_list)) { pmb_mysql_query("delete from bannette_abon where num_empr = '" . $this->num_empr . "' and num_bannette = '".$bannette->id_bannette."' "); if (isset($bannette_abon[$bannette->id_bannette]) && $bannette_abon[$bannette->id_bannette]) { pmb_mysql_query("replace into bannette_abon (num_empr, num_bannette) values ('" . $this->num_empr . "', '".$bannette->id_bannette."')"); } } } } public function delete_bannette_abon($bannette_abon, $filtered_list=array()) { $tableau_bannettes = $this->tableau_gerer_bannette("PRI"); foreach ($tableau_bannettes as $bannette) { if(!count($filtered_list) || in_array($bannette->id_bannette, $filtered_list)) { if (isset($bannette_abon[$bannette->id_bannette]) && $bannette_abon[$bannette->id_bannette]) { pmb_mysql_query("delete from bannette_abon where num_empr = '" . $this->num_empr . "' and num_bannette = '".$bannette->id_bannette."' "); pmb_mysql_query("delete from bannette_contenu where num_bannette='".$bannette->id_bannette."' "); $req_eq = pmb_mysql_query("select num_equation from bannette_equation where num_bannette = '".$bannette->id_bannette."' "); $eq = pmb_mysql_fetch_object($req_eq); pmb_mysql_query("delete from equations where id_equation = '" . $eq->num_equation . "' "); pmb_mysql_query("delete from bannette_equation where num_bannette = '".$bannette->id_bannette."' "); pmb_mysql_query("delete from bannettes where id_bannette = '".$bannette->id_bannette."' "); } } } } // retourne un tableau des bannettes possibles de l'abonné : les privées / les publiques : celles de sa catégorie et/ou celles auxquelles il est abonné public function tableau_gerer_bannette($priv_pub='PUB') { global $msg; $query = "select empr_categ, libelle from empr join empr_categ on empr.empr_categ = empr_categ.id_categ_empr where id_empr =".$this->num_empr; $result = pmb_mysql_query($query); $empr_categ = pmb_mysql_result($result, 0, 'empr_categ'); $cat_l = pmb_mysql_result($result, 0, 'libelle'); $tableau_bannette = array(); //Récupération des infos des bannettes if ($priv_pub == 'PUB') { $access_liste_id = array(); $query = "SELECT empr_categ_num_bannette FROM bannette_empr_categs WHERE empr_categ_num_categ=".$empr_categ; $result = pmb_mysql_query($query); while ($row = pmb_mysql_fetch_object($result)) { $access_liste_id[] = $row->empr_categ_num_bannette; } $query = "select groupe_id from empr_groupe where empr_id=".$this->num_empr." AND groupe_id != 0";//En création de lecteur une entrée avec groupe_id = 0 est créée ... $result = pmb_mysql_query($query); $groups = array(); while ($row=pmb_mysql_fetch_object($result)) { $groups[] = $row->groupe_id; } if (count($groups)) { $query = "SELECT empr_groupe_num_bannette FROM bannette_empr_groupes WHERE empr_groupe_num_groupe IN (".implode(",",$groups).")"; $result = pmb_mysql_query($query); while ($row = pmb_mysql_fetch_object($result)) { $access_liste_id[] = $row->empr_groupe_num_bannette; } } if (count($access_liste_id)) { $access_liste_id = array_unique($access_liste_id); } else { $access_liste_id[] = 0; } $restrict = "((id_bannette IN (".implode(',',$access_liste_id).")) or (bannette_opac_accueil = 1))"; $requete = "select distinct id_bannette, comment_public from bannettes join bannette_abon on num_bannette=id_bannette where num_empr='".$this->num_empr."' and proprio_bannette=0 "; $requete .= " union select distinct id_bannette, comment_public from bannettes where ".$restrict." and proprio_bannette=0 "; $requete .= " order by comment_public "; } else { $requete = "select distinct id_bannette, comment_public from bannettes where proprio_bannette='".$this->num_empr."' "; $requete .= " order by comment_public "; } $resultat = pmb_mysql_query($requete); while ($r = pmb_mysql_fetch_object($resultat)) { $tableau_bannette[] = new bannette($r->id_bannette); } return $tableau_bannette; } // permet d'afficher un formulaire de gestion des abonnements aux bannettes du lecteur // paramètres : // $bannettes : les numéros des bannettes séparés par les ',' toutes si vides // $aff_notices_nb : nombres de notices affichées : toutes = 0 // $mode_aff_notice : mode d'affichage des notices, REDUIT (titre+auteur principal) ou ISBD ou PMB ou les deux : dans ce cas : (titre + auteur) en entête du truc // $depliable : affichage des notices une par ligne avec le bouton de dépliable // $link_to_bannette : lien pour afficher le contenu de la bannette // $htmldiv_id="etagere-container", $htmldiv_class="etagere-container", $htmldiv_zindex="" : les id, class et zindex du
englobant le résultat de la fonction // $liens_opac : tableau contenant les url destinatrices des liens si voulu public function gerer_abon_bannette($priv_pub="PUB", $link_to_bannette="", $htmldiv_id="bannette-container", $htmldiv_class="bannette-container", $htmldiv_zindex="") { global $charset; global $msg; $query = "select empr_categ, libelle from empr join empr_categ on empr.empr_categ = empr_categ.id_categ_empr where id_empr =".$this->num_empr; $result = pmb_mysql_query($query); $empr_categ = pmb_mysql_result($result, 0, 'empr_categ'); $cat_l = pmb_mysql_result($result, 0, 'libelle'); // récupération des bannettes $tableau_bannettes = $this->tableau_gerer_bannette($priv_pub); if (!count($tableau_bannettes)) return ""; $retour_aff = "
"; $retour_aff .= ""; $retour_aff .= ""; $retour_aff .= ""; foreach ($tableau_bannettes as $bannette) { $id_bannette = $bannette->id_bannette; $retour_aff .= "\n"; } $retour_aff .= "
".$msg['dsi_bannette_gerer_abonn']." ".$msg['dsi_bannette_gerer_nom_liste']." ".$msg['dsi_bannette_gerer_date']." ".$msg['dsi_bannette_gerer_nb_notices']." ".$msg['dsi_bannette_gerer_periodicite']."
"; $retour_aff .= "\nis_subscribed($this->num_empr) ? "checked='checked'" : "")." />"; $retour_aff .= "\n"; if ($link_to_bannette) { // Construction de l'affichage de l'info bulle de la requette $requete = "select * from bannette_equation, equations where num_equation = id_equation and num_bannette = $id_bannette"; $resultat = pmb_mysql_query($requete); if (($r = pmb_mysql_fetch_object($resultat))) { $recherche = $r->requete; $equ = new equation ($r->num_equation); if (!isset($search) || !is_object($search)) $search = new search(); $search->unserialize_search($equ->requete); $recherche = $search->make_human_query(); $zoom_comment = ""; $java_comment = " onmouseover=\"z=document.getElementById('zoom_comment".$id_bannette."'); z.style.display=''; \" onmouseout=\"z=document.getElementById('zoom_comment".$id_bannette."'); z.style.display='none'; \""; } $retour_aff .= ""; } $retour_aff.= htmlentities($bannette->comment_public, ENT_QUOTES, $charset); if ($link_to_bannette) { $retour_aff .= ""; $retour_aff .= $zoom_comment; } if (in_array($empr_categ, $bannette->categorie_lecteurs)) { $retour_aff.= " / ".$cat_l; } foreach($this->groups as $groupe_id=>$group_label) { if (in_array($groupe_id, $bannette->groupe_lecteurs)) { $retour_aff.= " / ".$group_label; } } $retour_aff .= "\n"; $retour_aff .= htmlentities($bannette->aff_date_last_envoi, ENT_QUOTES, $charset); $retour_aff .= "\n"; $retour_aff .= htmlentities($bannette->nb_notices, ENT_QUOTES, $charset); $retour_aff .= "\n"; $retour_aff .= htmlentities($bannette->periodicite, ENT_QUOTES, $charset); $retour_aff .= "
"; } else { $retour_aff .= $msg['dsi_bannette_gerer_supprimer'] . "\" onclick=\"delete_bannette_abon();return false;\" />"; } $retour_aff.= "
"; return $retour_aff; } public function get_groups() { return $this->groups; } }// end class