notice->year) $annee = $this->notice->year ; if ($this->notice->ed1_id) { $editeur = new publisher($this->notice->ed1_id); $editeur_reduit = $editeur->display ; if ($annee) { $editeur_reduit .= " - $annee "; $annee = "" ; } } else { // annee mais pas d'editeur $editeur_reduit = " / $annee "; } } else $editeur_reduit = "" ; //Champs personnalises a ajouter au reduit if (!$this->p_perso->no_special_fields) { if (count($perso_voulus)) { $this->p_perso->get_values($this->notice_id) ; for ($i=0; $ip_perso->get_formatted_output($this->p_perso->values[$perso_voulus[$i]],$perso_voulus[$i])." " ; } } else $perso_voulu_aff = "" ; } else $perso_voulu_aff = "" ; //Si c'est un depouillement, ajout du titre et bulletin if($this->notice->niveau_biblio == 'a' && $this->notice->niveau_hierar == 2) { $aff_perio_title="in ".$this->parent_title." (".$this->parent_numero." ".($this->parent_date?$this->parent_date:"[".$this->parent_aff_date_date."]").")"; } // recuperation du titre de serie // constitution de la mention de titre if($this->notice->serie_name) { $this->notice_header = $this->notice->serie_name; if($this->notice->tnvol) $this->notice_header .= ', '.$this->notice->tnvol; } if ($this->notice_header) $this->notice_header .= ". ".$this->notice->tit1 ; else $this->notice_header = $this->notice->tit1; if ($type_reduit=="T" && $this->notice->tit4) $this->notice_header = $this->notice_header." : ".$this->notice->tit4; if ($this->auteurs_principaux) $this->notice_header .= " / ".$this->auteurs_principaux; if ($editeur_reduit) $this->notice_header .= " / ".$editeur_reduit ; if ($perso_voulu_aff) $this->notice_header .= " / ".$perso_voulu_aff ; if ($aff_perio_title) $this->notice_header .= " ".$aff_perio_title; $this->notice_header_with_link=inslink($this->notice_header, str_replace("!!id!!", $this->notice_id, $this->lien_rech_notice)) ; } // generation de l'isbd---------------------------------------------------- function do_isbd($short=0,$ex=1) { global $dbh; global $msg; global $tdoc; global $charset, $opac_url_base; $this->notice_isbd=""; //In //Recherche des notices parentes $requete="select linked_notice, relation_type, rank from notices_relations where num_notice=".$this->notice_id." order by relation_type,rank"; $result_linked=mysql_query($requete,$dbh); //Si il y en a, on prépare l'affichage if (mysql_num_rows($result_linked)) { global $relation_listup ; if (!$relation_listup) $relation_listup=new marc_list("relationtypeup"); } $r_type=array(); $ul_opened=false; //Pour toutes les notices liées while (($r_rel=mysql_fetch_object($result_linked))) { $parent_notice=new notice_affichage($r_rel->linked_notice,$this->liens,1,$this->to_print); $parent_notice->visu_expl = 0 ; $parent_notice->visu_explnum = 0 ; $parent_notice->do_header(); //Presentation differente si il y en a un ou plusieurs if (mysql_num_rows($result_linked)==1) { $this->notice_isbd.="
".$relation_listup->table[$r_rel->relation_type]." ".$parent_notice->notice_header."

"; } else { if (!$r_type[$r_rel->relation_type]) { $r_type[$r_rel->relation_type]=1; if ($ul_opened) $this->notice_isbd.=""; else { $this->notice_isbd.="
"; $ul_opened=true; } $this->notice_isbd.="".$relation_listup->table[$r_rel->relation_type].""; $this->notice_isbd.="\n"; } // constitution de la mention de titre if($this->notice->serie_name) { $serie_temp .= inslink($this->notice->serie_name, str_replace("!!id!!", $this->notice->tparent_id, $this->lien_rech_serie)); if($this->notice->tnvol) $serie_temp .= ', '.$this->notice->tnvol; } if ($serie_temp) $this->notice_isbd .= $serie_temp.". ".$this->notice->tit1 ; else $this->notice_isbd .= $this->notice->tit1; //commentaire du type de document //$this->notice_isbd .= ' ['.$tdoc->table[$this->notice->typdoc].']'; if ($this->notice->tit3) $this->notice_isbd .= " = ".$this->notice->tit3 ; if ($this->notice->tit4) $this->notice_isbd .= " : ".$this->notice->tit4 ; if ($this->notice->tit2) $this->notice_isbd .= " ; ".$this->notice->tit2 ; if ($this->auteurs_tous) $this->notice_isbd .= " / ".$this->auteurs_tous; // mention d'edition if($this->notice->mention_edition) $this->notice_isbd .= "  . -  ".$this->notice->mention_edition; // zone de collection et editeur if($this->notice->subcoll_id) { $collection = new subcollection($this->notice->subcoll_id); $editeurs .= inslink($collection->publisher_isbd, str_replace("!!id!!", $collection->publisher, $this->lien_rech_editeur)); $collections = inslink($collection->isbd_entry, str_replace("!!id!!", $this->notice->subcoll_id, $this->lien_rech_subcollection)); } elseif ($this->notice->coll_id) { $collection = new collection($this->notice->coll_id); $editeurs .= inslink($collection->publisher_isbd, str_replace("!!id!!", $collection->parent, $this->lien_rech_editeur)); $collections = inslink($collection->isbd_entry, str_replace("!!id!!", $this->notice->coll_id, $this->lien_rech_collection)); } elseif ($this->notice->ed1_id) { $editeur = new publisher($this->notice->ed1_id); $editeurs .= inslink($editeur->isbd_entry, str_replace("!!id!!", $this->notice->ed1_id, $this->lien_rech_editeur)); } if($this->notice->ed2_id) { $editeur = new publisher($this->notice->ed2_id); $editeurs ? $editeurs .= ' : '.inslink($editeur->isbd_entry, str_replace("!!id!!", $this->notice->ed2_id, $this->lien_rech_editeur)) : $editeurs = inslink($editeur->isbd_entry, str_replace("!!id!!", $this->notice->ed2_id, $this->lien_rech_editeur)); } if($this->notice->year) $editeurs ? $editeurs .= ', '.$this->notice->year : $editeurs = $this->notice->year; elseif ($this->notice->niveau_biblio == 'm' && $this->notice->niveau_hierar == 0) $editeurs ? $editeurs .= ', [s.d.]' : $editeurs = "[s.d.]"; if($editeurs) $this->notice_isbd .= " . - $editeurs"; // zone de la collation if($this->notice->npages) $collation = $this->notice->npages; if($this->notice->ill) $collation .= ' : '.$this->notice->ill; if($this->notice->size) $collation .= ' ; '.$this->notice->size; if($this->notice->accomp) $collation .= ' + '.$this->notice->accomp; if($collation) $this->notice_isbd .= " . - $collation"; if($collections) { if($this->notice->nocoll) $collections .= '; '.$this->notice->nocoll; $this->notice_isbd .= ". - ($collections)".' '; } $this->notice_isbd .= '.'; // ISBN ou NO. commercial if($this->notice->code) { if(isISBN($this->notice->code)) $zoneISBN = 'ISBN '; else $zoneISBN .= '. - '; $zoneISBN .= $this->notice->code; } if($this->notice->prix) { if($this->notice->code) $zoneISBN .= ' : '.$this->notice->prix; else { if ($zoneISBN) $zoneISBN .= '  '.$this->notice->prix; else $zoneISBN = $this->notice->prix; } } if($zoneISBN) $this->notice_isbd .= "
".$zoneISBN; // note generale if($this->notice->n_gen) $zoneNote = nl2br(htmlentities($this->notice->n_gen,ENT_QUOTES, $charset)); if($zoneNote) $this->notice_isbd .= "
".$zoneNote; // langues if(count($this->langues)) { $langues = "${msg[537]} : ".$this->construit_liste_langues($this->langues); } if(count($this->languesorg)) { $langues .= " ${msg[711]} : ".$this->construit_liste_langues($this->languesorg); } if ($langues) $this->notice_isbd .= "
".$langues ; if (!$short) { $this->notice_isbd .="
notice_id."Img\" title=\"".$msg["expandable_notice"]."\" border=\"0\" onClick=\"expandBase('el_notes_".$this->notice_id."', true); return false;\" hspace=\"3\"> notes
notice_id."Child\" class=\"child\" style=\"margin-bottom:6px;display:none;\"> "; $this->notice_isbd .= $this->aff_suite() ; $this->notice_isbd .="
"; } else { $this->notice_isbd.=$this->genere_in_perio(); } //Notices liees // ajoutees en dehors de l'onglet PUBLIC ailleurs if ($ex) $this->affichage_resa_expl = $this->aff_resa_expl() ; } // fonction d'affichage de la suite ISBD ou PUBLIC : partie commune, pour eviter la redondance de calcul function aff_suite() { global $msg; global $charset; // afin d'eviter de recalculer un truc deja calcule.. if ($this->affichage_suite) return $this->affichage_suite ; // serials : si article $ret .= $this->genere_in_perio () ; // resume if($this->notice->n_resume) if($this->notice->n_resume) $ret .= "".$msg['n_resume_start']."".nl2br(htmlentities($this->notice->n_resume,ENT_QUOTES, $charset)).""; // note de contenu if($this->notice->n_contenu) $ret .= "".$msg['n_contenu_start']."".nl2br(htmlentities($this->notice->n_contenu,ENT_QUOTES, $charset)).""; // Categories if($this->categories_toutes) $ret .= "".$msg['categories_start']."".$this->categories_toutes.""; // indexation libre $mots_cles = $this->do_mots_cle() ; if($mots_cles) $ret .= "".$msg['motscle_start']."".$mots_cles.""; // indexation interne if($this->notice->indexint) { $indexint = new indexint($this->notice->indexint); $ret .= "".$msg['indexint_start']."".inslink($indexint->name, str_replace("!!id!!", $this->notice->indexint, $this->lien_rech_indexint))." ".nl2br(htmlentities($indexint->comment,ENT_QUOTES, $charset))."" ; } //Champs personnalises $perso_aff = "" ; if (!$this->p_perso->no_special_fields) { $perso_=$this->p_perso->show_fields($this->notice_id); for ($i=0; $i".$p["AFF"].""; } } if ($perso_aff) { //Espace //$ret.=" "; $ret .= $perso_aff ; } if ($this->notice->lien) { //$ret.=" "; $ret.="".$msg["lien_start"]."" ; if (substr($this->notice->eformat,0,3)=='RSS') { $ret .= affiche_rss($this->notice->notice_id) ; } else { $ret.="notice->lien."\" target=\"top\">".htmlentities($this->notice->lien,ENT_QUOTES,$charset).""; } $ret.=""; if ($this->notice->eformat && substr($this->notice->eformat,0,3)!='RSS') $ret.="".$msg["eformat_start"]."".htmlentities($this->notice->eformat,ENT_QUOTES,$charset).""; } $this->affichage_suite = $ret ; return $ret ; } // fonction d'affichage des exemplaires, resa et expl_num function aff_resa_expl() { global $opac_resa ; global $opac_max_resa ; global $opac_show_exemplaires, $opac_url_base ; global $msg,$charset; global $dbh; global $popup_resa ; global $opac_resa_popup ; // la resa se fait-elle par popup ? global $allow_book ; // afin d'eviter de recalculer un truc deja calcule... if ($this->affichage_resa_expl) return $this->affichage_resa_expl ; if ( (is_null($this->dom) && $opac_show_exemplaires && $this->visu_expl && (!$this->visu_expl_abon || ($this->visu_expl_abon && $_SESSION["user_code"]))) || ($this->rights & 8) ) { $resa_check=check_statut($this->notice_id,0) ; // vérification si exemplaire réservable if ($resa_check) { // deplace dans le IF, si pas visible : pas de bouton resa $requete_resa = "SELECT count(1) FROM resa WHERE resa_idnotice='$this->notice_id'"; $nb_resa_encours = mysql_result(mysql_query($requete_resa,$dbh), 0, 0) ; if ($nb_resa_encours) $message_nbresa = str_replace("!!nbresa!!", $nb_resa_encours, $msg["resa_nb_deja_resa"]) ; if (($this->notice->niveau_biblio=="m") && ($_SESSION["user_code"] && $allow_book) && $opac_resa && !$popup_resa) { //$ret .= "

".$msg["bulletin_display_resa"]."

"; if ($opac_max_resa==0 || $opac_max_resa>$nb_resa_encours) { if ($opac_resa_popup) $ret .= "notice_id."&oresa=popup','doresa','scrollbars=yes,width=500,height=600,menubar=0,resizable=yes'); w.focus(); return false;\" id=\"bt_resa\">".$msg["bulletin_display_place_resa"]."" ; else $ret .= "".$msg["bulletin_display_place_resa"]."" ; $ret .= $message_nbresa ; } else $ret .= str_replace("!!nb_max_resa!!", $opac_max_resa, $msg["resa_nb_max_resa"]) ; $ret.= "
"; } elseif ( ($this->notice->niveau_biblio=="m") && !($_SESSION["user_code"]) && $opac_resa && !$popup_resa) { // utilisateur pas connecte // preparation lien reservation sans etre connecte //$ret .= "

