source: pmb4.2/trunk/fuentes/pmb/catalog/z3950/func_rameau_to_thesaurus.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: 6.1 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_rameau_to_thesaurus.inc.php,v 1.9 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($class_path."/thesaurus.class.php");
13require_once($class_path."/categories.class.php");
14global $thesaurus_defaut;
15
16//Attention, dans le multithesaurus, le thesaurus dans lequel on importe est le thesaurus par defaut
17$thes = new thesaurus($thesaurus_defaut);
18$rac = $thes->num_noeud_racine;
19
20function traite_categories_enreg($notice_retour,$categories,$thesaurus_traite=0) {
21
22        global $dbh;
23       
24        // si $thesaurus_traite fourni, on ne delete que les catégories de ce thesaurus, sinon on efface toutes
25        //  les indexations de la notice sans distinction de thesaurus
26        if (!$thesaurus_traite) $rqt_del = "delete from notices_categories where notcateg_notice='$notice_retour' ";
27        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) ";
28        $res_del = @pmb_mysql_query($rqt_del, $dbh);
29       
30        $rqt_ins = "insert into notices_categories (notcateg_notice, num_noeud, ordre_categorie) VALUES ";
31       
32        for($i=0 ; $i< sizeof($categories) ; $i++) {
33                $id_categ=$categories[$i]['categ_id'];
34                if ($id_categ) {
35                        $rqt = $rqt_ins . " ('$notice_retour','$id_categ', $i) " ; 
36                        $res_ins = @pmb_mysql_query($rqt, $dbh);
37                }
38        }
39}
40
41
42function traite_categories_for_form($tableau_600="",$tableau_601="",$tableau_602="",$tableau_605="",$tableau_606="",$tableau_607="",$tableau_608="") {
43       
44        global $charset, $pmb_keyword_sep, $rameau;
45        $info_606_a = $tableau_606["info_606_a"] ;
46        $info_606_j = $tableau_606["info_606_j"] ;
47        $info_606_x = $tableau_606["info_606_x"] ;
48        $info_606_y = $tableau_606["info_606_y"] ;
49        $info_606_z = $tableau_606["info_606_z"] ;
50       
51        $champ_rameau="";
52        for ($a=0; $a<sizeof($info_606_a); $a++) {
53                $libelle_final="";
54                $libelle_j="";
55                for ($j=0; $j<sizeof($info_606_j[$a]); $j++) {
56                        if (!$libelle_j) $libelle_j .= trim($info_606_j[$a][$j]) ;
57                                else $libelle_j .= " $pmb_keyword_sep ".trim($info_606_j[$a][$j]) ;
58                }
59                if (!$libelle_j) $libelle_final = trim($info_606_a[$a][0]) ; else $libelle_final = trim($info_606_a[$a][0])." $pmb_keyword_sep ".$libelle_j ;
60                if (!$libelle_final) break ;
61                for ($j=0; $j<sizeof($info_606_x[$a]); $j++) {
62                        $libelle_final .= " $pmb_keyword_sep ".trim($info_606_x[$a][$j]) ;
63                }
64                for ($j=0; $j<sizeof($info_606_y[$a]); $j++) {
65                        $libelle_final .= " $pmb_keyword_sep ".trim($info_606_y[$a][$j]) ;
66                }
67                for ($j=0; $j<sizeof($info_606_z[$a]); $j++) {
68                        $libelle_final .= " $pmb_keyword_sep ".trim($info_606_z[$a][$j]) ;
69                }
70                if ($champ_rameau) $champ_rameau.=" $pmb_keyword_sep ";
71                $champ_rameau.=$libelle_final;
72        } 
73
74        $rameau_form = serialize($tableau_606);
75       
76        // $rameau est la variable traitée par la fonction traite_categories_from_form,
77        // $rameau est normalement POSTée, afin de pouvoir être traitée en lot, donc hors
78        // formulaire, il faut l'affecter.
79        $rameau = addslashes(serialize($tableau_606)) ;
80
81        return array(
82                "form" => "<input type='hidden' name='rameau' value='".htmlentities($rameau_form,ENT_QUOTES,$charset)."' />",
83                "message" => "Rameau sera intégré avec les catégories existantes dans votre thésaurus par défaut (les catégories absentes seront intégrées en zone de mots clés libres) : <b>".htmlentities($champ_rameau,ENT_QUOTES,$charset)."</b>"
84        );
85}
86
87
88function traite_categories_from_form() {
89               
90        global $rameau, $categ_pas_trouvee ;
91        global $dbh;
92        global $thes;
93       
94        $tableau_606 = unserialize(stripslashes($rameau)) ;
95       
96        $info_606_a = $tableau_606["info_606_a"] ;
97        $info_606_j = $tableau_606["info_606_j"] ;
98        $info_606_x = $tableau_606["info_606_x"] ;
99        $info_606_y = $tableau_606["info_606_y"] ;
100        $info_606_z = $tableau_606["info_606_z"] ;
101       
102        $categ_pas_trouvee=array();
103       
104        for ($a=0; $a<sizeof($info_606_a); $a++) {
105                $libelle_final = trim($info_606_a[$a][0]) ;
106                if (!$libelle_final) break ; 
107                $res_a = categories::searchLibelle(addslashes($libelle_final), $thes->id_thesaurus, 'fr_FR', '');
108                if ($res_a) $categ_retour[]['categ_id'] = $res_a;
109                else $categ_pas_trouvee[]=$libelle_final;
110
111                // récup des sous-categ $j
112                for ($j=0 ; $j < sizeof($info_606_j[$a]) ; $j++) {
113                        $res_j = categories::searchLibelle(addslashes(trim($info_606_j[$a][$j])), $thes->id_thesaurus, 'fr_FR', '');
114                        if ($res_j) $categ_retour[]['categ_id'] = $res_j;
115                        else $categ_pas_trouvee[]=trim($info_606_j[$a][$j]);
116                } 
117               
118                // récup des sous-categ $x
119                for ($x=0 ; $x < sizeof($info_606_x[$a]) ; $x++) {
120                        $res_x = categories::searchLibelle(addslashes(trim($info_606_x[$a][$x])), $thes->id_thesaurus, 'fr_FR', '');
121                        if ($res_x) $categ_retour[]['categ_id'] = $res_x;
122                        else $categ_pas_trouvee[]=trim($info_606_x[$a][$x]);
123                } 
124               
125                for ($y=0 ; $y < sizeof($info_606_y[$a]) ; $y++) {
126                        $res_y = categories::searchLibelle(addslashes(trim($info_606_y[$a][$y])), $thes->id_thesaurus, 'fr_FR', '');
127                        if ($res_y) $categ_retour[]['categ_id'] = $res_y;
128                        else $categ_pas_trouvee[]=trim($info_606_y[$a][$y]);
129                } 
130               
131                for ($z=0 ; $z < sizeof($info_606_z[$a]) ; $z++) {
132                        $res_z = categories::searchLibelle(addslashes(trim($info_606_z[$a][$z])), $thes->id_thesaurus, 'fr_FR', '');
133                        if ($res_z) $categ_retour[]['categ_id'] = $res_z;
134                        else $categ_pas_trouvee[]=trim($info_606_z[$a][$z]);
135                } 
136        }
137// DEBUG echo "<pre>"; print_r($categ_retour) ; echo "</pre>"; exit ;
138return $categ_retour ;
139}
140
141
142function create_categ($num_parent, $libelle, $index) {
143       
144        global $thes;
145        $n = new noeuds();
146        $n->num_thesaurus = $thes->id_thesaurus;
147        $n->num_parent = $num_parent;
148        $n->save();
149       
150        $c = new categories($n->id_noeud, 'fr_FR');
151        $c->libelle_categorie = $libelle;
152        $c->index_categorie = $index;
153        $c->save();
154       
155        return $n->id_noeud;
156}       
Note: See TracBrowser for help on using the repository browser.