source: pmb4.2/trunk/fuentes/pmb/classes/editor.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: 21.9 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: editor.class.php,v 1.54 2015-06-05 13:04:00 dgoron Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9// definition de la classe de gestion des 'editeurs'
10if ( ! defined( 'PUBLISHER_CLASS' ) ) {
11  define( 'PUBLISHER_CLASS', 1 );
12
13require_once($class_path."/notice.class.php");
14require_once("$class_path/aut_link.class.php");
15require_once("$class_path/aut_pperso.class.php");
16require_once("$class_path/audit.class.php");
17require_once($class_path."/synchro_rdf.class.php");
18require_once($class_path."/index_concept.class.php");
19require_once($class_path."/vedette/vedette_composee.class.php");
20
21class editeur {
22
23        // ---------------------------------------------------------------
24        //              proprietes de la classe
25        // ---------------------------------------------------------------
26
27        var $id;                        // MySQL id in table 'publishers'
28        var     $name;                  // publisher name
29        var     $adr1;                  // adress line 1
30        var     $adr2;                  // adress line 2
31        var     $cp;                    // zip code
32        var     $ville;                 // city
33        var     $pays;                  // country
34        var     $web;                   // url of web site
35        var     $link;                  // url of web site (clickable)
36        var     $display;               // usable form for displaying ( _name_ (_ville_) or just _name_ )
37        var     $isbd_entry;            // isbd like version ( _ville_ (_country ?_) : _name_ )
38        var $isbd_entry_lien_gestion ; // lien sur le nom vers la gestion
39        var $ed_comment ; // Commentaire, peut contenir du HTML
40
41        // ---------------------------------------------------------------
42        //              editeur($id) : constructeur
43        // ---------------------------------------------------------------
44        function editeur($id=0) {
45                if($id) {
46                        // on cherche a atteindre une notice existante
47                        $this->id = $id;
48                        $this->getData();
49                } else {
50                        // la notice n'existe pas
51                        $this->id = 0;
52                        $this->getData();
53                }
54        }
55
56        // ---------------------------------------------------------------
57        //              getData() : recuperation infos editeurs
58        // ---------------------------------------------------------------
59        function getData() {
60                global $dbh;
61                if(!$this->id) {
62                        // pas d'identifiant. on retourne un tableau vide
63                        $this->id                       =       0;
64                        $this->name                     =       '';
65                        $this->adr1                     =       '';
66                        $this->adr2                     =       '';
67                        $this->cp                       =       '';
68                        $this->ville                    =       '';
69                        $this->pays                     =       '';
70                        $this->web                      =       '';
71                        $this->link                     =       '';
72                        $this->display                  =       '';
73                        $this->isbd_entry               =       '';
74                        $this->ed_comment       = '';
75                } else {
76                        $requete = "SELECT * FROM publishers WHERE ed_id=$this->id LIMIT 1 ";
77                        $result = @pmb_mysql_query($requete, $dbh);
78                        if(pmb_mysql_num_rows($result)) {
79                                $temp = pmb_mysql_fetch_object($result);
80                                pmb_mysql_free_result($result);
81                                $this->id               = $temp->ed_id;
82                                $this->name             = $temp->ed_name;
83                                $this->adr1             = $temp->ed_adr1;
84                                $this->adr2             = $temp->ed_adr2;
85                                $this->cp               = $temp->ed_cp;
86                                $this->ville    = $temp->ed_ville;
87                                $this->pays             = $temp->ed_pays;
88                                $this->web              = $temp->ed_web;
89                                $this->ed_comment= $temp->ed_comment    ;
90                                if($temp->ed_web) {
91                                        $this->link = "<a href='$temp->ed_web' target='_new'>$temp->ed_web</a>";
92                                } else {
93                                        $this->link = '';
94                                }
95                                // Determine le lieu de publication
96                                $l = '';
97                                if ($this->adr1)  $l = $this->adr1;
98                                if ($this->adr2)  $l = ($l=='') ? $this->adr2 : $l.', '.$this->adr2;
99                                if ($this->cp)    $l = ($l=='') ? $this->cp   : $l.', '.$this->cp;
100                                if ($this->pays)  $l = ($l=='') ? $this->pays : $l.', '.$this->pays;
101                                if ($this->ville) $l = ($l=='') ? $this->ville : $this->ville.' ('.$l.')';
102                                if ($l=='')       $l = '[S.l.]';
103                                       
104                                // Determine le nom de l'editeur
105                                if ($this->name) $n = $this->name; else $n = '[S.n.]';
106                                       
107                                // Constitue l'ISBD pour le coupe lieu/editeur
108                                if ($l == '[S.l.]' AND $n == '[S.n.]') $this->isbd_entry = '[S.l.&nbsp;: s.n.]';
109                                else $this->isbd_entry = $l.'&nbsp;: '.$n;
110                                       
111                                if ($this->ville) {
112                                        if ($this->pays) $this->display = "$this->ville [$this->pays] : $this->name";
113                                        else $this->display = "$this->ville : $this->name";
114                                } else {
115                                        if ($this->pays) $this->display = "[$this->pays] : $this->name";
116                                        else $this->display = $this->name;
117                                }
118                                // Ajoute un lien sur la fiche editeur si l'utilisateur a acces aux autorites
119                                if (SESSrights & AUTORITES_AUTH) $this->isbd_entry_lien_gestion = "<a href='./autorites.php?categ=editeurs&sub=editeur_form&id=".$this->id."' class='lien_gestion'>".$this->display."</a>";
120                                else $this->isbd_entry_lien_gestion = $this->display; 
121                                       
122                        } else {
123                                // pas d'editeur avec cette cle
124                                $this->id                       =       0;
125                                $this->name                     =       '';
126                                $this->adr1                     =       '';
127                                $this->adr2                     =       '';
128                                $this->cp                       =       '';
129                                $this->ville            =       '';
130                                $this->pays                     =       '';
131                                $this->web                      =       '';
132                                $this->link                     =       '';
133                                $this->display          =       '';
134                                $this->isbd_entry       =       '';
135                                $this->ed_comment       =       '';
136                        }
137                }
138        }
139
140        // ---------------------------------------------------------------
141        //              show_form : affichage du formulaire de saisie
142        // ---------------------------------------------------------------
143        function show_form() {
144       
145                global $msg;
146                global $publisher_form;
147                global $charset;
148                global $pmb_type_audit;
149                global $thesaurus_concepts_active;
150       
151                if($this->id) {
152                        $action = "./autorites.php?categ=editeurs&sub=update&id=$this->id";
153                        $libelle = $msg[148];
154                        $button_remplace = "<input type='button' class='bouton' value='$msg[158]' ";
155                        $button_remplace .= "onclick='unload_off();document.location=\"./autorites.php?categ=editeurs&sub=replace&id=$this->id\"'>";
156       
157                        $button_voir = "<input type='button' class='bouton' value='$msg[voir_notices_assoc]' ";
158                        $button_voir .= "onclick='unload_off();document.location=\"./catalog.php?categ=search&mode=2&etat=aut_search&aut_type=publisher&aut_id=$this->id\"'>";
159       
160                        $button_delete = "<input type='button' class='bouton' value='$msg[63]' ";
161                        $button_delete .= "onClick=\"confirm_delete();\">";
162                } else {
163                        $action = './autorites.php?categ=editeurs&sub=update&id=';
164                        $libelle = $msg[145];
165                        $button_remplace = '';
166                        $button_delete ='';
167                }
168                $aut_link= new aut_link(AUT_TABLE_PUBLISHERS,$this->id);
169                $publisher_form = str_replace('<!-- aut_link -->', $aut_link->get_form('saisie_editeur') , $publisher_form);
170               
171                $aut_pperso= new aut_pperso("publisher",$this->id);
172                $publisher_form = str_replace('!!aut_pperso!!', $aut_pperso->get_form(), $publisher_form);
173               
174                $publisher_form = str_replace('!!libelle!!', $libelle, $publisher_form);
175                $publisher_form = str_replace('!!action!!', $action, $publisher_form);
176                $publisher_form = str_replace('!!id!!', $this->id, $publisher_form);
177                $publisher_form = str_replace('!!ed_nom!!', htmlentities($this->name,ENT_QUOTES, $charset), $publisher_form);
178                $publisher_form = str_replace('!!ed_adr1!!', htmlentities($this->adr1,ENT_QUOTES, $charset), $publisher_form);
179                $publisher_form = str_replace('!!ed_adr2!!', htmlentities($this->adr2,ENT_QUOTES, $charset), $publisher_form);
180                $publisher_form = str_replace('!!ed_cp!!', htmlentities($this->cp,ENT_QUOTES, $charset), $publisher_form);
181                $publisher_form = str_replace('!!ed_ville!!', htmlentities($this->ville,ENT_QUOTES, $charset), $publisher_form);
182                $publisher_form = str_replace('!!ed_pays!!', htmlentities($this->pays,ENT_QUOTES, $charset), $publisher_form);
183                $publisher_form = str_replace('!!ed_web!!', htmlentities($this->web,ENT_QUOTES, $charset), $publisher_form);
184                $publisher_form = str_replace('!!remplace!!', $button_remplace,  $publisher_form);
185                $publisher_form = str_replace('!!voir_notices!!', $button_voir, $publisher_form );
186                $publisher_form = str_replace('!!delete!!', $button_delete, $publisher_form);
187                // pour retour a la bonne page en gestion d'autorites
188                // &user_input=".rawurlencode(stripslashes($user_input))."&nbr_lignes=$nbr_lignes&page=$page
189                global $user_input, $nbr_lignes, $page ;
190                $publisher_form = str_replace('!!user_input_url!!',             rawurlencode(stripslashes($user_input)),                        $publisher_form);
191                $publisher_form = str_replace('!!user_input!!',                 htmlentities($user_input,ENT_QUOTES, $charset),         $publisher_form);
192                $publisher_form = str_replace('!!nbr_lignes!!',                 $nbr_lignes,                                                                            $publisher_form);
193                $publisher_form = str_replace('!!page!!',                               $page,                                                                                          $publisher_form);
194                $publisher_form = str_replace('!!ed_comment!!',                 $this->ed_comment,                                                                      $publisher_form);
195                if($thesaurus_concepts_active == 1){
196                        $index_concept = new index_concept($this->id, TYPE_PUBLISHER);
197                        $publisher_form = str_replace('!!concept_form!!',               $index_concept->get_form('saisie_editeur'),             $publisher_form);
198                }else{
199                        $publisher_form = str_replace('!!concept_form!!',               "",                     $publisher_form);
200                }
201                if ($pmb_type_audit && $this->id)
202                        $bouton_audit= "&nbsp;<input class='bouton' type='button' onClick=\"openPopUp('./audit.php?type_obj=".AUDIT_PUBLISHER."&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;";       
203                $publisher_form = str_replace('!!audit_bt!!',$bouton_audit,     $publisher_form);
204               
205                print $publisher_form;
206        }
207
208        // ---------------------------------------------------------------
209        //              replace_form : affichage du formulaire de remplacement
210        // ---------------------------------------------------------------
211        function replace_form() {
212                global $publisher_replace;
213                global $msg;
214                global $include_path;
215               
216                if(!$this->id || !$this->name) {
217                        require_once("$include_path/user_error.inc.php");
218                        error_message($msg[161], $msg[162], 1, './autorites.php?categ=editeurs&sub=&id=');
219                        return false;
220                }
221       
222                $publisher_replace=str_replace('!!id!!', $this->id, $publisher_replace);
223                $publisher_replace=str_replace('!!ed_name!!', $this->name, $publisher_replace);
224                print $publisher_replace;
225        }
226
227        // ---------------------------------------------------------------
228        //              delete() : suppression de l'editeur
229        // ---------------------------------------------------------------
230        function delete() {
231                global $dbh;
232                global $msg;
233               
234                if(!$this->id)
235                        // impossible d'acceder a cette notice auteur
236                        return $msg[403]; 
237       
238                // effacement dans les notices
239                // recuperation du nombre de notices affectees
240                $requete = "SELECT COUNT(1) FROM notices WHERE ";
241                $requete .= "ed1_id=$this->id OR ";
242                $requete .= "ed2_id=$this->id";
243                $res = pmb_mysql_query($requete, $dbh);
244                $nbr_lignes = pmb_mysql_result($res, 0, 0);
245                if(!$nbr_lignes) {
246                        // on regarde si l'editeur a des collections enfants
247                        $requete = "SELECT COUNT(1) FROM collections WHERE ";
248                        $requete .= "collection_parent=".$this->id;
249                        $res = pmb_mysql_query($requete, $dbh);
250                        $nbr_lignes = pmb_mysql_result($res, 0, 0);
251                        if(!$nbr_lignes) {
252                               
253                                // On regarde si l'autorité est utilisée dans des vedettes composées
254                                $attached_vedettes = vedette_composee::get_vedettes_built_with_element($this->id, "publisher");
255                                if (count($attached_vedettes)) {
256                                        // Cette autorité est utilisée dans des vedettes composées, impossible de la supprimer
257                                        return '<strong>'.$this->name."</strong><br />".$msg["vedette_dont_del_autority"];
258                                }
259                               
260                                // effacement dans la table des editeurs
261                                $requete = "DELETE FROM publishers WHERE ed_id=".$this->id;
262                                $result = pmb_mysql_query($requete, $dbh);
263                                // liens entre autorités
264                                $aut_link= new aut_link(AUT_TABLE_PUBLISHERS,$this->id);
265                                $aut_link->delete();
266                               
267                                $aut_pperso= new aut_pperso("publisher",$this->id);
268                                $aut_pperso->delete();
269                               
270                                // nettoyage indexation concepts
271                                $index_concept = new index_concept($this->id, TYPE_PUBLISHER);
272                                $index_concept->delete();
273                               
274                                audit::delete_audit(AUDIT_PUBLISHER,$this->id);
275                                return false;
276                        } else {
277                                // Cet editeur a des collections, impossible de le supprimer
278                                return '<strong>'.$this->name."</strong><br />${msg[405]}";
279                        }
280                } else {
281                        // Cet editeur est utilise dans des notices, impossible de le supprimer
282                        return '<strong>'.$this->name."</strong><br />${msg[404]}";
283                }
284        }
285
286        // ---------------------------------------------------------------
287        //              replace($by) : remplacement de l'editeur
288        // ---------------------------------------------------------------
289        function replace($by,$link_save=0) {
290       
291                global $msg;
292                global $dbh;
293                global $pmb_synchro_rdf;
294       
295                if((!$by)||(!$this->id)) {
296                        // pas de valeur de remplacement !!!
297                        return "L'identifiant editeur est vide ou l'editeur de remplacement est meme que celui d'origine !";
298                }
299       
300                if($this->id == $by) {
301                        // impossible de remplacer un editeur par lui-meme
302                        return $msg[228];
303                }
304                       
305                $aut_link= new aut_link(AUT_TABLE_PUBLISHERS,$this->id);
306                // "Conserver les liens entre autorités" est demandé
307                if($link_save) {
308                        // liens entre autorités
309                        $aut_link->add_link_to(AUT_TABLE_PUBLISHERS,$by);               
310                }       
311                $aut_link->delete();
312               
313                // a) remplacement dans les notices
314                $requete = "UPDATE notices SET ed1_id=$by WHERE ed1_id=".$this->id;
315                $res = pmb_mysql_query($requete, $dbh);
316                $requete = "UPDATE notices SET ed2_id=$by WHERE ed2_id=".$this->id;
317                $res = pmb_mysql_query($requete, $dbh);
318       
319                // b) remplacement dans la table des collections
320                $requete = "UPDATE collections SET collection_parent=$by WHERE collection_parent=".$this->id;
321                $res = pmb_mysql_query($requete, $dbh);
322       
323                // c) suppression de l'editeur a remplacer
324                $requete = "DELETE FROM publishers WHERE ed_id=".$this->id;
325                $res = pmb_mysql_query($requete, $dbh);
326               
327                audit::delete_audit (AUDIT_PUBLISHER, $this->id) ;
328       
329                editeur::update_index($by);
330               
331                //mise à jour de l'oeuvre rdf
332                if($pmb_synchro_rdf){
333                        $synchro_rdf = new synchro_rdf();
334                        $synchro_rdf->replaceAuthority($this->id,$by,'editeur');
335                }
336               
337                return FALSE;
338        }
339
340        // ---------------------------------------------------------------
341        //              update($value) : mise a jour de l'editeur
342        // ---------------------------------------------------------------
343        function update($value) {
344       
345                global $dbh;
346                global $msg;
347                global $include_path;
348                global $pmb_synchro_rdf;
349                global $thesaurus_concepts_active;
350               
351                if(!$value['name'])
352                        return false;
353       
354                // nettoyage des valeurs en entree
355                $value[name] = clean_string($value[name]); 
356                $value[adr1] = clean_string($value[adr1]);
357                $value[adr2] = clean_string($value[adr2]);
358                $value[cp]   = clean_string($value[cp]);
359                $value[ville] = clean_string($value[ville]);
360                $value[pays]  = clean_string($value[pays]);
361                $value[web]   = clean_string($value[web]);
362                                                               
363                // construction de la requete
364                $requete = "SET ed_name='$value[name]', ";
365                $requete .= "ed_adr1='$value[adr1]', ";
366                $requete .= "ed_adr2='$value[adr2]', ";
367                $requete .= "ed_cp='$value[cp]', ";
368                $requete .= "ed_ville='$value[ville]', ";
369                $requete .= "ed_pays='$value[pays]', ";
370                $requete .= "ed_web='$value[web]', ";
371                $requete .= "ed_comment='$value[ed_comment]', ";
372                $requete .= "index_publisher=' ".strip_empty_chars($value[name]." ".$value[ville]." ".$value[pays])." '";
373                if($this->id) {
374                        // update
375                        $requete = 'UPDATE publishers '.$requete;
376                        $requete .= ' WHERE ed_id='.$this->id.' LIMIT 1;';
377                        if(pmb_mysql_query($requete, $dbh)) {
378                                $aut_link= new aut_link(AUT_TABLE_PUBLISHERS,$this->id);
379                                $aut_link->save_form();
380                                $aut_pperso= new aut_pperso("publisher",$this->id);
381                                $aut_pperso->save_form();                       
382                                editeur::update_index($this->id);
383                               
384                                audit::insert_modif (AUDIT_PUBLISHER, $this->id) ;
385                               
386                                //mise à jour de l'éditeur dans la base rdf
387                                if($pmb_synchro_rdf){
388                                        $synchro_rdf = new synchro_rdf();
389                                        $synchro_rdf->updateAuthority($this->id,'editeur');
390                                }
391                        }else {
392                                require_once("$include_path/user_error.inc.php");
393                                warning($msg[145], $msg[150]);
394                                return FALSE;
395                        }
396                } else {
397                        // s'assurer que l'editeur n'existe pas deja
398                        // on teste sur le nom et la ville seulement. voir a l'usage si necessaire de tester plus
399                        if (editeur::check_if_exists($value)) {
400                                require_once("$include_path/user_error.inc.php");
401                                warning($msg[145], $msg[149]." (${value['name']}).");
402                                return FALSE;
403                        }
404                        $requete = 'INSERT INTO publishers '.$requete.';';
405                        if(pmb_mysql_query($requete, $dbh)) {
406                                $this->id=pmb_mysql_insert_id();
407                                $aut_link= new aut_link(AUT_TABLE_PUBLISHERS,$this->id);
408                                $aut_link->save_form();
409                                $aut_pperso= new aut_pperso("publisher",$this->id);
410                                $aut_pperso->save_form();
411                                audit::insert_creation (AUDIT_PUBLISHER, $this->id) ;
412                        } else {
413                                require_once("$include_path/user_error.inc.php");
414                                warning($msg[145], $msg[151]);
415                                return FALSE;
416                        }
417                }
418                if($thesaurus_concepts_active == 1){
419                        $index_concept = new index_concept($this->id, TYPE_PUBLISHER);
420                        $index_concept->save();
421                }
422
423                // Mise à jour des vedettes composées contenant cette autorité
424                vedette_composee::update_vedettes_built_with_element($this->id, "publisher");
425                return TRUE;
426        }
427       
428        // ---------------------------------------------------------------
429        //              import($value) : import editeur
430        // ---------------------------------------------------------------
431        function import($data) {
432                global $dbh;
433       
434                // check sur le type de  la variable passee en parametre
435                if(!sizeof($data) || !is_array($data)) {
436                        // si ce n'est pas un tableau ou un tableau vide, on retourne 0
437                        return 0;
438                        }
439       
440                // tentative de recuperer l'id associee dans la base (implique que l'autorite existe)
441                // preparation de la requeªte
442                $long_maxi = pmb_mysql_field_len(pmb_mysql_query("SELECT ed_name FROM publishers limit 1"),0);
443               
444                $key = addslashes(rtrim(substr(preg_replace('/\[|\]/', '', rtrim(ltrim($data['name']))),0,$long_maxi)));
445                $ville=addslashes(trim($data['ville']));
446                $adr=addslashes(trim($data['adr']));
447                $adr2=addslashes(trim($data['adr2']));
448                $cp=addslashes(trim($data['cp']));
449                $pays=addslashes(trim($data['pays']));
450                $web=addslashes(trim($data['web']));
451                $ed_comment=addslashes(trim($data['ed_comment']));
452               
453                if ($key=="") return 0; /* on laisse tomber les editeurs sans nom !!! exact. FL*/
454       
455                $query = "SELECT ed_id FROM publishers WHERE ed_name='${key}' and ed_ville = '${ville}' ";
456                $result = @pmb_mysql_query($query, $dbh);
457                if(!$result) die("can't SELECT publisher ".$query);
458                // resultat
459       
460                // recuperation du resultat de la recherche
461                $tediteur  = pmb_mysql_fetch_object($result);
462                // et recuperation eventuelle de l'id
463                if($tediteur->ed_id)
464                        return $tediteur->ed_id;
465       
466                // id non-recuperee, il faut creer la forme.
467       
468                $query = "INSERT INTO publishers SET ed_name='${key}', ed_ville = '${ville}', ed_adr1 = '${adr}', ed_comment='".$ed_comment."', ed_adr2='".$adr2."', ed_cp='".$cp."', ed_pays='".$pays."', ed_web='".$web."', index_publisher=' ".strip_empty_chars($key)." ' ";
469       
470                $result = @pmb_mysql_query($query, $dbh);
471                if(!$result) die("can't INSERT into publisher : ".$query);
472                $id=pmb_mysql_insert_id($dbh);
473               
474                audit::insert_creation (AUDIT_PUBLISHER, $id) ;
475                return $id;
476        }
477
478        // ---------------------------------------------------------------
479        //              search_form() : affichage du form de recherche
480        // ---------------------------------------------------------------
481        static function search_form() {
482                global $user_query, $user_input;
483                global $msg, $charset;
484               
485                $user_query = str_replace ('!!user_query_title!!', $msg[357]." : ".$msg[135] , $user_query);
486                $user_query = str_replace ('!!action!!', './autorites.php?categ=editeurs&sub=reach&id=', $user_query);
487                $user_query = str_replace ('!!add_auth_msg!!', $msg[143] , $user_query);
488                $user_query = str_replace ('!!add_auth_act!!', './autorites.php?categ=editeurs&sub=editeur_form', $user_query);
489                $user_query = str_replace ('<!-- lien_derniers -->', "<a href='./autorites.php?categ=editeurs&sub=editeur_last'>$msg[1311]</a>", $user_query);
490                $user_query = str_replace("!!user_input!!",htmlentities(stripslashes($user_input),ENT_QUOTES, $charset),$user_query);
491               
492                print pmb_bidi($user_query) ;
493        //      print "<br />
494        //              <input class='bouton' type='button' value='$msg[143]' onClick=\"document.location='./autorites.php?categ=editeurs&sub=editeur_form'\" />
495        //              ";
496        }
497        //---------------------------------------------------------------
498        // update_index($id) : maj des n-uplets la table notice_global_index en rapport avec cet editeur       
499        //---------------------------------------------------------------
500        static function update_index($id) {
501                global $dbh;
502                // On cherche tous les n-uplet de la table notice correspondant a cet auteur.
503                $found = pmb_mysql_query("select distinct notice_id from notices where ed1_id='".$id."' OR ed2_id='".$id."'",$dbh);
504                // Pour chaque n-uplet trouves on met a jour la table notice_global_index avec l'auteur modifie :
505                while($mesNotices = pmb_mysql_fetch_object($found)) {
506                        $notice_id = $mesNotices->notice_id;
507                        notice::majNoticesGlobalIndex($notice_id);
508                        notice::majNoticesMotsGlobalIndex($notice_id,'publisher');
509                }
510        }
511
512        //---------------------------------------------------------------
513        // get_informations_from_unimarc : ressort les infos d'un éditeur depuis une notice unimarc
514        //---------------------------------------------------------------
515        static function get_informations_from_unimarc($fields){
516                $data = array();
517                if($fields['210']){
518                        $data['name'] = $fields['210'][0]['c'][0];
519                        if($fields['210'][0]['a'][0]) $data['ville'] = clean_string($fields['210'][0]['a'][0]);
520                        if($fields['210'][0]['b'][0]) $data['adr1'] = clean_string($fields['210'][0]['b'][0]);
521                        if($fields['210'][0]['d'][0]) $data['year'] = clean_string($fields['210'][0]['d'][0]);
522                }
523                return $data;
524        }       
525
526        static function check_if_exists($data){
527                global $dbh;
528               
529                $long_maxi = pmb_mysql_field_len(pmb_mysql_query("SELECT ed_name FROM publishers limit 1"),0);
530                $key = addslashes(rtrim(substr(preg_replace('/\[|\]/', '', rtrim(ltrim($data['name']))),0,$long_maxi)));
531                $ville=addslashes(trim($data['ville']));
532                $adr=addslashes(trim($data['adr']));
533                $ed_comment=addslashes(trim($data['ed_comment']));
534               
535                $query = "SELECT ed_id FROM publishers WHERE ed_name='${key}' and ed_ville = '${ville}' ";
536                $result = @pmb_mysql_query($query, $dbh);
537                if(!$result) die("can't SELECT publisher ".$query);
538                // resultat
539       
540                // recuperation du resultat de la recherche
541                $tediteur  = pmb_mysql_fetch_object($result);
542                // et recuperation eventuelle de l'id
543                if($tediteur->ed_id)
544                        return $tediteur->ed_id;
545                       
546                return 0;
547        }
548
549} # fin de definition de la classe editeur
550
551} # fin de declaration
552
Note: See TracBrowser for help on using the repository browser.