".$msg["bulletin_display_resa"]."

"; //if ($opac_resa_popup) $ret .= "notice_id."&oresa=popup','doresa','scrollbars=yes,width=500,height=600,menubar=0,resizable=yes'); w.focus(); return false;\" id=\"bt_resa\">".$msg["bulletin_display_place_resa"]."" ; // else $ret .= "".$msg["bulletin_display_place_resa"]."" ; $ret .= $message_nbresa ; } } $temp = $this->expl_list($this->notice->niveau_biblio,$this->notice->notice_id); $ret .= $temp ; $this->affichage_expl = $temp ; } if ($this->notice->typdoc!="k") { if ( (is_null($this->dom) && $this->visu_explnum && (!$this->visu_explnum_abon || ($this->visu_explnum_abon && $_SESSION["user_code"]))) || ($this->rights & 16) ){ if (($explnum = show_explnum_per_notice($this->notice_id, 0, ''))) { $ret.= "notice_id."Img\" title=\"".$msg["expandable_notice"]."\" border=\"0\" onClick=\"expandBase('el_docnum_".$this->notice_id."', true); return false;\" hspace=\"3\"> ".htmlentities($msg['expl num'],ENT_QUOTES,$charset)."
notice_id."Child\" class=\"child\" style=\"margin-bottom:6px;display:none;\">"; $ret.= $explnum; $ret.="
"; $this->affichage_expl .= "

