s_id = $id; $this->getData(); } else { // la notice n'existe pas $this->s_id = 0; $this->getData(); } } // --------------------------------------------------------------- // getData() : récupération infos du titre // --------------------------------------------------------------- function getData() { global $dbh; if(!$this->s_id) { // pas d'identifiant. on retourne un tableau vide $this->s_id = 0; $this->name = ''; $this->index = ''; } else { $requete = "SELECT serie_id,serie_name,serie_index FROM series WHERE serie_id='".$this->s_id."' " ; $result = mysql_query($requete, $dbh) or die ($requete."
".mysql_error()); if(mysql_num_rows($result)) { $temp = mysql_fetch_object($result); $this->s_id = $temp->serie_id; $this->name = $temp->serie_name; $this->index = $temp->serie_index; // Ajoute un lien sur la fiche série si l'utilisateur à accès aux autorités if (SESSrights & AUTORITES_AUTH) $this->isbd_entry_lien_gestion = "".$this->name.""; else $this->isbd_entry_lien_gestion = $this->name; } else { // pas de titre avec cette clé $this->s_id = 0; $this->name = ''; $this->index = ''; } } } // --------------------------------------------------------------- // show_form : affichage du formulaire de saisie // --------------------------------------------------------------- function show_form() { global $msg; global $charset; global $serie_form; global $pmb_type_audit; if($this->s_id) { $action = "./autorites.php?categ=series&sub=update&id=$this->s_id"; $libelle = $msg[337]; $button_remplace = "s_id\"'>"; $button_delete = ""; $button_voir = "s_id\"'>"; } else { $action = './autorites.php?categ=series&sub=update&id='; $libelle = $msg[336]; $button_remplace = ''; $button_delete =''; $button_voir="" ; } $aut_link= new aut_link(AUT_TABLE_SERIES,$this->s_id); $serie_form = str_replace('', $aut_link->get_form('saisie_serie') , $serie_form); $aut_pperso= new aut_pperso("serie",$this->s_id); $serie_form = str_replace('!!aut_pperso!!', $aut_pperso->get_form(), $serie_form); $serie_form = str_replace('!!id!!', $this->s_id, $serie_form); $serie_form = str_replace('!!libelle!!', $libelle, $serie_form); $serie_form = str_replace('!!action!!', $action, $serie_form); $serie_form = str_replace('!!id!!', $this->s_id, $serie_form); $serie_form = str_replace('!!serie_nom!!', htmlentities($this->name,ENT_QUOTES, $charset), $serie_form); $serie_form = str_replace('!!remplace!!', $button_remplace, $serie_form); $serie_form = str_replace('!!voir_notices!!', $button_voir, $serie_form); $serie_form = str_replace('!!delete!!', $button_delete, $serie_form); // pour retour à la bonne page en gestion d'autorités // &user_input=".rawurlencode(stripslashes($user_input))."&nbr_lignes=$nbr_lignes&page=$page global $user_input, $nbr_lignes, $page ; $serie_form = str_replace('!!user_input_url!!', rawurlencode(stripslashes($user_input)), $serie_form); $serie_form = str_replace('!!user_input!!', htmlentities($user_input,ENT_QUOTES, $charset), $serie_form); $serie_form = str_replace('!!nbr_lignes!!', $nbr_lignes, $serie_form); $serie_form = str_replace('!!page!!', $page, $serie_form); if ($pmb_type_audit && $this->s_id) $bouton_audit= " s_id."', 'audit_popup', 700, 500, -2, -2, 'scrollbars=yes, toolbar=no, dependent=yes, resizable=yes')\" title=\"".$msg['audit_button']."\" value=\"".$msg['audit_button']."\" /> "; $serie_form = str_replace('!!audit_bt!!', $bouton_audit, $serie_form); print $serie_form; } // --------------------------------------------------------------- // replace_form : affichage du formulaire de remplacement // --------------------------------------------------------------- function replace_form() { global $serie_replace; global $msg; global $include_path; if(!$this->s_id || !$this->name) { require_once("$include_path/user_error.inc.php"); error_message($msg[161], $msg[162], 1, './autorites.php?categ=series&sub=&id='); return false; } $serie_replace=str_replace('!!id!!', $this->s_id, $serie_replace); $serie_replace=str_replace('!!serie_name!!', $this->name, $serie_replace); print $serie_replace; } // --------------------------------------------------------------- // delete() : suppression du titre de série // --------------------------------------------------------------- function delete() { global $dbh; global $msg; if(!$this->s_id) // impossible d'accéder à cette notice de titre de série return $msg[409]; // récupération du nombre de notices affectées $requete = "SELECT COUNT(1) AS qte FROM notices WHERE tparent_id=".$this->s_id; $res = mysql_query($requete, $dbh); $nbr_lignes = mysql_result($res, 0, 0); if(!$nbr_lignes) { // titre de série non-utilisé dans des notices : Suppression OK // effacement dans la table des titres de série $requete = "DELETE FROM series WHERE serie_id=".$this->s_id; $result = mysql_query($requete, $dbh); // liens entre autorités $aut_link= new aut_link(AUT_TABLE_SERIES,$this->s_id); $aut_link->delete(); $aut_pperso= new aut_pperso("serie",$this->s_id); $aut_pperso->delete(); audit::delete_audit(AUDIT_SERIE,$this->s_id); return false; } else { // Ce titre de série est utilisé dans des notices, impossible de le supprimer return ''.$this->name."
${msg[410]}"; } } // --------------------------------------------------------------- // replace($by) : remplacement du titre // --------------------------------------------------------------- function replace($by,$link_save=0) { // à compléter global $msg; global $dbh; if(!$by) { // pas de valeur de remplacement !!! return "serious error occured, please contact admin..."; } if (($this->s_id == $by) || (!$this->s_id)) { // impossible de remplacer une autorité par elle-même return $msg[411]; } $aut_link= new aut_link(AUT_TABLE_SERIES,$this->s_id); // "Conserver les liens entre autorités" est demandé if($link_save) { // liens entre autorités $aut_link->add_link_to(AUT_TABLE_SERIES,$by); } $aut_link->delete(); // a) remplacement dans les notices $requete = "UPDATE notices SET tparent_id=$by WHERE tparent_id=".$this->s_id; $res = mysql_query($requete, $dbh); $rqt_notice="select notice_id,tit1,tit2,tit3,tit4 from notices where tparent_id=".$by; $r_notice=mysql_query($rqt_notice); while ($r=mysql_fetch_object($r_notice)) { $rq_serie="update notices, series set notices.index_serie=serie_index, notices.index_wew=concat(serie_name,' ',tit1,' ',tit2,' ',tit3,' ',tit4),notices.index_sew=concat(' ',serie_index,' ','".addslashes(strip_empty_words($r->tit1." ".$r->tit2." ".$r->tit3." ".$r->tit4))."',' ') where notice_id=".$r->notice_id." and serie_id=tparent_id"; mysql_query($rq_serie); } // b) suppression du titre de série à remplacer $requete = "DELETE FROM series WHERE serie_id=".$this->s_id; $res = mysql_query($requete, $dbh); audit::delete_audit (AUDIT_SERIE, $this->s_id); serie::update_index($by); return FALSE; } // --------------------------------------------------------------- // update($value) : mise à jour du titre de série // --------------------------------------------------------------- function update($value) { global $dbh; global $msg; global $include_path; if(!$value) return false; // nettoyage de la chaîne en entrée $value = clean_string($value); $requete = "SET serie_name='".$value."', "; $requete .= "serie_index=' ".strip_empty_words($value)." '"; if($this->s_id) { // update $requete = 'UPDATE series '.$requete; $requete .= ' WHERE serie_id='.$this->s_id.' LIMIT 1;'; if(mysql_query($requete, $dbh)) { $rqt_notice="select notice_id,tit1,tit2,tit3,tit4 from notices where tparent_id=".$this->s_id; $r_notice=mysql_query($rqt_notice); while ($r=mysql_fetch_object($r_notice)) { $rq_serie="update notices, series set notices.index_serie=serie_index, notices.index_wew=concat(serie_name,' ',tit1,' ',tit2,' ',tit3,' ',tit4),notices.index_sew=concat(' ',serie_index,' ','".addslashes(strip_empty_words($r->tit1." ".$r->tit2." ".$r->tit3." ".$r->tit4))."',' ') where notice_id=".$r->notice_id." and serie_id=tparent_id"; mysql_query($rq_serie); } $aut_link= new aut_link(AUT_TABLE_SERIES,$this->s_id); $aut_link->save_form(); $aut_pperso= new aut_pperso("serie",$this->s_id); $aut_pperso->save_form(); serie::update_index($this->s_id); audit::insert_modif (AUDIT_SERIE, $this->s_id) ; return TRUE; } else { require_once("$include_path/user_error.inc.php"); warning($msg[337], $msg[341]); return FALSE; } } else { // création : s'assurer que le titre n'existe pas déjà $dummy = "SELECT * FROM series WHERE serie_name REGEXP '^$value$' LIMIT 1 "; $check = mysql_query($dummy, $dbh); if(mysql_num_rows($check)) { require_once("$include_path/user_error.inc.php"); warning($msg[336], $msg[340]); return FALSE; } $requete = 'INSERT INTO series '.$requete.';'; if(mysql_query($requete, $dbh)) { $this->s_id=mysql_insert_id(); $aut_link= new aut_link(AUT_TABLE_SERIES,$this->s_id); $aut_link->save_form(); $aut_pperso= new aut_pperso("serie",$this->s_id); $aut_pperso->save_form(); audit::insert_creation(AUDIT_SERIE, $this->s_id) ; return TRUE; } else { require_once("$include_path/user_error.inc.php"); warning($msg[336], $msg[342]); return FALSE; } } } // --------------------------------------------------------------- // import() : import d'un titre de série // --------------------------------------------------------------- // fonction d'import de notice auteur (membre de la classe 'author'); function import($title) { global $dbh; // check sur la variable passée en paramètre if(!$title) { return 0; } // tentative de récupérer l'id associée dans la base (implique que l'autorité existe) // préparation de la requête $key = addslashes($title); $query = "SELECT serie_id FROM series WHERE serie_name='".rtrim(substr($key,0,255))."' LIMIT 1 "; $result = @mysql_query($query, $dbh); if(!$result) die("can't SELECT series ".$query); // résultat // récupération du résultat de la recherche $tserie = mysql_fetch_object($result); // du résultat et récupération éventuelle de l'id if($tserie->serie_id) return $tserie->serie_id; // id non-récupérée, il faut créer la forme. $index = addslashes(strip_empty_words($title)); $query = "INSERT INTO series SET serie_name='$key', serie_index=' $index '"; $result = @mysql_query($query, $dbh); if(!$result) die("can't INSERT into series".$query); $id=mysql_insert_id($dbh); audit::insert_creation (AUDIT_SERIE, $id) ; return $id; } // --------------------------------------------------------------- // search_form() : affichage du form de recherche // --------------------------------------------------------------- static function search_form() { global $user_query, $user_input; global $msg, $charset; $user_query = str_replace ('!!user_query_title!!', $msg[357]." : ".$msg[333] , $user_query); $user_query = str_replace ('!!action!!', './autorites.php?categ=series&sub=reach&id=', $user_query); $user_query = str_replace ('!!add_auth_msg!!', $msg[339] , $user_query); $user_query = str_replace ('!!add_auth_act!!', './autorites.php?categ=series&sub=serie_form', $user_query); $user_query = str_replace ('', "$msg[1314]", $user_query); $user_query = str_replace("!!user_input!!",htmlentities(stripslashes($user_input),ENT_QUOTES, $charset),$user_query); print pmb_bidi($user_query) ; // print "
// // "; } //--------------------------------------------------------------- // update_index($id) : maj des n-uplets la table notice_global_index en rapport avec cet série //--------------------------------------------------------------- function update_index($id) { global $dbh; // On cherche tous les n-uplet de la table notice correspondant à cet auteur. $found = mysql_query("select distinct(notice_id) from notices where tparent_id='".$id."'",$dbh); // Pour chaque n-uplet trouvés on met a jour la table notice_global_index avec l'auteur modifié : while(($mesNotices = mysql_fetch_object($found))) { $notice_id = $mesNotices->notice_id; notice::majNotices($notice_id);//Le titre de série est indexé dans les index de la notice notice::majNoticesGlobalIndex($notice_id); notice::majNoticesMotsGlobalIndex($notice_id,'serie'); } } } # fin de définition de la classe serie } # fin de délaration