source: pmb4.2/trunk/fuentes/pmb/classes/titre_uniforme.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 59.1 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: titre_uniforme.class.php,v 1.45 2015-07-17 12:52:47 apetithomme Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once($class_path."/notice.class.php");
10require_once("$class_path/aut_link.class.php");
11require_once("$class_path/aut_pperso.class.php");
12require_once("$class_path/audit.class.php");
13require_once("$class_path/author.class.php");
14require_once($class_path."/synchro_rdf.class.php");
15require_once($class_path."/index_concept.class.php");
16require_once($class_path."/vedette/vedette_composee.class.php");
17require_once("$class_path/marc_table.class.php");
18
19class titre_uniforme {
20       
21        // ---------------------------------------------------------------
22        //              propriétés de la classe
23        // ---------------------------------------------------------------     
24        var $id;                                        // MySQL id in table 'titres_uniformes'
25        var $name;                                      // titre_uniforme name
26        var $tonalite;                          // tonalite de l'oeuvre musicale
27        var $tonalite_marclist;         // tonalite de l'oeuvre musicale (valeur issue de la liste music_key.xml)
28        var $comment ;                          // Commentaire, peut contenir du HTML
29        var $import_denied=0;           // booléen pour interdire les modification depuis un import d'autorités
30        var $form;                                      // catégorie à laquelle appartient l'oeuvre (roman, pièce de théatre, poeme, ...)
31        var $form_marclist;                     // catégorie à laquelle appartient l'oeuvre (roman, pièce de théatre, poeme, ...) (valeur issue de la liste music_form.xml)
32        var $date;                                      // date de création originelle de l'oeuvre (telle que saisie)
33        var $date_date;                         // date formatée yyyy-mm-dd
34        var $characteristic;            // caractéristique permettant de distinguer une oeuvre d'une autre peuvre portant le même titre
35        var $intended_termination;      // complétude d'une oeuvre est finie ou se poursuit indéfiniment
36        var $intended_audience;         // categorie de personnes à laquelle l'oeuvre s'adresse
37        var $context;                           // contexte historique, social, intellectuel, artistique ou autre au sein duquel l'oeuvre a été conçue
38        var $coordinates;                       // coordonnees d'une oeuvre géographique (degrés, minutes et secondes de longitude et latitude ou angles de déclinaison et d'ascension des limiets de la zone représentée)
39        var $equinox;                           // année de référence pour une carte ou un modèle céleste
40        var $subject;                           // contenu de l'oeuvre et sujets qu'elle aborde
41        var $place;                                     // pays ou juridiction territoriale dont l'oeuvre est originaire
42        var $history;                           // informations concernant l'histoire de l'oeuvre
43        var $num_author;                        // identifiant de l'auteur principal de l'oeuvre
44        var $display;                           // usable form for displaying ( _name_ (_date_) / _author_name_ _author_rejete_ )
45        var $tu_isbd;                           // affichage isbd du titre uniforme AFNOR Z 44-061 (1986)
46        var $responsabilites=array();// Auteurs répétables
47       
48        // ---------------------------------------------------------------
49        //              titre_uniforme($id) : constructeur
50        // ---------------------------------------------------------------
51        function titre_uniforme($id=0,$recursif=0) {
52                if($id) {
53                        // on cherche à atteindre une notice existante
54                        $this->recursif=$recursif;
55                        $this->id = $id;
56                        $this->getData();
57                } else {
58                        // la notice n'existe pas
59                        $this->id = 0;
60                        $this->getData();
61                }
62        }
63       
64        // ---------------------------------------------------------------
65        //              getData() : récupération infos titre_uniforme
66        // ---------------------------------------------------------------
67        function getData() {
68                global $dbh,$msg;
69                $this->name = '';                       
70                $this->tonalite = '';
71                $this->tonalite_marclist = '';
72                $this->comment ='';
73                $this->distrib=array();
74                $this->ref=array();
75                $this->subdiv=array();
76                $this->libelle="";
77                $this->import_denied=0;
78                $this->form = '';
79                $this->form_marclist = '';
80                $this->date ='';
81                $this->date_date ='';
82                $this->characteristic = '';
83                $this->intended_termination = '';
84                $this->intended_audience = '';
85                $this->context = '';
86                $this->coordinates = '';
87                $this->equinox = '';
88                $this->subject = '';
89                $this->place = '';
90                $this->history = '';
91                $this->num_author = '';
92                $this->display = '';
93                $this->responsabilites["responsabilites"]=array();
94                if($this->id) {
95                        $requete = "SELECT * FROM titres_uniformes WHERE tu_id=$this->id LIMIT 1 ";
96                        $result = @pmb_mysql_query($requete, $dbh);
97                        if(pmb_mysql_num_rows($result)) {
98                                $temp = pmb_mysql_fetch_object($result);                               
99                                $this->id       = $temp->tu_id;
100                                $this->name     = $temp->tu_name;
101                                $this->tonalite = $temp->tu_tonalite;
102                                $this->tonalite_marclist = $temp->tu_tonalite_marclist;
103                                $this->comment  = $temp->tu_comment     ;
104                                $this->import_denied = $temp->tu_import_denied;
105                                $this->form = $temp->tu_forme;
106                                $this->form_marclist = $temp->tu_forme_marclist;
107                                $this->date  = $temp->tu_date;
108                                $this->date_date  = $temp->tu_date_date;
109                                $this->characteristic = $temp->tu_caracteristique;
110                                $this->intended_termination = $temp->tu_completude;
111                                $this->intended_audience = $temp->tu_public;
112                                $this->context = $temp->tu_contexte;
113                                $this->coordinates = $temp->tu_coordonnees;
114                                $this->equinox = $temp->tu_equinoxe;
115                                $this->subject = $temp->tu_sujet;
116                                $this->place = $temp->tu_lieu;
117                                $this->history = $temp->tu_histoire;
118                                $this->num_author = $temp->tu_num_author;
119                               
120                                $libelle[]=$this->name;
121                               
122                                if($this->tonalite)$libelle[]=$this->tonalite;
123                                $requete = "SELECT * FROM tu_distrib WHERE distrib_num_tu='$this->id' order by distrib_ordre";
124                                $result = pmb_mysql_query($requete, $dbh);
125                                if(pmb_mysql_num_rows($result)) {
126                                        while(($param=pmb_mysql_fetch_object($result))) {
127                                                $this->distrib[]["label"]=$param->distrib_name;
128                                                $libelle[]=$param->distrib_name;
129                                        }       
130                                }                                       
131                                $requete = "SELECT *  FROM tu_ref WHERE ref_num_tu='$this->id' order by ref_ordre";
132                                $result = pmb_mysql_query($requete, $dbh);
133                                if(pmb_mysql_num_rows($result)) {
134                                        while(($param=pmb_mysql_fetch_object($result))) {
135                                                $this->ref[]["label"]=$param->ref_name;
136                                                $libelle[]=$param->ref_name;
137                                        }       
138                                }                       
139                                $requete = "SELECT *  FROM tu_subdiv WHERE subdiv_num_tu='$this->id' order by subdiv_ordre";
140                                $result = pmb_mysql_query($requete, $dbh);
141                                if(pmb_mysql_num_rows($result)) {
142                                        while(($param=pmb_mysql_fetch_object($result))) {
143                                                $this->subdiv[]["label"]=$param->subdiv_name;
144                                                $libelle[]=$param->subdiv_name;
145                                        }       
146                                }       
147                               
148                                $this->display = $this->name;
149                                if($this->date){
150                                        $this->display.=" (".$this->date.")";
151                                }/*
152                                if($this->num_author){
153                                        $tu_auteur = new auteur($this->num_author);
154                                        $libelle[] = $tu_auteur->display;
155                                        $this->display.=" / ".$tu_auteur->rejete." ".$tu_auteur->name;
156                                }*/
157                                $this->responsabilites = $this->get_authors($this->id) ;
158                               
159                                $as = array_keys ($this->responsabilites["responsabilites"], "0" ) ;
160                                if(count($as))$this->display.= ", ";
161                                for ($i = 0 ; $i < count($as) ; $i++) {
162                                        $indice = $as[$i] ;
163                                        $auteur_0 = $this->responsabilites["auteurs"][$indice] ;
164                                        $auteur = new auteur($auteur_0["id"]);
165                                       
166                                        if($i>0)$this->display.= " / "; // entre auteurs       
167                                       
168                                        $libelle[] = $auteur->display;
169                                        $this->display.= $auteur->rejete." ".$auteur->name;
170                                }
171                               
172                                $this->libelle=implode("; ",$libelle);
173                        } else {
174                                // pas trouvé avec cette clé
175                                $this->id = 0;                         
176                        }
177                }
178        }
179       
180        function get_authors($id=0) {
181                global $dbh;
182               
183                $responsabilites = array() ;
184                $auteurs = array() ;
185                $res["responsabilites"] = array() ;
186                $res["auteurs"] = array() ;
187               
188                $rqt = "select author_id, responsability_tu_fonction, responsability_tu_type ";
189                $rqt.= "from responsability_tu, authors where responsability_tu_num='$id' and responsability_tu_author_num=author_id order by responsability_tu_type, responsability_tu_ordre " ;
190       
191                $res_sql = pmb_mysql_query($rqt, $dbh);
192                while ($resp_tu=pmb_mysql_fetch_object($res_sql)) {
193                        $responsabilites[] = $resp_tu->responsability_tu_type ;
194                        $auteurs[] = array( 
195                                'id' => $resp_tu->author_id,
196                                'fonction' => $resp_tu->responsability_tu_fonction,
197                                'responsability' => $resp_tu->responsability_tu_type
198                        ) ;
199                }
200                $res["responsabilites"] = $responsabilites ;
201                $res["auteurs"] = $auteurs ;
202               
203                return $res;
204        }
205       
206        function gen_input_selection($label,$form_name,$item,$values,$what_sel,$class='saisie-80em' ) { 
207       
208                global $msg;
209                $select_prop = "scrollbars=yes, toolbar=no, dependent=yes, resizable=yes";
210                $link="'./select.php?what=$what_sel&caller=$form_name&p1=f_".$item."_code!!num!!&p2=f_".$item."!!num!!&deb_rech='+".pmb_escape()."(this.form.f_".$item."!!num!!.value), '$what_sel', 400, 400, -2, -2, '$select_prop'";
211                $size_item=strlen($item)+2;
212                $script_js="
213                <script>
214                function fonction_selecteur_".$item."() {
215                        var nom='f_".$item."';
216                name=this.getAttribute('id').substring(4); 
217                        name_id = name.substr(0,nom.length)+'_code'+name.substr(nom.length);
218                        openPopUp('./select.php?what=$what_sel&caller=$form_name&p1='+name_id+'&p2='+name, '$what_sel', 400, 400, -2, -2, '$select_prop');
219               
220            }
221            function fonction_raz_".$item."() {
222                name=this.getAttribute('id').substring(4);
223                        name_id = name.substr(0,$size_item)+'_code'+name.substr($size_item);
224                document.getElementById(name).value='';
225                        document.getElementById(name_id).value='';
226            }
227            function add_".$item."() {
228                template = document.getElementById('add".$item."');
229                ".$item."=document.createElement('div');
230                ".$item.".className='row';
231       
232                suffixe = eval('document.".$form_name.".max_".$item.".value')
233                nom_id = 'f_".$item."'+suffixe
234                f_".$item." = document.createElement('input');
235                f_".$item.".setAttribute('name',nom_id);
236                f_".$item.".setAttribute('id',nom_id);
237                f_".$item.".setAttribute('type','text');
238                f_".$item.".className='$class';
239                f_".$item.".setAttribute('value','');
240                        f_".$item.".setAttribute('completion','".$item."');
241               
242                        id = 'f_".$item."_code'+suffixe
243                        f_".$item."_code = document.createElement('input');
244                        f_".$item."_code.setAttribute('name',id);
245                f_".$item."_code.setAttribute('id',id);
246                f_".$item."_code.setAttribute('type','hidden');
247                        f_".$item."_code.setAttribute('value','');
248         
249                del_f_".$item." = document.createElement('input');
250                del_f_".$item.".setAttribute('id','del_f_".$item."'+suffixe);
251                del_f_".$item.".onclick=fonction_raz_".$item.";
252                del_f_".$item.".setAttribute('type','button');
253                del_f_".$item.".className='bouton';
254                del_f_".$item.".setAttribute('readonly','');
255                del_f_".$item.".setAttribute('value','".$msg["raz"]."');
256       
257                sel_f_".$item." = document.createElement('input');
258                sel_f_".$item.".setAttribute('id','sel_f_".$item."'+suffixe);
259                sel_f_".$item.".setAttribute('type','button');
260                sel_f_".$item.".className='bouton';
261                sel_f_".$item.".setAttribute('readonly','');
262                sel_f_".$item.".setAttribute('value','".$msg["parcourir"]."');
263                sel_f_".$item.".onclick=fonction_selecteur_".$item.";
264       
265                ".$item.".appendChild(f_".$item.");
266                        ".$item.".appendChild(f_".$item."_code);
267                space=document.createTextNode(' ');
268                ".$item.".appendChild(space);
269                ".$item.".appendChild(del_f_".$item.");
270                ".$item.".appendChild(space.cloneNode(false));
271                if('$what_sel')".$item.".appendChild(sel_f_".$item.");
272               
273                template.appendChild(".$item.");
274       
275                document.".$form_name.".max_".$item.".value=suffixe*1+1*1 ;
276                ajax_pack_element(f_".$item.");
277            }
278                </script>";
279               
280                //template de zone de texte pour chaque valeur                         
281                $aff="
282                <div class='row'>
283                <input type='text' class='$class' id='f_".$item."!!num!!' name='f_".$item."!!num!!' value=\"!!label_element!!\" autfield='f_".$item."_code!!num!!' completion=\"".$item."\" />
284                <input type='hidden' id='f_".$item."_code!!num!!' name='f_".$item."_code!!num!!' value='!!id_element!!'>
285                <input type='button' class='bouton' value='".$msg["raz"]."' onclick=\"this.form.f_".$item."!!num!!.value='';this.form.f_".$item."_code!!num!!.value=''; \" />
286                !!bouton_parcourir!!";
287                // 1 seul auteur pour 1 oeuvre
288                if($item=="author"){
289                        $aff.="</div>\n";
290                } else {
291                        $aff.="!!bouton_ajouter!!
292                                        </div>\n";
293                }               
294               
295                if($what_sel)$bouton_parcourir="<input type='button' class='bouton' value='".$msg["parcourir"]."' onclick=\"openPopUp(".$link.")\" />";
296                else $bouton_parcourir="";
297                $aff= str_replace('!!bouton_parcourir!!', $bouton_parcourir, $aff);     
298
299                $template=$script_js."<div id=add".$item."' class='row'>";
300                $template.="<div class='row'><label for='f_".$item."' class='etiquette'>".$label."</label></div>";
301                $num=0;
302                if(!$values[0]) $values[0] = array("id"=>"","label"=>"");
303                foreach($values as $value) {
304                       
305                        $label_element=$value["label"];
306                        $id_element=$value["id"];
307                       
308                        $temp= str_replace('!!id_element!!', $id_element, $aff);       
309                        $temp= str_replace('!!label_element!!', $label_element, $temp); 
310                        $temp= str_replace('!!num!!', $num, $temp);     
311                       
312                        if(!$num) $temp= str_replace('!!bouton_ajouter!!', " <input class='bouton' value='".$msg["req_bt_add_line"]."' onclick='add_".$item."();' type='button'>", $temp);     
313                        else $temp= str_replace('!!bouton_ajouter!!', "", $temp);       
314                        $template.=$temp;                       
315                        $num++;
316                }       
317                $template.="<input type='hidden' name='max_".$item."' value='$num'>";                   
318               
319                $template.="</div><div id='add".$item."'/>
320                </div>";
321                return $template;               
322        }       
323        // ---------------------------------------------------------------
324        //              show_form : affichage du formulaire de saisie
325        // ---------------------------------------------------------------
326        function show_form() {
327       
328                global $msg;
329                global $titre_uniforme_form;
330                global $charset;
331                global $user_input, $nbr_lignes, $page ;
332                global $pmb_type_audit;
333                global $thesaurus_concepts_active;
334                global $value_deflt_fonction;
335                global $tu_authors_tpl,$tu_authors_all_tpl;
336               
337                $fonction = new marc_list('function');
338               
339                $aut_key_list = new marc_select("music_key", "form_tonalite_selector", $this->tonalite_marclist,'', "0", " ");
340                $aut_form_list = new marc_select("music_form", "form_form_selector", $this->form_marclist, '', "0", " ");
341               
342               
343                if($this->id) {
344                        $action = "./autorites.php?categ=titres_uniformes&sub=update&id=$this->id";
345                        $libelle = $msg["aut_titre_uniforme_modifier"];
346                        $button_remplace = "<input type='button' class='bouton' value='$msg[158]' ";
347                        $button_remplace .= "onclick='unload_off();document.location=\"./autorites.php?categ=titres_uniformes&sub=replace&id=$this->id\"'>";
348                       
349                        $button_voir = "<input type='button' class='bouton' value='$msg[voir_notices_assoc]' ";
350                        $button_voir .= "onclick='unload_off();document.location=\"./catalog.php?categ=search&mode=9&etat=aut_search&aut_type=titre_uniforme&aut_id=$this->id\"'>";
351                       
352                        $button_delete = "<input type='button' class='bouton' value='$msg[63]' ";
353                        $button_delete .= "onClick=\"confirm_delete();\">";
354                       
355                } else {
356                        $action = './autorites.php?categ=titres_uniformes&sub=update&id=';
357                        $libelle = $msg["aut_titre_uniforme_ajouter"];
358                        $button_remplace = '';
359                        $button_delete ='';
360                }
361               
362                if($this->import_denied == 1){
363                        $import_denied_checked = "checked='checked'";
364                }else{
365                        $import_denied_checked = "";
366                }       
367               
368                // remplacement de tous les champs du formulaire par les données
369               
370                $as = array_keys ($this->responsabilites["responsabilites"], "0" ) ;
371                $max_aut0 = (count($as)) ;
372                if ($max_aut0==0) $max_aut0=1;
373                for ($i = 0 ; $i < $max_aut0 ; $i++) {
374                        $indice = $as[$i] ;
375                        $auteur_0 = $this->responsabilites["auteurs"][$indice] ;
376                        $auteur = new auteur($auteur_0["id"]);
377                        if ($value_deflt_fonction && $auteur_0["id"]==0 && $i==0) $auteur_0["fonction"] = $value_deflt_fonction;
378                       
379                        $ptab_aut_tu = str_replace('!!iaut!!', $i, $tu_authors_tpl) ;
380                               
381                        $ptab_aut_tu = str_replace('!!aut0_id!!',                       $auteur_0["id"], $ptab_aut_tu);
382                        $ptab_aut_tu = str_replace('!!aut0!!',                          htmlentities($auteur->isbd_entry,ENT_QUOTES, $charset), $ptab_aut_tu);
383                        $ptab_aut_tu = str_replace('!!f0_code!!',                       $auteur_0["fonction"], $ptab_aut_tu);
384                        $ptab_aut_tu = str_replace('!!f0!!',                            $fonction->table[$auteur_0["fonction"]], $ptab_aut_tu);
385                        $tu_auteurs .= $ptab_aut_tu ;
386                }
387                $tu_authors_all_tpl = str_replace('!!max_aut0!!', $max_aut0, $tu_authors_all_tpl);
388                $tu_authors_all_tpl = str_replace('!!authors_list!!', $tu_auteurs, $tu_authors_all_tpl);
389       
390       
391                $aut_link= new aut_link(AUT_TABLE_TITRES_UNIFORMES,$this->id);
392                $titre_uniforme_form = str_replace('<!-- aut_link -->', $aut_link->get_form('saisie_titre_uniforme') , $titre_uniforme_form);
393               
394                $aut_pperso= new aut_pperso("tu",$this->id);
395                $titre_uniforme_form = str_replace('!!aut_pperso!!',    $aut_pperso->get_form(), $titre_uniforme_form);
396               
397                $titre_uniforme_form = str_replace('!!id!!',                            $this->id,              $titre_uniforme_form);
398                $titre_uniforme_form = str_replace('!!action!!',                        $action,                $titre_uniforme_form);
399                $titre_uniforme_form = str_replace('!!libelle!!',                       $libelle,               $titre_uniforme_form);
400               
401                $titre_uniforme_form = str_replace('!!nom!!',                           htmlentities($this->name,ENT_QUOTES, $charset), $titre_uniforme_form);
402                $titre_uniforme_form = str_replace('!!authors!!',                       $tu_authors_all_tpl, $titre_uniforme_form);
403                $titre_uniforme_form = str_replace('!!aut_id!!',                        htmlentities($this->num_author,ENT_QUOTES, $charset), $titre_uniforme_form);
404                $titre_uniforme_form = str_replace('!!form!!',                          htmlentities($this->form,ENT_QUOTES, $charset), $titre_uniforme_form);
405                $titre_uniforme_form = str_replace('!!form_selector!!',         $aut_form_list->display,        $titre_uniforme_form);
406                $titre_uniforme_form = str_replace('!!date!!',                          htmlentities($this->date,ENT_QUOTES, $charset), $titre_uniforme_form);
407                $titre_uniforme_form = str_replace('!!subject!!',                       htmlentities($this->subject,ENT_QUOTES, $charset), $titre_uniforme_form);
408                $titre_uniforme_form = str_replace('!!place!!',                         htmlentities($this->place,ENT_QUOTES, $charset), $titre_uniforme_form);
409                $titre_uniforme_form = str_replace('!!history!!',                       htmlentities($this->history,ENT_QUOTES, $charset), $titre_uniforme_form);
410                $titre_uniforme_form = str_replace('!!intended_audience!!',     htmlentities($this->intended_audience,ENT_QUOTES, $charset), $titre_uniforme_form);
411                $titre_uniforme_form = str_replace('!!context!!',                       htmlentities($this->context,ENT_QUOTES, $charset), $titre_uniforme_form);
412                $titre_uniforme_form = str_replace('!!tonalite!!',                      htmlentities($this->tonalite,ENT_QUOTES, $charset),     $titre_uniforme_form);
413                $titre_uniforme_form = str_replace('!!tonalite_selector!!',     $aut_key_list->display, $titre_uniforme_form);
414                $titre_uniforme_form = str_replace('!!coordinates!!',           htmlentities($this->coordinates,ENT_QUOTES, $charset), $titre_uniforme_form);
415                $titre_uniforme_form = str_replace('!!equinox!!',                       htmlentities($this->equinox,ENT_QUOTES, $charset), $titre_uniforme_form);
416                $titre_uniforme_form = str_replace('!!characteristic!!',        htmlentities($this->characteristic,ENT_QUOTES, $charset), $titre_uniforme_form);
417                $titre_uniforme_form = str_replace('!!comment!!',                       htmlentities($this->comment,ENT_QUOTES, $charset),      $titre_uniforme_form);
418                // auteur
419                $tu_auteur_id = $this->num_author;             
420                if($tu_auteur_id){
421                        $tu_auteur = new auteur($tu_auteur_id);
422                }               
423                $titre_uniforme_form = str_replace('!!aut_name!!',htmlentities($tu_auteur->display,ENT_QUOTES, $charset), $titre_uniforme_form);
424                // complétude
425                $intended_termination_id = $this->intended_termination;
426                $select_0="";   $select_1=""; $select_2="";     
427                if($intended_termination_id == 1){
428                        $select_1 = "selected";
429                } elseif($intended_termination_id == 2){
430                        $select_2 = "selected";
431                } else {
432                        $select_0 = "selected";
433                }
434                $titre_uniforme_form = str_replace('!!intended_termination_0!!',        htmlentities($select_0,ENT_QUOTES, $charset), $titre_uniforme_form);
435                $titre_uniforme_form = str_replace('!!intended_termination_1!!',        htmlentities($select_1,ENT_QUOTES, $charset), $titre_uniforme_form);
436                $titre_uniforme_form = str_replace('!!intended_termination_2!!',        htmlentities($select_2,ENT_QUOTES, $charset), $titre_uniforme_form);           
437                // distribution
438                $distribution_form=$this->gen_input_selection($msg["aut_titre_uniforme_form_distribution"],"saisie_titre_uniforme","distrib",$this->distrib,"","saisie-80em");
439                $titre_uniforme_form = str_replace("<!--        Distribution instrumentale et vocale (pour la musique)  -->",$distribution_form, $titre_uniforme_form);
440                // reference
441                $ref_num_form=$this->gen_input_selection($msg["aut_titre_uniforme_form_ref_numerique"],"saisie_titre_uniforme","ref",$this->ref,"","saisie-80em");
442                $titre_uniforme_form = str_replace("<!--        Référence numérique (pour la musique)   -->",$ref_num_form, $titre_uniforme_form);
443                // subdivision
444                $sub_form=$this->gen_input_selection($msg["aut_titre_uniforme_form_subdivision_forme"],"saisie_titre_uniforme","subdiv",$this->subdiv,"","saisie-80em");
445                $titre_uniforme_form = str_replace('<!-- Subdivision de forme -->',     $sub_form, $titre_uniforme_form);
446               
447                $titre_uniforme_form = str_replace('!!remplace!!',                      $button_remplace,       $titre_uniforme_form);
448                $titre_uniforme_form = str_replace('!!voir_notices!!',          $button_voir,           $titre_uniforme_form);
449                $titre_uniforme_form = str_replace('!!delete!!',                        $button_delete,         $titre_uniforme_form);
450                       
451                $titre_uniforme_form = str_replace('!!user_input_url!!',        rawurlencode(stripslashes($user_input)),                                                        $titre_uniforme_form);
452                $titre_uniforme_form = str_replace('!!user_input!!',            htmlentities($user_input,ENT_QUOTES, $charset),                                         $titre_uniforme_form);
453                $titre_uniforme_form = str_replace('!!nbr_lignes!!',            $nbr_lignes,                                                                                                            $titre_uniforme_form);
454                $titre_uniforme_form = str_replace('!!page!!',                          $page,                                                                                                                          $titre_uniforme_form);
455                $titre_uniforme_form = str_replace('!!tu_import_denied!!',      $import_denied_checked,                                                                                         $titre_uniforme_form); 
456                if($thesaurus_concepts_active == 1 ){
457                        $index_concept = new index_concept($this->id, TYPE_TITRE_UNIFORME);
458                        $titre_uniforme_form = str_replace('!!concept_form!!',  $index_concept->get_form('saisie_titre_uniforme'),                      $titre_uniforme_form);
459                }else{
460                        $titre_uniforme_form = str_replace('!!concept_form!!',  "",                     $titre_uniforme_form);
461                }
462                if ($pmb_type_audit && $this->id)
463                                $bouton_audit= "&nbsp;<input class='bouton' type='button' onClick=\"openPopUp('./audit.php?type_obj=".AUDIT_TITRE_UNIFORME."&object_id=".$this->id."', 'audit_popup', 700, 500, -2, -2, 'scrollbars=yes, toolbar=no, dependent=yes, resizable=yes')\" title=\"".$msg['audit_button']."\" value=\"".$msg['audit_button']."\" />&nbsp;";
464               
465                $titre_uniforme_form = str_replace('!!audit_bt!!',                      $bouton_audit,                                                                                                          $titre_uniforme_form);
466               
467                print $titre_uniforme_form;
468        }
469       
470        // ---------------------------------------------------------------
471        //              replace_form : affichage du formulaire de remplacement
472        // ---------------------------------------------------------------
473        function replace_form() {
474                global $titre_uniforme_replace;
475                global $msg;
476                global $include_path;
477       
478                if(!$this->id || !$this->name) {
479                        require_once("$include_path/user_error.inc.php");
480                        error_message($msg[161], $msg[162], 1, './autorites.php?categ=titres_uniformes&sub=&id=');
481                        return false;
482                }       
483                $titre_uniforme_replace=str_replace('!!old_titre_uniforme_libelle!!', $this->display, $titre_uniforme_replace);
484                $titre_uniforme_replace=str_replace('!!id!!', $this->id, $titre_uniforme_replace);
485                print $titre_uniforme_replace;
486                return true;
487        }
488       
489       
490        // ---------------------------------------------------------------
491        //              delete() : suppression
492        // ---------------------------------------------------------------
493        function delete() {
494                global $dbh;
495                global $msg;
496               
497                if(!$this->id)  // impossible d'accéder à cette notice titre uniforme
498                        return $msg[403];
499       
500                // effacement dans les notices
501                // récupération du nombre de notices affectées
502                $requete = "SELECT count(1) FROM notices_titres_uniformes WHERE ntu_num_tu='$this->id' ";
503       
504                $res = pmb_mysql_query($requete, $dbh);
505                $nbr_lignes = pmb_mysql_result($res, 0, 0);
506                if($nbr_lignes) {
507                        // Ce titre uniforme est utilisé dans des notices, impossible de le supprimer
508                        return '<strong>'.$this->display."</strong><br />${msg['titre_uniforme_delete']}";
509                }
510               
511                // On regarde si l'autorité est utilisée dans des vedettes composées
512                $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->id, "titre_uniforme");
513                if (count($attached_vedettes)) {
514                        // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer
515                        return '<strong>'.$this->display."</strong><br />".$msg["vedette_dont_del_autority"];
516                }
517       
518                // effacement dans la table des titres_uniformes
519                $requete = "DELETE FROM titres_uniformes WHERE tu_id='$this->id' ";
520                pmb_mysql_query($requete, $dbh);
521                // delete les champs répétables
522                $requete = "DELETE FROM tu_distrib WHERE distrib_num_tu='$this->id' ";
523                pmb_mysql_query($requete, $dbh);
524                $requete = "DELETE FROM tu_ref WHERE ref_num_tu='$this->id' ";
525                pmb_mysql_query($requete, $dbh);
526                $requete = "DELETE FROM tu_subdiv WHERE subdiv_num_tu='$this->id' ";
527                pmb_mysql_query($requete, $dbh);
528               
529                //suppression dans la table de stockage des numéros d'autorités...
530                titre_uniforme::delete_autority_sources($this->id);
531               
532                // suppression des auteurs
533                $rqt_del = "delete from responsability_tu where responsability_tu_num='".$this->id."' ";
534                pmb_mysql_query($rqt_del);
535               
536                // liens entre autorités
537                $aut_link= new aut_link(AUT_TABLE_TITRES_UNIFORMES,$this->id);
538                $aut_link->delete();
539               
540                $aut_pperso= new aut_pperso("tu",$this->id);
541                $aut_pperso->delete();
542               
543                // nettoyage indexation concepts
544                $index_concept = new index_concept($this->id, TYPE_TITRE_UNIFORME);
545                $index_concept->delete();
546               
547                audit::delete_audit(AUDIT_TITRE_UNIFORME,$this->id);
548                return false;
549        }
550       
551        // ---------------------------------------------------------------
552        //              delete_autority_sources($idcol=0) : Suppression des informations d'import d'autorité
553        // ---------------------------------------------------------------
554        static function delete_autority_sources($idtu=0){
555                $tabl_id=array();
556                if(!$idtu){
557                        $requete="SELECT DISTINCT num_authority FROM authorities_sources LEFT JOIN titres_uniformes ON num_authority=tu_id  WHERE authority_type = 'uniform_title' AND tu_id IS NULL";
558                        $res=pmb_mysql_query($requete);
559                        if(pmb_mysql_num_rows($res)){
560                                while ($ligne = pmb_mysql_fetch_object($res)) {
561                                        $tabl_id[]=$ligne->num_authority;
562                                }
563                        }
564                }else{
565                        $tabl_id[]=$idtu;
566                }
567                foreach ( $tabl_id as $value ) {
568               //suppression dans la table de stockage des numéros d'autorités...
569                        $query = "select id_authority_source from authorities_sources where num_authority = ".$value." and authority_type = 'uniform_title'";
570                        $result = pmb_mysql_query($query);
571                        if(pmb_mysql_num_rows($result)){
572                                while ($ligne = pmb_mysql_fetch_object($result)) {
573                                        $query = "delete from notices_authorities_sources where num_authority_source = ".$ligne->id_authority_source;
574                                        pmb_mysql_query($query);
575                                }
576                        }
577                        $query = "delete from authorities_sources where num_authority = ".$value." and authority_type = 'uniform_title'";
578                        pmb_mysql_query($query);
579                }
580        }
581       
582        // ---------------------------------------------------------------
583        //              replace($by) : remplacement
584        // ---------------------------------------------------------------
585        function replace($by,$link_save) {
586       
587                global $msg;
588                global $dbh;
589                global $pmb_synchro_rdf;
590       
591                if (($this->id == $by) || (!$this->id))  {
592                        return $msg[223];
593                }
594               
595                $aut_link= new aut_link(AUT_TABLE_TITRES_UNIFORMES,$this->id);
596                // "Conserver les liens entre autorités" est demandé
597                if($link_save) {
598                        // liens entre autorités
599                        $aut_link->add_link_to(AUT_TABLE_TITRES_UNIFORMES,$by);         
600                }
601                $aut_link->delete();
602       
603                // remplacement dans les responsabilités
604                $requete = "UPDATE notices_titres_uniformes SET ntu_num_tu='$by' WHERE ntu_num_tu='$this->id' ";
605                @pmb_mysql_query($requete, $dbh);
606               
607                $requete = "UPDATE responsability_tu set responsability_tu_num ='$by' where responsability_tu_num='".$this->id."' ";
608                @pmb_mysql_query($requete);             
609                               
610                // effacement dans la table des titres_uniformes
611                $requete = "DELETE FROM titres_uniformes WHERE tu_id='$this->id' ";
612                pmb_mysql_query($requete, $dbh);
613                // delete les champs répétables
614                $requete = "DELETE FROM tu_distrib WHERE distrib_num_tu='$this->id' ";
615                pmb_mysql_query($requete, $dbh);
616                $requete = "DELETE FROM tu_ref WHERE ref_num_tu='$this->id' ";
617                pmb_mysql_query($requete, $dbh);
618                $requete = "DELETE FROM tu_subdiv WHERE subdiv_num_tu='$this->id' ";
619                pmb_mysql_query($requete, $dbh);
620               
621                //nettoyage d'autorities_sources
622                $query = "select * from authorities_sources where num_authority = ".$this->id." and authority_type = 'uniform_title'";
623                $result = pmb_mysql_query($query);
624                if(pmb_mysql_num_rows($result)){
625                        while($row = pmb_mysql_fetch_object($result)){
626                                if($row->authority_favorite == 1){
627                                        //on suprime les références si l'autorité a été importée...
628                                        $query = "delete from notices_authorities_sources where num_authority_source = ".$row->id_authority_source;
629                                        pmb_mysql_result($query);
630                                        $query = "delete from authorities_sources where id_authority_source = ".$row->id_authority_source;
631                                        pmb_mysql_result($query);
632                                }else{
633                                        //on fait suivre le reste
634                                        $query = "update authorities_sources set num_authority = ".$by." where num_authority_source = ".$row->id_authority_source;
635                                        pmb_mysql_query($query);
636                                }
637                        }
638                }
639               
640                audit::delete_audit(AUDIT_TITRE_UNIFORME,$this->id);
641                               
642                titre_uniforme::update_index($by);
643               
644                //mise à jour de l'oeuvre rdf
645                if($pmb_synchro_rdf){
646                        $synchro_rdf = new synchro_rdf();
647                        $synchro_rdf->replaceAuthority($this->id,$by,'oeuvre');
648                }
649               
650                return FALSE;
651        }
652       
653        // ---------------------------------------------------------------
654        //              update($value) : mise à jour
655        // ---------------------------------------------------------------
656        function update($value) {
657       
658                global $dbh;
659                global $msg;
660                global $include_path;
661                global $pmb_synchro_rdf;
662                global $thesaurus_concepts_active,$max_aut0;
663               
664                if(!$value['name'])     return false;
665       
666                // nettoyage des chaînes en entrée             
667                $value['name'] = clean_string($value['name']);
668                $value['num_author'] = clean_string($value['num_author']);
669                $value['form'] = clean_string($value['form']);
670                $value['form_selector'] = clean_string($value['form_selector']);
671                $value['date'] = clean_string($value['date']);
672                $value['subject'] = clean_string($value['subject']);
673                $value['place'] = clean_string($value['place']);
674                $value['history'] = clean_string($value['history']);
675                $value['characteristic'] = clean_string($value['characteristic']);
676                $value['intended_termination'] = clean_string($value['intended_termination']);
677                $value['intended_audience'] = clean_string($value['intended_audience']);
678                $value['context'] = clean_string($value['context']);
679                $value['equinox'] = clean_string($value['equinox']);
680                $value['coordinates'] = clean_string($value['coordinates']);
681                $value['tonalite'] = clean_string($value['tonalite']);
682                $value['tonalite_selector'] = clean_string($value['tonalite_selector']);
683                $value['comment'] = clean_string($value['comment']);
684               
685                               
686                $titre=titre_uniforme::import_tu_exist($value,1,$this->id);
687                if($titre){
688                        require_once("$include_path/user_error.inc.php");
689                        warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_doublon_erreur"]);
690                        return FALSE;
691                }
692                $tu_auteur = new auteur($value['num_author']);
693                if(!$tu_auteur->id){
694                        $value['num_author']=0;
695                } else {
696                        $value['num_author']=$tu_auteur->id;                   
697                }
698                               
699                $flag_index=0;
700                $requete  = "SET ";
701                $requete .= "tu_name='".$value["name"]."', ";
702                $requete .= "tu_num_author='".$value['num_author']."', ";
703                $requete .= "tu_forme='".$value["form"]."', ";
704                $requete .= "tu_forme_marclist='".$value["form_selector"]."', ";
705                $requete .= "tu_date='".$value["date"]."', ";
706                $requete .= "tu_sujet='".$value["subject"]."', ";
707                $requete .= "tu_lieu='".$value["place"]."', ";
708                $requete .= "tu_histoire='".$value["history"]."', ";
709                $requete .= "tu_caracteristique='".$value["characteristic"]."', ";
710                $requete .= "tu_completude='".$value["intended_termination"]."', ";
711                $requete .= "tu_public='".$value["intended_audience"]."', ";
712                $requete .= "tu_contexte='".$value["context"]."', ";
713                $requete .= "tu_equinoxe='".$value["equinox"]."', ";
714                $requete .= "tu_coordonnees='".$value["coordinates"]."', ";
715                $requete .= "tu_tonalite='".$value["tonalite"]."', ";           
716                $requete .= "tu_tonalite_marclist='".$value["tonalite_selector"]."', ";
717                $requete .= "tu_comment='".$value["comment"]."', ";
718                $requete .= "tu_import_denied='".$value["import_denied"]."'";
719
720                if($this->id) {
721                        // update
722                        $requete = 'UPDATE titres_uniformes '.$requete;
723                        $requete .= ' WHERE tu_id='.$this->id.' ;';
724                       
725                        if(pmb_mysql_query($requete, $dbh)) {
726                                $flag_index=1;
727                        } else {
728                                require_once("$include_path/user_error.inc.php"); 
729                                warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_modif_erreur"]);
730                                return FALSE;
731                        }       
732                       
733                        audit::insert_modif (AUDIT_TITRE_UNIFORME, $this->id) ;
734                } else {
735                        // creation
736                        $requete = 'INSERT INTO titres_uniformes '.$requete.' ';
737                        $result = pmb_mysql_query($requete,$dbh);
738                        if($result) {
739                                $this->id=pmb_mysql_insert_id();                               
740                        } else {
741                                require_once("$include_path/user_error.inc.php"); 
742                                warning($msg["aut_titre_uniforme_creation"], $msg["aut_titre_uniforme_creation_erreur"]);
743                                return FALSE;
744                        }
745                        audit::insert_creation(AUDIT_TITRE_UNIFORME, $this->id) ;
746                }
747               
748                // auteurs
749                for ($i=0; $i<$max_aut0; $i++) {
750                        eval("global \$f_aut0_id$i; \$var_autid=\$f_aut0_id$i;");
751                        eval("global \$f_f0_code$i; \$var_autfonc=\$f_f0_code$i;");
752                        $f_aut[] = array (
753                                        'id' => $var_autid,
754                                        'fonction' => $var_autfonc,
755                                        'type' => '0',
756                                        'ordre' => $i );
757                }
758                // traitement des auteurs
759                $rqt_del = "delete from responsability_tu where responsability_tu_num='".$this->id."' ";
760                $res_del = pmb_mysql_query($rqt_del);
761                $rqt_ins = "INSERT INTO responsability_tu (responsability_tu_author_num, responsability_tu_num, responsability_tu_fonction, responsability_tu_type, responsability_tu_ordre) VALUES ";         
762                $i=0;
763                while ($i<=count ($f_aut)-1) {
764                        $id_aut=$f_aut[$i]['id'];
765                        if ($id_aut) {
766                                $fonc_aut = $f_aut[$i]['fonction'];
767                                $type_aut = $f_aut[$i]['type'];
768                                $ordre_aut = $f_aut[$i]['ordre'];
769                                $rqt = $rqt_ins . " ('$id_aut','".$this->id."','$fonc_aut','$type_aut', $ordre_aut) " ;
770                                $res_ins = @pmb_mysql_query($rqt);
771                        }
772                        $i++;
773                }
774                $aut_link= new aut_link(AUT_TABLE_TITRES_UNIFORMES,$this->id);
775                $aut_link->save_form();
776               
777                $aut_pperso= new aut_pperso("tu",$this->id);
778                $aut_pperso->save_form();
779               
780                // Indexation concepts
781                if($thesaurus_concepts_active == 1 ){
782                        $index_concept = new index_concept($this->id, TYPE_TITRE_UNIFORME);
783                        $index_concept->save();
784                }
785               
786                // Mise à jour des vedettes composées contenant cette autorité
787                vedette_composee::update_vedettes_built_with_element($this->id, "titre_uniforme");
788               
789                // Gestion des champ répétables
790                $requete = "DELETE FROM tu_distrib WHERE distrib_num_tu='$this->id' ";
791                pmb_mysql_query($requete, $dbh);
792                $requete = "DELETE FROM tu_ref WHERE ref_num_tu='$this->id' ";
793                pmb_mysql_query($requete, $dbh);
794                $requete = "DELETE FROM tu_subdiv WHERE subdiv_num_tu='$this->id' ";
795                pmb_mysql_query($requete, $dbh);
796               
797                // Distribution instrumentale et vocale (pour la musique)
798                for($i=0;$i<count($value['distrib']);$i++) {
799                        $requete = "INSERT INTO tu_distrib SET
800                        distrib_num_tu='$this->id',
801                        distrib_name='".$value['distrib'][$i]."',
802                        distrib_ordre='$i' ";
803                        pmb_mysql_query($requete, $dbh);
804                }
805                // Référence numérique (pour la musique)
806                for($i=0;$i<count($value['ref']);$i++) {
807                $requete = "INSERT INTO tu_ref SET
808                ref_num_tu='$this->id',
809                ref_name='".$value['ref'][$i]."',
810                ref_ordre='$i' ";
811                                pmb_mysql_query($requete, $dbh);
812                }
813                // Subdivison de forme
814                for($i=0;$i<count($value['subdiv']);$i++) {
815                $requete = "INSERT INTO tu_subdiv SET
816                subdiv_num_tu='$this->id',
817                subdiv_name='".$value['subdiv'][$i]."',
818                subdiv_ordre='$i' ";
819                pmb_mysql_query($requete, $dbh);
820                }
821               
822                // mise à jour du champ index du titre uniforme
823                if($this->id)titre_uniforme::update_index_tu($this->id);
824               
825                // réindexation de la notice
826                if($flag_index)titre_uniforme::update_index($this->id); 
827
828                //Enrichissement
829                if ($this->id && $opac_enrichment_bnf_sparql) {
830                        titre_uniforme::tu_enrichment($this->id);
831                }
832               
833                //mise à jour de l'oeuvre rdf
834                if($flag_index && $pmb_synchro_rdf){
835                        $synchro_rdf = new synchro_rdf();
836                        $synchro_rdf->updateAuthority($this->id,'oeuvre');
837                }
838                return TRUE;
839        }
840               
841        // ---------------------------------------------------------------
842        //              import() : import d'un titre_uniforme
843        // ---------------------------------------------------------------
844        // fonction d'import de notice titre_uniforme
845        function import($value,$from_form=0) {
846                global $dbh;
847                // Si vide on sort
848                if(trim($value['name']) == '') return FALSE;
849                if(!$from_form) {
850                        $value['name'] = addslashes($value['name']);
851                        $value['num_author'] = addslashes($value['num_author']);
852                        $value['form'] = addslashes($value['form']);
853                        $value['date'] = addslashes($value['date']);
854                        $value['subject'] = addslashes($value['subject']);
855                        $value['place'] = addslashes($value['place']);
856                        $value['history'] = addslashes($value['history']);
857                        $value['characteristic'] = addslashes($value['characteristic']);
858                        $value['intended_termination'] = addslashes($value['intended_termination']);
859                        $value['intended_audience'] = addslashes($value['intended_audience']);
860                        $value['context'] = addslashes($value['context']);
861                        $value['equinox'] = addslashes($value['equinox']);
862                        $value['coordinates'] = addslashes($value['coordinates']);
863                        $value['tonalite'] = addslashes($value['tonalite']);
864                        $value['comment'] = addslashes($value['comment']);
865                        $value['databnf_uri'] = addslashes($value['databnf_uri']);
866                        for($i=0;$i<count($value['distrib']);$i++) {   
867                                $value['distrib'][$i]= addslashes($value['distrib'][$i]);               
868                        }
869                        for($i=0;$i<count($value['ref']);$i++) {       
870                                $value['ref'][$i]= addslashes($value['ref'][$i]);               
871                        }
872                        for($i=0;$i<count($value['subdiv']);$i++) {     
873                                $value['subdiv'][$i]= addslashes($value['subdiv'][$i]);         
874                        }
875                        for($i=0;$i<count($value['authors']);$i++) {
876                                // les champs auteurs sont addslashes dans import auteur
877                                $value['authors'][$i]['type']= addslashes($value['authors'][$i]['type']);                               
878                                $value['authors'][$i]['fonction']= addslashes($value['authors'][$i]['fonction']);
879                        }       
880                }               
881                               
882                $marc_key = new marc_list("music_key");
883                $marc_form = new marc_list("music_form");
884               
885                $flag_form = false;
886                $flag_key = false;
887                foreach ($marc_form->table as $value_form=>$libelle_form){
888                        if($value_form == $value['form']){
889                                $flag_form = true;
890                        }
891                }
892                foreach ($marc_key->table as $value_key=>$libelle_key){
893                        if($value_key == $value['tonalite']){
894                                $flag_key = true;
895                        }
896                }
897                                               
898                if(count($value['authors'])){
899                        for($i=0;$i<count($value['authors']);$i++) {
900                                if($value['authors'][$i]['id']){
901                                        $tu_auteur = new auteur($value['authors'][$i]['id']);
902                                        if(!$tu_auteur->id){
903                                                // id non valide
904                                                $value['authors'][$i]['id']=0;
905                                        }
906                                }
907                                if(!$value['authors'][$i]['id']){
908                                        // création ou déjà existant. auteur::import addslashes les champs
909                                        $value['authors'][$i]['id']=auteur::import($value['authors'][$i]); 
910                                }
911                        }
912                }       
913                               
914                // $value déjà addslashes plus haut -> 1
915                $titre=titre_uniforme::import_tu_exist($value,1);
916                if($titre){
917                        return $titre;
918                }
919                       
920                $requete  = "INSERT INTO titres_uniformes SET ";
921                $requete .= "tu_name='".$value["name"]."', ";
922                $requete .= "tu_num_author='".$value["num_author"]."', ";
923                $requete .= ((!$flag_form)?"tu_forme='":"tu_forme_marclist='").$value['form']."', ";
924                $requete .= "tu_date='".$value["date"]."', ";
925                $requete .= "tu_sujet='".$value["subject"]."', ";
926                $requete .= "tu_lieu='".$value["place"]."', ";
927                $requete .= "tu_histoire='".$value["history"]."', ";
928                $requete .= "tu_caracteristique='".$value["characteristic"]."', ";
929                $requete .= "tu_completude='".$value["intended_termination"]."', ";
930                $requete .= "tu_public='".$value["intended_audience"]."', ";
931                $requete .= "tu_contexte='".$value["context"]."', ";
932                $requete .= "tu_equinoxe='".$value["equinox"]."', ";
933                $requete .= "tu_coordonnees='".$value["coordinates"]."', ";
934                $requete .= ((!$flag_key)?"tu_tonalite='":"tu_tonalite_marclist='").$value['tonalite']."', ";           
935                $requete .= "tu_comment='".$value["comment"]."', ";
936                $requete .= "tu_databnf_uri='".$value["databnf_uri"]."'";
937               
938                // insertion du titre uniforme  et mise à jour de l'index tu
939                if(pmb_mysql_query($requete, $dbh)) {
940                        $tu_id=pmb_mysql_insert_id();                   
941                } else {
942                        return FALSE;
943                }               
944               
945                if(count($value['authors'])){                   
946                        $ordre=0;
947                        $rqt_ins = "INSERT INTO responsability_tu (responsability_tu_author_num, responsability_tu_num, responsability_tu_fonction, responsability_tu_type, responsability_tu_ordre) VALUES ";
948                        foreach($value['authors'] as $author){                         
949                                if($author['id']){                     
950                                        $rqt = $rqt_ins . " ('".$author['id']."','".$tu_id."','".$author['fonction']."','".$author['type']."', $ordre) " ;
951                                        $res_ins = @pmb_mysql_query($rqt);
952                                        $ordre++;                                               
953                                }               
954                        }                               
955                }
956               
957                // Distribution instrumentale et vocale (pour la musique)
958                for($i=0;$i<count($value['distrib']);$i++) {
959                        $requete = "INSERT INTO tu_distrib SET
960                        distrib_num_tu='$tu_id',
961                        distrib_name='".$value['distrib'][$i]."',
962                        distrib_ordre='$i' ";
963                        pmb_mysql_query($requete, $dbh);
964                }
965                // Référence numérique (pour la musique)
966                for($i=0;$i<count($value['ref']);$i++) {
967                        $requete = "INSERT INTO tu_ref SET
968                        ref_num_tu='$tu_id',
969                        ref_name='".$value['ref'][$i]."',
970                        ref_ordre='$i' ";
971                        pmb_mysql_query($requete, $dbh);
972                }
973                // Subdivision de forme
974                for($i=0;$i<count($value['subdiv']);$i++) {
975                        $requete = "INSERT INTO tu_subdiv SET
976                        subdiv_num_tu='$tu_id',
977                        subdiv_name='".$value['subdiv'][$i]."',
978                        subdiv_ordre='$i' ";
979                        pmb_mysql_query($requete, $dbh);
980                }
981               
982                audit::insert_creation(AUDIT_TITRE_UNIFORME, $tu_id) ;         
983               
984                // mise à jour du champ index du titre uniforme
985                if($tu_id) {
986                        titre_uniforme::update_index_tu($tu_id);
987                        titre_uniforme::tu_enrichment($tu_id);         
988                }
989               
990                return  $tu_id;         
991        }
992       
993        // ---------------------------------------------------------------
994        //              import_tu_exist() : Recherche si le titre uniforme existe déjà
995        // ---------------------------------------------------------------
996        function import_tu_exist($value,$from_form=0,$tu_id=0) {
997                global $dbh;
998                // Si vide on sort
999                if(trim($value['name']) == '') return FALSE;
1000               
1001                $marc_key = new marc_list("music_key");
1002                $marc_form = new marc_list("music_form");
1003
1004                if(!$from_form) {
1005                        $value['name'] = addslashes($value['name']);
1006                        $value['tonalite'] = addslashes($value['tonalite']);
1007                        $value['form'] = addslashes($value['form']);
1008                        $value['date'] = addslashes($value['date']);
1009                        $value['subject'] = addslashes($value['subject']);
1010                        $value['place'] = addslashes($value['place']);
1011                        $value['history'] = addslashes($value['history']);
1012                        $value['characteristic'] = addslashes($value['characteristic']);
1013                        $value['intended_termination'] = addslashes($value['intended_termination']);
1014                        $value['intended_audience'] = addslashes($value['intended_audience']);
1015                        $value['context'] = addslashes($value['context']);
1016                        $value['equinox'] = addslashes($value['equinox']);
1017                        $value['coordinates'] = addslashes($value['coordinates']);
1018                       
1019                        for($i=0;$i<count($value['distrib']);$i++) {   
1020                                $value['distrib'][$i]= addslashes($value['distrib'][$i]);               
1021                        }
1022                        for($i=0;$i<count($value['ref']);$i++) {       
1023                                $value['ref'][$i]= addslashes($value['ref'][$i]);               
1024                        }
1025                       
1026                        for($i=0;$i<count($value['authors']);$i++) {
1027                                $value['authors'][$i]['type']= addslashes($value['authors'][$i]['type']);
1028                                $value['authors'][$i]['fonction']= addslashes($value['authors'][$i]['fonction']);
1029                        }
1030                }       
1031                $flag_form = false;
1032                $flag_key = false;
1033                //Si une valeur est présente pour la forme, on vérifie si la valeur est existante dans la marclist, si oui, on set le champs marclist en base (flag)
1034                if($value['form']){
1035                        foreach ($marc_form->table as $key=>$form_value){
1036                                if($key == $value['form']){
1037                                        $flag_form = true;
1038                                }
1039                        }
1040                }
1041                //Si une valeur est présente pour la tonalité, on vérifie si la valeur est existante dans la marclist, si oui, on set le champs marclist en base (flag)
1042                if($value['tonalite']){
1043                        foreach ($marc_key->table as $key=>$tonalite_value){
1044                                if($key == $value['tonalite']){
1045                                        $flag_key = true;
1046                                }
1047                        }
1048                }
1049                $dummy = "SELECT * FROM titres_uniformes WHERE tu_name='".$value['name']."' ";
1050                $dummy.= ((!$flag_key)?"AND tu_tonalite='":"AND tu_tonalite_marclist='").$value['tonalite']."' ";
1051                $dummy.= ((!$flag_form)?"AND tu_forme='":"AND tu_forme_marclist='").$value['form']."' AND tu_date='".$value['date']."' AND tu_sujet='".$value['subject']."' AND tu_lieu='".$value['place']."' ";
1052                $dummy.= "AND tu_histoire='".$value['history']."' AND tu_caracteristique='".$value['characteristic']."' AND tu_completude='".$value['intended_termination']."' ";
1053                $dummy.= "AND tu_public='".$value['intended_audience']."' AND tu_contexte='".$value['context']."' AND tu_coordonnees='".$value['coordinates']."' ";
1054                $dummy.= "AND tu_equinoxe='".$value['equinox']."'";
1055                if($tu_id) $dummy = $dummy."and tu_id!='".$tu_id."'"; // Pour la création ou la mise à jour par l'interface
1056                $check = pmb_mysql_query($dummy, $dbh);
1057                if (pmb_mysql_error()=="" && pmb_mysql_num_rows($check)) {
1058                        while($row = pmb_mysql_fetch_object($check)){
1059                                $tu_id=$row->tu_id;
1060                                $different=false;
1061                               
1062                                //Test si les titres de même nom ont aussi la (ou les) même distribution
1063                                if(count($value['distrib']) == 0){ //Si le titre que je veux ajouter n'a pas de distribution je regarde si celui qui existe en a une
1064                                        $requete = "select distrib_num_tu from tu_distrib where 
1065                                        distrib_num_tu='$tu_id' ";
1066                                        $test = pmb_mysql_query($requete, $dbh);
1067                                        if (pmb_mysql_num_rows($test)) {
1068                                                $different = true; //S'il a une distribution, le titre que je veux ajouter est différent
1069                                        }
1070                                       
1071                                }else{
1072                                        //On teste s'il y a autant de distribution
1073                                        $requete = "select distrib_num_tu from tu_distrib where distrib_num_tu='$tu_id' ";
1074                                        $nb=pmb_mysql_num_rows(pmb_mysql_query($requete, $dbh));
1075                                        if($nb != count($value['distrib'])){ //Si il y en a pas autant c'est un titre différent
1076                                                $different = true;
1077                                        }else{ //Sinon on regarde si ce sont les mêmes
1078                                                $nb_occurence=array_count_values($value['distrib']);//avoir le nombre d'occurence de chaque terme
1079                                                for($i=0;$i<count($value['distrib']);$i++) {
1080                                                        $requete = "select count(distrib_num_tu) from tu_distrib where 
1081                                                        distrib_num_tu='$tu_id' and
1082                                                        distrib_name='".$value['distrib'][$i]."' group by distrib_num_tu "; 
1083                                                        $test = pmb_mysql_query($requete, $dbh);
1084                                                        $nb=@pmb_mysql_result($test,0,0);
1085                                                        if (!$nb) {
1086                                                                $different = true; //Si une des distributions n'existe pas c'est un titre uniforme différent
1087                                                        }elseif($nb != $nb_occurence[$value['distrib'][$i]]){
1088                                                                $different = true; //Si le nombre de cette distribution est différent c'est un titre uniforme différent
1089                                                        }
1090                                                }       
1091                                        }
1092                                }
1093                                //Test si les titres de même nom ont aussi la (ou les) même réference
1094                                if(count($value['ref']) == 0){ //Si le titre que je veux ajouter n'a pas de référence, je regarde si celui qui existe en a une
1095                                        $requete = "select ref_num_tu from tu_ref where 
1096                                        ref_num_tu='$tu_id' ";
1097                                        $test = pmb_mysql_query($requete, $dbh);
1098                                        if (pmb_mysql_num_rows($test)) {
1099                                                $different = true; //S'il a une réference, le titre que je veux ajouter est différent
1100                                        }
1101                                       
1102                                }else{
1103                                        //On teste s'il y a autant de réference
1104                                        $requete = "select ref_num_tu from tu_ref where ref_num_tu='$tu_id' ";
1105                                        $nb=pmb_mysql_num_rows(pmb_mysql_query($requete, $dbh));
1106                                        if($nb != count($value['ref'])){ //Si il y en a pas autant c'est un titre différent
1107                                                $different = true;
1108                                        }else{ //Sinon on regarde si ce sont les mêmes
1109                                                $nb_occurence=array_count_values($value['ref']);//avoir le nombre d'occurence de chaque terme
1110                                                for($i=0;$i<count($value['ref']);$i++) {
1111                                                        $requete = "select count(ref_num_tu) from tu_ref where 
1112                                                        ref_num_tu='$tu_id' and
1113                                                        ref_name='".$value['ref'][$i]."' group by ref_num_tu "; 
1114                                                        $test = pmb_mysql_query($requete, $dbh);
1115                                                        $nb=@pmb_mysql_result($test,0,0);
1116                                                        if (!$nb) {
1117                                                                $different = true; //Si une des réference n'existe pas c'est un titre uniforme différent
1118                                                        }elseif($nb != $nb_occurence[$value['ref'][$i]]){
1119                                                                $different = true; //Si le nombre de cette réference est différent c'est un titre uniforme différent
1120                                                        }
1121                                                }       
1122                                        }
1123                                }                               
1124                                // Auteurs                             
1125                                $rqt = "select author_id, responsability_tu_fonction, responsability_tu_type ";
1126                                $rqt.= "from responsability_tu, authors where responsability_tu_num='$tu_id' and responsability_tu_author_num=author_id order by responsability_tu_type, responsability_tu_ordre ";                     
1127                                $res_sql = pmb_mysql_query($rqt, $dbh);
1128                               
1129                                if(pmb_mysql_num_rows($res_sql) != count($value['authors'])) $different = true;                         
1130                                elseif(pmb_mysql_num_rows($res_sql)){
1131                                        $found=0;
1132                                        while ($resp_tu=pmb_mysql_fetch_object($res_sql)) {
1133                                                foreach($value['authors'] as $author){
1134                                                        if($author['id'] == $resp_tu->author_id && $author['fonction'] == $resp_tu->responsability_tu_fonction){
1135                                                                $found++;
1136                                                        }
1137                                                }                                               
1138                                        }
1139                                        if($found != count($value['authors'])) $different = true;       
1140                                }
1141                               
1142                                if($different == false){ //Si le titre n'est pas différent on retourne l'id du titre identique
1143                                        return $tu_id;
1144                                }       
1145                        }
1146                }               
1147                // Subdivision de forme
1148                for($i=0;$i<count($value['subdiv']);$i++) {             
1149                }       
1150                return 0;
1151        }       
1152        // ---------------------------------------------------------------
1153        //              search_form() : affichage du form de recherche
1154        // ---------------------------------------------------------------
1155        static function search_form() {
1156                global $user_query, $user_input;
1157                global $msg, $charset;
1158               
1159                $user_query = str_replace ('!!user_query_title!!', $msg[357]." : ".$msg["aut_menu_titre_uniforme"] , $user_query);
1160                $user_query = str_replace ('!!action!!', './autorites.php?categ=titres_uniformes&sub=reach&id=', $user_query);
1161                $user_query = str_replace ('!!add_auth_msg!!', $msg["aut_titre_uniforme_ajouter"] , $user_query);
1162                $user_query = str_replace ('!!add_auth_act!!', './autorites.php?categ=titres_uniformes&sub=titre_uniforme_form', $user_query);
1163                $user_query = str_replace ('<!-- lien_derniers -->', "<a href='./autorites.php?categ=titres_uniformes&sub=titre_uniforme_last'>".$msg["aut_titre_uniforme_derniers_crees"]."</a>", $user_query);
1164                $user_query = str_replace("!!user_input!!",htmlentities(stripslashes($user_input),ENT_QUOTES, $charset),$user_query);
1165                       
1166                print pmb_bidi($user_query) ;
1167        }
1168       
1169        //---------------------------------------------------------------
1170        // update_index($id) : maj des n-uplets la table notice_global_index en rapport avec ce titre uniforme
1171        //---------------------------------------------------------------
1172        static function update_index($id) {
1173                global $dbh;
1174                // On cherche tous les n-uplet de la table notice correspondant à ce titre_uniforme.
1175                $found = pmb_mysql_query("select ntu_num_notice from notices_titres_uniformes where ntu_num_tu = ".$id,$dbh);
1176                // Pour chaque n-uplet trouvés on met a jour la table notice_global_index avec l'auteur modifié :
1177                while(($mesNotices = pmb_mysql_fetch_object($found))) {
1178                        $notice_id = $mesNotices->ntu_num_notice;
1179                        notice::majNoticesGlobalIndex($notice_id);
1180                        notice::majNoticesMotsGlobalIndex($notice_id,'uniformtitle'); //TODO preciser le datatype avant d'appeler cette fonction
1181                }
1182        }
1183       
1184        //---------------------------------------------------------------
1185        // get_informations_from_unimarc : ressort les infos d'un titre uniforme depuis une notice unimarc
1186        //---------------------------------------------------------------
1187       
1188        static function get_informations_from_unimarc($fields,$zone){
1189                $data = array();
1190                if($zone == "2"){
1191                        $data['name'] = $fields[$zone.'30'][0]['a'][0];
1192                        $data['tonalite']= $fields[$zone.'30'][0]['u'][0];
1193                        $data['date']= $fields[$zone.'30'][0]['k'][0];
1194                        $data['distrib'] = array();
1195                        for($i=0 ; $i<count($fields[$zone.'30'][0]['r']) ; $i++){
1196                                $data['distrib'][] = $fields[$zone.'30'][0]['r'][$i];
1197                        }
1198                        $data['ref'] = array();
1199                        for($i=0 ; $i<count($fields[$zone.'30'][0]['s']) ; $i++){
1200                                $data['ref'][] = $fields[$zone.'30'][0]['s'][$i];
1201                        }
1202                        $data['subdiv'] = array();
1203                        for($i=0 ; $i<count($fields[$zone.'30'][0]['j']) ; $i++){
1204                                $data['subdiv'][] = $fields[$zone.'30'][0]['j'][$i];
1205                        }
1206                        $data['comment'] = "";
1207                        for($i=0 ; $i<count($fields['300']) ; $i++){
1208                                for($j=0; $j<count($fields['300'][$i]['a']) ; $j++){
1209                                        if($data['comment'] != "") $data['comment'].="\n";
1210                                        $data['comment'] .= $fields['300'][$i]['a'][$j];
1211                                }
1212                        }
1213                }else{
1214                        $data['name'] = $fields['a'][0];
1215                        $data['tonalite']= $fields['u'][0];
1216                        $data['date']= $fields['k'][0];
1217                        $data['distrib'] = array();
1218                        for($i=0 ; $i<count($fields['r']) ; $i++){
1219                                $data['distrib'][] = $fields['r'][$i];
1220                        }
1221                        $data['ref'] = array();
1222                        for($i=0 ; $i<count($fields['s']) ; $i++){
1223                                $data['ref'][] = $fields['s'][$i];
1224                        }       
1225                        $data['subdiv'] = array();
1226                        for($i=0 ; $i<count($fields['j']) ; $i++){
1227                                $data['subdiv'][] = $fields['j'][$i];
1228                        }       
1229                }
1230                $data['type_authority'] = "uniform_title";
1231                return $data;
1232        }
1233       
1234        // ---------------------------------------------------------------
1235        //              majIndexTu() : mise à jour du champ tu_index d'un titre uniforme
1236        // ---------------------------------------------------------------
1237        static function update_index_tu($tu_id){
1238                global $dbh;
1239                global $msg;
1240                global $include_path;           
1241               
1242                if($tu_id){
1243                       
1244                        $requete = "UPDATE titres_uniformes SET index_tu=";
1245                                               
1246                        $oeuvre = new titre_uniforme($tu_id);   
1247                       
1248                        $index.= $oeuvre->name." ".$oeuvre->tonalite." ".$oeuvre->subject." ".$oeuvre->place." ".$oeuvre->history." ";
1249                        $index.= $oeuvre->date." ".$oeuvre->context." ".$oeuvre->equinox." ".$oeuvre->coordinates." ";
1250                       
1251                        $as = array_keys ($oeuvre->responsabilites["responsabilites"], "0" ) ;
1252                        for ($i = 0 ; $i < count($as) ; $i++) {
1253                                $indice = $as[$i] ;
1254                                $auteur_0 = $oeuvre->responsabilites["auteurs"][$indice] ;
1255                                $auteur = new auteur($auteur_0["id"]);
1256                                $index.= $auteur->name." ".$auteur->rejete." ";;
1257                        }
1258                               
1259                       
1260                        $req = "SELECT distrib_name FROM tu_distrib WHERE distrib_num_tu='$tu_id' ";
1261                        $res = pmb_mysql_query($req, $dbh);
1262                        if($distrib=pmb_mysql_fetch_object($res)){
1263                                $index.= $distrib->distrib_name." ";
1264                        }
1265                        $req = "SELECT ref_name FROM tu_ref WHERE ref_num_tu='$tu_id' ";
1266                        $res = pmb_mysql_query($req, $dbh);
1267                        if($ref=pmb_mysql_fetch_object($res)){
1268                                $index.= $ref->ref_name." ";
1269                        }
1270                       
1271                        $requete .= "' ".addslashes(strip_empty_chars($index))." ' WHERE tu_id=".$tu_id;
1272                        $result = pmb_mysql_query($requete,$dbh);
1273                }
1274                return ;               
1275        }
1276       
1277        // ---------------------------------------------------------------
1278        //              do_isbd() : génération de l'isbd du titre uniforme (AFNOR Z 44-061 de 1986)
1279        // ---------------------------------------------------------------
1280        function do_isbd() {
1281                global $msg;
1282       
1283                $this->tu_isbd="";
1284                if(!$this->id) return;
1285               
1286                $as = array_keys ($this->responsabilites["responsabilites"], "0" ) ;
1287                for ($i = 0 ; $i < count($as) ; $i++) {
1288                        $indice = $as[$i] ;
1289                        $auteur_0 = $this->responsabilites["auteurs"][$indice] ;
1290                        $auteur = new auteur($auteur_0["id"]);
1291                        if($i>0)$this->tu_isbd.= " / ";
1292                        $this->tu_isbd.= $auteur->display.". ";                 
1293                }
1294                if($i)$this->tu_isbd.= ". ";
1295                /*
1296                if($this->num_author){
1297                        $tu_auteur = new auteur ($this->num_author);
1298                        $this->tu_isbd. = $tu_auteur->display.". ";
1299                }*/
1300               
1301                if($this->name){
1302                        $this->tu_isbd.= $this->name;
1303                }
1304                               
1305                return $this->tu_isbd;
1306        }
1307       
1308        static function get_data_bnf_uri($isbn) {
1309                global $dbh,$charset;
1310               
1311                $isbn13=formatISBN($isbn,13);
1312                $isbn10=formatISBN($isbn,10);
1313               
1314                //Récupération de l'URI data.bnf.fr à partir d'un isbn
1315                // definition des endpoints databnf et dbpedia
1316                $configbnf = array(
1317                                'remote_store_endpoint' => 'http://data.bnf.fr/sparql'
1318                );
1319                $storebnf = ARC2::getRemoteStore($configbnf);
1320       
1321                $sparql = "
1322                PREFIX bnf-onto: <http://data.bnf.fr/ontology/bnf-onto/>
1323                prefix rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
1324               
1325                SELECT ?oeuvre WHERE {
1326                        ?manifestation bnf-onto:isbn \"".$isbn13."\".
1327                        ?manifestation rdarelationships:workManifested ?oeuvre.
1328                }";
1329                $ret=false;
1330                $rows = $storebnf->query($sparql, 'rows');
1331                // On vérifie qu'il n'y a pas d'erreur sinon on stoppe le programme et on renvoi une chaine vide
1332                $err = $storebnf->getErrors();
1333                if (!$err) {
1334                        print $rows[0]['oeuvre'];
1335                        if (!$rows[0]['oeuvre']) {
1336                                $sparql = "
1337                                        PREFIX bnf-onto: <http://data.bnf.fr/ontology/bnf-onto/>
1338                                        prefix rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
1339                                                       
1340                                        SELECT ?oeuvre WHERE {
1341                                                ?manifestation bnf-onto:isbn \"".$isbn10."\".
1342                                                ?manifestation rdarelationships:workManifested ?oeuvre.
1343                                        }";
1344                                $rows = $storebnf->query($sparql, 'rows');
1345                                $err = $storebnf->getErrors();
1346                                if (!$err) {
1347                                        if ($rows[0]['oeuvre']) {
1348                                                $ret=$rows[0]['oeuvre'];
1349                                        }
1350                                }
1351                        } else $ret=$rows[0]['oeuvre'];
1352                }
1353                return $ret;
1354        }
1355       
1356        static function get_manifestation_list($uri) {
1357                $isbns=array();
1358                $configbnf = array(
1359                                'remote_store_endpoint' => 'http://data.bnf.fr/sparql'
1360                );
1361                $storebnf = ARC2::getRemoteStore($configbnf);
1362               
1363                $sparql = "
1364                PREFIX bnf-onto: <http://data.bnf.fr/ontology/bnf-onto/>
1365                prefix rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
1366               
1367                SELECT ?isbn WHERE {
1368                        ?manifestation bnf-onto:isbn ?isbn.
1369                        ?manifestation rdarelationships:workManifested <$uri>.
1370                }";
1371                       
1372                $ret=false;
1373                $rows = $storebnf->query($sparql, 'rows');
1374                // On vérifie qu'il n'y a pas d'erreur sinon on stoppe le programme et on renvoi une chaine vide
1375                $err = $storebnf->getErrors();
1376                if (!$err) {
1377                        for($i=0;$i<count($rows); $i++) {
1378                                $isbns[]=formatISBN($rows[$i]['isbn'],13);
1379                                $isbns[]=formatISBN($rows[$i]['isbn'],10);
1380                        }
1381                }
1382                return $isbns;
1383        }
1384       
1385        static function delete_enrichment($id) {
1386                // to Do
1387        }
1388       
1389        static function tu_enrichment($id) {
1390                global $dbh;
1391                $requete="select tu_databnf_uri from titres_uniformes where tu_id=$id";
1392                $resultat=pmb_mysql_query($requete,$dbh);
1393                if ($resultat && pmb_mysql_num_rows($resultat,$dbh)) {
1394                        $uri=pmb_mysql_result($resultat,0,0,$dbh);
1395                } else $uri="";
1396               
1397                if ($uri) {
1398                        $configbnf = array(
1399                                        'remote_store_endpoint' => 'http://data.bnf.fr/sparql'
1400                        );
1401                        $storebnf = ARC2::getRemoteStore($configbnf);
1402                       
1403                        $sparql= "
1404                        PREFIX dc: <http://purl.org/dc/terms/>
1405                        PREFIX rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
1406                                                                                                       
1407                        SELECT min(?gallica) as ?gallica2 ?title ?date ?editeur WHERE {
1408                          ?manifestation rdarelationships:workManifested <".$uri.">.
1409                          ?manifestation rdarelationships:electronicReproduction ?gallica.
1410                          ?manifestation dc:title ?title.
1411                          OPTIONAL { ?manifestation dc:date ?date.}
1412                          OPTIONAL { ?manifestation dc:publisher ?editeur.}
1413                        } group by ?title ?date ?editeur";
1414                        $ret=false;
1415                        $rows = $storebnf->query($sparql, 'rows');
1416                        // On vérifie qu'il n'y a pas d'erreur sinon on stoppe le programme et on renvoi une chaine vide
1417                        $err = $storebnf->getErrors();
1418                        $tr=array();
1419                        if (!$err) {
1420                                foreach($rows as $row) {
1421                                        $t=array();
1422                                        $t["uri_gallica"]=$row["gallica2"];
1423                                        $t["titre"]=$row["title"];
1424                                        $t["date"]=$row["date"];
1425                                        $t["editeur"]=$row["editeur"];
1426                                        $t["uri_gallica"]=$row["gallica2"];
1427                                        $tr[]=$t;
1428                                } 
1429                        }
1430                        $tr=encoding_normalize::charset_normalize($tr,"utf-8");
1431                        //Stockage du tableau
1432                        $requete="update titres_uniformes set tu_enrichment='".addslashes(serialize($tr))."', tu_enrichment_last_update=now() where tu_id=$id";
1433                        pmb_mysql_query($requete,$dbh);
1434                }
1435        }
1436} // class titre uniforme
1437
1438
Note: See TracBrowser for help on using the repository browser.