$msg[explnum]

".$explnum; } } $this->affichage_resa_expl = $ret ; } return $ret ; } // fonction de generation du tableau des exemplaires function expl_list($type,$id,$bull_id=0) { global $dbh; global $msg, $charset; global $expl_list_header, $expl_list_footer, $opac_url_base; // ecrasement du template d'affichage des exemplaires pour eviter tout conflit GM $expl_list_header=""; $expl_list_footer ="
"; // les depouillements n'ont pas d'exemplaire if ($type=="a") return "" ; // les exemplaires des monographies if ($type=="m") { $requete = "SELECT exemplaires.*, pret.*, docs_location.*, docs_section.*, docs_statut.*, docs_type.*"; $requete .= " FROM exemplaires LEFT JOIN pret ON exemplaires.expl_id=pret.pret_idexpl, docs_location, docs_section, docs_statut, docs_type"; $requete .= " WHERE expl_notice='$id' and expl_bulletin='$bull_id'"; $requete .= " AND location_visible_opac=1 AND section_visible_opac=1 AND statut_visible_opac=1"; $requete .= " AND exemplaires.expl_location=docs_location.idlocation"; $requete .= " AND exemplaires.expl_section=docs_section.idsection "; $requete .= " AND exemplaires.expl_statut=docs_statut.idstatut "; $requete .= " AND exemplaires.expl_typdoc=docs_type. idtyp_doc "; // recuperation du nombre d'exemplaires $res = mysql_query($requete, $dbh); $expl_liste=""; $requete_resa = "SELECT count(1) from resa where resa_idnotice='$id' "; $nb_resa = mysql_result(mysql_query($requete_resa, $dbh),0,0); $compteur=0; while(($expl = mysql_fetch_object($res))) { $compteur = $compteur+1; $expl_liste .= "$msg[barcode]$msg[cotation]$msg[typdoc_support]$msg[statut]"; $expl_liste .= "".$expl->expl_cb."".$expl->expl_cote." ".$expl->tdoc_libelle.""; $requete_resa = "SELECT count(1) from resa where resa_cb='$expl->expl_cb' "; $flag_resa = mysql_result(mysql_query($requete_resa, $dbh),0,0); $requete_resa = "SELECT count(1) from resa_ranger where resa_cb='$expl->expl_cb' "; $flag_resa = $flag_resa + mysql_result(mysql_query($requete_resa, $dbh),0,0); $situation = ""; if ($expl->statut_libelle_opac != "") $situation .= $expl->statut_libelle_opac."
"; if ($flag_resa) { $nb_resa--; $situation .= "$msg[expl_reserve]"; } else { if ($expl->pret_flag) { if($expl->pret_retour) { // exemplaire sorti $situation .= "$msg[out_until] ".formatdate($expl->pret_retour).''; } else { // pas sorti $situation .= "".$msg['available'].""; } } else { // pas pretable // exemplaire pas pretable $situation .= "".$msg['exclu'].""; } } // fin if else $flag_resa $expl_liste .= "$situation "; $expl_liste .="\r\n $msg[situation]$msg[section]"; $expl_liste .= ""; if ($expl->num_infopage) $expl_liste .= "num_infopage."\" alt=\"".$msg['location_more_info']."\" title=\"".$msg['location_more_info']."\">".htmlentities($expl->location_libelle, ENT_QUOTES, $charset).""; else $expl_liste .= $expl->location_libelle. $expl_liste .= "".$expl->section_libelle.""; } // fin while // affichage de la liste d'exemplaires calcule ci-dessus if ($expl_liste) $expl_liste = $expl_list_header.$expl_liste.$expl_list_footer; return $expl_liste; } // le resume des articles, bulletins et exemplaires des notices meres if ($type=="s") return ""; } // fin function expl_list // generation du de l'affichage simple sans onglet ---------------------------------------------- // si $depliable=1 alors inclusion du parent / child function genere_simple($depliable=1, $what='ISBD') { global $msg, $charset; global $dbh; global $cart_aff_case_traitement; global $opac_url_base ; global $opac_avis_allow; global $opac_allow_add_tag; global $opac_visionneuse_allow; global $allow_tag ; // l'utilisateur a-t-il le droit d'ajouter un tag $this->notice_childs = $this->genere_notice_childs(); // preparation de la case a cocher pour traitement panier if ($cart_aff_case_traitement) $case_a_cocher = " "; else $case_a_cocher = "" ; if ($this->cart_allowed) $basket="notice_id."&header=".rawurlencode($this->notice_header)."\" target=\"cart_info\">\"".$msg[notice_title_basket]."\""; else $basket=""; //Avis if (($opac_avis_allow && $opac_avis_allow !=2) || ($_SESSION["user_code"] && $opac_avis_allow == 2)) $basket.="  notice_id','avis','width=520,height=290,scrollbars=yes,resizable=yes'); return false;\">\"".$msg[notice_title_avis]."\""; //add tags if (($opac_allow_add_tag==1)||(($opac_allow_add_tag==2)&&($_SESSION["user_code"])&&($allow_tag))) $basket.="  notice_id','ajouter_un_tag','width=350,height=150,scrollbars=yes,resizable=yes'); return false;\">\"".$msg[notice_title_tag]."\""; if ($basket) $basket="
".$basket."
"; if ($this->notice->niveau_biblio=="s") $icon="icon_per_16x16.gif"; elseif ($this->notice->niveau_biblio=="a") $icon="icon_art_16x16.gif"; else $icon="icon_".$this->notice->typdoc."_16x16.gif"; if ((!$depliable) && ($this->notice->typdoc=="k")) { $template="
\n $case_a_cocher"; if ($icon) $template.=" "; $template.=" !!heada!!
!!DOCNUM1!!
\n
".$basket."!!ISBD!!\n
\n
\n"; } else { $template="
\n
\n $case_a_cocher"; if ($icon) $template.=" "; $template.=" !!heada!!
\n
".$basket." !!ISBD!! !!SUITE!!
\r\n
\n"; } $no_notice = $this->notice_id; if ($this->notice->typdoc=="k") { // Affichage du premier exemplaire numerique if ($no_notice) { // Traitement exemplaire numerique $requete = "SELECT explnum_id, explnum_notice, explnum_bulletin, explnum_nom, explnum_mimetype, explnum_url, explnum_data, explnum_vignette, explnum_nomfichier, explnum_extfichier FROM explnum WHERE "; $requete .= "explnum_notice='$no_notice' "; $requete .= " order by explnum_id LIMIT 1"; $res = mysql_query($requete, $dbh) or die ($requete." ".mysql_error()); $nb_ex = mysql_num_rows($res); } if($nb_ex) { // on recupere les donnees des exemplaires $i = 1 ; while (($expl = mysql_fetch_object($res))) { $ligne="!!1!!" ; if ($link_expl) { $tlink = str_replace("!!explnum_id!!", $expl->explnum_id, $link_expl); $tlink = str_replace("!!notice_id!!", $expl->explnum_notice, $tlink); $tlink = str_replace("!!bulletin_id!!", $expl->explnum_bulletin, $tlink); } $alt = htmlentities($expl->explnum_nom." - ".$expl->explnum_mimetype,ENT_QUOTES, $charset) ; global $prefix_url_image ; if ($prefix_url_image) $tmpprefix_url_image = $prefix_url_image; else $tmpprefix_url_image = "./" ; if ($expl->explnum_vignette) $obj="$alt"; else // trouver l'icone correspondant au mime_type $obj="$alt"; $expl_liste_obj = ""; if ($opac_visionneuse_allow){ $link=""; $link.="explnum_id.");return false;\" alt='$alt' title='$alt'>".$obj."
"; $expl_liste_obj .=$link; }else{ $suite_url_explnum ="doc_num.php?explnum_id=$expl->explnum_id$words_to_find"; $expl_liste_obj .= "".$obj."
"; } if ($_mimetypes_byext_[$expl->explnum_extfichier]["label"]) $explmime_nom = $_mimetypes_byext_[$expl->explnum_extfichier]["label"] ; elseif ($_mimetypes_bymimetype_[$expl->explnum_mimetype]["label"]) $explmime_nom = $_mimetypes_bymimetype_[$expl->explnum_mimetype]["label"] ; else $explmime_nom = $expl->explnum_mimetype ; /* Pas besoin de l'affichage des titres ni format if ($tlink) { $expl_liste_obj .= ""; $expl_liste_obj .= htmlentities($expl->explnum_nom,ENT_QUOTES, $charset)."
".htmlentities($explmime_nom,ENT_QUOTES, $charset)."
"; } else { $expl_liste_obj .= htmlentities($expl->explnum_nom,ENT_QUOTES, $charset)."
".htmlentities($explmime_nom,ENT_QUOTES, $charset)."
"; } */ $expl_liste_obj .= ""; $ligne = str_replace("!!$i!!", $expl_liste_obj, $ligne); } $ligne_finale = $ligne ; } $entry .= "$ligne_finale"; } // Si un document numerique, renvoi du doc num $entry dans le template, sinon vide if ($nb_ex) $template = str_replace('!!DOCNUM1!!', $entry, $template); else $template = str_replace('!!DOCNUM1!!', "", $template); // Serials : difference avec les monographies on affiche [periodique] et [article] devant l'ISBD if ($this->notice->niveau_biblio =='s') { $template = str_replace('!!ISBD!!', "[".$msg['isbd_type_perio']."] ".$msg["see_bull"]." !!ISBD!!", $template); } elseif ($this->notice->niveau_biblio =='a') { $template = str_replace('!!ISBD!!', "[".$msg['isbd_type_art']."] !!ISBD!!", $template); } $this->result = str_replace('!!id!!', $this->notice_id, $template); $this->result = str_replace('!!heada!!', $this->notice_header, $this->result); if ($what=='ISBD') { $this->do_image($this->notice_isbd,$depliable); $this->result = str_replace('!!ISBD!!', $this->notice_isbd, $this->result); } else { $this->do_image($this->notice_public,$depliable); $this->result = str_replace('!!ISBD!!', $this->notice_public, $this->result); } if ($this->affichage_resa_expl || $this->notice_childs) $this->result = str_replace('!!SUITE!!', $this->notice_childs.$this->affichage_resa_expl, $this->result); else $this->result = str_replace('!!SUITE!!', '', $this->result); } } class notice_affichage_id_photos extends notice_affichage_custom_mixte_photos { function aff_suite() { global $msg; global $charset; if ($this->affichage_suite) return $this->affichage_suite ; $ret=parent::aff_suite(); $ret.= "".$msg["notice_id_start"]."".htmlentities($this->notice_id,ENT_QUOTES, $charset).""; $this->affichage_suite=$ret; return $ret ; } } // fin classe perso pour experimentation affichage mixte et photo-gallerie