source: pmb4.2/trunk/fuentes/pmb/catalog/z3950/func_z3950_cpt_rameau_first_level_mba.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: 14.4 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// | creator : Eric ROBERT                                                    |
5// | modified : ...                                                           |
6// +-------------------------------------------------+
7// $Id: func_z3950_cpt_rameau_first_level_mba.inc.php,v 1.5 2015-04-03 11:16:22 jpermanne Exp $
8
9if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
10
11// enregistrement de la notices dans les catégories
12require_once "$include_path/misc.inc.php" ;
13require_once($class_path."/thesaurus.class.php");
14require_once($class_path."/categories.class.php");
15global $thesaurus_defaut;
16
17//Attention, dans le multithesaurus, le thesaurus dans lequel on importe est le thesaurus par defaut
18$thes = new thesaurus($thesaurus_defaut);
19 
20function traite_categories_enreg($notice_retour,$categories,$thesaurus_traite=0) {
21
22        global $dbh;
23        // si $thesaurus_traite fourni, on ne delete que les catégories de ce thesaurus, sinon on efface toutes
24        //  les indexations de la notice sans distinction de thesaurus
25        if (!$thesaurus_traite) $rqt_del = "delete from notices_categories where notcateg_notice='$notice_retour' ";
26        else $rqt_del = "delete from notices_categories where notcateg_notice='$notice_retour' and num_noeud in (select id_noeud from noeuds where num_thesaurus='$thesaurus_traite' and id_noeud=notices_categories.num_noeud) ";
27        $res_del = @pmb_mysql_query($rqt_del, $dbh);
28       
29        $rqt_ins = "insert into notices_categories (notcateg_notice, num_noeud, ordre_categorie) VALUES ";
30       
31        for($i=0 ; $i< sizeof($categories) ; $i++) {
32                $id_categ=$categories[$i]['categ_id'];
33                if ($id_categ) {
34                        $rqt = $rqt_ins . " ('$notice_retour','$id_categ', $i) " ; 
35                        $res_ins = @pmb_mysql_query($rqt, $dbh);
36                }
37        }
38}
39
40
41function traite_categories_for_form($tableau_600="",$tableau_601="",$tableau_602="",$tableau_605="",$tableau_606="",$tableau_607="",$tableau_608="") {
42        global $charset, $rameau,$pmb_keyword_sep;
43        $champ_rameau="";
44        if(!$pmb_keyword_sep){
45                $pmb_keyword_sep = " ; ";
46        }
47       
48        $info_600_a = $tableau_600["info_600_a"] ;
49        $info_600_3 = $tableau_600["info_600_3"] ;     
50        $info_600_b = $tableau_600["info_600_b"] ;
51        $info_600_f = $tableau_600["info_600_f"] ;
52        $info_600_j = $tableau_600["info_600_j"] ;
53        $info_600_x = $tableau_600["info_600_x"] ;
54        $info_600_y = $tableau_600["info_600_y"] ;
55        $info_600_z = $tableau_600["info_600_z"] ;
56        for ($a=0; $a<sizeof($info_600_a); $a++) {
57                $libelle_final="";
58                $libelle_j="";
59                for ($j=0; $j<sizeof($info_600_j[$a]); $j++) {
60                        if (!$libelle_j) $libelle_j .= trim($info_600_j[$a][$j]) ;
61                                else $libelle_j .= " ** ".trim($info_600_j[$a][$j]) ;
62                }
63                if($info_600_b[$a][0]) $libelle_final.=" ".trim($info_600_b[$a][0]);
64                if($info_600_f[$a][0]) $libelle_final.=" (".trim($info_600_f[$a][0]).")";
65               
66                if (!$libelle_j) $libelle_final = trim($info_600_a[$a][0]).$libelle_final ; else $libelle_final = trim($info_600_a[$a][0]).$libelle_final." ** ".$libelle_j ;
67                if (!$libelle_final) break ;
68                for ($j=0; $j<sizeof($info_600_x[$a]); $j++) {
69                        $libelle_final .= " -- ".trim($info_600_x[$a][$j]) ;
70                }
71                for ($j=0; $j<sizeof($info_600_y[$a]); $j++) {
72                        $libelle_final .= " -- ".trim($info_600_y[$a][$j]) ;
73                }
74                for ($j=0; $j<sizeof($info_600_z[$a]); $j++) {
75                        $libelle_final .= " -- ".trim($info_600_z[$a][$j]) ;
76                }
77                //if($info_600_3[$a][0])$libelle_final.=" @@3 ".trim($info_600_3[$a][0]);               
78                if ($champ_rameau) $champ_rameau.=$pmb_keyword_sep; 
79                $champ_rameau.=$libelle_final;
80        }               
81       
82        $info_601_a = $tableau_601["info_601_a"] ;
83        $info_601_3 = $tableau_601["info_601_3"] ;     
84        $info_601_j = $tableau_601["info_601_j"] ;
85        $info_601_x = $tableau_601["info_601_x"] ;
86        $info_601_y = $tableau_601["info_601_y"] ;
87        $info_601_z = $tableau_601["info_601_z"] ;
88        for ($a=0; $a<sizeof($info_601_a); $a++) {
89                $libelle_final="";
90                $libelle_j="";
91                for ($j=0; $j<sizeof($info_601_j[$a]); $j++) {
92                        if (!$libelle_j) $libelle_j .= trim($info_601_j[$a][$j]) ;
93                                else $libelle_j .= " ** ".trim($info_601_j[$a][$j]) ;
94                }
95                if (!$libelle_j) $libelle_final = trim($info_601_a[$a][0]) ; else $libelle_final = trim($info_601_a[$a][0])." ** ".$libelle_j ;
96                if (!$libelle_final) break ;
97                for ($j=0; $j<sizeof($info_601_x[$a]); $j++) {
98                        $libelle_final .= " -- ".trim($info_601_x[$a][$j]) ;
99                }
100                for ($j=0; $j<sizeof($info_601_y[$a]); $j++) {
101                        $libelle_final .= " -- ".trim($info_601_y[$a][$j]) ;
102                }
103                for ($j=0; $j<sizeof($info_601_z[$a]); $j++) {
104                        $libelle_final .= " -- ".trim($info_601_z[$a][$j]) ;
105                }
106                //if($info_601_3[$a][0])$libelle_final.=" @@3 ".trim($info_601_3[$a][0]);
107                if ($champ_rameau) $champ_rameau.=$pmb_keyword_sep;
108                $champ_rameau.=$libelle_final;
109        }               
110       
111        $info_606_a = $tableau_606["info_606_a"] ;
112        $info_606_3 = $tableau_606["info_606_3"] ;     
113        $info_606_j = $tableau_606["info_606_j"] ;
114        $info_606_x = $tableau_606["info_606_x"] ;
115        $info_606_y = $tableau_606["info_606_y"] ;
116        $info_606_z = $tableau_606["info_606_z"] ;
117        for ($a=0; $a<sizeof($info_606_a); $a++) {
118                $libelle_final="";
119                $libelle_j="";
120                for ($j=0; $j<sizeof($info_606_j[$a]); $j++) {
121                        if (!$libelle_j) $libelle_j .= trim($info_606_j[$a][$j]) ;
122                                else $libelle_j .= " ** ".trim($info_606_j[$a][$j]) ;
123                }
124                if (!$libelle_j) $libelle_final = trim($info_606_a[$a][0]) ; else $libelle_final = trim($info_606_a[$a][0])." ** ".$libelle_j ;
125                if (!$libelle_final) break ;
126                for ($j=0; $j<sizeof($info_606_x[$a]); $j++) {
127                        $libelle_final .= " -- ".trim($info_606_x[$a][$j]) ;
128                }
129                for ($j=0; $j<sizeof($info_606_y[$a]); $j++) {
130                        $libelle_final .= " -- ".trim($info_606_y[$a][$j]) ;
131                }
132                for ($j=0; $j<sizeof($info_606_z[$a]); $j++) {
133                        $libelle_final .= " -- ".trim($info_606_z[$a][$j]) ;
134                }
135                //if($info_606_3[$a][0])$libelle_final.=" @@3 ".trim($info_606_3[$a][0]);
136                if ($champ_rameau) $champ_rameau.=$pmb_keyword_sep;
137                $champ_rameau.=$libelle_final;
138        } 
139
140        $info_607_a = $tableau_607["info_607_a"] ;
141        $info_607_3 = $tableau_607["info_607_3"] ;
142        $info_607_j = $tableau_607["info_607_j"] ;
143        $info_607_x = $tableau_607["info_607_x"] ;
144        $info_607_y = $tableau_607["info_607_y"] ;
145        $info_607_z = $tableau_607["info_607_z"] ;
146        for ($a=0; $a<sizeof($info_607_a); $a++) {
147                $libelle_final="";
148                $libelle_j="";
149                for ($j=0; $j<sizeof($info_607_j[$a]); $j++) {
150                        if (!$libelle_j) $libelle_j .= trim($info_607_j[$a][$j]) ;
151                                else $libelle_j .= " ** ".trim($info_607_j[$a][$j]) ;
152                }
153                if (!$libelle_j) $libelle_final = trim($info_607_a[$a][0]) ; else $libelle_final = trim($info_607_a[$a][0])." ** ".$libelle_j ;
154                if (!$libelle_final) break ;
155                for ($j=0; $j<sizeof($info_607_x[$a]); $j++) {
156                        $libelle_final .= " -- ".trim($info_607_x[$a][$j]) ;
157                }
158                for ($j=0; $j<sizeof($info_607_y[$a]); $j++) {
159                        $libelle_final .= " -- ".trim($info_607_y[$a][$j]) ;
160                }
161                for ($j=0; $j<sizeof($info_607_z[$a]); $j++) {
162                        $libelle_final .= " -- ".trim($info_607_z[$a][$j]) ;
163                }
164                //if($info_607_3[$a][0])$libelle_final.=" @@3 ".trim($info_607_3[$a][0]);
165                if ($champ_rameau) $champ_rameau.=$pmb_keyword_sep;
166                $champ_rameau.=$libelle_final;
167        } 
168       
169        $info_608_a = $tableau_608["info_608_a"] ;
170        $info_608_3 = $tableau_608["info_608_3"] ;
171        $info_608_j = $tableau_608["info_608_j"] ;
172        $info_608_x = $tableau_608["info_608_x"] ;
173        $info_608_y = $tableau_608["info_608_y"] ;
174        $info_608_z = $tableau_608["info_608_z"] ;
175        for ($a=0; $a<sizeof($info_608_a); $a++) {
176                $libelle_final="";
177                $libelle_j="";
178                for ($j=0; $j<sizeof($info_608_j[$a]); $j++) {
179                        if (!$libelle_j) $libelle_j .= trim($info_608_j[$a][$j]) ;
180                                else $libelle_j .= " ** ".trim($info_608_j[$a][$j]) ;
181                }
182                if (!$libelle_j) $libelle_final = trim($info_608_a[$a][0]) ; else $libelle_final = trim($info_608_a[$a][0])." ** ".$libelle_j ;
183                if (!$libelle_final) break ;
184                for ($j=0; $j<sizeof($info_608_x[$a]); $j++) {
185                        $libelle_final .= " -- ".trim($info_608_x[$a][$j]) ;
186                }
187                for ($j=0; $j<sizeof($info_608_y[$a]); $j++) {
188                        $libelle_final .= " -- ".trim($info_608_y[$a][$j]) ;
189                }
190                for ($j=0; $j<sizeof($info_608_z[$a]); $j++) {
191                        $libelle_final .= " -- ".trim($info_608_z[$a][$j]) ;
192                }
193        //      if($info_608_3[$a][0])$libelle_final.=" @@3 ".trim($info_608_3[$a][0]);
194                if ($champ_rameau) $champ_rameau.=$pmb_keyword_sep;
195                $champ_rameau.=$libelle_final;
196        }       
197       
198        // $rameau est la variable traitée par la fonction traite_categories_from_form,
199        // $rameau est normalement POSTée, afin de pouvoir être traitée en lot, donc hors
200        // formulaire, il faut l'affecter.
201        $rameau = addslashes($champ_rameau) ;
202
203        return array(
204                "form" => "<input type='hidden' name='rameau' value='".htmlentities($champ_rameau,ENT_QUOTES,$charset)."' />",
205                "message" => "<br />Rameau sera intégré en zone d'indexation libre (Mots-clés) : ".htmlentities($champ_rameau,ENT_QUOTES,$charset)
206        );
207}
208
209function traite_categories_from_form() {
210        global $rameau ;
211        global $max_categ ;
212        global $f_free_index ;
213        global $pmb_keyword_sep ;
214        if (!$pmb_keyword_sep) $pmb_keyword_sep=" ; ";
215        if(trim($rameau)){
216                if (trim($f_free_index)) $f_free_index=$f_free_index.$pmb_keyword_sep.$rameau;
217                        else $f_free_index=$rameau;
218        }
219       
220        $categories = array () ;
221        for ($i=0; $i< $max_categ ; $i++) {
222                $var_categ = "f_categ_id$i" ;
223                global $$var_categ ;
224                if ($$var_categ) 
225                        $categories[] = array('categ_id' => $$var_categ );
226        }
227        return $categories ;
228}
229
230
231function create_categ($num_parent,$autorite, $libelle, $index) {
232       
233        global $thes;
234        $n = new noeuds();
235        $n->num_thesaurus = $thes->id_thesaurus;
236        $n->autorite = $autorite;
237        $n->num_parent = $num_parent;
238        $n->save();
239       
240        $c = new categories($n->id_noeud, 'fr_FR');
241        $c->libelle_categorie = $libelle;
242        $c->index_categorie = $index;
243        $c->save();
244        return $n->id_noeud;
245}
246
247function param_perso_form(&$p_perso) {
248        global $tableau_503;
249
250        $tab_non_rep=array();
251        if(count($tableau_503)){
252                for($i=0;$i<count($tableau_503["info_503"]);$i++){
253                       
254                        if($tableau_503["info_503"][$i]["a"] && !($tab_non_rep["titre"])){
255                                $rqt = "SELECT idchamp FROM notices_custom WHERE name='t_d_f_titre'";
256                                $res = pmb_mysql_query($rqt);
257                                if (pmb_mysql_num_rows($res)>0){
258                                        $id_champ=pmb_mysql_result($res,0);
259                                        //$p_perso->values[$id_champ][$i]=trim($tableau_503["info_503"][$i]["a"]);
260                                        $requete="select notices_custom_list_value from notices_custom_lists where notices_custom_list_lib='".addslashes(trim($tableau_503["info_503"][$i]["a"]))."' and notices_custom_champ='".$id_champ."'";
261                                        $resultat=pmb_mysql_query($requete);
262                                        if (pmb_mysql_num_rows($resultat)) {
263                                                $value=pmb_mysql_result($resultat,0,0);
264                                        } else {
265                                                $requete="select max(notices_custom_list_value*1) from notices_custom_lists where notices_custom_champ='".$id_champ."'";
266                                                $resultat=pmb_mysql_query($requete);
267                                                $max=@pmb_mysql_result($resultat,0,0);
268                                                $n=$max+1;
269                                                $requete="insert into notices_custom_lists (notices_custom_champ,notices_custom_list_value,notices_custom_list_lib) values('".$id_champ."',$n,'".addslashes(trim($tableau_503["info_503"][$i]["a"]))."')";
270                                                pmb_mysql_query($requete);
271                                                $value=$n;
272                                        }
273                                        $tab_non_rep["titre"]=1;       
274                                        $p_perso->values[$id_champ][$i]=$value;
275                                }
276                        }
277                       
278                        if($tableau_503["info_503"][$i]["e"]  && !($tab_non_rep["nom"])){
279                                $rqt = "SELECT idchamp FROM notices_custom WHERE name='t_d_f_nom'";
280                                $res = pmb_mysql_query($rqt);
281                                if (pmb_mysql_num_rows($res)>0){
282                                        $id_champ=pmb_mysql_result($res,0);
283                                        $p_perso->values[$id_champ][$i]=trim($tableau_503["info_503"][$i]["e"]);
284                                        $tab_non_rep["nom"]=1; 
285                                }
286                        }
287                       
288                        if($tableau_503["info_503"][$i]["f"] && !($tab_non_rep["prenom"])){
289                                $rqt = "SELECT idchamp FROM notices_custom WHERE name='t_d_f_prenom'";
290                                $res = pmb_mysql_query($rqt);
291                                if (pmb_mysql_num_rows($res)>0){
292                                        $id_champ=pmb_mysql_result($res,0);
293                                        $p_perso->values[$id_champ][$i]=trim($tableau_503["info_503"][$i]["f"]);
294                                        $tab_non_rep["prenom"]=1; 
295                                }
296                        }
297                       
298                        if($tableau_503["info_503"][$i]["h"] && !($tab_non_rep["qual"])){
299                                $rqt = "SELECT idchamp FROM notices_custom WHERE name='t_d_f_qualificatif'";
300                                $res = pmb_mysql_query($rqt);
301                                if (pmb_mysql_num_rows($res)>0){
302                                        $id_champ=pmb_mysql_result($res,0);
303                                        $p_perso->values[$id_champ][$i]=trim($tableau_503["info_503"][$i]["h"]);
304                                        $tab_non_rep["qual"]=1; 
305                                }
306                        }
307                       
308                        if(count($tableau_503["info_503_j"][$i])  && !($tab_non_rep["date"])){
309                                //Si j'ai une date
310                               
311                                $date="";
312                                for($p=0;$p<count($tableau_503["info_503_j"][$i]);$p++){
313                                        if(trim($tableau_503["info_503_j"][$i][$p])){
314                                                $jm=trim($tableau_503["info_503_d"][$i][$p]);
315                                                if($jm){
316                                                        //Si j'ai aussi le mois et le jour
317                                                        if(strlen($jm) == 4){
318                                                                if($date){
319                                                                        $date.=" - ".substr($jm,2,2)."/".substr($jm,0,2)."/".trim($tableau_503["info_503_j"][$i][$p]);
320                                                                }else{
321                                                                        $date=substr($jm,2,2)."/".substr($jm,0,2)."/".trim($tableau_503["info_503_j"][$i][$p]);
322                                                                }
323                                                               
324                                                        }else{
325                                                                if($date){
326                                                                        $date.=" - ".$jm." ".trim($tableau_503["info_503_j"][$i][$p]);
327                                                                }else{
328                                                                        $date=$jm." ".trim($tableau_503["info_503_j"][$i][$p]);
329                                                                }       
330                                                        }
331                                                }else{
332                                                        if($date){
333                                                                $date.=" - ".trim($tableau_503["info_503_j"][$i][$p]); 
334                                                        }else{
335                                                                $date=trim($tableau_503["info_503_j"][$i][$p]);
336                                                        }
337                                                }
338                                        }
339                                }
340                               
341                                if($date){
342                                        $rqt = "SELECT idchamp FROM notices_custom WHERE name='t_d_f_date'";
343                                        $res = pmb_mysql_query($rqt);
344                                        if (pmb_mysql_num_rows($res)>0){
345                                                $id_champ=pmb_mysql_result($res,0);
346                                                $p_perso->values[$id_champ][$i]=$date;
347                                                $tab_non_rep["date"]=1; 
348                                        }
349                                }
350                        }
351                       
352                        $lieu_etabl="";
353                        if(trim($tableau_503["info_503"][$i]["m"]) and trim($tableau_503["info_503"][$i]["n"])){
354                                $lieu_etabl=trim($tableau_503["info_503"][$i]["m"]).", ".trim($tableau_503["info_503"][$i]["n"]);
355                        }elseif(trim($tableau_503["info_503"][$i]["m"])){
356                                $lieu_etabl=trim($tableau_503["info_503"][$i]["m"]);
357                        }elseif(trim($tableau_503["info_503"][$i]["m"]) and trim($tableau_503["info_503"][$i]["n"])){
358                                $lieu_etabl=trim($tableau_503["info_503"][$i]["n"]);
359                        }
360                        if($lieu_etabl){
361                                $rqt = "SELECT idchamp FROM notices_custom WHERE name='t_d_f_lieu_etabl'";
362                                $res = pmb_mysql_query($rqt);
363                                if (pmb_mysql_num_rows($res)>0){
364                                        $id_champ=pmb_mysql_result($res,0);
365                                        $p_perso->values[$id_champ][$i]=$lieu_etabl; 
366                                }
367                        }
368                }
369        }
370        /*echo "<pre>";
371        print_r($p_perso);
372        echo "</pre>";*/
373}
374
375function traite_info_subst(&$mes_info){
376        //Je supprime les informations de date pour les auteurs personnes
377        for($i=0; $i< count($mes_info->aut_array);$i++){
378                if($mes_info->aut_array[$i]["type_auteur"] == "70"){
379                        $mes_info->aut_array[$i]["date"]="";
380                }
381        }
382       
383}       
Note: See TracBrowser for help on using the repository browser.