recursif=$recursif; $this->id = $id; $this->getData(); } else { // la notice n'existe pas $this->id = 0; $this->getData(); } } // --------------------------------------------------------------- // getData() : récupération infos auteur // --------------------------------------------------------------- function getData() { global $dbh,$msg; $this->name = ''; $this->tonalite = ''; $this->comment =''; $this->distrib=array(); $this->ref=array(); $this->subdiv=array(); $this->libelle=""; $this->import_denied=0; if($this->id) { $requete = "SELECT * FROM titres_uniformes WHERE tu_id=$this->id LIMIT 1 "; $result = @mysql_query($requete, $dbh); if(mysql_num_rows($result)) { $temp = mysql_fetch_object($result); $this->id = $temp->tu_id; $this->name = $temp->tu_name; $this->tonalite = $temp->tu_tonalite; $this->comment = $temp->tu_comment ; $this->import_denied = $temp->tu_import_denied; $libelle[]=$this->name; if($this->tonalite)$libelle[]=$this->tonalite; $requete = "SELECT * FROM tu_distrib WHERE distrib_num_tu='$this->id' order by distrib_ordre"; $result = mysql_query($requete, $dbh); if(mysql_num_rows($result)) { while(($param=mysql_fetch_object($result))) { $this->distrib[]["label"]=$param->distrib_name; $libelle[]=$param->distrib_name; } } $requete = "SELECT * FROM tu_ref WHERE ref_num_tu='$this->id' order by ref_ordre"; $result = mysql_query($requete, $dbh); if(mysql_num_rows($result)) { while(($param=mysql_fetch_object($result))) { $this->ref[]["label"]=$param->ref_name; $libelle[]=$param->ref_name; } } $requete = "SELECT * FROM tu_subdiv WHERE subdiv_num_tu='$this->id' order by subdiv_ordre"; $result = mysql_query($requete, $dbh); if(mysql_num_rows($result)) { while(($param=mysql_fetch_object($result))) { $this->subdiv[]["label"]=$param->subdiv_name; $libelle[]=$param->subdiv_name; } } $this->libelle=implode("; ",$libelle); } else { // pas trouvé avec cette clé $this->id = 0; } } } function gen_input_selection($label,$form_name,$item,$values,$what_sel,$class='saisie-80em' ) { global $msg; $select_prop = "scrollbars=yes, toolbar=no, dependent=yes, resizable=yes"; $link="'./select.php?what=$what_sel&caller=$form_name&p1=f_".$item."_code!!num!!&p2=f_".$item."!!num!!&deb_rech='+escape(this.form.f_".$item."!!num!!.value), '$what_sel', 400, 400, -2, -2, '$select_prop'"; $size_item=strlen($item)+2; $script_js=" "; //template de zone de texte pour chaque valeur $aff="
!!bouton_parcourir!! !!bouton_ajouter!!
\n"; if($what_sel)$bouton_parcourir=""; else $bouton_parcourir=""; $aff= str_replace('!!bouton_parcourir!!', $bouton_parcourir, $aff); $template=$script_js."
"; $template.="
"; $num=0; if(!$values[0])$values[0]=""; foreach($values as $value) { $label_element=$value["label"]; $id_element=$value["id"]; $temp= str_replace('!!id_element!!', $id_element, $aff); $temp= str_replace('!!label_element!!', $label_element, $temp); $temp= str_replace('!!num!!', $num, $temp); if(!$num) $temp= str_replace('!!bouton_ajouter!!', " ", $temp); else $temp= str_replace('!!bouton_ajouter!!', "", $temp); $template.=$temp; $num++; } $template.=""; $template.="
"; return $template; } // --------------------------------------------------------------- // show_form : affichage du formulaire de saisie // --------------------------------------------------------------- function show_form() { global $msg; global $titre_uniforme_form; global $charset; global $user_input, $nbr_lignes, $page ; if($this->id) { $action = "./autorites.php?categ=titres_uniformes&sub=update&id=$this->id"; $libelle = $msg["aut_titre_uniforme_modifier"]; $button_remplace = "id\"'>"; $button_voir = "id\"'>"; $button_delete = ""; } else { $action = './autorites.php?categ=titres_uniformes&sub=update&id='; $libelle = $msg["aut_titre_uniforme_ajouter"]; $button_remplace = ''; $button_delete =''; } if($this->import_denied == 1){ $import_denied_checked = "checked='checked'"; }else{ $import_denied_checked = ""; } $aut_link= new aut_link(AUT_TABLE_TITRES_UNIFORMES,$this->id); $titre_uniforme_form = str_replace('', $aut_link->get_form('saisie_titre_uniforme') , $titre_uniforme_form); $titre_uniforme_form = str_replace('!!id!!', $this->id, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!action!!', $action, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!libelle!!', $libelle, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!nom!!', htmlentities($this->name,ENT_QUOTES, $charset), $titre_uniforme_form); $distribution_form=$this->gen_input_selection($msg["aut_titre_uniforme_form_distribution"],"saisie_titre_uniforme","distrib",$this->distrib,"","saisie-80em"); $titre_uniforme_form = str_replace("",$distribution_form, $titre_uniforme_form); $ref_num_form=$this->gen_input_selection($msg["aut_titre_uniforme_form_ref_numerique"],"saisie_titre_uniforme","ref",$this->ref,"","saisie-80em"); $titre_uniforme_form = str_replace("",$ref_num_form, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!tonalite!!', htmlentities($this->tonalite,ENT_QUOTES, $charset), $titre_uniforme_form); $titre_uniforme_form = str_replace('!!comment!!', htmlentities($this->comment,ENT_QUOTES, $charset), $titre_uniforme_form); $sub_form=$this->gen_input_selection($msg["aut_titre_uniforme_form_subdivision_forme"],"saisie_titre_uniforme","subdiv",$this->subdiv,"","saisie-80em"); $titre_uniforme_form = str_replace('', $sub_form, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!remplace!!', $button_remplace, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!voir_notices!!', $button_voir, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!delete!!', $button_delete, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!user_input_url!!', rawurlencode(stripslashes($user_input)), $titre_uniforme_form); $titre_uniforme_form = str_replace('!!user_input!!', htmlentities($user_input,ENT_QUOTES, $charset), $titre_uniforme_form); $titre_uniforme_form = str_replace('!!nbr_lignes!!', $nbr_lignes, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!page!!', $page, $titre_uniforme_form); $titre_uniforme_form = str_replace('!!tu_import_denied!!', $import_denied_checked, $titre_uniforme_form); print $titre_uniforme_form; } // --------------------------------------------------------------- // replace_form : affichage du formulaire de remplacement // --------------------------------------------------------------- function replace_form() { global $titre_uniforme_replace; global $msg; global $include_path; if(!$this->id || !$this->name) { require_once("$include_path/user_error.inc.php"); error_message($msg[161], $msg[162], 1, './autorites.php?categ=titres_uniformes&sub=&id='); return false; } $titre_uniforme_replace=str_replace('!!old_titre_uniforme_libelle!!', $this->display, $titre_uniforme_replace); $titre_uniforme_replace=str_replace('!!id!!', $this->id, $titre_uniforme_replace); print $titre_uniforme_replace; return true; } // --------------------------------------------------------------- // delete() : suppression // --------------------------------------------------------------- function delete() { global $dbh; global $msg; if(!$this->id) // impossible d'accéder à cette notice auteur return $msg[403]; // effacement dans les notices // récupération du nombre de notices affectées $requete = "SELECT count(1) FROM notices_titres_uniformes WHERE ntu_num_tu='$this->id' "; $res = mysql_query($requete, $dbh); $nbr_lignes = mysql_result($res, 0, 0); if($nbr_lignes) { // Cet auteur est utilisé dans des notices, impossible de le supprimer return ''.$this->display."
${msg['titre_uniforme_delete']}"; } // effacement dans la table des titres_uniformes $requete = "DELETE FROM titres_uniformes WHERE tu_id='$this->id' "; mysql_query($requete, $dbh); // delete les champs répétables $requete = "DELETE FROM tu_distrib WHERE distrib_num_tu='$this->id' "; mysql_query($requete, $dbh); $requete = "DELETE FROM tu_ref WHERE ref_num_tu='$this->id' "; mysql_query($requete, $dbh); $requete = "DELETE FROM tu_subdiv WHERE subdiv_num_tu='$this->id' "; mysql_query($requete, $dbh); //suppression dans la table de stockage des numéros d'autorités... $query = "select id_authority_source from authorities_sources where num_authority = ".$this->id." and authority_type = 'uniform_title'"; $result = mysql_query($query); if(mysql_num_rows($result)){ $query = "delete from notices_authorities_sources where num_authority_source = ".mysql_result($result,0,0); mysql_query($query); } $query = "delete from authorities_sources where num_authority = ".$this->id." and authority_type = 'uniform_title'"; mysql_query($query); // liens entre autorités $aut_link= new aut_link(AUT_TABLE_TITRES_UNIFORMES,$this->id); $aut_link->delete(); return false; } // --------------------------------------------------------------- // replace($by) : remplacement // --------------------------------------------------------------- function replace($by,$link_save) { global $msg; global $dbh; if (($this->id == $by) || (!$this->id)) { return $msg[223]; } $aut_link= new aut_link(AUT_TABLE_TITRES_UNIFORMES,$this->id); // "Conserver les liens entre autorités" est demandé if($link_save) { // liens entre autorités $aut_link->add_link_to(AUT_TABLE_TITRES_UNIFORMES,$by); } $aut_link->delete(); // remplacement dans les responsabilités $requete = "UPDATE notices_titres_uniformes SET ntu_num_tu='$by' WHERE ntu_num_tu='$this->id' "; @mysql_query($requete, $dbh); // effacement dans la table des titres_uniformes $requete = "DELETE FROM titres_uniformes WHERE tu_id='$this->id' "; mysql_query($requete, $dbh); // delete les champs répétables $requete = "DELETE FROM tu_distrib WHERE distrib_num_tu='$this->id' "; mysql_query($requete, $dbh); $requete = "DELETE FROM tu_ref WHERE ref_num_tu='$this->id' "; mysql_query($requete, $dbh); $requete = "DELETE FROM tu_subdiv WHERE subdiv_num_tu='$this->id' "; mysql_query($requete, $dbh); //nettoyage d'autorities_sources $query = "select * from authorities_sources where num_authority = ".$this->id." and authority_type = 'uniform_title'"; $result = mysql_query($query); if(mysql_num_rows($result)){ while($row = mysql_fetch_object($result)){ if($row->authority_favorite == 1){ //on suprime les références si l'autorité a été importée... $query = "delete from notices_authorities_sources where num_authority_source = ".$row->id_authority_source; mysql_result($query); $query = "delete from authorities_sources where id_authority_source = ".$row->id_authority_source; mysql_result($query); }else{ //on fait suivre le reste $query = "update authorities_sources set num_authority = ".$by." where num_authority_source = ".$row->id_authority_source; mysql_query($query); } } } titre_uniforme::update_index($by); return FALSE; } // --------------------------------------------------------------- // update($value) : mise à jour // --------------------------------------------------------------- function update($value) { global $dbh; global $msg; global $include_path; if(!$value['name']) return false; // nettoyage des chaînes en entrée $value['name'] = clean_string($value['name']); $value['tonalite'] = clean_string($value['tonalite']); $value['comment'] = clean_string($value['comment']); // s'assurer que ce titre uniforme n'existe pas déjà /* $dummy = "SELECT * FROM titres_uniformes WHERE tu_name='".$value['name']."' and tu_id!='".$this->id."' "; $check = mysql_query($dummy, $dbh); if (mysql_num_rows($check)) { require_once("$include_path/user_error.inc.php"); warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_doublon_erreur"]); return FALSE; }*/ $titre=titre_uniforme::import_tu_exist($value,1,$this->id); if($titre){ require_once("$include_path/user_error.inc.php"); warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_doublon_erreur"]); return FALSE; } /* * CREATE TABLE titres_uniformes ( tu_id INT( 9 ) unsigned NOT NULL AUTO_INCREMENT, tu_name VARCHAR( 255 ) DEFAULT '' NOT NULL , tu_tonalite VARCHAR( 255 ) DEFAULT '' NOT NULL , tu_comment TEXT NOT NULL , index_tu TEXT NOT NULL , PRIMARY KEY ( tu_id ) ) CREATE TABLE tu_distrib ( distrib_num_tu INT( 9 ) unsigned NOT NULL default 0, distrib_name VARCHAR( 255 ) DEFAULT '' NOT NULL , distrib_ordre smallint(5) unsigned NOT NULL default 0 ) CREATE TABLE tu_ref ( ref_num_tu INT( 9 ) unsigned NOT NULL default 0, ref_name VARCHAR( 255 ) DEFAULT '' NOT NULL , ref_ordre smallint(5) unsigned NOT NULL default 0 ) CREATE TABLE tu_subdiv ( subdiv_num_tu INT( 9 ) unsigned NOT NULL default 0, subdiv_name VARCHAR( 255 ) DEFAULT '' NOT NULL , subdiv_ordre smallint(5) unsigned NOT NULL default 0 ) CREATE TABLE notices_titres_uniformes ( ntu_num_notice INT( 9 ) unsigned NOT NULL default 0, ntu_num_tu INT( 9 ) unsigned NOT NULL default 0, ntu_titre VARCHAR( 255 ) DEFAULT '' NOT NULL , ntu_date VARCHAR( 255 ) DEFAULT '' NOT NULL , ntu_sous_vedette VARCHAR( 255 ) DEFAULT '' NOT NULL , ntu_langue VARCHAR( 255 ) DEFAULT '' NOT NULL , ntu_version VARCHAR( 255 ) DEFAULT '' NOT NULL , ntu_mention VARCHAR( 255 ) DEFAULT '' NOT NULL , ntu_ordre smallint(5) unsigned NOT NULL default 0, PRIMARY KEY (ntu_num_notice, ntu_num_tu) ) * */ $requete = "SET "; $requete .= "tu_name='".$value["name"]."', "; $requete .= "tu_tonalite='".$value["tonalite"]."', "; $requete .= "tu_comment='".$value["comment"]."', "; $requete .= "tu_import_denied='".$value["import_denied"]."', "; $index.= $value["name"]." ".$value["tonalite"]." "; for($i=0;$iid) { // update $requete = 'UPDATE titres_uniformes '.$requete; $requete .= ' WHERE tu_id='.$this->id.' ;'; if(mysql_query($requete, $dbh)) { titre_uniforme::update_index($this->id); } else { require_once("$include_path/user_error.inc.php"); warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_modif_erreur"]); return FALSE; } } else { // creation $requete = 'INSERT INTO titres_uniformes '.$requete.' '; if(mysql_query($requete, $dbh)) { $this->id=mysql_insert_id(); } else { require_once("$include_path/user_error.inc.php"); warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_creation_erreur"]); return FALSE; } } $aut_link= new aut_link(AUT_TABLE_TITRES_UNIFORMES,$this->id); $aut_link->save_form(); // Gestion des champ répétables $requete = "DELETE FROM tu_distrib WHERE distrib_num_tu='$this->id' "; mysql_query($requete, $dbh); $requete = "DELETE FROM tu_ref WHERE ref_num_tu='$this->id' "; mysql_query($requete, $dbh); $requete = "DELETE FROM tu_subdiv WHERE subdiv_num_tu='$this->id' "; mysql_query($requete, $dbh); // Distribution instrumentale et vocale (pour la musique) for($i=0;$itu_id; return $tu->tu_id; }*/ $titre=titre_uniforme::import_tu_exist($value,$from_form); if($titre){ return $titre; } $requete = "INSERT INTO titres_uniformes SET "; $requete .= "tu_name='".$value["name"]."', "; $requete .= "tu_tonalite='".$value["tonalite"]."', "; $requete .= "tu_comment='".$value["comment"]."', "; // Calcul des index $index.= $value["name"]." ".$value["tonalite"]." "; for($i=0;$itu_id; $différent=false; //Test si les titres de même nom ont aussi la (ou les) même distribution if(count($value['distrib']) == 0){ //Si le titre que je veux ajouter n'a pas de distribution je regarde si celui qui exsite en a une $requete = "select distrib_num_tu from tu_distrib where distrib_num_tu='$tu_id' "; $test = mysql_query($requete, $dbh); if (mysql_num_rows($test)) { $différent = true; //Si il à une distribution le titre que je veux ajouter est différent } }else{ //On test s'il y a autant de distribution $requete = "select distrib_num_tu from tu_distrib where distrib_num_tu='$tu_id' "; $nb=mysql_num_rows(mysql_query($requete, $dbh)); if($nb != count($value['distrib'])){ //Si il y en a pas autant c'est un titre différent $différent = true; }else{ //Sinon on regarde si ce sont les mêmes $nb_occurence=array_count_values($value['distrib']);//avoir le nombre d'occurence de chaque terme for($i=0;$itu_id; } // Référence numérique (pour la musique) for($i=0;$i', "".$msg["aut_titre_uniforme_derniers_crees"]."", $user_query); $user_query = str_replace("!!user_input!!",htmlentities(stripslashes($user_input),ENT_QUOTES, $charset),$user_query); print pmb_bidi($user_query) ; } //--------------------------------------------------------------- // update_index($id) : maj des n-uplets la table notice_global_index en rapport avec cet author //--------------------------------------------------------------- function update_index($id) { global $dbh; // On cherche tous les n-uplet de la table notice correspondant à ce titre_uniforme. $found = mysql_query("select ntu_num_notice from notices_titres_uniformes where ntu_num_tu = ".$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->ntu_num_notice; notice::majNoticesGlobalIndex($notice_id); notice::majNoticesMotsGlobalIndex($notice_id); //TODO preciser le datatype avant d'appeller cette fonction } } function get_informations_from_unimarc($fields,$zone){ $data = array(); if($zone == "2"){ $data['name'] = $fields[$zone.'30'][0]['a'][0]; $data['tonalite']= $fields[$zone.'30'][0]['u'][0]; $data['distrib'] = array(); for($i=0 ; $i