source: pmb4.2/trunk/fuentes/pmb/admin/import/func_migr_cdl.inc.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: 11.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$
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9require_once($class_path."/thesaurus.class.php");
10require_once($class_path."/categories.class.php");
11require_once($class_path."/lender.class.php");
12global $thesaurus_defaut;
13
14// DEBUT paramétrage propre à la base de données d'importation :
15
16// récupération du 606 : récup en catégories en essayant de classer :
17// RECUP intégrale :
18
19// Attention, dans le multithesaurus, l'identifiant de recherche par terme est
20// la racine du thesaurus par defaut
21
22//      les sujets sous le terme "Recherche par terme"
23                $thes = new thesaurus($thesaurus_defaut);
24                $id_rech_theme = $thes->num_noeud_racine;
25               
26// FIN paramétrage
27
28function recup_noticeunimarc_suite($notice) {
29} // fin recup_noticeunimarc_suite = fin récupération des variables propres au CNL
30       
31function import_new_notice_suite() {
32        global $dbh ;
33        global $notice_id ;
34       
35        global $info_606_a, $info_606_j, $info_606_x, $info_606_y, $info_606_z ;
36        global $id_rech_theme ; 
37        global $thesaurus_defaut;
38        global $thes;
39       
40        /*
41        echo "<pre>";
42        print_r ($info_949);
43        print_r ($info_997);
44        echo "</pre>";
45        */
46       
47        // les champs $606 sont stockés dans les catégories
48        //      $a >> en sous catégories de $id_rech_theme
49        //              $j en complément de $a
50        //              $x en sous catégories de $a
51        // $y >> en sous catégories de $id_rech_geo
52        // $z >> en sous catégories de $id_rech_chrono
53        // TRAITEMENT :
54        // pour $a=0 à size_of $info_606_a
55        //      pour $j=0 à size_of $info_606_j[$a]
56        //              concaténer $libelle_j .= $info_606_j[$a][$j]
57        //      $libelle_final = $info_606_a[0]." ** ".$libelle_j
58        //      Rechercher si l'enregistrement existe déjà dans categories =
59        //      $categid = categories::searchLibelle(addslashes($libelle_final), $thesaurus_defaut, 'fr_FR', $id_rech_theme)
60
61        //      Créer si besoin et récupérer l'id $categid_a
62        //      $categid_parent =  $categid_a
63        //      pour $x=0 à size_of $info_606_x[$a]
64        //              Rechercher si l'enregistrement existe déjà dans categories =
65        //      $categid = categories::searchLibelle(addslashes($info_606_x[$a][$x]), $thesaurus_defaut, 'fr_FR', $categ_parent)
66
67        //              Créer si besoin et récupérer l'id $categid_parent
68        //
69        //      $categid_parent =  $id_rech_geo
70        //      pour $y=0 à size_of $info_606_y[$a]
71        //              Rechercher si l'enregistrement existe déjà dans categories =
72        //      $categid = categories::searchLibelle(addslashes($info_606_y[$a][$y]), $thesaurus_defaut, 'fr_FR', $categ_parent)
73
74        //              Créer si besoin et récupérer l'id $categid_parent
75        //
76        //      $categid_parent =  $id_rech_chrono
77        //      pour $y=0 à size_of $info_606_z[$a]
78        //              Rechercher si l'enregistrement existe déjà dans categories =
79        //      $categid = categories::searchLibelle(addslashes($info_606_z[$a][$y]]), $thesaurus_defaut, 'fr_FR', $categ_parent)
80
81        //              Créer si besoin et récupérer l'id $categid_parent
82        //
83        $libelle_j="";
84        for ($a=0; $a<sizeof($info_606_a); $a++) {
85                for ($j=0; $j<sizeof($info_606_j[$a]); $j++) {
86                        if (!$libelle_j) $libelle_j .= trim($info_606_j[$a][$j]) ;
87                                else $libelle_j .= " ** ".trim($info_606_j[$a][$j]) ;
88                }
89                if (!$libelle_j) $libelle_final = trim($info_606_a[$a][0]) ;
90                        else $libelle_final = trim($info_606_a[$a][0])." ** ".$libelle_j ;
91                if (!$libelle_final) break ; 
92                $res_a = categories::searchLibelle(addslashes($libelle_final), $thesaurus_defaut, 'fr_FR', $id_rech_theme);
93                if ($res_a) {
94                        $categid_a = $res_a;
95                } else {
96                        $categid_a = create_categ($id_rech_theme, $libelle_final, strip_empty_words($libelle_final, 'fr_FR'));
97                }
98                // récup des sous-categ en cascade sous $a
99                $categ_parent =  $categid_a ;
100                for ($x=0 ; $x < sizeof($info_606_x[$a]) ; $x++) {
101                        $res_x = categories::searchLibelle(addslashes(trim($info_606_x[$a][$x])), $thesaurus_defaut, 'fr_FR', $categ_parent);
102                        if ($res_x) {
103                                $categ_parent = $res_x;
104                        } else {
105                                $categ_parent = create_categ($categ_parent, trim($info_606_x[$a][$x]), strip_empty_words($info_606_x[$a][$x], 'fr_FR'));
106                        }
107                } // fin récup des $x en cascade sous l'id de la catégorie 606$a
108               
109                if ($categ_parent != $id_rech_theme) {
110                        // insertion dans la table notices_categories
111                        $rqt_ajout = "INSERT INTO notices_categories (notcateg_notice,num_noeud,ordre_categorie) VALUES($notice_id,$categ_parent,$a)";
112                        $res_ajout = @pmb_mysql_query($rqt_ajout, $dbh);
113                }
114               
115                // récup TOUT EN CASCADE
116                $id_rech_geo = $categ_parent ;         
117                // récup des categ géo à loger sous la categ géo principale
118                $categ_parent =  $id_rech_geo ;
119                for ($y=0 ; $y < sizeof($info_606_y[$a]) ; $y++) {
120                        $res_y = categories::searchLibelle(addslashes(trim($info_606_y[$a][$y])), $thesaurus_defaut, 'fr_FR', $categ_parent);
121                        if($res_y) {
122                                $categ_parent = $res_y;
123                        } else {
124                                $categ_parent = create_categ($categ_parent, trim($info_606_y[$a][$y]), strip_empty_words($info_606_y[$a][$y], 'fr_FR'));
125                        }
126                } // fin récup des $y en cascade sous l'id de la catégorie principale thème géo
127               
128                if ($categ_parent != $id_rech_geo) {
129                        // insertion dans la table notices_categories
130                        $rqt_ajout = "insert into notices_categories set notcateg_notice='".$notice_id."', num_noeud='".$categ_parent."' " ;
131                        $res_ajout = @pmb_mysql_query($rqt_ajout, $dbh);
132                }
133
134                // récup TOUT EN CASCADE
135                $id_rech_chrono = $categ_parent ;               
136                // récup des categ chrono à loger sous la categ chrono principale
137                $categ_parent =  $id_rech_chrono ;
138                for ($z=0 ; $z < sizeof($info_606_z[$a]) ; $z++) {
139                        $res_z = categories::searchLibelle(addslashes(trim($info_606_z[$a][$z])), $thesaurus_defaut, 'fr_FR', $categ_parent);
140                        if ($res_z) {
141                                $categ_parent = $res_z;
142                        } else {
143                                $categ_parent = create_categ($categ_parent, trim($info_606_z[$a][$z]), strip_empty_words($info_606_z[$a][$z], 'fr_FR'));
144                        }
145                } // fin récup des $z en cascade sous l'id de la catégorie principale thème chrono
146               
147                if ($categ_parent != $id_rech_chrono) {
148                        // insertion dans la table notices_categories
149                        $rqt_ajout = "insert into notices_categories set notcateg_notice='".$notice_id."', num_noeud='".$categ_parent."' " ;
150                        $res_ajout = @pmb_mysql_query($rqt_ajout, $dbh);
151                }
152        }
153       
154} // fin import_new_notice_suite
155                       
156                       
157function create_categ($num_parent, $libelle, $index) {
158       
159        global $thes;
160        $n = new noeuds();
161        $n->num_thesaurus = $thes->id_thesaurus;
162        $n->num_parent = $num_parent;
163        $n->save();
164       
165        $c = new categories($n->id_noeud, 'fr_FR');
166        $c->libelle_categorie = $libelle;
167        $c->index_categorie = $index;
168        $c->save();
169       
170        return $n->id_noeud;
171}                       
172                       
173                       
174// TRAITEMENT DES EXEMPLAIRES ICI
175function traite_exemplaires () {
176        global $msg, $dbh ;
177       
178        global $prix, $notice_id, $info_995, $typdoc_995, $tdoc_codage, $book_lender_id, 
179                $section_995, $sdoc_codage, $book_statut_id, $locdoc_codage, $codstatdoc_995, $statisdoc_codage,
180                $cote_mandatory, $book_location_id, $nb_expl_ignores ;
181               
182        // la zone 995 est répétable
183        for ($nb_expl = 0; $nb_expl < sizeof ($info_995); $nb_expl++) {
184                /* RAZ expl */
185                $expl = array();
186               
187                /* préparation du tableau à passer à la méthode */
188                $expl['cb']         = $info_995[$nb_expl]['a'];
189                if (!$expl['cb']) $expl['cb']="NOTI-".$notice_id;
190               
191                $expl['notice']     = $notice_id ;
192                $expl['cote']           = $info_995[$nb_expl]['f'];
193                $expl['note']       = $info_995[$nb_expl]['u'];
194                $expl['prix']       = $info_995[$nb_expl]['B'];
195               
196                $expl['date_depot'] = today();     
197                $expl['date_retour'] = today();
198               
199                // type de support
200                $data_doc=array();
201                $data_doc['tdoc_libelle'] = "Type doc - ".$info_995[$nb_expl]['c'];
202                $data_doc['duree_pret'] = 0 ; /* valeur par défaut */
203                $data_doc['tdoc_codage_import'] = $info_995[$nb_expl]['c'] ;
204                $data_doc['tdoc_owner'] = 0 ;
205                $expl['typdoc'] = docs_type::import($data_doc);
206               
207                // $expl['section']    = $info_995[$nb_expl]['x']; à chercher dans docs_section
208                $data_doc=array();
209                $data_doc['section_libelle'] = $info_995[$nb_expl]['x'];
210                $data_doc['sdoc_codage_import'] = $info_995[$nb_expl]['x'] ;
211                $data_doc['sdoc_owner'] = 0 ;
212                $expl['section'] = docs_section::import($data_doc);
213                if (!$expl['section']) $expl['section']=31;
214               
215                // $expl['statut']
216                $data_doc=array();
217                $data_doc['statut_libelle'] = "Statut - ".$info_995[$nb_expl]['y'];
218                $data_doc['pret_flag'] = 1 ; 
219                $data_doc['statusdoc_codage_import'] = $info_995[$nb_expl]['y'] ;
220                $data_doc['statusdoc_owner'] = 0 ;
221                $expl['statut'] = docs_statut::import($data_doc);
222               
223                // $expl['location']
224                $data_doc=array();
225                $data_doc['location_libelle'] = "Localisation - ".$info_995[$nb_expl]['w'];
226                $data_doc['locdoc_codage_import'] = $info_995[$nb_expl]['w'] ;
227                $data_doc['locdoc_owner'] = 0 ;
228                $expl['location'] = docs_location::import($data_doc);
229               
230                // $expl['codestat']   = $info_995[$nb_expl]['O']; (O majuscule, pas zéro)
231                $data_doc=array();
232                $data_doc['codestat_libelle'] = "Code stat - ".$info_995[$nb_expl]['O'];
233                $data_doc['statisdoc_codage_import'] = $info_995[$nb_expl]['O'] ;
234                $data_doc['statisdoc_owner'] = 0 ;
235                $expl['codestat'] = docs_codestat::import($data_doc);
236                if (!$expl['codestat']) $expl['codestat']=38;
237                 
238                // $expl['expl_owner']
239                $data_doc=array();
240                $data_doc['lender_libelle'] = $info_995[$nb_expl]['R'];
241                $expl['expl_owner'] = lender::import($data_doc) ;
242                if (!$expl['expl_owner']) $expl['expl_owner']=3;
243                 
244                $expl['cote_mandatory'] = $cote_mandatory ;
245                $expl_id = exemplaire::import($expl);
246                if ($expl_id == 0) {
247                        $nb_expl_ignores++;
248                        }
249                       
250                // Numéro du jeu
251                if ($info_995[$nb_expl]['v'] && $expl_id) {
252                        $requete="insert into expl_custom_values (expl_custom_champ,expl_custom_origine,expl_custom_small_text) values(1,$expl_id,'".addslashes($info_995[$nb_expl]['v'])."')";
253                        pmb_mysql_query($requete);
254                        }
255       
256                //debug : affichage zone 995
257                /*
258                echo "995\$a =".$info_995[$nb_expl]['a']."<br />";
259                echo "995\$b =".$info_995[$nb_expl]['b']."<br />";
260                echo "995\$c =".$info_995[$nb_expl]['c']."<br />";
261                echo "995\$d =".$info_995[$nb_expl]['d']."<br />";
262                echo "995\$f =".$info_995[$nb_expl]['f']."<br />";
263                echo "995\$k =".$info_995[$nb_expl]['k']."<br />";
264                echo "995\$m =".$info_995[$nb_expl]['m']."<br />";
265                echo "995\$n =".$info_995[$nb_expl]['n']."<br />";
266                echo "995\$o =".$info_995[$nb_expl]['o']."<br />";
267                echo "995\$q =".$info_995[$nb_expl]['q']."<br />";
268                echo "995\$r =".$info_995[$nb_expl]['r']."<br />";
269                echo "995\$u =".$info_995[$nb_expl]['u']."<br /><br />";
270                */
271                } // fin for
272        } // fin traite_exemplaires     TRAITEMENT DES EXEMPLAIRES JUSQU'ICI
273
274// fonction spécifique d'export de la zone 995
275function export_traite_exemplaires ($ex=array()) {
276        global $msg, $dbh ;
277       
278        $subfields["a"] = $ex -> lender_libelle;
279        $subfields["c"] = $ex -> lender_libelle;
280        $subfields["f"] = $ex -> expl_cb;
281        $subfields["k"] = $ex -> expl_cote;
282        $subfields["u"] = $ex -> expl_note;
283
284        if ($ex->statusdoc_codage_import) $subfields["o"] = $ex -> statusdoc_codage_import;
285        if ($ex -> tdoc_codage_import) $subfields["r"] = $ex -> tdoc_codage_import;
286                else $subfields["r"] = "uu";
287        if ($ex -> sdoc_codage_import) $subfields["q"] = $ex -> sdoc_codage_import;
288                else $subfields["q"] = "u";
289       
290        global $export996 ;
291        $export996['f'] = $ex -> expl_cb ;
292        $export996['k'] = $ex -> expl_cote ;
293        $export996['u'] = $ex -> expl_note ;
294
295        $export996['m'] = substr($ex -> expl_date_depot, 0, 4).substr($ex -> expl_date_depot, 5, 2).substr($ex -> expl_date_depot, 8, 2) ;
296        $export996['n'] = substr($ex -> expl_date_retour, 0, 4).substr($ex -> expl_date_retour, 5, 2).substr($ex -> expl_date_retour, 8, 2) ;
297
298        $export996['a'] = $ex -> lender_libelle;
299        $export996['b'] = $ex -> expl_owner;
300
301        $export996['v'] = $ex -> location_libelle;
302        $export996['w'] = $ex -> ldoc_codage_import;
303
304        $export996['x'] = $ex -> section_libelle;
305        $export996['y'] = $ex -> sdoc_codage_import;
306
307        $export996['e'] = $ex -> tdoc_libelle;
308        $export996['r'] = $ex -> tdoc_codage_import;
309
310        $export996['1'] = $ex -> statut_libelle;
311        $export996['2'] = $ex -> statusdoc_codage_import;
312        $export996['3'] = $ex -> pret_flag;
313       
314        global $export_traitement_exemplaires ;
315        $export996['0'] = $export_traitement_exemplaires ;
316       
317        return  $subfields ;
318
319}       
Note: See TracBrowser for help on using the repository browser.