source: pmb4.2/trunk/fuentes/pmb/classes/nomenclature/nomenclature_workshop.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: 7.1 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_workshop.class.php,v 1.11 2015-04-03 11:16:23 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9/**
10 * class nomenclature_workshop
11 * Représente un atelier dans une nomenclature
12 */
13class nomenclature_workshop{
14
15        /** Aggregations: */
16
17        /** Compositions: */
18
19         /*** Attributes: ***/
20
21        /**
22         * Identifiant de l'atelier
23         * @access protected
24         */
25        protected $id;
26       
27        /**
28         * Nom de l'atelier
29         * @access protected
30         */
31        protected $label;
32        protected $num_nomenclature;
33        protected $order;
34        protected $instruments =array();
35        protected $instruments_data =array();
36
37
38        /**
39         * Constructeur
40         *
41         * @param int id Identifiant de l'atelier
42         
43         * @return void
44         * @access public
45         */
46        public function __construct($id=0) {
47                if($id){
48                        $this->id = $id*1;
49                       
50                }
51                $this->fetch_datas();
52        } // end of member function __construct
53
54        public function fetch_datas(){
55                global $dbh;
56               
57                $this->instruments =array();
58                $this->instruments_data=array();
59                $this->label = "";
60                $this->num_nomenclature =0;
61                $this->order =0;
62                if($this->id){
63                        //le nom de l'atelier
64                        $query = "select * from nomenclature_workshops where id_workshop = ".$this->id ." order by workshop_order asc, workshop_label";
65                        $result = pmb_mysql_query($query,$dbh);
66                        if(pmb_mysql_num_rows($result)){
67                                if($row = pmb_mysql_fetch_object($result)){
68                                        $this->label = $row->workshop_label;
69                                        $this->num_nomenclature = $row->workshop_num_nomenclature;
70                                        $this->order= $row->workshop_order;
71                                        //récupération des instruments
72                                        $query = "select workshop_instrument_num_instrument, workshop_instrument_number,workshop_instrument_order from nomenclature_workshops_instruments where workshop_instrument_num_workshop = ".$this->id." order by workshop_instrument_order asc";
73                                        $result = pmb_mysql_query($query,$dbh);
74                                        if(pmb_mysql_num_rows($result)){
75                                                while($row = pmb_mysql_fetch_object($result)){
76                                                        $this->add_instrument(new nomenclature_instrument($row->workshop_instrument_num_instrument));                                                   
77                                                        $this->instruments_data[$row->workshop_instrument_num_instrument]['effective']=$row->workshop_instrument_number;
78                                                        $this->instruments_data[$row->workshop_instrument_num_instrument]['order']=$row->workshop_instrument_order;
79                                                }
80                                        }
81                                }
82                        }
83                }
84        }
85       
86        public function add_instrument( $instrument) {
87                $this->instruments[] = $instrument;
88        }
89       
90        public function get_data(){
91                $data_intruments=array();
92                foreach ($this->instruments as $instrument)     {                       
93                        $data=$instrument->get_data();
94                        $data['effective']=$this->instruments_data[$data['id']]['effective'];
95                        $data['order']=$this->instruments_data[$data['id']]['order'];
96                        $data_intruments[]=$data;
97                }
98                return(
99                        array(
100                                "id" => $this->id,
101                                "label" => $this->label,
102                                "num_nomenclature" => $this->num_nomenclature,
103                                "instruments" => $data_intruments,
104                                "order" => $this->order
105                        )
106                );
107       
108        }
109       
110        public function get_name(){     
111                return $this->label;
112        }
113       
114        public function save_form($data){
115               
116                $this->label=stripslashes($data["label"]);
117                $this->num_nomenclature=$data["num_nomenclature"]*1;           
118                $this->order=$data["order"]*1;
119               
120                $this->instruments_data=array();
121                if(is_array($data["instruments"]))
122                foreach ($data["instruments"] as $instrument){
123                        $this->instruments_data[$instrument['id']]['id']=$instrument['id']*1;
124                        $this->instruments_data[$instrument['id']]['effective']=$instrument['effective']*1;
125                        $this->instruments_data[$instrument['id']]['order']=$instrument['order']*1;
126                }               
127                $this->save();
128        }               
129       
130        public function save(){ 
131                global $dbh;   
132               
133                $fields="
134                        workshop_label='". addslashes($this->label) ."',
135                        workshop_num_nomenclature='".$this->num_nomenclature."',
136                        workshop_order='".$this->order."'
137                        ";
138               
139                $req="INSERT INTO nomenclature_workshops SET $fields ";
140                pmb_mysql_query($req, $dbh);
141                $this->id=pmb_mysql_insert_id();
142               
143                foreach ($this->instruments_data as $instrument){                       
144                        $req="INSERT INTO nomenclature_workshops_instruments SET
145                                workshop_instrument_num_workshop='".$this->id."',
146                                workshop_instrument_num_instrument='".$instrument['id']."',
147                                workshop_instrument_number='".$instrument['effective']."',
148                                workshop_instrument_order='".$instrument['order']."'
149                                ";
150                        pmb_mysql_query($req, $dbh);                   
151                }
152                $this->fetch_datas();
153        }
154       
155        public function delete(){
156                global $dbh;   
157               
158                $req = "DELETE FROM nomenclature_workshops_instruments WHERE workshop_instrument_num_workshop='$this->id' ";
159                pmb_mysql_query($req, $dbh);   
160               
161                $req = "DELETE FROM nomenclature_workshops WHERE id_workshop='$this->id' ";
162                pmb_mysql_query($req, $dbh);
163               
164                $this->id=0;
165                $this->fetch_datas();
166        }       
167       
168//      /**
169//       * Méthode qui indique si l'atelier est complet et cohérent
170//       *
171//       * @return bool
172//       * @access public
173//       */
174//      public function check( ) {
175//              return $this->valid;
176//      } // end of member function check
177       
178        /**
179         * Getter
180         *
181         * @return string
182         * @access public
183         */
184        public function get_label( ) {
185                return $this->label;
186        } // end of member function get_label
187
188        /**
189         * Setter
190         *
191         * @param string label Nom de l'atelier
192
193         * @return void
194         * @access public
195         */
196        public function set_label( $label ) {
197                $this->label = $label;
198        } // end of member function set_label
199
200        /**
201         * Getter
202         *
203         * @return nomenclature_instrument
204         * @access public
205         */
206        public function get_instruments( ) {
207                return $this->instruments;
208        } // end of member function get_instruments
209
210        /**
211         * Setter
212         *
213         * @param nomenclature_instrument instruments Tableau des instruments
214
215         * @return void
216         * @access public
217         */
218        public function set_instruments( $instruments ) {
219                $this->instruments = $instruments;
220        } // end of member function set_instruments
221       
222//      public function get_musicstand($indice){
223//              return $this->musicstands[$indice];
224//      }
225       
226        public function get_id(){
227                return $this->id;
228        }
229
230        /**
231         * Setter
232         *
233         * @param string abbreviation Nomenclature abrégée
234       
235         * @return void
236         * @access public
237         */
238        public function set_abbreviation( $abbreviation ) {
239                $this->abbreviation = pmb_preg_replace('/\s+/', '', $abbreviation);
240        } // end of member function set_abbreviation
241       
242        /**
243         * Getter
244         *
245         * @return string
246         * @access public
247         */
248        public function get_abbreviation( ) {
249                return  pmb_preg_replace('/\s+/', '', $this->abbreviation);
250        } // end of member function get_abbreviation
251       
252        /**
253         * Calcule et affecte la nomenclature abrégée à  partir de l'arbre
254         *
255         * @return void
256         * @access public
257         */
258        public function calc_abbreviation( ) {
259                $tinstruments = array();
260                if(is_array($this->instruments)) {
261//                      foreach ($this->musicstands as $musicstand) {
262//                              $nomenclature_musicstand = new nomenclature_musicstand($musicstand->get_id());
263//                              $nomenclature_musicstand->calc_abbreviation();
264//                              $tmusicstands[] = $nomenclature_musicstand->get_abbreviation();
265//                      }
266                }
267                $this->set_abbreviation(implode(".", $tmusicstands));
268        } // end of member function calc_abbreviation
269       
270} // end of nomenclature_workshop
Note: See TracBrowser for help on using the repository browser.