source: lliurex-jocomunico/trunk/fuentes/lliurex-jocomunico.install/var/lib/application/models/Main_model.php @ 5728

Last change on this file since 5728 was 5728, checked in by joamuran, 3 years ago

Added zero-installed and updated jocomunico

  • Property svn:executable set to *
File size: 13.8 KB
Line 
1<?php 
2
3class Main_model extends CI_Model {
4   
5    public function __construct()
6    {
7        parent::__construct();
8        $this->load->database();
9    }
10   
11    // Petición del contenido para mostrar en las vistas (textos)
12    public function getContent($section, $idLanguage)
13    {
14        $this->db->select('tagString, content'); // Seleccionar les columnes
15        $this->db->from('Content');// Seleccionem la taula
16        $this->db->where('section', $section);// filtrem per columnes
17        $this->db->where('ID_CLanguage', $idLanguage);// filtrem per columnes
18        $this->db->order_by('Content.tagString', 'asc');
19        $query = $this->db->get();// Fem la query i la guardem a la variable query
20
21        return $query->result_array();// retornem l'array query amb els resultats
22    }
23   
24    // Idiomas disponibles en la tabla Languages.
25    public function getLanguagesAvailable(){
26        //Peticion a base de datos
27            $this->db->select('ID_Language, languageName, languageabbr'); // Seleccionar les columnes
28            $this->db->from('Languages');// Seleccionem la taula
29            $query = $this->db->get();
30
31            return $query->result_array();// retornamos el array
32    }
33   
34    // Comprobación de un campo de una columna de una tabla
35    public function checkData($table, $column, $data){
36
37        $this->db->where($column, $data);
38        $query = $this->db->get($table);
39
40        if ($query->num_rows() > 0)
41        {
42           $result = "true";
43        } else{
44           $result = "false";
45        }
46
47        return $result;
48    }
49    // Comprobación de un campo de una celda de una tabla
50    public function checkSingleData($table, $columnId, $id, $column, $data){
51
52        $this->db->select($column); // Seleccionar les columnes
53        $this->db->from($table);// Seleccionem la taula
54        $this->db->where($columnId, $id);// filtrem per columnes
55        $this->db->where($column, $data);// filtrem per columnes
56        $query = $this->db->get();// Fem la query i la guardem a la variable query
57        $array = $query->result_array();
58
59        if ($query->num_rows() == 0)
60        {
61            $result = "false";
62        }else if($array[0][$column]==$data){
63            $result = "true";
64        }else{
65            $result = "false";
66        }
67        $response = [
68                "data" => $result
69            ];
70        return $response;
71    }
72   
73    // Get first data from table $table where content in column $column are like $data
74    public function getFirstData($table, $column, $data){
75        $this->db->from($table);// Seleccionem la taula
76        $this->db->where($column, $data);// filtrem per columnes
77        $data = $this->db->get()->result_array();
78       
79        return $data[0];
80    }
81    // Get single data from table $table where content in column $column are like $data
82    public function getSingleData($table, $column, $data, $column2, $data2){
83        $this->db->from($table);// Seleccionem la taula
84        $this->db->where($column, $data);// filtrem per columnes
85        $this->db->where($column2, $data2);// filtrem per columnes
86        $data = $this->db->get()->result_array();
87       
88        return $data;
89    }
90    // Delete data from table $table where content in column $column are like $data
91    public function deleteData($table, $column, $data){
92        $this->db->where($column, $data);// filtrem per columnes
93        $query = $this->db->delete($table);
94        return $query;
95    }
96    // Delete single data from table $table where content in column $column are like $data
97    public function deleteSingleData($table, $column, $data, $column2, $data2){
98        $this->db->where($column, $data);// filtrem per columnes
99        $this->db->where($column2, $data2);// filtrem per columnes
100        $query = $this->db->delete($table);
101        return $query;
102    }
103   
104    // Get data from table $table where content in column $column are like $data
105    public function getData($table, $column, $data){
106        $this->db->from($table);// Seleccionem la taula
107        $this->db->where($column, $data);// filtrem per columnes
108        $data = $this->db->get()->result_array();
109       
110        return $data;
111    }
112   
113    // Guardar contenido en una tabla.
114    public function saveData($table, $data){
115
116        $saved = $this->db->insert($table, $data);
117
118        return $saved;
119    }
120    // Guardar contenido de un array en una tabla.
121    public function saveArrayData($table, $data){
122
123        $saved = $this->db->insert_batch($table, $data);
124
125        return $saved;
126    }
127    // Cambiar contenido de una tabla.
128    public function changeData($table, $column, $id, $data){
129
130        $this->db->where($column, $id);
131        $saved = $this->db->update($table, $data);
132
133        return $saved;
134    }
135   
136    // Escrivir en la tabla Usuario
137    public function saveUser($SUname, $ID_ULanguage){
138
139        $this->db->select('ID_SU'); // Seleccionar les columnes
140        $this->db->from('SuperUser');// Seleccionem la taula
141        $this->db->where('SUname', $SUname);// filtrem per columnes
142        $ID_SU = $this->db->get()->result_array();
143
144        $id = array_column($ID_SU, 'ID_SU');
145
146        $data = [
147            "ID_USU" => $id[0],
148            "ID_ULanguage" => $ID_ULanguage,
149            "cfgExpansionLanguage" => $ID_ULanguage,
150        ];
151
152        $saved = $this->db->insert('User', $data);
153       
154        $this->db->select('ID_User'); // Seleccionar les columnes
155        $this->db->from('User');// Seleccionem la taula
156        $this->db->where('ID_USU', $id[0]);// filtrem per columnes
157        $ID_User = $this->db->get()->result_array();
158
159        $idU = array_column($ID_User, 'ID_User');
160
161        //Retornamos el ID_SUser y el ID_User
162        $dataSaved = [
163            "ID_SU" => $id[0],
164            "ID_U" => $idU[0],
165            "saved" => $saved,
166        ];
167
168        return $dataSaved;
169    }
170   
171    // Validar usuario al registrarse
172    public function userValidation($emailKey, $ID_SU){
173
174        $this->db->select('pswd, UserValidated'); // Seleccionar les columnes
175        $this->db->from('SuperUser');// Seleccionem la taula
176        $this->db->where('ID_SU', $ID_SU);// filtrem per columnes
177        $query = $this->db->get()->result_array();
178
179        $pass = array_column($query, 'pswd');
180        $userValidated = array_column($query, 'UserValidated');
181
182        $hash = md5($pass[0] . $ID_SU);
183
184        $userExist=false;
185        $validated=false;
186
187        if($hash == $emailKey){
188            $userExist=true;
189        }
190        if($userValidated[0] == 0){
191            $this->db->set('UserValidated', '1');
192            $this->db->where('ID_SU', $ID_SU);
193            $validated = $this->db->update('SuperUser');
194        }
195
196        $response = [
197                "validated" => $validated,
198                "userExist" => $userExist
199            ];
200        return $response;
201    }
202    //Get user configuratión
203    public function getConfig($ID_SU)
204    {
205        // Get user data and user config data
206        $this->db->from('SuperUser');
207        $this->db->join('User', 'SuperUser.cfgDefUser = User.ID_User');
208        $this->db->join('Languages', 'SuperUser.cfgDefUser = User.ID_User AND User.ID_ULanguage = Languages.ID_Language', 'right');
209        $this->db->where('ID_USU', $ID_SU);
210        $query1 = $this->db->get()->result_array();
211        $userConfig = $query1[0];
212
213        //Get Users
214        $this->db->select('ID_User, ID_ULanguage, cfgExpansionLanguage');
215        $this->db->from('User');
216        $this->db->where('ID_USU', $ID_SU);
217        $this->db->order_by('User.ID_ULanguage', 'asc');
218        $query2 = $this->db->get()->result_array();
219
220        //Get Languages
221        $this->db->select('ID_Language, languageName');
222        $this->db->from('Languages');
223        $this->db->order_by('Languages.ID_Language', 'asc');
224        $query3 = $this->db->get()->result_array();
225
226       
227        // Guardamos los datos como objeto
228        $Array = [
229            'userConfig' => $userConfig,
230            'users' => $query2,
231            'languages' => $query3,
232        ];
233       
234        // Save user config data in the COOKIES
235        $this->session->set_userdata('idusu', $userConfig["ID_User"]);
236        $this->session->set_userdata('uname', $userConfig["SUname"]);
237        $this->session->set_userdata('ulanguage', $userConfig["cfgExpansionLanguage"]);
238        //MODIF: Cuando lo juntemos con jose dará fallo. Jose tiene que cambiar "uinterfacelangauge" por este
239        $this->session->set_userdata('uinterfacelangauge', $userConfig["ID_ULanguage"]);
240        $this->session->set_userdata('uinterfacelangtype', $userConfig["type"]);
241        $this->session->set_userdata('uinterfacelangnadjorder', $userConfig["nounAdjOrder"]);
242        $this->session->set_userdata('uinterfacelangncorder', $userConfig["nounComplementOrder"]);
243        $this->session->set_userdata('uinterfacelangabbr', $userConfig["languageabbr"]);
244        $this->session->set_userdata('cfgAutoEraseSentenceBar', $userConfig["cfgAutoEraseSentenceBar"]);
245        $this->session->set_userdata('isfem', $userConfig["cfgIsFem"]);
246        $this->session->set_userdata('cfgExpansionOnOff', $userConfig["cfgExpansionOnOff"]);
247        $this->session->set_userdata('cfgPredBarNumPred', $userConfig["cfgPredBarNumPred"]);
248
249        // Save Expansion language in the COOKIES
250        $this->db->select('canExpand');
251        $this->db->where('ID_Language', $userConfig["cfgExpansionLanguage"]);
252        $query3 = $this->db->get('Languages');
253
254        if ($query3->num_rows() > 0) {
255            $aux = $query3->result();
256            $canExpand = $aux[0]->canExpand;
257
258            if ($canExpand == '1'){
259                $this->session->set_userdata('ulangabbr', $userConfig["languageabbr"]);
260            }else{
261                $this->session->set_userdata('ulangabbr', 'ES');
262            }
263        }
264
265        return $Array;
266    }
267    //Return last $day days from historic table
268    function getHistoric($idusu, $day){
269        $date = date('Y-m-d', strtotime("-".$day." day"));
270        $this->db->from('S_Historic');
271        $this->db->where_in('Pictograms.ID_PUser', array('1', $this->session->userdata('idusu')));
272        $this->db->where('sentenceDate >', $date);
273        $this->db->where('ID_SHUser', $idusu);
274        $this->db->join('R_S_HistoricPictograms', 'S_Historic.ID_SHistoric = R_S_HistoricPictograms.ID_RSHPSentence');
275        $this->db->join('Pictograms', 'R_S_HistoricPictograms.pictoid = Pictograms.pictoid');
276        $this->db->order_by('sentenceDate', 'desc');
277        $this->db->order_by('ID_SHistoric', 'desc');
278        $query = $this->db->get();
279
280        if ($query->num_rows() > 0) {
281            $output = $query->result();
282        } else
283            $output = null;
284
285        return $output;
286    }
287    //delete all historic after last 30 days
288    function deleteHistoric(){
289        $date = date('Y-m-d', strtotime("-30 day"));
290        $this->db->from('S_Historic');
291        $this->db->join('R_S_HistoricPictograms', 'S_Historic.ID_SHistoric = R_S_HistoricPictograms.ID_RSHPSentence');
292        $this->db->where('sentenceDate <', $date);
293        $query = $this->db->delete();
294        return;
295    }
296    //get historic sentence
297    function getHistoricSentence($idusu, $ID_SHistoric){
298        $this->db->where('ID_SHistoric', $ID_SHistoric);
299        $this->db->where('ID_SHUser', $idusu);
300        $query = $this->db->get('S_Historic');
301        return $query->result_array()[0];
302    }
303    //get historic sentences with pictos
304    function getSentencesWithPictos($idusu, $ID_Folder){
305        $this->db->from('S_Sentence');
306        $this->db->where_in('Pictograms.ID_PUser', array('1', $this->session->userdata('idusu')));
307        $this->db->where('ID_SFolder', $ID_Folder);
308        $this->db->where('ID_SSUser', $idusu);
309        $this->db->join('R_S_SentencePictograms', 'S_Sentence.ID_SSentence = R_S_SentencePictograms.ID_RSSPSentence');
310        $this->db->join('Pictograms', 'R_S_SentencePictograms.pictoid = Pictograms.pictoid');
311        $this->db->order_by('R_S_SentencePictograms.ID_RSSPSentencePicto', 'asc');
312        $query = $this->db->get();
313       
314        if ($query->num_rows() > 0) {
315            $output = $query->result();
316        } else
317            $output = null;
318
319        return $output;
320    }
321    //Get higher sentence Id from S_Sentence table
322    public function getHigherSentenceId($ID_Folder, $idusu){
323        $this->db->from('S_Sentence');
324        $this->db->where('ID_SFolder', $ID_Folder);
325        $this->db->where('ID_SSUser', $idusu);
326        $this->db->order_by('ID_SSentence', 'desc');
327        $query = $this->db->get()->result_array();
328
329        return $query[0]['ID_SSentence'];
330    }
331    //get historic folders ordered by folderOrder descended
332    public function getHistoricFolders($idusu){
333        $this->db->from('S_Folder');// Seleccionem la taula
334        $this->db->where('ID_SFUser', $idusu);// filtrem per columnes
335        $this->db->order_by('folderOrder', 'desc');
336        $data = $this->db->get()->result_array();
337       
338        return $data;
339    }
340    // Change historic folder data.
341    public function changeHistFolder($idusu, $ID_Folder, $data){
342
343        $this->db->where('ID_Folder', $ID_Folder);
344        $this->db->where('ID_SFUser', $idusu);
345        $saved = $this->db->update('S_Folder', $data);
346
347        return $saved;
348    }
349    //get sentences in folder ordered by posInFolder
350    function getSentencesOrdered($idusu, $ID_SFolder){
351        $this->db->from('S_Sentence');
352        $this->db->where('ID_SFolder', $ID_SFolder);
353        $this->db->where('ID_SSUser', $idusu);
354        $this->db->order_by('posInFolder', 'asc');
355        $query = $this->db->get();
356       
357        if ($query->num_rows() > 0) {
358            $output = $query->result();
359        } else
360            $output = null;
361
362        return $output;
363    }
364   
365    function restartErrorVoices($idusu) {
366       
367        $data = array(
368            'errorTemp' => '0',
369        );
370       
371        $this->db->where('ID_User', $idusu);
372        $this->db->update('User', $data);
373    }
374}
Note: See TracBrowser for help on using the repository browser.