source: pmb4.2/trunk/fuentes/pmb/autorites/subjects/categ_update.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.8 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: categ_update.inc.php,v 1.28 2015-04-03 11:16:24 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9// si tout est OK, on a les variables suivantes à exploiter :
10// $id                  id de la catégorie (0 si nouvelle)
11// $category_libelle    libellé de la catégorie
12// $category_comment    commentaire de la catégorie
13// $category_parent_id  id de la catégorie parent
14// $category_parent     libellé de la catégorie parent
15//              note : peut être vide si l'utilisateur a vidé le champ -> suppression du parent dans ce cas
16// $category_voir_id    id de la forme retenue
17// $category_voir       libelle de la forme retenue
18//              même remarque que pour $category_parent
19
20require_once("$class_path/category.class.php");
21require_once("$class_path/thesaurus.class.php");
22require_once("$class_path/categories.class.php");
23require_once("$class_path/XMLlist.class.php");
24require_once("$class_path/aut_pperso.class.php");
25require_once($class_path."/synchro_rdf.class.php");
26require_once($class_path."/index_concept.class.php");
27require_once("$class_path/map/map_edition_controler.class.php");
28
29if (noeuds::isRacine($id)) {
30        error_form_message($msg['categ_forb']);
31        exit();         
32}
33
34if(!strlen($category_parent)) $category_parent_id = 0;
35if(!strlen($category_voir)) $category_voir_id = 0;
36
37if ($id && ($category_parent_id==$id || $category_voir_id==$id)) {
38        error_form_message($msg["categ_update_error_parent_see"]);
39        exit ;
40}
41
42//recuperation de la table des langues
43$langages = new XMLlist("$include_path/messages/languages.xml", 1);
44$langages->analyser();
45$lg = $langages->table;
46
47//recuperation du thesaurus session
48$id_thes = thesaurus::getSessionThesaurusId();
49$thes = new thesaurus($id_thes);       
50
51// libelle langue defaut thesaurus non renseigne
52if ( (trim($category_libelle[$thes->langue_defaut])) == '' ) {
53        error_form_message($msg["thes_libelle_categ_ref_manquant"].'\n('.$lg[$thes->langue_defaut].')');
54        exit ; 
55}
56
57//Vérification de l'unicité du numéro d'autorité
58$num_aut=trim(stripslashes($num_aut));
59
60if ($num_aut && !noeuds::isUnique($id_thes, $num_aut,$id) ) {
61        error_form_message($msg['categ_num_aut_not_unique']);
62        exit;
63}
64
65//Si pas de parent, le parent est le noeud racine du thesaurus
66if (!$category_parent_id) $category_parent_id = $thes->num_noeud_racine;
67
68//synchro_rdf : on empile les noeuds impactés pour les traiter plus loin
69if($pmb_synchro_rdf){
70        $arrayIdImpactes=array();
71        if($id){
72                $noeud=new noeuds($id);
73                //on est en mise à jour
74                $arrayIdImpactes[]=$id;
75                //parent
76                if($noeud->num_parent!=$thes->num_noeud_racine){
77                        $arrayIdImpactes[]=$noeud->num_parent;
78                }
79                //enfants
80                $res=noeuds::listChilds($id,1);
81                if(pmb_mysql_num_rows($res)){
82                        while($row=pmb_mysql_fetch_array($res)){
83                                $arrayIdImpactes[]=$row[0];
84                        }
85                }
86                //renvoi_voir
87                if($noeud->num_renvoi_voir){
88                        $arrayIdImpactes[]=$noeud->num_renvoi_voir;
89                }
90        }else{
91                //on est en création : rien à supprimer
92        }
93}
94//traitement noeud
95if($id) {
96        //noeud existant
97        $noeud = new noeuds($id);
98        if (!noeuds::isProtected($id)) {
99                $noeud->num_parent = $category_parent_id;
100                $noeud->num_renvoi_voir = $category_voir_id;
101                $noeud->authority_import_denied = $authority_import_denied;
102                $noeud->not_use_in_indexation = $not_use_in_indexation;
103                $noeud->autorite=$num_aut;
104                $noeud->save();
105        }
106} else {
107        //noeud a creer
108        $noeud = new noeuds();
109        $noeud->num_parent = $category_parent_id;
110        $noeud->num_renvoi_voir = $category_voir_id;
111        $noeud->autorite=$num_aut;
112        $noeud->num_thesaurus = $thes->id_thesaurus;
113        $noeud->authority_import_denied = $authority_import_denied;
114        $noeud->not_use_in_indexation = $not_use_in_indexation;
115        $noeud->save();
116        $id = $noeud->id_noeud;
117}
118// Indexation concepts
119if($thesaurus_concepts_active == 1 ){
120        $index_concept = new index_concept($id, TYPE_CATEGORY);
121        $index_concept->save();
122}
123// liens entre autorités
124require_once("$class_path/aut_link.class.php");
125$aut_link= new aut_link(AUT_TABLE_CATEG,$id);
126$aut_link->save_form();
127
128global $pmb_map_activate;
129if($pmb_map_activate){
130        $map = new map_edition_controler(AUT_TABLE_CATEG, $id);
131        $map->save_form();
132}
133
134$aut_pperso= new aut_pperso("categ",$id);
135$aut_pperso->save_form();
136
137//traitement categories
138foreach($lg as $key=>$value) {
139
140        if ( ($category_libelle[$key]) !== NULL ) {
141               
142                if ( ($category_libelle[$key] !== '')  || 
143                 ( ($category_libelle[$key] === '') && (categories::exists($id, $key)) ) ){
144
145                        $cat = new categories($id, $key);
146                        $cat->libelle_categorie = stripslashes($category_libelle[$key]);       
147                        $cat->note_application = stripslashes($category_na[$key]);
148                        $cat->comment_public = stripslashes($category_cm[$key]);                       
149                        $cat->index_categorie = strip_empty_words($category_libelle[$key]);
150                        $cat->save();
151                 }
152        }
153}
154
155
156if (!noeuds::isProtected($id)) {
157
158        //Ajout des renvois "voir aussi"
159        $requete="DELETE FROM voir_aussi WHERE num_noeud_orig=".$id;
160        pmb_mysql_query($requete);
161        for ($i=0; $i<$max_categ; $i++) {
162                $categ_id="f_categ_id".$i;
163                $categ_rec = "f_categ_rec".$i;
164                if ($$categ_id && $$categ_id!=$id) {
165                        $requete="INSERT INTO voir_aussi (num_noeud_orig, num_noeud_dest, langue) VALUES ($id,".$$categ_id.",'".$thes->langue_defaut."' )";
166                        @pmb_mysql_query($requete);
167                        if ($$categ_rec) {
168                                $requete="INSERT INTO voir_aussi (num_noeud_orig, num_noeud_dest, langue) VALUES (".$$categ_id.",".$id.",'".$thes->langue_defaut."' )";                         
169                        } else {
170                                $requete="DELETE from voir_aussi where num_noeud_dest = '".$id."' and num_noeud_orig = '".$$categ_id."' ";
171                        }
172                        @pmb_mysql_query($requete);
173       
174                }
175        }
176}
177//synchro_rdf : le noeud a été créé/modifié
178if($pmb_synchro_rdf){
179        //De nouveaux noeuds impactés ?
180        if((!count($arrayIdImpactes))||(!in_array($id,$arrayIdImpactes))){
181                $arrayIdImpactes[]=$id;
182        }
183        if($noeud->num_parent!=$thes->num_noeud_racine){
184                if((!count($arrayIdImpactes))||(!in_array($noeud->num_parent,$arrayIdImpactes))){
185                        $arrayIdImpactes[]=$noeud->num_parent;
186                }
187        }
188        //enfants
189        $res=noeuds::listChilds($id,1);
190        if(pmb_mysql_num_rows($res)){
191                while($row=pmb_mysql_fetch_array($res)){
192                        if((!count($arrayIdImpactes))||(!in_array($row[0],$arrayIdImpactes))){
193                                $arrayIdImpactes[]=$row[0];
194                        }
195                }
196        }
197        //renvoi_voir
198        if($noeud->num_renvoi_voir){
199                if((!count($arrayIdImpactes))||(!in_array($noeud->num_renvoi_voir,$arrayIdImpactes))){
200                        $arrayIdImpactes[]=$noeud->num_renvoi_voir;
201                }
202        }
203        //on met le tout à jour
204        $synchro_rdf=new synchro_rdf();
205        if(count($arrayIdImpactes)){
206                foreach($arrayIdImpactes as $idNoeud){
207                        $synchro_rdf->delConcept($idNoeud);
208                        $synchro_rdf->storeConcept($idNoeud);
209                }
210        }
211        //On met à jour le thésaurus pour les topConcepts
212        $synchro_rdf->updateAuthority($id_thes,'thesaurus');
213}
214
215if ($user_input != "") {
216        include('./autorites/subjects/search.inc.php');
217} else {
218        include('./autorites/subjects/default.inc.php');
219}
Note: See TracBrowser for help on using the repository browser.