source: lliurex-jocomunico/trunk/fuentes/lliurex-jocomunico.install/var/lib/application/controllers/Board.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: 33.4 KB
Line 
1<?php
2
3if (!defined('BASEPATH'))
4    exit('No direct script access allowed');
5
6require APPPATH . '/libraries/REST_Controller.php';
7
8class Board extends REST_Controller {
9
10    public function __construct() {
11        parent::__construct();
12
13        $this->load->model('BoardInterface');
14        $this->load->model('Lexicon');
15        $this->load->library('Myword');
16        $this->load->library('Myslot');
17        $this->load->library('Mypattern');
18        $this->load->library('Myexpander');
19        $this->load->library('Myprediction');
20        $this->load->library('Myaudio');
21        $this->load->library('session');
22    }
23
24    public function index_get() {
25        // CHECK COOKIES
26        if (!$this->session->userdata('uname')) {
27            redirect(base_url(), 'location');
28        } else {
29            if (!$this->session->userdata('cfguser')) {
30                $this->BoardInterface->loadCFG($this->session->userdata('uname'));
31                $this->load->view('MainBoard', true);
32            } else {
33                $this->load->view('MainBoard', true);
34            }
35        }
36    }
37
38    public function loadCFG_post() {
39        $postdata = file_get_contents("php://input");
40        $request = json_decode($postdata);
41        $luid = $request->lusuid;
42        //MODIF: mirar que id de lenguage es
43        $data = array(
44            'uinterfacelangauge' => $luid // Id language
45        );
46    }
47
48    /*
49     * Get the cell's info
50     */
51
52    public function getCell_post() {
53        $postdata = file_get_contents("php://input");
54        $request = json_decode($postdata);
55        $pos = $request->pos;
56        $idboard = $request->idboard;
57
58        $info = $this->BoardInterface->getCell($pos, $idboard);
59
60
61        $response = [
62            'info' => $info[0]
63        ];
64
65        $this->response($response, REST_Controller::HTTP_OK);
66    }
67
68    /*
69     * Get the cells of the boards that will be displayed and the
70     * number of rows and columns in order to set the proportion
71     */
72
73    public function getCellboard_post() {
74        $postdata = file_get_contents("php://input");
75        $request = json_decode($postdata);
76        $idboard = $request->idboard;
77
78        $output = $this->BoardInterface->getBoardStruct($idboard);
79        $columns = $output[0]->width;
80        $rows = $output[0]->height;
81        $name = $output[0]->Bname;
82        $primaryBoard = $output[0]->primaryBoard;
83        $autoReturn = $output[0]->autoReturn;
84        $autoRead = $output[0]->autoReadSentence;
85
86
87        $response = [
88            'col' => $columns,
89            'row' => $rows,
90            'name' => $name,
91            'primaryBoard' => $primaryBoard,
92            'autoReturn' => $autoReturn,
93            'autoRead' => $autoRead
94        ];
95
96        $this->response($response, REST_Controller::HTTP_OK);
97    }
98
99    public function showCellboard_post() {
100        $postdata = file_get_contents("php://input");
101        $request = json_decode($postdata);
102        $idboard = $request->idboard;
103
104        $array = array();
105
106        $output = $this->BoardInterface->getBoardStruct($idboard);
107        if ($output != null) {
108            $columns = $output[0]->width;
109            $rows = $output[0]->height;
110            $autoRead = $output[0]->autoRead;
111
112            $array = $this->BoardInterface->getCellsBoard($idboard);
113
114
115            $response = [
116                'col' => $columns,
117                'row' => $rows,
118                'data' => $array,
119                'autoRead' => $autoRead
120            ];
121
122            $this->response($response, REST_Controller::HTTP_OK);
123        }else{
124            $response = [
125                'data' => null
126            ];
127
128            $this->response($response, REST_Controller::HTTP_OK);
129        }
130    }
131
132    public function modifyNameboard_post() {
133        $this->BoardInterface->initTrans();
134
135        $postdata = file_get_contents("php://input");
136        $request = json_decode($postdata);
137        $Name = $request->Name;
138        $IDnumboard = $request->ID;
139
140        $this->BoardInterface->updateName($Name, $IDnumboard);
141        $this->BoardInterface->commitTrans();
142    }
143
144    /*
145     * Estos van en otro controlador que seria el de edicion, pero aun no estan hechos
146     */
147    /*
148     * Returns de cells of the boards that will be displayed and the
149     * number of rows and columns in order to set the proportion
150     * Modify the number of rows and columns and add or remove cells.
151     */
152
153    public function modifyCellboard_post() {
154        $this->BoardInterface->initTrans();
155
156        $postdata = file_get_contents("php://input");
157        $request = json_decode($postdata);
158        $c = $request->c;
159        $r = $request->r;
160        $idboard = $request->idboard;
161
162        $output = $this->BoardInterface->getBoardStruct($idboard);
163        $this->BoardInterface->updateNumCR($c, $r, $idboard);
164        $columnsDiff = $c - $output[0]->width;
165        $rowsDiff = $r - $output[0]->height;
166
167
168
169
170        if ($columnsDiff > 0) {
171            $this->addColumns($output[0]->width, $output[0]->height, $idboard, $columnsDiff);
172        } elseif ($columnsDiff < 0) {
173            $this->removeColumns($output[0]->width, $output[0]->height, $idboard, -$columnsDiff);
174        } elseif ($rowsDiff > 0) {
175            $this->addRows($output[0]->width, $output[0]->height, $idboard, $rowsDiff);
176        } elseif ($rowsDiff < 0) {
177            $this->removeRows($output[0]->width, $output[0]->height, $idboard, -$rowsDiff);
178        }
179
180        $this->BoardInterface->commitTrans();
181    }
182
183    /*
184     * Add one or more columns to the board. Each cell keeps his physical position
185     * currentPos: Cell position in the new "array"
186     * oldCurrentPos: Cell position in the old "array"
187     * For each row: We create one cell for each column to add
188     *             : We move up the other cells in that row
189     * We go backwards through the array
190     */
191
192    public function addColumns($columns, $rows, $idBoard, $columnsToAdd) {
193        $currentPos = ($columns + $columnsToAdd) * $rows;
194        $oldCurrentPos = $columns * $rows;
195        for ($row = 0; $row < $rows; $row++) {
196            for ($i = $columns; $i < $columns + $columnsToAdd; $i++) {
197                $this->BoardInterface->newCell($currentPos, $idBoard);
198                $currentPos--;
199            }
200            for ($column = 0; $column < $columns; $column++) {
201                $this->BoardInterface->updatePosCell($oldCurrentPos, $currentPos, $idBoard);
202                $currentPos--;
203                $oldCurrentPos--;
204            }
205        }
206    }
207
208    /*
209     * Remove one or more columns in the board. Each cell keeps his physical position
210     * The same than adding columns. We move down and remove instead.
211     */
212
213    public function removeColumns($columns, $rows, $idBoard, $columnsToSub) {
214        $currentPos = 1;
215        $oldCurrentPos = 1;
216        //We can add a start trans and commit at the end?
217        for ($row = 0; $row < $rows; $row++) {
218            for ($column = 0; $column < $columns - $columnsToSub; $column++) {
219                $this->BoardInterface->updatePosCell($oldCurrentPos, $currentPos, $idBoard);
220                $oldCurrentPos++;
221                $currentPos++;
222            }
223            for ($i = $columns - $columnsToSub; $i < $columns; $i++) {
224                $cell = $this->BoardInterface->getIDCell($oldCurrentPos, $idBoard);
225                $this->BoardInterface->removeCell($cell[0]->ID_RCell, $idBoard);
226                $oldCurrentPos++;
227            }
228        }
229    }
230
231    /*
232     * Add one or more rows to the board. Each cell keeps his physical position
233     * currentPos: The last position + 1 (the position where the cell will be added)
234     * For each row we add one cell for each column the board has
235     */
236
237    public function addRows($columns, $rows, $idBoard, $rowsToAdd) {
238        $currentPos = $columns * $rows + 1;
239        for ($row = 0; $row < $rowsToAdd; $row++) {
240            for ($column = 0; $column < $columns; $column++) {
241                $this->BoardInterface->newCell($currentPos, $idBoard);
242                $currentPos++;
243            }
244        }
245    }
246
247    /*
248     * Remove one or more rows in the board. Each cell keeps his physical position
249     * The same than adding rows. We remove instead.
250     */
251
252    public function removeRows($columns, $rows, $idBoard, $rowsToSub) {
253        $currentPos = $columns * $rows;
254        for ($row = 0; $row < $rowsToSub; $row++) {
255            for ($column = 0; $column < $columns; $column++) {
256                $cell = $this->BoardInterface->getIDCell($currentPos, $idBoard);
257                $this->BoardInterface->removeCell($cell[0]->ID_RCell, $idBoard);
258                $currentPos--;
259            }
260        }
261    }
262
263    /*
264     * Add the clicked word (pictogram) in the S_Temp database table.
265     * Then, get the entire sentence from this table.
266     */
267
268    public function addWord_post() {
269        //To get the parameters
270        $postdata = file_get_contents("php://input");
271        $request = json_decode($postdata);
272        $id = $request->id;
273        $imgtemp = $request->imgtemp;
274
275        $idusu = $this->session->userdata('idusu');
276        $this->Lexicon->afegirParaula($idusu, $id, $imgtemp);
277
278        $data = $this->Lexicon->recuperarFrase($idusu);
279        $newdata = $this->inserty($data);
280
281        $response = [
282            'data' => $newdata
283        ];
284
285        $this->response($response, REST_Controller::HTTP_OK);
286    }
287
288    /*
289     * Get the sentence
290     */
291
292    public function getTempSentence_post() {
293        $idusu = $this->session->userdata('idusu');
294
295        $data = $this->Lexicon->recuperarFrase($idusu);
296
297        $newdata = $this->inserty($data);
298
299        $response = [
300            'data' => $newdata
301        ];
302        $this->response($response, REST_Controller::HTTP_OK);
303    }
304
305    /*
306     * Insert a especial picto (concatenation picto) in the array.
307     */
308
309    public function inserty($data) {
310        $newdata = array();
311        $j = 0;
312        for ($i = 0; $i < count($data); $i++) {
313            $newdata[$j] = $data[$i];
314            if ($data[$i]->coord) {
315                $j++;
316                $newdata[$j] = (object) array('imgtemp' => "/img/pictosespeciales/y.png");
317            }
318            $j++;
319        }
320        return $newdata;
321    }
322
323    /*
324     * Remove the last word (pictogram) added in the S_Temp database table.
325     * Then, get the entire sentence from this table.
326     */
327
328    public function deleteLastWord_post() {
329
330        $idusu = $this->session->userdata('idusu');
331        $id = $this->BoardInterface->getLastWord($idusu);
332
333        $this->Lexicon->eliminarParaula($id->ID_RSTPSentencePicto);
334
335        $data = $this->Lexicon->recuperarFrase($idusu);
336
337        $newdata = $this->inserty($data);
338
339        $response = [
340            'data' => $newdata
341        ];
342        $this->response($response, REST_Controller::HTTP_OK);
343    }
344
345    /*
346     * Remove the entire phrase (pictograms) in the S_Temp database table.
347     */
348
349    public function deleteAllWords_post() {
350
351        $idusu = $this->session->userdata('idusu');
352        $this->BoardInterface->removeSentence($idusu);
353
354        $data = $this->Lexicon->recuperarFrase($idusu);
355
356        $newdata = $this->inserty($data);
357
358        $response = [
359            'data' => $newdata
360        ];
361        $this->response($response, REST_Controller::HTTP_OK);
362    }
363
364    /*
365     * Copy the S_Temp table to the S_Historic table and all this dependecies.
366     * Also remove the entire phrase (pictograms) in the S_Temp database table.
367     */
368
369    public function generate_post() {
370
371        $this->BoardInterface->initTrans();
372
373        $postdata = file_get_contents("php://input");
374        $request = json_decode($postdata);
375        $tense = $request->tense;
376        $tipusfrase = $request->tipusfrase;
377        $negativa = $request->negativa;
378        $idusu = $this->session->userdata('idusu');
379        $this->Lexicon->insertarFrase($idusu, $tipusfrase, $tense, $negativa);
380
381
382        $this->BoardInterface->commitTrans();
383
384        if ($this->BoardInterface->statusTrans() === FALSE) {
385            $response = [
386                'error' => "errorText"
387            ];
388            $this->response($response, 500);
389        } else {
390            $expander = new Myexpander();
391            $expander->expand();
392           
393            $info = $expander->info;
394            $errorText = "";
395           
396            if ($info[error]) {
397                $errorCode = $info[errorcode];
398                $errorText = $this->BoardInterface->get_errorText($errorCode);
399               
400                $response = [
401                    'info' => $info,
402                    'errorText' => $errorText[0][content]
403                ];
404            } else {
405                $response = [
406                    'info' => $info,
407                    'errorText' => ""
408                ];
409            }
410
411            $this->response($response, REST_Controller::HTTP_OK);
412        }
413    }
414
415    /*
416     * Get the functions in a list to create the dropdown menu
417     */
418
419    public function getFunctions_post() {
420
421        $functions = $this->BoardInterface->getFunctions();
422
423        $response = [
424            'functions' => $functions
425        ];
426        $this->response($response, REST_Controller::HTTP_OK);
427    }
428
429    /*
430     * Get the primary user board (the primary board in her/his primary group board)
431     */
432
433    public function getPrimaryUserBoard_post() {
434
435        $board = $this->BoardInterface->getPrimaryGroupBoard();
436        $primaryBoard = $this->BoardInterface->getPrimaryBoard($board[0]->ID_GB);
437
438        $response = [
439            'idboard' => $primaryBoard[0]->ID_Board
440        ];
441        $this->response($response, REST_Controller::HTTP_OK);
442    }
443
444    /*
445     * Get the user boards in a list to create the dropdown menu
446     */
447
448    public function getBoards_post() {
449        $postdata = file_get_contents("php://input");
450        $request = json_decode($postdata);
451        $idboard = $request->idboard;
452
453        $board = $this->BoardInterface->getIDGroupBoards($idboard);
454        $boards = $this->BoardInterface->getBoards($board[0]->ID_GBBoard);
455        $primaryBoard = $this->BoardInterface->getPrimaryBoard($board[0]->ID_GBBoard);
456        $nameGBoard = $this->BoardInterface->getInfoGroupBoard($board[0]->ID_GBBoard);
457
458        $response = [
459            'boards' => $boards,
460            'primaryBoard' => $primaryBoard[0],
461            'name' => $nameGBoard[0]->GBname
462        ];
463        $this->response($response, REST_Controller::HTTP_OK);
464    }
465
466    /*
467     * Get the function
468     */
469
470    public function getFunction_post() {
471        $postdata = file_get_contents("php://input");
472        $request = json_decode($postdata);
473        $id = $request->id;
474        $tense = $request->tense;
475        $tipusfrase = $request->tipusfrase;
476        $negativa = $request->negativa;
477
478        $control = "";
479        $function = $this->BoardInterface->getFunction($id);
480        $value = $function[0]->functValue;
481        $type = $function[0]->functType;
482
483        switch ($type) {
484            case "modif":
485                $idusu = $this->session->userdata('idusu');
486                $this->Lexicon->afegirModifNom($idusu, $value);
487                break;
488            case "tense":
489                $tense = $value;
490                break;
491            case "tipusfrase":
492                $tipusfrase = $value;
493                break;
494            case "negativa":
495                $negativa = $value;
496                break;
497            case "control":
498                $control = $value;
499                break;
500        }
501        $idusu = $this->session->userdata('idusu');
502        $data = $this->Lexicon->recuperarFrase($idusu);
503
504        $newdata = $this->inserty($data);
505
506        $response = [
507            'tense' => $tense,
508            'tipusfrase' => $tipusfrase,
509            'negativa' => $negativa,
510            'control' => $control,
511            'data' => $newdata
512        ];
513
514        $this->response($response, REST_Controller::HTTP_OK);
515    }
516
517    /*
518     * Add the selected pictogram to the board
519     */
520
521    public function addPicto_post() {
522        $postdata = file_get_contents("php://input");
523        $request = json_decode($postdata);
524        $id = $request->id;
525        $pos = $request->pos;
526        $idboard = $request->idboard;
527
528        $cell = $this->BoardInterface->getIDCell($pos, $idboard);
529        $this->BoardInterface->updateDataCell($id, $cell[0]->ID_RCell);
530
531        $data = $this->BoardInterface->getCellsBoard($idboard);
532        $idusu = $this->session->userdata('idusu');
533        $this->Lexicon->addWordStatsX1($id, $idusu, true);
534        $response = [
535            'data' => $data
536        ];
537        $this->response($response, REST_Controller::HTTP_OK);
538    }
539
540    /*
541     * Swap the two selected pictograms in the board
542     */
543
544    public function swapPicto_post() {
545        $postdata = file_get_contents("php://input");
546        $request = json_decode($postdata);
547        $pos1 = $request->pos1;
548        $pos2 = $request->pos2;
549        $idboard = $request->idboard;
550
551        $this->BoardInterface->updatePosCell($pos1, -1, $idboard);
552        $this->BoardInterface->updatePosCell($pos2, $pos1, $idboard);
553        $this->BoardInterface->updatePosCell(-1, $pos2, $idboard);
554
555        $data = $this->BoardInterface->getCellsBoard($idboard);
556
557        $response = [
558            'data' => $data
559        ];
560        $this->response($response, REST_Controller::HTTP_OK);
561    }
562
563    /*
564     * Remove the selected pictogram to the board
565     */
566
567    public function removePicto_post() {
568        $postdata = file_get_contents("php://input");
569        $request = json_decode($postdata);
570        $pos = $request->pos;
571        $idboard = $request->idboard;
572        //$boardid = $request->boardid;
573        $cell = $this->BoardInterface->getIDCell($pos, $idboard);
574        $this->BoardInterface->removeDataCell($cell[0]->ID_RCell);
575
576        $data = $this->BoardInterface->getCellsBoard($idboard);
577
578        $response = [
579            'data' => $data
580        ];
581        $this->response($response, REST_Controller::HTTP_OK);
582    }
583
584    /*
585     * Get all prerecorded user sentences
586     */
587
588    public function searchSentence_post() {
589        $postdata = file_get_contents("php://input");
590        $request = json_decode($postdata);
591        $search = $request->search;
592
593        $idusu = $this->session->userdata('idusu');
594        $sentence = $this->BoardInterface->getSentences($idusu, $search);
595
596        $response = [
597            'sentence' => $sentence
598        ];
599        $this->response($response, REST_Controller::HTTP_OK);
600    }
601
602    public function getSentence_post() {
603        $postdata = file_get_contents("php://input");
604        $request = json_decode($postdata);
605        $id = $request->id;
606
607        $sentence = $this->BoardInterface->getSentence($id);
608
609        $response = [
610            'sentence' => $sentence
611        ];
612        $this->response($response, REST_Controller::HTTP_OK);
613    }
614
615    /*
616     *
617     */
618
619    public function searchSFolder_post() {
620        $postdata = file_get_contents("php://input");
621        $request = json_decode($postdata);
622        $search = $request->search;
623
624        $idusu = $this->session->userdata('idusu');
625        $sFolder = $this->BoardInterface->getSFolders($idusu, $search);
626
627        $response = [
628            'sfolder' => $sFolder
629        ];
630        $this->response($response, REST_Controller::HTTP_OK);
631    }
632
633    public function getSFolder_post() {
634        $postdata = file_get_contents("php://input");
635        $request = json_decode($postdata);
636        $id = $request->id;
637
638        $sFolder = $this->BoardInterface->getSFolder($id);
639
640        $response = [
641            'sFolder' => $sFolder
642        ];
643        $this->response($response, REST_Controller::HTTP_OK);
644    }
645
646    public function editCell_post() {
647        $postdata = file_get_contents("php://input");
648        $request = json_decode($postdata);
649        $id = $request->id;
650        $boardLink = $request->boardLink;
651        $idFunct = $request->idFunct;
652        $textInCell = $request->textInCell;
653        $visible = $request->visible;
654        $isFixed = $request->isFixed;
655        $idPicto = $request->idPicto;
656        $idSentence = $request->idSentence;
657        $idSFolder = $request->idSFolder;
658        $numScanBlockText1 = $request->numScanBlockText1;
659        $textInScanBlockText1 = $request->textInScanBlockText1;
660        $numScanBlockText2 = $request->numScanBlockText2;
661        $textInScanBlockText2 = $request->textInScanBlockText2;
662        $cellType = $request->cellType;
663        $color = $request->color;
664        $imgCell = $request->imgCell;
665
666        $this->BoardInterface->updateMetaCell($id, $visible, $textInCell, $isFixed, $idFunct, $boardLink, $idPicto, $idSentence, $idSFolder, $cellType, $color, $imgCell);
667        $this->BoardInterface->updateScanCell($id, $numScanBlockText1, $textInScanBlockText1, $numScanBlockText2, $textInScanBlockText2);
668    }
669
670    public function changeImgCell_post() {
671        $postdata = file_get_contents("php://input");
672        $request = json_decode($postdata);
673        $id = $request->idboard;
674        $posInBoard = $request->pos;
675        $imgCell = $request->imgCell;
676        $idusu = $this->session->userdata('idusu');
677
678        $cell = $this->BoardInterface->getIDCell($posInBoard, $id);
679        $idPicto = $this->BoardInterface->updateImgCell($cell[0]->ID_RCell, $imgCell);
680        $data = $this->BoardInterface->getCellsBoard($id);
681        $this->Lexicon->addImgTempStatsX1($idPicto, $idusu, $imgCell);
682        $response = [
683            'data' => $data
684        ];
685        $this->response($response, REST_Controller::HTTP_OK);
686    }
687
688    public function changePrimaryBoard_post() {
689        $postdata = file_get_contents("php://input");
690        $request = json_decode($postdata);
691        $id = $request->id;
692        $idBoard = $request->idBoard;
693
694        $this->BoardInterface->changePrimaryBoard($id, $idBoard);
695    }
696
697    public function changeAutoReturn_post() {
698        $postdata = file_get_contents("php://input");
699        $request = json_decode($postdata);
700        $value = ($request->value == true ? '1' : '0');
701        $id = $request->id;
702
703
704        $this->BoardInterface->changeAutoReturn($id, $value);
705    }
706
707    public function changeAutoRead_post() {
708        $postdata = file_get_contents("php://input");
709        $request = json_decode($postdata);
710        $value = ($request->value == true ? '1' : '0');
711        $id = $request->id;
712
713
714        $this->BoardInterface->changeAutoReadSentence($id, $value);
715    }
716
717    public function autoReturn_post() {
718        $postdata = file_get_contents("php://input");
719        $request = json_decode($postdata);
720        $id = $request->id;
721
722
723        $board = $this->BoardInterface->getBoardStruct($id);
724
725        $idPrimaryBoard = null;
726
727        if ($board[0]->autoReturn === "1") {
728            $primaryBoard = $this->BoardInterface->getPrimaryBoard($board[0]->ID_GBBoard);
729            $idPrimaryBoard = $primaryBoard[0]->ID_Board;
730        }
731
732        $response = [
733            'idPrimaryBoard' => $idPrimaryBoard
734        ];
735        $this->response($response, REST_Controller::HTTP_OK);
736    }
737
738    public function autoReadSentence_post() {
739        $postdata = file_get_contents("php://input");
740        $request = json_decode($postdata);
741        $id = $request->id;
742
743
744        $board = $this->BoardInterface->getBoardStruct($id);
745
746        $response = [
747            'read' => $board[0]->autoReadSentence
748        ];
749        $this->response($response, REST_Controller::HTTP_OK);
750    }
751
752    public function newBoard_post() {
753        $this->BoardInterface->initTrans();
754        $postdata = file_get_contents("php://input");
755        $request = json_decode($postdata);
756        $IDGboard = $request->idGroupBoard;
757        $name = $request->CreateBoardName;
758        $width = $request->width;
759        $height = $request->height;
760
761        $idBoard = $this->BoardInterface->createBoard($IDGboard, $name, $width, $height);
762        $this->addColumns(0, 0, $idBoard, $width);
763        $this->addRows($width, 0, $idBoard, $height);
764        $this->BoardInterface->commitTrans();
765        $response = [
766            'idBoard' => $idBoard
767        ];
768        $this->response($response, REST_Controller::HTTP_OK);
769    }
770
771    public function removeBoard_post() {
772        $this->BoardInterface->initTrans();
773        $postdata = file_get_contents("php://input");
774        $request = json_decode($postdata);
775        $id = $request->id;
776
777        $board = $this->BoardInterface->getIDGroupBoards($id);
778        $primaryboard = $this->BoardInterface->getPrimaryBoard($board[0]->ID_GBBoard);
779        $boards = $this->BoardInterface->getBoards($board[0]->ID_GBBoard);
780        $primaryboardID = $primaryboard[0]->ID_Board;
781        if ($id == $primaryboardID) {
782            for ($x = 0; $boards[$x] != NULL; $x++) {
783                $cell = $this->BoardInterface->getCellsBoard($boards[$x]->ID_Board);
784                for ($i = 0; $i < count($cell); $i++) {
785                    $this->BoardInterface->removeCell($cell[$i]->ID_RCell, $boards[$x]->ID_Board);
786                }
787                $this->BoardInterface->removeBoardLinks($boards[$x]->ID_Board);
788
789                $this->BoardInterface->removeBoard($boards[$x]->ID_Board);
790            }
791            $this->BoardInterface->removeGoupBoard($board[0]->ID_GBBoard);
792            $this->BoardInterface->commitTrans();
793            $response = [
794                'idboard' => null
795            ];
796            $this->response($response, REST_Controller::HTTP_OK);
797        } else {
798
799            $cell = $this->BoardInterface->getCellsBoard($id);
800            for ($i = 0; $i < count($cell); $i++) {
801                $this->BoardInterface->removeCell($cell[$i]->ID_RCell, $id);
802            }
803            $this->BoardInterface->removeBoardLinks($id);
804
805            $this->BoardInterface->removeBoard($id);
806            $this->BoardInterface->commitTrans();
807
808            $response = [
809                'idboard' => $primaryboard[0]->ID_Board
810            ];
811            $this->response($response, REST_Controller::HTTP_OK);
812        }
813    }
814
815    public function copyBoard_post() {
816        $this->BoardInterface->initTrans();
817        $postdata = file_get_contents("php://input");
818        $request = json_decode($postdata);
819        $idSrc = $request->id;
820        $srcGroupBoard = $request->srcGroupBoard;
821        $IDGboard = $request->idGroupBoard;
822        $sameGroupBoard = 0;
823        if ($srcGroupBoard == $IDGboard) {
824            $sameGroupBoard = 1;
825        }
826        $name = $request->CreateBoardName;
827        $width = $request->width;
828        $height = $request->height;
829        $autoReturn = $request->autoreturn ? '1' : '0';
830        $autoReadSentence = $request->autoread ? '1' : '0';
831
832        $idDst = $this->BoardInterface->copyBoard($IDGboard, $name, $width, $height, $autoReturn, $autoReadSentence);
833        $boardtables = $this->BoardInterface->getBoardTables($idSrc);
834        foreach ($boardtables as $row) {
835            $boardtables = $this->BoardInterface->copyBoardTables($idDst, $sameGroupBoard, $row);
836        }
837        /*
838         * This commented part can update the size of the board if it is implemented.
839         *
840          $this->addColumns(0, 0, $idBoard, $NEW_width);
841          $this->addRows($width, 0, $idBoard, $NEW_height);
842         */
843
844        $this->BoardInterface->commitTrans();
845        $response = [
846            'idBoard' => $idDst
847        ];
848        $this->response($response, REST_Controller::HTTP_OK);
849    }
850
851    public function getIDGroupBoards_post() {
852        $this->BoardInterface->initTrans();
853        $postdata = file_get_contents("php://input");
854        $request = json_decode($postdata);
855        $id = $request->id;
856
857        $idBoard = $this->BoardInterface->getIDGroupBoards($id);
858        $response = [
859            'idGroupBoard' => $idBoard[0]->ID_GBBoard
860        ];
861        $this->response($response, REST_Controller::HTTP_OK);
862    }
863
864    public function getMaxScanBlock1_post() {
865        $this->BoardInterface->initTrans();
866        $postdata = file_get_contents("php://input");
867        $request = json_decode($postdata);
868        $id = $request->idboard;
869        $type = $request->type;
870        switch ($type) {
871            case 0:
872                $max = $this->BoardInterface->getMaxScanBlock1($id);
873                break;
874            case 1:
875                $max = $this->BoardInterface->getRows($id);
876                break;
877            case 2:
878                $max = $this->BoardInterface->getColumns($id);
879                break;
880        }
881        $response = [
882            'max' => $max
883        ];
884        $this->response($response, REST_Controller::HTTP_OK);
885    }
886
887    public function getMaxScanBlock2_post() {
888        $this->BoardInterface->initTrans();
889        $postdata = file_get_contents("php://input");
890        $request = json_decode($postdata);
891        $id = $request->idboard;
892        $type = $request->type;
893        $scanGroup = $request->scanGroup;
894
895        switch ($type) {
896            case 0:
897                $max = $this->BoardInterface->getMaxScanBlock2($id, $scanGroup);
898                break;
899            case 1:
900                $max = $this->BoardInterface->getColumns($id);
901                break;
902            case 2:
903                $max = $this->BoardInterface->getRows($id);
904                break;
905        }
906
907        if ($max != null) {
908            $response = [
909                'max' => $max
910            ];
911        } else {
912            $response = [
913                'max' => "No group found"
914            ];
915        }
916        $this->response($response, REST_Controller::HTTP_OK);
917    }
918
919    public function getScannedCells_post() {
920        $this->BoardInterface->initTrans();
921        $postdata = file_get_contents("php://input");
922        $request = json_decode($postdata);
923        $id = $request->idboard;
924        $csb1 = $request->numCustomScanBlock1;
925        $csb2 = $request->numCustomScanBlock2;
926
927        $array = $this->BoardInterface->getScannedCells($id, $csb1, $csb2);
928        $response = [
929            'array' => $array
930        ];
931        $this->response($response, REST_Controller::HTTP_OK);
932    }
933
934    public function getAudioSentence_post() {
935
936        $postdata = file_get_contents("php://input");
937        $request = json_decode($postdata);
938        $sentence = $request->sentence;
939        $voice = $request->voice;
940
941
942        $md5 = MD5(strval($voice) . $sentence);
943        $array = $this->BoardInterface->getAudioSentence($md5);
944        if ($array != null) {
945            $response = [
946                'data' => $array[0]->mp3Path
947            ];
948        } else {
949            $response = [
950                //MODIF: NO ESTA EL MP3, DESCARREGAR MP3 VOCALWARE
951                'data' => MD5(strval($voice) . $sentence)
952            ];
953        }
954        $this->response($response, REST_Controller::HTTP_OK);
955    }
956
957    public function getPrediction_post() {
958        // CARGA recommenderArray                 
959        $prediction = new Myprediction();
960        $recommenderArray = $prediction->getPrediction();
961
962        for ($i = 0; $i < count($recommenderArray); $i++) {
963            $img = $this->BoardInterface->getImgCell($recommenderArray[$i]->pictoid);
964            $recommenderArray[$i]->imgtemp = $img;
965        }
966        $response = [ 'recommenderArray' => $recommenderArray];
967        $this->response($response, REST_Controller::HTTP_OK);
968    }
969
970    public function score_post() {
971        $postdata = file_get_contents("php://input");
972        $request = json_decode($postdata);
973        $score = $request->score;
974
975        $idusu = $this->session->userdata('idusu');
976        $id = $this->BoardInterface->getIdLastSentence($idusu);
977        if ($id === null) {
978            $this->response(300);
979        }
980        $this->BoardInterface->score($id, $score);
981        $this->response(REST_Controller::HTTP_OK);
982    }
983
984    public function modifyColorCell_post() {
985        $postdata = file_get_contents("php://input");
986        $request = json_decode($postdata);
987        $id = $request->id;
988        $color = $request->color;
989
990        $this->BoardInterface->modifyColorCell($id, $color);
991    }
992
993    /*
994     * Generate audio
995     */
996
997    public function readText_post() {
998        $postdata = file_get_contents("php://input");
999        $request = json_decode($postdata);
1000        $text = $request->text;
1001        $interface = $request->interface;
1002        $idusu = $this->session->userdata('idusu');
1003
1004        // GENERAR AUDIO
1005        $audio = new Myaudio();
1006        $aux = $audio->generateAudio($idusu, $text, $interface);
1007
1008        $audio->waitForFile($aux[0], $aux[1]);
1009       
1010        // We save the audio error code in the database
1011        if ($aux[1]) {
1012            $this->BoardInterface->ErrorAudioToDB($aux[3]);
1013        }
1014
1015        $response = [
1016            'audio' => $aux
1017        ];
1018
1019        $this->response($response, REST_Controller::HTTP_OK);
1020    }
1021
1022    public function getColors_post() {
1023        $data = $this->BoardInterface->getColors();
1024
1025        $response = [
1026            'data' => $data
1027        ];
1028
1029        $this->response($response, REST_Controller::HTTP_OK);
1030    }
1031
1032}
Note: See TracBrowser for help on using the repository browser.