source: pmb4.2/trunk/fuentes/pmb/classes/authperso_notice.class.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: 17.1 KB
Line 
1<?php
2// +-------------------------------------------------+
3// | 2002-2007 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: authperso_notice.class.php,v 1.11.2.1 2015-12-07 15:28:15 vtouchard Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once("$class_path/authperso.class.php");
10
11class authperso_notice {
12        var $id=0; // id de la notice
13        var $onglets_info=array();
14        var $auth_info=array();
15        var $onglets_auth_list=array(); 
16       
17        function authperso_notice($id=0) {
18                $this->id=$id+0; // id de la notice
19                $this->fetch_data();
20        }
21       
22        function fetch_data() {         
23                global $dbh;
24               
25                $this->onglets_info=array();
26                $this->onglets_auth_list=array();
27                $authpersos = new authpersos();
28                // infos des autorités existantes
29                $this->onglets_info=$authpersos->get_onglet_list();
30               
31                if(!$this->id) return;
32               
33                // pour chaque autorités existantes récupérér les autorités affectés à la notice
34                $req="select * from authperso, notices_authperso,authperso_authorities where id_authperso=authperso_authority_authperso_num and notice_authperso_authority_num=id_authperso_authority and notice_authperso_notice_num=".$this->id."
35                order by notice_authperso_order";
36               
37                $res = pmb_mysql_query($req,$dbh);
38                while(($r=pmb_mysql_fetch_object($res))) {                     
39                        // get isbd ...
40                        $this->auth_info[$r->notice_authperso_authority_num]['onglet_num']=$r->authperso_notice_onglet_num;
41                        $this->auth_info[$r->notice_authperso_authority_num]['authperso_name']=$r->authperso_name;
42                        $this->auth_info[$r->notice_authperso_authority_num]['infos_global']=$r->authperso_infos_global;
43                        $this->auth_info[$r->notice_authperso_authority_num]['index_infos_global']=$r->authperso_index_infos_global;
44                        $authperso = new authperso($r->id_authperso);
45                        $isbd=$authperso->get_isbd($r->notice_authperso_authority_num);
46                        $this->onglets_auth_list[$r->authperso_notice_onglet_num][$r->id_authperso][$r->notice_authperso_authority_num]['id']=$r->notice_authperso_authority_num;
47                        $this->onglets_auth_list[$r->authperso_notice_onglet_num][$r->id_authperso][$r->notice_authperso_authority_num]['isbd']=$isbd;
48                        $this->onglets_auth_list[$r->authperso_notice_onglet_num][$r->id_authperso][$r->notice_authperso_authority_num]['authperso_name']=$r->authperso_name;           
49                        $info_fields=$authperso->get_info_fields($r->notice_authperso_authority_num);
50                        $this->auth_info[$r->notice_authperso_authority_num]['isbd']=$isbd;
51                        $this->auth_info[$r->notice_authperso_authority_num]['info_fields']=$info_fields;
52                //printr($info_fields);
53                }
54                               
55        }
56       
57        function get_notice_display(){
58                global $pmb_url_base;
59               
60                $aff="";
61                foreach($this->onglets_auth_list as $onglet_num => $onglet){
62                        $authperso_name="";
63                        foreach($onglet as $authperso_num => $auth_perso){
64                                foreach($auth_perso as $auth_num => $auth){
65                                        if($authperso_name!=$auth['authperso_name']){
66                                                $authperso_name=$auth['authperso_name'];
67                                                $aff.="<br><b>".$authperso_name."</b>&nbsp;: ";
68                                                $new=1;
69                                        }       
70                                        if(!$new)       $aff.=", ";                     
71                                        $aff.= '<a href="'.$pmb_url_base.'autorites.php?categ=authperso&sub=authperso_form&id_authperso='.$authperso_num.'&id='.$auth['id'].'">'.$auth['isbd'].'</a>'; 
72                                        $new=0;
73                                }
74                        }
75                }       
76                return $aff;
77        }
78       
79        function get_notice_display_list(){
80                $aff_list=array();
81                foreach($this->onglets_auth_list as $onglet_num => $onglet){
82                        $authperso_name="";
83                        foreach($onglet as $authperso_num => $auth_perso){
84                                $aff_list[$authperso_num]['isbd']="";
85                                $aff_list[$authperso_num]['name']="";
86                                foreach($auth_perso as $auth_num => $auth){
87                                        $aff_list[$authperso_num]['name']=$auth['authperso_name'];
88                                        if($aff_list[$authperso_num]['isbd'])$aff_list[$authperso_num]['isbd'].=", ";   
89                                        $aff_list[$authperso_num]['isbd'].=$auth['isbd'];
90                                }
91                        }
92                }
93                return $aff_list;
94        }
95       
96        function get_index_fields(){
97               
98                $index_fields=array();
99                foreach($this->auth_info as $auth){
100                        foreach($auth['info_fields'] as $field){
101                        //      printr($field);
102                                if($field['search'] ){
103                                        $index_fields[$field['code_champ']]['pond']=$field['pond'];
104                                        if($field['all_format_values'])
105                                        $index_fields[$field['code_champ']]['ss_champ'][][$field['code_ss_champ']].=$field['all_format_values'];
106                                }
107                        }
108                }
109                return $index_fields;           
110        }
111       
112        function get_index_fields_to_delete(){         
113                return authpersos::get_all_index_fields();
114        }
115       
116        function get_form(){
117                global $msg,$charset,$base_path;
118               
119                $onglet_all_tpl="                               
120                <script>
121               
122                function authperso_highlight(obj) {
123                        obj.style.background='#DDD';   
124                }
125               
126                function authperso_downlight(obj) {
127                        obj.style.background='';
128                }
129               
130            function fonction_raz_authperso(authperso_id) {
131                name=this.getAttribute('id').substring(4);
132                name_id = name.substr(0,11)+'_id'+name.substr(11);
133                document.getElementById(name_id).value=0;
134                document.getElementById(name).value='';
135            }
136           
137                function add_authperso(authperso_id) {
138                var template = document.getElementById('elauthperso'+ authperso_id );
139                var authperso=document.createElement('div');
140                authperso.className='row';
141               
142                        var suffixe = document.getElementById('max_authperso_'+ authperso_id).value;
143                   
144                authperso.setAttribute('id','drag_authperso_'+ authperso_id +'_' +suffixe);
145                authperso.setAttribute('order',suffixe);
146                authperso.setAttribute('highlight','authperso_highlight');
147                authperso.setAttribute('downlight','authperso_downlight');
148                authperso.setAttribute('dragicon','./images/icone_drag_notice.png');
149                authperso.setAttribute('handler','handle_'+ authperso_id +'_'  +suffixe);
150                authperso.setAttribute('recepttype','authperso'+authperso_id);
151                authperso.setAttribute('recept','yes');
152                authperso.setAttribute('dragtype','authperso'+authperso_id);
153                authperso.setAttribute('draggable','yes');       
154               
155                var nom_id = 'f_authperso_'+authperso_id+'_' + suffixe
156                var f_authperso = document.createElement('input');
157                f_authperso.setAttribute('name',nom_id);
158                f_authperso.setAttribute('id',nom_id);
159                f_authperso.setAttribute('type','text');
160                f_authperso.className='saisie-80emr';
161                f_authperso.setAttribute('value','');
162                        f_authperso.setAttribute('completion','authperso_'+authperso_id);
163                f_authperso.setAttribute('autfield','f_authperso_id_'+ authperso_id +'_' +suffixe);
164         
165                var del_f_authperso = document.createElement('input');
166                del_f_authperso.setAttribute('id','del_f_authperso_'+ authperso_id +'_' +suffixe);
167                del_f_authperso.onclick=fonction_raz_authperso;
168                del_f_authperso.setAttribute('type','button');
169                del_f_authperso.className='bouton';
170                del_f_authperso.setAttribute('readonly','');
171                del_f_authperso.setAttribute('value','$msg[raz]');
172       
173                var f_authperso_id = document.createElement('input');
174                f_authperso_id.name='f_authperso_id_'+ authperso_id +'_' +suffixe;
175                f_authperso_id.setAttribute('type','hidden');
176                f_authperso_id.setAttribute('id','f_authperso_id_'+ authperso_id +'_' +suffixe);
177                f_authperso_id.setAttribute('value','');       
178               
179                var f_authperso_span_handle = document.createElement('span');
180                f_authperso_span_handle.setAttribute('id','handle_'+ authperso_id +'_' +suffixe);
181                f_authperso_span_handle.style.float='left';
182                f_authperso_span_handle.style.paddingRight='7px';       
183               
184                var f_authperso_drag_img = document.createElement('img');
185                f_authperso_drag_img.setAttribute('src','./images/sort.png');
186                f_authperso_drag_img.style.width='12px';
187                f_authperso_drag_img.style.verticalAlign='middle';
188               
189                f_authperso_span_handle.appendChild(f_authperso_drag_img);
190                f_authperso_span_handle.appendChild(f_authperso_drag_img);
191               
192                authperso.appendChild(f_authperso_span_handle);
193               
194                authperso.appendChild(f_authperso);
195                var space=document.createTextNode(' ');
196                authperso.appendChild(space);
197                authperso.appendChild(del_f_authperso);
198                authperso.appendChild(f_authperso_id);
199       
200                template.appendChild(authperso);
201       
202                var tab_authperso_order = document.getElementById('tab_authperso_order_'+ authperso_id);
203                        if (tab_authperso_order.value != '') tab_authperso_order.value += ',authperso_'+ authperso_id +'_' +suffixe;
204                       
205                        document.getElementById('max_authperso_'+ authperso_id).value=suffixe*1+1*1 ;
206                ajax_pack_element(f_authperso);
207                init_drag();   
208            }
209                </script>
210                ";
211                $authperso_notice_onglet_tpl="
212                <div id='elonglet!!ongletnum!!Parent' class='parent'>
213                        <h3>
214                                <img src='./images/plus.gif' class='img_plus' name='imEx' id='elonglet!!ongletnum!!Img' onClick=\"expandBase('elonglet!!ongletnum!!', true); return false;\" title='".$msg["notice_champs_gestion"]."' border='0' />
215                                !!onglet_name!!
216                        </h3>
217                </div>                 
218                <div id='elonglet!!ongletnum!!Child' class='child' etirable='yes' title='".htmlentities($msg[notice_champs_gestion],ENT_QUOTES, $charset)."'>
219                        !!authperso_list!!
220                </div>
221                <hr class='spacer' />
222                ";
223               
224                $authperso_notice_elt_tpl= "
225                <script>
226                        allow_drag['authperso!!authperso_id!!']=new Array();
227                        allow_drag['authperso!!authperso_id!!']['authperso!!authperso_id!!']=true;
228                               
229                        // Fonction pour trier les authperso                     
230                        function authperso!!authperso_id!!_authperso!!authperso_id!!(dragged,target){
231                               
232                                var authperso=target.parentNode;
233                                authperso.insertBefore(dragged,target);
234                               
235                                authperso_downlight(target);
236                               
237                                recalc_recept();
238                                update_order!!authperso_id!!(dragged,target);
239                        }
240                       
241                        /*
242                         * Mis à jour de l'ordre
243                         */
244                        function update_order!!authperso_id!!(source,cible){
245                                var src_order =  source.getAttribute('order');
246                                var target_order = cible.getAttribute('order');
247                                var authperso = source.parentNode;
248                               
249                                var index = 0;
250                                var tab_authperso_order = new Array();
251                                for(var i=0;i<authperso.childNodes.length;i++){
252                                        if(authperso.childNodes[i].nodeType == 1){
253                                                if(authperso.childNodes[i].getAttribute('recepttype')=='authperso!!authperso_id!!'){
254                                                        authperso.childNodes[i].setAttribute('order',index);
255                                                        tab_authperso_order[index] = authperso.childNodes[i].getAttribute('id').substr(5);
256                                                        index++;
257                                                }
258                                        }
259                                }
260                                if(document.getElementById('tab_authperso_order_!!authperso_id!!')){
261                                        document.getElementById('tab_authperso_order_!!authperso_id!!').value=tab_authperso_order.join(',');
262                                }       
263                       
264                        }
265
266                        </script>               
267                        <div id='elauthpersoChild_auth!!authperso_id!!' title='!!auth_name!!' movable='yes'>                   
268                                <div id='elauthpersoChild_auth!!authperso_id!!a' class='row'>
269                                        <label for='f_img_load' class='etiquette'>!!auth_name!!</label>
270                                </div>
271                                <div id='elauthperso!!authperso_id!!' class='row'>
272                                                       
273                                <input type='hidden' name='max_authperso_!!authperso_id!!'  id='max_authperso_!!authperso_id!!' value=\"!!max_authperso!!\" />
274                               
275                                        <input type='hidden' name='tab_authperso_order_!!authperso_id!!' id='tab_authperso_order_!!authperso_id!!' value='!!tab_authperso_order!!' />       
276                                        <input type='button' class='bouton' value='$msg[parcourir]' onclick=\"openPopUp('./select.php?what=authperso&authperso_id=!!authperso_id!!&caller=notice&p1=f_authperso_id_!!authperso_id!!_&p2=f_authperso_!!authperso_id!!_&p3=!!authperso_id!!&max_field=max_authperso_!!authperso_id!!&dyn=3&parent=0&deb_rech=', 'select_authperso', 700, 500, -2, -2, '$select_authperso_prop')\" />
277                                    <input type='button' class='bouton' value='+' onClick=\"add_authperso('!!authperso_id!!');\"/>
278                                       
279                                   !!authlist!!
280                                 
281                                </div>
282                        </div>";
283               
284                $authperso_notice_elt_tpl_num="                                                                 
285                                        <div id='drag_authperso_!!authperso_id!!_!!iauthperso!!'  class='row' dragtype='authperso!!authperso_id!!' draggable='yes' recept='yes' recepttype='authperso!!authperso_id!!' handler='handle_!!authperso_id!!_!!iauthperso!!'         
286                                                dragicon=\"".$base_path."/images/icone_drag_notice.png\" dragtext='!!authperso_libelle!!' downlight=\"authperso_downlight\" highlight=\"authperso_highlight\"                   
287                                                order='!!iauthperso!!' style='' >
288                                                <span id=\"handle_!!authperso_id!!_!!iauthperso!!\" style=\"float:left; padding-right : 7px\"><img src=\"".$base_path."/images/sort.png\" style='width:12px; vertical-align:middle' /></span>
289                                       
290                                        <input type='text' class='saisie-80emr' id='f_authperso_!!authperso_id!!_!!iauthperso!!' name='f_authperso_!!authperso_id!!_!!iauthperso!!' completion='authperso_!!authperso_id!!' value=\"!!authperso_libelle!!\" completion=\"authpersoories_mul\" autfield=\"f_authperso_id_!!authperso_id!!_!!iauthperso!!\" />
291                                        <input type='button' class='bouton' value='$msg[raz]' onclick=\"this.form.f_authperso_!!authperso_id!!_!!iauthperso!!.value=''; this.form.f_authperso_id_!!authperso_id!!_!!iauthperso!!.value='0'; \" />
292                                        <input type='hidden' name='f_authperso_id_!!authperso_id!!_!!iauthperso!!' id='f_authperso_id_!!authperso_id!!_!!iauthperso!!' value='!!auth_id!!' />       
293                                        </div> 
294                ";                             
295               
296                foreach($this->onglets_info as $onglet_num => $onglet){ 
297                        $onglet_contens="";
298                        foreach($onglet as $elt){
299                                // Pour chaque type d'autorité dans l'onglet
300                                //printr($elt);
301                                $tpl_elt=$authperso_notice_elt_tpl;
302                                $iauthperso=0;
303                                $auth_list_tpl="";
304                                $tab_authperso_order=array();
305                                if(!count($this->onglets_auth_list[$onglet_num][$elt['id']])){
306                                        // pas d'autorité                                       
307                                        $auth_list_tpl=$authperso_notice_elt_tpl_num;   
308                                        $auth_list_tpl=str_replace('!!authperso_libelle!!',"", $auth_list_tpl);         
309                                        $auth_list_tpl=str_replace('!!iauthperso!!',$iauthperso, $auth_list_tpl);       
310                                        $auth_list_tpl=str_replace('!!auth_id!!',"", $auth_list_tpl);
311                                        $max_authperso=1;
312                                        $tab_authperso_order[]="authperso_".$elt['id']."_0";
313                                }else{
314                                        foreach ($this->onglets_auth_list[$onglet_num][$elt['id']] as $auth_id =>$auth){       
315                                                // Pour chaque autorité répétée
316                                                $auth_tpl=$authperso_notice_elt_tpl_num;                                               
317                                               
318                                                $auth_tpl=str_replace('!!authperso_libelle!!',$auth['isbd'], $auth_tpl);
319                                                $auth_tpl=str_replace('!!iauthperso!!',$iauthperso, $auth_tpl);
320                                                $auth_tpl=str_replace('!!auth_id!!',$auth_id, $auth_tpl);               
321                                               
322                                                $auth_list_tpl.=$auth_tpl;
323                                                $tab_authperso_order[]="authperso_".$elt['id']."_".$iauthperso;
324                                                $iauthperso++;
325                                                $max_authperso=$iauthperso;
326                                        }
327                                }
328                                $tpl_elt=str_replace('!!authlist!!',$auth_list_tpl, $tpl_elt);
329                                $tpl_elt=str_replace('!!auth_name!!',htmlentities($elt['name'], ENT_QUOTES, $charset), $tpl_elt);
330                                $tpl_elt=str_replace('!!authperso_id!!',$elt['id'], $tpl_elt);
331                                $tpl_elt=str_replace('!!iauthperso!!',0, $tpl_elt);
332                                $tpl_elt=str_replace('!!max_authperso!!',$max_authperso, $tpl_elt);
333                                $tpl_elt=str_replace('!!tab_authperso_order!!',implode(",",$tab_authperso_order), $tpl_elt);
334                                $onglet_contens.=$tpl_elt;                             
335                        }
336                        $onglet_tpl=$authperso_notice_onglet_tpl;
337                        $onglet_tpl=str_replace('!!authperso_list!!',$onglet_contens, $onglet_tpl);
338                        $onglet_tpl=str_replace('!!onglet_name!!',$elt['onglet_name'], $onglet_tpl);
339                        $onglet_tpl=str_replace('!!ongletnum!!',$onglet_num, $onglet_tpl);
340                        $onglet_all_tpl.=$onglet_tpl;
341                       
342                }
343                return $onglet_all_tpl;
344        }
345       
346        function delete(){
347                global $dbh;
348               
349                $req="delete from notices_authperso where notice_authperso_notice_num=".$this->id;
350                pmb_mysql_query($req, $dbh);                   
351        }
352       
353        function save_form(){
354                global $dbh;
355               
356                $authpersos = new authpersos();
357                $infos=$authpersos->get_data();
358                if(!count($infos)) return;
359                $this->delete();
360                               
361                foreach ($infos as $authperso){
362                        $authperso_id=$authperso['id'];
363                        $max_authperso="max_authperso_".$authperso_id;
364                        global $$max_authperso;
365                        $max_authperso=$$max_authperso;                 
366                        $order=0;       
367                       
368                        $tab_authperso_order="tab_authperso_order_".$authperso_id;
369                        global $$tab_authperso_order;
370                        $tab_authperso_order=$$tab_authperso_order;
371                        // value="authperso_1_2,authperso_1_0,authperso_1_1" ....
372                        $tab_order=explode(',',$tab_authperso_order);                   
373                        foreach($tab_order as $string_order){
374                                $tab_string_order=explode("_",$string_order);
375                                $final_ordre[]=$tab_string_order[2];
376                        }
377                       
378                        if($final_ordre){
379                                $order=0;
380                                foreach($final_ordre as $old_order){
381                                       
382                                        $auth_id="f_authperso_id_".$authperso_id."_".$old_order;
383                                        global $$auth_id;
384                                        $auth_id=$$auth_id;                                     
385                                        if($auth_id){
386                                                $req="insert into notices_authperso set notice_authperso_notice_num=".$this->id.", notice_authperso_authority_num= $auth_id, notice_authperso_order=".$order;
387                                                $result = pmb_mysql_query($req, $dbh);
388                                                $order++;
389                                        }
390                                }
391                        }else{
392                                $order=0;
393                                for($i=0;$i<$max_authperso; $i++ ){                                     
394                                        $auth_id="f_authperso_id_".$authperso_id."_".$i;
395                                        global $$auth_id;                       
396                                        $auth_id=$$auth_id;
397                                       
398                                        if($auth_id){                                   
399                                                $req="insert into notices_authperso set notice_authperso_notice_num=".$this->id.", notice_authperso_authority_num= $auth_id, notice_authperso_order=".$order;
400                                                $result = pmb_mysql_query($req, $dbh); 
401                                                $order++;
402                                        }
403                                }
404                        }
405                       
406                       
407                }
408        }
409       
410        function get_fields_search(){
411                $mots="";
412                foreach($this->auth_info as  $auth){
413                        if($mots)$mots.=" ";
414                        $mots.=$auth["infos_global"];
415                }
416                return $mots;
417        }
418} // authperso_notice class end
419       
Note: See TracBrowser for help on using the repository browser.