source: pmb4.2/trunk/fuentes/pmb/classes/nomenclature/nomenclature_record_formation.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: 11.0 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2014 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: nomenclature_record_formation.class.php,v 1.20 2015-04-03 11:16:23 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once($class_path."/nomenclature/nomenclature_workshop.class.php");
10require_once($class_path."/nomenclature/nomenclature_formation.class.php");
11
12/**
13 * class nomenclature_record_formation
14 * Représente une formation de la nomenclature d'une notice
15 */
16class nomenclature_record_formation{
17
18        /** Aggregations: */
19
20        /** Compositions: */
21
22         /*** Attributes: ***/
23
24        public $num_record=0;
25        public $num_formation=0;
26        public $num_type=0;
27        public $label="";
28        public $abbreviation="";
29        public $notes="";
30        public $order=0;
31        public $nature=0;
32        public $workshops=array();
33        public $instruments =array();
34        public $instruments_other =array();
35        public $instruments_data =array();
36       
37        /**
38         * Constructeur
39         *
40         * @param int id de nomenclature_notices_nomenclatures: id_notice_nomenclature
41         
42         * @return void
43         * @access public
44         */
45        public function __construct($id=0) {
46
47                $this->id = $id*1;                     
48
49                $this->fetch_datas();
50        } // end of member function __construct
51
52        public function fetch_datas(){
53                global $dbh;
54               
55                $this->num_record=0;           
56                $this->num_formation=0;         
57                $this->num_type=0;     
58                $this->label="";
59                $this->abbreviation="";
60                $this->notes="";                               
61                $this->order=0;                                                                         
62                $this->workshops=array();                       
63                $this->instruments =array();// non standard
64                $this->instruments_other =array();// non standard
65                $this->instruments_data=array();
66                $this->nature=0;
67                if($this->id){
68                        $query = "select * from nomenclature_notices_nomenclatures where id_notice_nomenclature = ".$this->id;
69                        $result = pmb_mysql_query($query,$dbh);
70                        if(pmb_mysql_num_rows($result)){
71                                if($row = pmb_mysql_fetch_object($result)){
72                                        $this->num_record=$row->notice_nomenclature_num_notice;         
73                                        $this->num_formation=$row->notice_nomenclature_num_formation;           
74                                        $this->num_type=$row->notice_nomenclature_num_type;     
75                                        $this->label=$row->notice_nomenclature_label;
76                                        $this->abbreviation=$row->notice_nomenclature_abbreviation;
77                                        $this->notes=$row->notice_nomenclature_notes;                           
78                                        $this->order=$row->notice_nomenclature_order;   
79                                       
80                                        $formation=new nomenclature_formation($row->notice_nomenclature_num_formation);         
81                                        $this->nature=$formation->get_nature();
82                                        if(!$this->nature){
83                                                // formation instruments
84                                                // Ateliers de la nomenclature de la notice
85                                                $query = "select id_workshop from nomenclature_workshops where workshop_num_nomenclature = ".$this->id." order by workshop_order, workshop_label";
86                                                $result = pmb_mysql_query($query,$dbh);
87                                                if($result){
88                                                        if(pmb_mysql_num_rows($result)){
89                                                                while($row = pmb_mysql_fetch_object($result)){ 
90                                                                        $this->add_workshop( new nomenclature_workshop($row->id_workshop));                             
91                                                                }       
92                                                        }
93                                                }
94                                                // Instruments non standard de la nomenclature de la notice
95                                                $query = "select * from nomenclature_exotic_instruments where exotic_instrument_num_nomenclature = ".$this->id." order by exotic_instrument_order";
96                                                $result = pmb_mysql_query($query,$dbh);
97                                                if($result){
98                                                        if(pmb_mysql_num_rows($result)){
99                                                                while($row = pmb_mysql_fetch_object($result)){ 
100                                                                        $id_exotic_instrument=$row->id_exotic_instrument;       
101                                                                        $this->add_instrument($id_exotic_instrument,new nomenclature_instrument($row->exotic_instrument_num_instrument));
102                                                                        $this->instruments_data[$id_exotic_instrument]['effective']=$row->exotic_instrument_number;
103                                                                        $this->instruments_data[$id_exotic_instrument]['order']=$row->exotic_instrument_order; 
104                                                                        $this->instruments_data[$id_exotic_instrument]['id']=$row->exotic_instrument_num_instrument;
105                                                                        $this->instruments_data[$id_exotic_instrument]['id_exotic_instrument']=$id_exotic_instrument;
106                                                                       
107                                                                        $this->instruments_data[$id_exotic_instrument]['other']=array();
108                                                                        $query = "select * from nomenclature_exotic_other_instruments where exotic_other_instrument_num_exotic_instrument = ".$id_exotic_instrument." order by exotic_other_instrument_order";
109                                                                        $result_other = pmb_mysql_query($query,$dbh);
110                                                                        if($result_other){
111                                                                                if(pmb_mysql_num_rows($result_other)){
112                                                                                        $count_other=0;
113                                                                                        while($row = pmb_mysql_fetch_object($result_other)){
114                                                                                                $id_exotic_other_instrument=$row->id_exotic_other_instrument;
115                                                                                                $this->add_other_instrument($id_exotic_instrument,new nomenclature_instrument($row->exotic_other_instrument_num_instrument));
116                                                                                               
117                                                                                                $this->instruments_data[$id_exotic_instrument]['other'][$count_other]['id']=$row->exotic_other_instrument_num_instrument;
118                                                                                                $this->instruments_data[$id_exotic_instrument]['other'][$count_other]['order']=$row->exotic_other_instrument_order;
119                                                                                                $count_other++;
120                                                                                        }
121                                                                                       
122                                                                                }
123                                                                        }
124                                                                }               
125                                                        }
126                                                }
127                                        // fin formation instrument
128                                        }else{
129                                                // formation voix
130                                               
131                                        }// fin formation voix
132                                       
133                                }               
134                        }
135                }
136        }
137       
138        public function get_formation_nature($formation) {
139                return($formation->nature);
140        }       
141       
142        public function add_workshop( $workshop ) {
143                $this->workshops[] = $workshop;
144        }
145       
146        public function add_instrument($id_exotic_instrument, $instrument) {
147                $this->instruments[$id_exotic_instrument]= $instrument;
148        }
149       
150        public function add_other_instrument($id_exotic_instrument, $instrument) {
151                $this->instruments_other[$id_exotic_instrument][] = $instrument;
152        }
153       
154        public function get_data(){
155               
156                // Ateliers de la nomenclature de la notice
157                $data_workshop=array();
158                foreach($this->workshops as $workshop){
159                        $data_workshop[]=$workshop->get_data();
160                }
161                // Instruments non standards de la nomenclature de la notice
162                $data_intruments=array();
163                foreach ($this->instruments as $key => $instrument)     {
164                        $data=$instrument->get_data();
165                        $data['effective']=$this->instruments_data[$key]['effective'];
166                        $data['order']=$this->instruments_data[$key]['order'];
167                        if($this->instruments_other[$key]){
168                                foreach ($this->instruments_other[$key] as $key_other => $instrument_other)     {
169                                        $data_other=$instrument_other->get_data();
170                                        $data_other['order']=$this->instruments_data[$key]['other'][$key_other]['order'];
171                                        $data['other'][]=$data_other;
172                                }
173                        }                       
174                        $data_intruments[]=$data;
175                }
176               
177                // data de la nomenclature de la notice
178                return (
179                        array(
180                                "id" => $this->id,
181                                "num_record" => $this->num_record,
182                                "num_formation" => $this->num_formation,
183                                "num_type" => $this->num_type,
184                                "nature" => $this->nature,
185                                "label" => $this->label,
186                                "abbreviation" => $this->abbreviation,
187                                "notes" => $this->notes,
188                                "workshops" => $data_workshop,
189                                "instruments" => $data_intruments,
190                                "order" => $this->order
191                        )
192                );
193        }
194       
195        public function save_form($data) {     
196                $this->num_record=$data["num_record"]*1;               
197                $this->num_formation=$data["num_formation"]*1;         
198                $this->num_type=$data["num_type"]*1;   
199                $this->label=stripslashes($data["label"]);
200                $this->abbreviation=stripslashes($data["abbr"]);
201                $this->notes=stripslashes($data["notes"]);                             
202                $this->order=$data["order"]*1; 
203               
204                $this->workshops=array();                       
205                $this->instruments =array();// non standard
206                $this->instruments_data=array();
207               
208                // instruments non standarts de la nomenclature de la notice
209                if(is_array($data["instruments"]))
210                foreach($data["instruments"] as $formation_instrument){
211                        $id_instrument=$formation_instrument["id"]*1;
212                        $this->instruments_data[$id_instrument]["id"]=$id_instrument;
213                        $this->instruments_data[$id_instrument]["effective"]=$formation_instrument["effective"]*1;
214                        $this->instruments_data[$id_instrument]["order"]=$formation_instrument["order"]*1;
215               
216                        $this->instruments_data[$id_instrument]["other"]=array();
217                        $other_order=1;
218                        if(is_array($formation_instrument["other"]))
219                        foreach($formation_instrument["other"] as $instrument_other){
220                                $id_instrument_other=$instrument_other["id"]*1;
221                                $this->instruments_data[$id_instrument]["other"][$id_instrument_other]["id"]=$id_instrument_other;
222                                $this->instruments_data[$id_instrument]["other"][$id_instrument_other]["order"]=$instrument_other["order"]*1;   
223                        }
224                       
225                }
226               
227                $this->save(); 
228               
229                // Ateliers de la nomenclature de la notice
230                if(is_array($data["workshops"]))
231                foreach($data["workshops"] as $formation_workshop){
232                        $workshop = new nomenclature_workshop($formation_workshop["id"]);
233                        $formation_workshop["num_nomenclature"]=$this->id;
234                        $workshop->save_form($formation_workshop);
235                }               
236        }
237       
238        public function save(){
239                global $dbh;
240                               
241                $fields="
242                        notice_nomenclature_num_notice='".$this->num_record."',
243                        notice_nomenclature_num_formation='".$this->num_formation."',
244                        notice_nomenclature_num_type='".$this->num_type."',
245                        notice_nomenclature_label='". addslashes($this->label) ."',
246                        notice_nomenclature_abbreviation='". addslashes($this->abbreviation) ."',
247                        notice_nomenclature_notes='". addslashes($this->notes) ."',
248                        notice_nomenclature_order='".$this->order."'
249                ";             
250
251                $req="INSERT INTO nomenclature_notices_nomenclatures SET $fields ";
252               
253                pmb_mysql_query($req, $dbh);
254                $this->id=pmb_mysql_insert_id();
255               
256                foreach($this->instruments_data as $formation_instrument){                     
257                        $req="INSERT INTO nomenclature_exotic_instruments SET
258                        exotic_instrument_num_instrument=".$formation_instrument["id"].",
259                        exotic_instrument_number=".$formation_instrument["effective"].",
260                        exotic_instrument_order=".$formation_instrument["order"].",                     
261                        exotic_instrument_num_nomenclature=".$this->id;
262                        pmb_mysql_query($req, $dbh);
263                        $id_exotic_instrument=pmb_mysql_insert_id();           
264                       
265                        if(is_array($formation_instrument["other"]) && $id_exotic_instrument)
266                        foreach($formation_instrument["other"] as $instrument_other){
267                                $req="INSERT INTO nomenclature_exotic_other_instruments SET
268                                exotic_other_instrument_num_instrument=".$instrument_other["id"].",
269                                exotic_other_instrument_order=".$instrument_other["order"].",                   
270                                exotic_other_instrument_num_exotic_instrument=".$id_exotic_instrument;
271                                pmb_mysql_query($req, $dbh);   
272                        }
273                }
274               
275                $this->fetch_datas();
276        }
277       
278        public function delete(){
279                global $dbh;
280               
281                foreach($this->workshops as $workshop){
282                        $workshop->delete();
283                }
284               
285                foreach($this->instruments_data as $id_exotic_instrument => $formation_instrument){
286                        foreach($formation_instrument["other"]  as $instrument_other){
287                                $req = "DELETE FROM nomenclature_exotic_other_instruments WHERE exotic_other_instrument_num_exotic_instrument=".$id_exotic_instrument;
288                        }
289                        pmb_mysql_query($req, $dbh);
290                }
291               
292                $req = "DELETE FROM nomenclature_exotic_instruments WHERE exotic_instrument_num_nomenclature=".$this->id;
293                pmb_mysql_query($req, $dbh);
294               
295                $req="DELETE from nomenclature_notices_nomenclatures WHERE id_notice_nomenclature = ".$this->id;
296                pmb_mysql_query($req, $dbh);
297               
298                $this->id=0;
299                $this->fetch_datas();
300        }
301       
302        public function get_id(){
303                return $this->id;
304        }
305
306} // end of nomenclature_record_formation
Note: See TracBrowser for help on using the repository browser.