source: pmb4.1/trunk/fuentes/pmb/classes/collection.class.php @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 24.0 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: collection.class.php,v 1.44.2.1 2014-07-31 09:11:22 dgoron Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9// définition de la classe de gestion des collections
10
11if ( ! defined( 'COLLECTION_CLASS' ) ) {
12  define( 'COLLECTION_CLASS', 1 );
13
14require_once($class_path."/notice.class.php");
15require_once("$class_path/aut_link.class.php");
16require_once("$class_path/aut_pperso.class.php");
17require_once($class_path."/editor.class.php");
18require_once($class_path."/subcollection.class.php");
19require_once("$class_path/audit.class.php");
20
21class collection {
22
23// ---------------------------------------------------------------
24//              propriétés de la classe
25// ---------------------------------------------------------------
26
27        var $id;                // MySQL id in table 'collections'
28        var $name;              // collection name
29        var $parent;    // MySQL id of parent publisher
30        var $editeur;   // name of parent publisher
31        var $editor_isbd; // isbd form of publisher
32        var $display;   // usable form for displaying   ( _name_ (_editeur_) )
33        var $isbd_entry = ''; // isbd form
34        var $issn;              // ISSN of collection
35        var $isbd_entry_lien_gestion ; // lien sur le nom vers la gestion
36        var $collection_web;            // web de collection
37        var $collection_web_link;       // lien web de collection
38        // ---------------------------------------------------------------
39        //              collection($id) : constructeur
40        // ---------------------------------------------------------------
41        function collection($id=0) {
42                if($id) {
43                        // on cherche à atteindre une notice existante
44                        $this->id = $id;
45                        $this->getData();
46                } else {
47                        // la notice n'existe pas
48                        $this->id = 0;
49                        $this->getData();
50                }
51        }
52       
53        // ---------------------------------------------------------------
54        //              getData() : récupération infos collection
55        // ---------------------------------------------------------------
56        function getData() {
57                global $dbh;
58                if(!$this->id) {
59                        // pas d'identifiant. on retourne un tableau vide
60                        $this->id               = 0;
61                        $this->name             =       '';
62                        $this->parent   =       0;
63                        $this->editeur  =       '';
64                        $this->editor_isbd = '';
65                        $this->display  =       '';
66                        $this->issn             =       '';
67                        $this->collection_web   = '';
68                        $this->comment  = '';
69                } else {
70                        $requete = "SELECT * FROM collections WHERE collection_id=$this->id LIMIT 1 ";
71                        $result = @mysql_query($requete, $dbh);
72                        if(mysql_num_rows($result)) {
73                                $temp = mysql_fetch_object($result);
74                                mysql_free_result($result);
75                                $this->id = $temp->collection_id;
76                                $this->name = $temp->collection_name;
77                                $this->parent = $temp->collection_parent;
78                                $this->issn = $temp->collection_issn;
79                                $this->collection_web   = $temp->collection_web;
80                                $this->comment  = $temp->collection_comment;
81                                if($temp->collection_web) 
82                                        $this->collection_web_link = " <a href='$temp->collection_web' target=_blank><img src='./images/globe.gif' border=0 /></a>";
83                                else 
84                                        $this->collection_web_link = "" ;
85                               
86                                $editeur = new editeur($temp->collection_parent);
87                                $this->editor_isbd = $editeur->isbd_entry;
88                                $this->issn ? $this->isbd_entry = $this->name.', ISSN '.$this->issn : $this->isbd_entry = $this->name;
89                                $this->editeur = $editeur->name;
90                                $this->display = $this->name.' ('.$this->editeur.')';
91                                // Ajoute un lien sur la fiche collection si l'utilisateur à accès aux autorités
92                                if (SESSrights & AUTORITES_AUTH) 
93                                        $this->isbd_entry_lien_gestion = "<a href='./autorites.php?categ=collections&sub=collection_form&id=".$this->id."' class='lien_gestion'>".$this->name."</a>";
94                                else 
95                                        $this->isbd_entry_lien_gestion = $this->name;
96                        } else {
97                                // pas de collection avec cette clé
98                                $this->id               =       0;
99                                $this->name             =       '';
100                                $this->parent   =       0;
101                                $this->editeur  =       '';
102                                $this->editor_isbd = '';
103                                $this->display  =       '';
104                                $this->issn             =       '';
105                                $this->collection_web = '';
106                                $this->collection_web_link = "" ;
107                                $this->comment = "" ;
108                        }
109                }
110        }
111       
112        // ---------------------------------------------------------------
113        //              delete() : suppression de la collection
114        // ---------------------------------------------------------------
115        function delete() {
116                global $dbh;
117                global $msg;
118       
119                if(!$this->id)
120                        // impossible d'accéder à cette notice de collection
121                        return $msg[406];
122       
123                // récupération du nombre de notices affectées
124                $requete = "SELECT COUNT(1) FROM notices WHERE ";
125                $requete .= "coll_id=$this->id";
126                $res = mysql_query($requete, $dbh);
127                $nbr_lignes = mysql_result($res, 0, 0);
128                if(!$nbr_lignes) {
129                        // on regarde si la collection a des collections enfants
130                        $requete = "SELECT COUNT(1) FROM sub_collections WHERE ";
131                        $requete .= "sub_coll_parent=".$this->id;
132                        $res = mysql_query($requete, $dbh);
133                        $nbr_lignes = mysql_result($res, 0, 0);
134                        if(!$nbr_lignes) {
135                                // effacement dans la table des collections
136                                $requete = "DELETE FROM collections WHERE collection_id=".$this->id;
137                                $result = mysql_query($requete, $dbh);
138                                //Import d'autorité
139                                $this->delete_autority_sources($this->id);
140                                // liens entre autorités
141                                $aut_link= new aut_link(AUT_TABLE_COLLECTIONS,$this->id);
142                                $aut_link->delete();
143                                $aut_pperso= new aut_pperso("collection",$this->id);
144                                $aut_pperso->delete();
145                               
146                                audit::delete_audit(AUDIT_COLLECTION,$this->id);
147                                return false;
148                        } else {
149                                // Cet collection a des sous-collections, impossible de la supprimer
150                                return '<strong>'.$this->display."</strong><br />${msg[408]}";
151                        }
152                } else {
153                        // Cette collection est utilisé dans des notices, impossible de la supprimer
154                        return '<strong>'.$this->display."</strong><br />${msg[407]}";
155                }
156        }
157       
158        // ---------------------------------------------------------------
159        //              delete_autority_sources($idcol=0) : Suppression des informations d'import d'autorité
160        // ---------------------------------------------------------------
161        function delete_autority_sources($idcol=0){
162                $tabl_id=array();
163                if(!$idcol){
164                        $requete="SELECT DISTINCT num_authority FROM authorities_sources LEFT JOIN collections ON num_authority=collection_id  WHERE authority_type = 'collection' AND collection_id IS NULL";
165                        $res=mysql_query($requete);
166                        if(mysql_num_rows($res)){
167                                while ($ligne = mysql_fetch_object($res)) {
168                                        $tabl_id[]=$ligne->num_authority;
169                                }
170                        }
171                }else{
172                        $tabl_id[]=$idcol;
173                }
174                foreach ( $tabl_id as $value ) {
175               //suppression dans la table de stockage des numéros d'autorités...
176                        $query = "select id_authority_source from authorities_sources where num_authority = ".$value." and authority_type = 'collection'";
177                        $result = mysql_query($query);
178                        if(mysql_num_rows($result)){
179                                while ($ligne = mysql_fetch_object($result)) {
180                                        $query = "delete from notices_authorities_sources where num_authority_source = ".$ligne->id_authority_source;
181                                        mysql_query($query);
182                                }
183                        }
184                        $query = "delete from authorities_sources where num_authority = ".$value." and authority_type = 'collection'";
185                        mysql_query($query);
186                }
187        }
188       
189        // ---------------------------------------------------------------
190        //              replace($by) : remplacement de la collection
191        // ---------------------------------------------------------------
192        function replace($by,$link_save=0) {
193       
194                global $msg;
195                global $dbh;
196       
197                if(!$by) {
198                        // pas de valeur de remplacement !!!
199                        return "serious error occured, please contact admin...";
200                }
201       
202                if (($this->id == $by) || (!$this->id))  {
203                        // impossible de remplacer une collection par elle-même
204                        return $msg[226];
205                }
206                // a) remplacement dans les notices
207                // on obtient les infos de la nouvelle collection
208                $n_collection = new collection($by);
209                if(!$n_collection->parent) {
210                        // la nouvelle collection est foireuse
211                        return $msg[406];
212                }
213               
214                $aut_link= new aut_link(AUT_TABLE_COLLECTIONS,$this->id);
215                // "Conserver les liens entre autorités" est demandé
216                if($link_save) {
217                        // liens entre autorités
218                        $aut_link->add_link_to(AUT_TABLE_COLLECTIONS,$by);             
219                }
220                $aut_link->delete();
221       
222                $requete = "UPDATE notices SET ed1_id=".$n_collection->parent.", coll_id=$by WHERE coll_id=".$this->id;
223                $res = mysql_query($requete, $dbh);
224       
225                // b) remplacement dans la table des sous-collections
226                $requete = "UPDATE sub_collections SET sub_coll_parent=$by WHERE sub_coll_parent=".$this->id;
227                $res = mysql_query($requete, $dbh);
228       
229                // c) suppression de la collection
230                $requete = "DELETE FROM collections WHERE collection_id=".$this->id;
231                $res = mysql_query($requete, $dbh);
232               
233                //nettoyage d'autorities_sources
234                $query = "select * from authorities_sources where num_authority = ".$this->id." and authority_type = 'collection'";
235                $result = mysql_query($query);
236                if(mysql_num_rows($result)){
237                        while($row = mysql_fetch_object($result)){
238                                if($row->authority_favorite == 1){
239                                        //on suprime les références si l'autorité a été importée...
240                                        $query = "delete from notices_authorities_sources where num_authority_source = ".$row->id_authority_source;
241                                        mysql_result($query);
242                                        $query = "delete from authorities_sources where id_authority_source = ".$row->id_authority_source;
243                                        mysql_result($query);
244                                }else{
245                                        //on fait suivre le reste
246                                        $query = "update authorities_sources set num_authority = ".$by." where num_authority_source = ".$row->id_authority_source;
247                                        mysql_query($query);
248                                }
249                        }
250                }
251                audit::delete_audit (AUDIT_COLLECTION, $this->id);
252               
253                collection::update_index($by);
254                return FALSE;
255       
256        }
257       
258        // ---------------------------------------------------------------
259        //              show_form : affichage du formulaire de saisie
260        // ---------------------------------------------------------------
261        function show_form() {
262       
263                global $msg;
264                global $collection_form;
265                global $charset;
266                global $pmb_type_audit;
267       
268                if($this->id) {
269                        $action = "./autorites.php?categ=collections&sub=update&id=$this->id";
270                        $libelle = $msg[168];
271                        $button_remplace = "<input type='button' class='bouton' value='$msg[158]' ";
272                        $button_remplace .= "onclick='unload_off();document.location=\"./autorites.php?categ=collections&sub=replace&id=$this->id\"'>";
273       
274                        $button_voir = "<input type='button' class='bouton' value='$msg[voir_notices_assoc]' ";
275                        $button_voir .= "onclick='unload_off();document.location=\"./catalog.php?categ=search&mode=2&etat=aut_search&aut_type=collection&aut_id=$this->id\"'>";
276       
277                        $button_delete = "<input type='button' class='bouton' value='$msg[63]' ";
278                        $button_delete .= "onClick=\"confirm_delete();\">";
279                } else {
280                        $action = './autorites.php?categ=collections&sub=update&id=';
281                        $libelle = $msg[167];
282                        $button_remplace = '';
283                        $button_delete ='';
284                }
285               
286                $aut_link= new aut_link(AUT_TABLE_COLLECTIONS,$this->id);
287                $collection_form = str_replace('<!-- aut_link -->', $aut_link->get_form('saisie_collection') , $collection_form);
288               
289                $aut_pperso= new aut_pperso("collection",$this->id);           
290                $collection_form = str_replace('!!aut_pperso!!',                $aut_pperso->get_form(),                                                                $collection_form);
291               
292                $collection_form = str_replace('!!id!!',                                        $this->id,                                                                                      $collection_form);
293                $collection_form = str_replace('!!libelle!!',                           $libelle,                                                                                       $collection_form);
294                $collection_form = str_replace('!!action!!',                            $action, $collection_form);
295                $collection_form = str_replace('!!collection_nom!!',            htmlentities($this->name,ENT_QUOTES, $charset),         $collection_form);
296                $collection_form = str_replace('!!ed_libelle!!',                        htmlentities($this->editeur,ENT_QUOTES, $charset),      $collection_form);
297                $collection_form = str_replace('!!ed_id!!',                             $this->parent,                                                                          $collection_form);
298                $collection_form = str_replace('!!issn!!',                                      $this->issn,                                                                            $collection_form);
299                $collection_form = str_replace('!!delete!!',                            $button_delete,                                                                         $collection_form);
300                $collection_form = str_replace('!!remplace!!',                          $button_remplace,                                                                       $collection_form);
301                $collection_form = str_replace('!!voir_notices!!',                      $button_voir,                                                                           $collection_form);
302                $collection_form = str_replace('!!collection_web!!',            htmlentities($this->collection_web,ENT_QUOTES, $charset),       $collection_form);
303                $collection_form = str_replace('!!comment!!',                           htmlentities($this->comment,ENT_QUOTES, $charset),      $collection_form);
304                // pour retour à la bonne page en gestion d'autorités
305                // &user_input=".rawurlencode(stripslashes($user_input))."&nbr_lignes=$nbr_lignes&page=$page
306                global $user_input, $nbr_lignes, $page ;
307                $collection_form = str_replace('!!user_input_url!!',            rawurlencode(stripslashes($user_input)),                        $collection_form);
308                $collection_form = str_replace('!!user_input!!',                        htmlentities($user_input,ENT_QUOTES, $charset),         $collection_form);
309                $collection_form = str_replace('!!nbr_lignes!!',                        $nbr_lignes,                                                                            $collection_form);
310                $collection_form = str_replace('!!page!!',                                      $page,                                                                                          $collection_form);             
311               
312                if ($pmb_type_audit && $this->id)
313                                $bouton_audit= "&nbsp;<input class='bouton' type='button' onClick=\"openPopUp('./audit.php?type_obj=".AUDIT_COLLECTION."&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;";
314               
315                $collection_form = str_replace('!!audit_bt!!',                          $bouton_audit,                                                                                          $collection_form);
316                print $collection_form;
317        }
318       
319        // ---------------------------------------------------------------
320        //              replace_form : affichage du formulaire de remplacement
321        // ---------------------------------------------------------------
322        function replace_form() {
323                global $collection_replace_form;
324                global $msg;
325                global $include_path;
326       
327                if(!$this->id || !$this->name) {
328                        require_once("$include_path/user_error.inc.php"); 
329                        error_message($msg[161], $msg[162], 1, './autorites.php?categ=collections&sub=&id=');
330                        return false;
331                }
332       
333                $collection_replace_form=str_replace('!!id!!', $this->id, $collection_replace_form);
334                $collection_replace_form=str_replace('!!coll_name!!', $this->name, $collection_replace_form);
335                $collection_replace_form=str_replace('!!coll_editeur!!', $this->editeur, $collection_replace_form);
336                print $collection_replace_form;
337        }
338       
339       
340        // ---------------------------------------------------------------
341        //              update($value) : mise à jour de la collection
342        // ---------------------------------------------------------------
343        function update($value,$force_creation = false) {
344                global $dbh;
345                global $msg,$charset;
346                global $include_path;
347               
348                // nettoyage des valeurs en entrée
349                $value['name'] = clean_string($value['name']);
350                $value['issn'] = clean_string($value['issn']);
351               
352                if(!$value['parent']){
353                        if($value['publisher']){
354                                //on les a, on crée l'éditeur
355                                $value['publisher']=stripslashes_array($value['publisher']);//La fonction d'import fait les addslashes contrairement à l'update
356                                $value['parent'] = editeur::import($value['publisher']);
357                        }
358                }
359               
360                if ((!$value['name']) || (!$value['parent'])) 
361                        return false;
362               
363                // construction de la requête
364                $requete = "SET collection_name='$value[name]', ";
365                $requete .= "collection_parent='$value[parent]', ";
366                $requete .= "collection_issn='$value[issn]', ";
367                $requete .= "collection_web='$value[collection_web]', ";
368                $requete .= "collection_comment='$value[comment]', ";
369                $requete .= "index_coll=' ".strip_empty_words($value[name])." ".strip_empty_words($value["issn"])." '";
370       
371                if($this->id) {
372                        // update
373                        $requete = 'UPDATE collections '.$requete;
374                        $requete .= ' WHERE collection_id='.$this->id.' ;';
375                        if(mysql_query($requete, $dbh)) {
376                                $requete = "update notices set ed1_id='".$value[parent]."' WHERE coll_id='".$this->id."' ";
377                                $res = mysql_query($requete, $dbh) ;
378                                // liens entre autorités
379                                $aut_link= new aut_link(AUT_TABLE_COLLECTIONS,$this->id);
380                                $aut_link->save_form();                 
381                                $aut_pperso= new aut_pperso("collection",$this->id);
382                                $aut_pperso->save_form();
383                                collection::update_index($this->id);
384                               
385                                audit::insert_modif (AUDIT_COLLECTION, $this->id) ;
386                        } else {
387                                require_once("$include_path/user_error.inc.php");
388                                warning($msg[167],htmlentities($msg[169]." -> ".$this->display,ENT_QUOTES, $charset));
389                                return FALSE;
390                        }
391                } else {
392                        if(!$force_creation){
393                                // création : s'assurer que la collection n'existe pas déjà
394                                if ($id_collection_exists = collection::check_if_exists($value)) {
395                                        $collection_exists = new collection($id_collection_exists);
396                                        require_once("$include_path/user_error.inc.php");
397                                        warning($msg[167],htmlentities($msg[171]." -> ".$collection_exists->display,ENT_QUOTES, $charset));
398                                        return FALSE;
399                                }
400                        }
401                        $requete = 'INSERT INTO collections '.$requete.';';
402                        if(mysql_query($requete, $dbh)) {
403                                $this->id=mysql_insert_id();
404                                // liens entre autorités
405                                $aut_link= new aut_link(AUT_TABLE_COLLECTIONS,$this->id);
406                                $aut_link->save_form();
407                                audit::insert_creation (AUDIT_COLLECTION, $this->id) ;
408                        } else {
409                                require_once("$include_path/user_error.inc.php");
410                                warning($msg[167],htmlentities($msg[170]." -> ".$requete,ENT_QUOTES, $charset));
411                                return FALSE;
412                        }
413                }
414                if($value['subcollections']){
415                        for ( $i=0 ; $i<count($value['subcollections']) ; $i++){
416                                $subcoll=stripslashes_array($value['subcollections'][$i]);//La fonction d'import fait les addslashes contrairement à l'update
417                                $subcoll['coll_parent'] = $this->id;
418                                subcollection::import($subcoll);
419                        }
420                }
421                return true;
422        }
423       
424        // ---------------------------------------------------------------
425        //              import() : import d'une collection
426        // ---------------------------------------------------------------
427       
428        // fonction d'import de collection (membre de la classe 'collection');
429       
430        function import($data) {
431       
432                // cette méthode prend en entrée un tableau constitué des informations éditeurs suivantes :
433                //      $data['name']   Nom de la collection
434                //      $data['parent'] id de l'éditeur parent de la collection
435                //      $data['issn']   numéro ISSN de la collection
436       
437                global $dbh;
438       
439                // check sur le type de  la variable passée en paramètre
440                if(!sizeof($data) || !is_array($data)) {
441                        // si ce n'est pas un tableau ou un tableau vide, on retourne 0
442                        return 0;
443                }
444       
445                // check sur les éléments du tableau (data['name'] est requis).
446               
447                $long_maxi_name = mysql_field_len(mysql_query("SELECT collection_name FROM collections limit 1"),0);
448                $data['name'] = rtrim(substr(preg_replace('/\[|\]/', '', rtrim(ltrim($data['name']))),0,$long_maxi_name));
449       
450                //si on a pas d'id, on peut avoir les infos de l'éditeur
451                if(!$data['parent']){
452                        if($data['publisher']){
453                                //on les a, on crée l'éditeur
454                                $data['parent'] = editeur::import($data['publisher']);
455                        }
456                }
457               
458                if(($data['name']=="") || ($data['parent']==0)) /* il nous faut impérativement un éditeur */
459                        return 0;
460       
461       
462                // préparation de la requête
463                $key0 = addslashes($data['name']);
464                $key1 = $data['parent'];
465                $key2 = addslashes($data['issn']);
466               
467                /* vérification que l'éditeur existe bien ! */
468                $query = "SELECT ed_id FROM publishers WHERE ed_id='${key1}' LIMIT 1 ";
469                $result = @mysql_query($query, $dbh);
470                if(!$result) 
471                        die("can't SELECT publishers ".$query);
472                if (mysql_num_rows($result)==0) 
473                        return 0;
474       
475                /* vérification que la collection existe */
476                $query = "SELECT collection_id FROM collections WHERE collection_name='${key0}' AND collection_parent='${key1}' LIMIT 1 ";
477                $result = @mysql_query($query, $dbh);
478                if(!$result) die("can't SELECT collections ".$query);
479                $collection  = mysql_fetch_object($result);
480       
481                /* la collection existe, on retourne l'ID */
482                if($collection->collection_id)
483                        return $collection->collection_id;
484       
485                // id non-récupérée, il faut créer la forme.
486                $query = "INSERT INTO collections SET collection_name='$key0', ";
487                $query .= "collection_parent='$key1', ";
488                $query .= "collection_issn='$key2', ";
489                $query .= "index_coll=' ".strip_empty_words($key0)." ".strip_empty_words($key2)." ', ";
490                $query .= "collection_comment = '".addslashes($data['comment'])."'";
491                $result = @mysql_query($query, $dbh);
492                if(!$result) die("can't INSERT into database");
493               
494                $id = mysql_insert_id($dbh);
495               
496                if($data['subcollections']){
497                        for ( $i=0 ; $i<count($data['subcollections']) ; $i++){
498                                $subcoll = $data['subcollections'][$i];
499                                $subcoll['coll_parent'] = $id;
500                                subcollection::import($subcoll);
501                        }
502                }
503               
504                audit::insert_creation (AUDIT_COLLECTION, $id) ;
505       
506                return $id;
507        }
508               
509        // ---------------------------------------------------------------
510        //              search_form() : affichage du form de recherche
511        // ---------------------------------------------------------------
512       
513        static function search_form() {
514                global $user_query, $user_input;
515                global $msg,$charset;
516       
517                $user_query = str_replace ('!!user_query_title!!', $msg[357]." : ".$msg[136] , $user_query);
518                $user_query = str_replace ('!!action!!', './autorites.php?categ=collections&sub=reach&id=', $user_query);
519                $user_query = str_replace ('!!add_auth_msg!!', $msg[163] , $user_query);
520                $user_query = str_replace ('!!add_auth_act!!', './autorites.php?categ=collections&sub=collection_form', $user_query);
521                $user_query = str_replace ('<!-- lien_derniers -->', "<a href='./autorites.php?categ=collections&sub=collection_last'>$msg[1312]</a>", $user_query);
522                $user_query = str_replace("!!user_input!!",htmlentities(stripslashes($user_input),ENT_QUOTES, $charset),$user_query);
523                print pmb_bidi($user_query) ;
524        }
525       
526        //---------------------------------------------------------------
527        // update_index($id) : maj des n-uplets la table notice_global_index en rapport avec cet collection     
528        //---------------------------------------------------------------
529        function update_index($id) {
530                global $dbh;
531                // On cherche tous les n-uplet de la table notice correspondant à cet auteur.
532                $found = mysql_query("select distinct notice_id from notices where coll_id='".$id."'",$dbh);
533                // Pour chaque n-uplet trouvés on met a jour la table notice_global_index avec l'auteur modifié :
534                while($mesNotices = mysql_fetch_object($found)) {
535                        $notice_id = $mesNotices->notice_id;
536                        notice::majNoticesGlobalIndex($notice_id);
537                        notice::majNoticesMotsGlobalIndex($notice_id,'collection');
538                }
539        }
540       
541        //---------------------------------------------------------------
542        // get_informations_from_unimarc : ressort les infos d'une collection depuis une notice unimarc
543        //---------------------------------------------------------------
544        function get_informations_from_unimarc($fields,$from_subcollection=false,$import_subcoll=false){
545                $data = array();
546               
547                if(!$from_subcollection){
548                        $data['name'] = $fields['200'][0]['a'][0];
549                        if(count($fields['200'][0]['i'])){
550                                foreach ( $fields['200'][0]['i'] as $value ) {
551                                $data['name'].= ". ".$value;
552                                }
553                        }
554                        if(count($fields['200'][0]['e'])){
555                                foreach ( $fields['200'][0]['e'] as $value ) {
556                                $data['name'].= " : ".$value;
557                                }
558                        }
559                        $data['issn'] = $fields['011'][0]['a'][0];
560                        if($fields['312']){
561                                for($i=0 ; $i<count($fields['312']) ; $i++){
562                                        for($j=0 ; $j<count($fields['312'][$i]['a']) ; $j++){
563                                                if($data['comment']!= "") $data['comment'] .= "\n";
564                                                $data['comment'].=$fields['312'][$i]['a'][$j];
565                                        }
566                                }
567                        }
568                        $data['publisher'] = editeur::get_informations_from_unimarc($fields);
569                        if($import_subcoll){
570                                $data['subcollections'] = subcollection::get_informations_from_unimarc($fields,true);
571                        }
572                }else{
573                        $data['name'] = $fields['410'][0]['t'][0];
574                        $data['issn'] = $fields['410'][0]['x'][0];
575                        $data['authority_number'] = $fields['410'][0]['3'][0];
576                        $data['publisher'] = editeur::get_informations_from_unimarc($fields);
577                }
578                return $data;
579        }
580       
581        static function check_if_exists($data){
582                global $dbh;
583               
584                //si on a pas d'id, on peut avoir les infos de l'éditeur
585                if(!$data['parent']){
586                        if($data['publisher']){
587                                //on les a, on crée l'éditeur
588                                $data['parent'] = editeur::check_if_exists($data['publisher']);
589                        }
590                }
591       
592                // préparation de la requête
593                $key0 = addslashes($data['name']);
594                $key1 = $data['parent'];
595                $key2 = addslashes($data['issn']);
596               
597                /* vérification que la collection existe */
598                $query = "SELECT collection_id FROM collections WHERE collection_name='${key0}' AND collection_parent='${key1}' LIMIT 1 ";
599                $result = @mysql_query($query, $dbh);
600                if(!$result) die("can't SELECT collections ".$query);
601                $collection  = mysql_fetch_object($result);
602       
603                /* la collection existe, on retourne l'ID */
604                if($collection->collection_id)
605                        return $collection->collection_id;     
606                       
607                return 0;
608        }
609
610} # fin de définition de la classe collection
611
612} # fin de délaration
Note: See TracBrowser for help on using the repository browser.