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