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

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

Added zero-installed and updated jocomunico

File size: 10.8 KB
Line 
1<?php
2
3if (!defined('BASEPATH'))
4    exit('No direct script access allowed');
5
6require APPPATH . '/libraries/REST_Controller.php';
7
8class PanelGroup extends REST_Controller {
9
10    public function __construct() {
11        parent::__construct();
12
13        $this->load->library('session');
14        $this->load->model('PanelInterface');
15        $this->load->model('Lexicon');
16        $this->load->model('BoardInterface');
17        $this->load->model('AddWordInterface');
18    }
19
20    public function index_get() {
21        // CHECK COOKIES
22        if (!$this->session->userdata('uname')) {
23            redirect(base_url(), 'location');
24        } else {
25            if (!$this->session->userdata('cfguser')) {
26                $this->BoardInterface->loadCFG($this->session->userdata('uname'));
27                $this->load->view('MainBoard', true);
28            } else {
29                $this->load->view('MainBoard', true);
30            }
31        }
32    }
33
34    public function getPanelGroupInfo_post() {
35        $postdata = file_get_contents("php://input");
36        $request = json_decode($postdata);
37        $ID_GBoard = $request->idGroupBoard;
38
39        $primaryBoard = $this->BoardInterface->getInfoGroupBoard($ID_GBoard);
40
41        $response = [
42            'ID_GB' => $primaryBoard[0]->ID_GB,
43            'ID_GBUser' => $primaryBoard[0]->ID_GBUser,
44            'GBname' => $primaryBoard[0]->GBname,
45            'primaryGroupBoard' => $primaryBoard[0]->primaryGroupBoard,
46            'defWidth' => $primaryBoard[0]->defWidth,
47            'defHeight' => $primaryBoard[0]->defHeight,
48            'imgGB' => $primaryBoard[0]->imgGB
49        ];
50        $this->response($response, REST_Controller::HTTP_OK);
51    }
52
53    public function getUserPanelGroups_post() {
54        $idusu = $this->session->userdata('idusu');
55        $panels = $this->PanelInterface->getUserPanels($idusu);
56
57        $response = [
58            'panels' => $panels
59        ];
60
61        $this->response($response, REST_Controller::HTTP_OK);
62    }
63
64    public function getPanelToEdit_post() {
65        $postdata = file_get_contents("php://input");
66        $request = json_decode($postdata);
67        $ID_GBoard = $request->ID_GB;
68
69        $primaryBoard = $this->BoardInterface->getPrimaryBoard($ID_GBoard);
70        $boards = $this->BoardInterface->getBoards($ID_GBoard);
71
72        $response = [
73            'id' => $primaryBoard[0]->ID_Board,
74            'boards' => $boards
75        ];
76
77        $this->response($response, REST_Controller::HTTP_OK);
78    }
79
80    public function setPrimaryGroupBoard_post() {
81        $postdata = file_get_contents("php://input");
82        $request = json_decode($postdata);
83        $ID_GBoard = $request->ID_GB;
84        $idusu = $this->session->userdata('idusu');
85
86        $this->PanelInterface->setPrimaryGroupBoard($ID_GBoard, $idusu);
87
88        $response = [
89            'id' => $primaryBoard[0]->ID_Board
90        ];
91
92        $this->response($response, REST_Controller::HTTP_OK);
93    }
94
95    public function newGroupPanel_post() {
96        $postdata = file_get_contents("php://input");
97        $request = json_decode($postdata);
98        $GBName = $request->GBName;
99        $defW = $request->defW;
100        $defH = $request->defH;
101        $imgGB = $request->imgGB;
102        $idusu = $this->session->userdata('idusu');
103        $this->BoardInterface->initTrans();
104        $id = $this->PanelInterface->newGroupPanel($GBName, $idusu, $defW, $defH, $imgGB);
105
106        $idBoard = $this->BoardInterface->createBoard($id, "default", $defW, $defH);
107        $this->addColumns(0, 0, $idBoard, $defW);
108        $this->addRows($defW, 0, $idBoard, $defH);
109        $this->BoardInterface->setPrimaryBoard($idBoard);
110        $this->BoardInterface->commitTrans();
111        $response = [
112            'idBoard' => $idBoard
113        ];
114        $this->response($response, REST_Controller::HTTP_OK);
115    }
116
117    //MODIF: Esta repetida, mirar que se puede hacer
118    public function addColumns($columns, $rows, $idBoard, $columnsToAdd) {
119        $currentPos = ($columns + $columnsToAdd) * $rows;
120        $oldCurrentPos = $columns * $rows;
121        for ($row = 0; $row < $rows; $row++) {
122            for ($i = $columns; $i < $columns + $columnsToAdd; $i++) {
123                $this->BoardInterface->newCell($currentPos, $idBoard);
124                $currentPos--;
125            }
126            for ($column = 0; $column < $columns; $column++) {
127                $this->BoardInterface->updatePosCell($oldCurrentPos, $currentPos, $idBoard);
128                $currentPos--;
129                $oldCurrentPos--;
130            }
131        }
132    }
133
134    //MODIF: Esta repetida, mirar que se puede hacer
135    public function addRows($columns, $rows, $idBoard, $rowsToAdd) {
136        $currentPos = $columns * $rows + 1;
137        for ($row = 0; $row < $rowsToAdd; $row++) {
138            for ($column = 0; $column < $columns; $column++) {
139                $this->BoardInterface->newCell($currentPos, $idBoard);
140                $currentPos++;
141            }
142        }
143    }
144
145    public function modifyGroupBoardName_post() {
146        $postdata = file_get_contents("php://input");
147        $request = json_decode($postdata);
148        $ID_GB = $request->ID;
149        $name = $request->Name;
150        $idusu = $this->session->userdata('idusu');
151
152        $this->PanelInterface->changeGroupName($ID_GB, $name, $idusu);
153
154        $response = [
155            'id' => $primaryBoard[0]->ID_Board
156        ];
157
158        $this->response($response, REST_Controller::HTTP_OK);
159    }
160
161    public function copyDefaultGroupBoard_post() {
162        //MODIF: 2 es el panel default
163        $this->BoardInterface->initTrans();
164        $idusu = $this->session->userdata('idusu');
165        $board = $this->BoardInterface->getPrimaryGroupBoard();
166        if ($board == null) {
167
168            $changedLinks = array();
169            $srcGroupBoard = 2;
170            $primaryBoard = $this->BoardInterface->getInfoGroupBoard($srcGroupBoard);
171
172            $IDGboard = $this->PanelInterface->newGroupPanel($primaryBoard[0]->GBname, $idusu, $primaryBoard[0]->defWidth, $primaryBoard[0]->defHeight, $primaryBoard[0]->imgGB);
173            $boards = $this->BoardInterface->getBoards($srcGroupBoard);
174            //If we want to allow the user copy group boards this line have to be removed
175            $this->PanelInterface->setPrimaryGroupBoard($IDGboard, $idusu);
176
177            $sameGroupBoard = 1;
178            for ($i = 0; $i < count($boards); $i++) {
179                $idSrc = $boards[$i]->ID_Board;
180
181                $name = $boards[$i]->Bname;
182                $width = $boards[$i]->width;
183                $height = $boards[$i]->height;
184                $autoReturn = $boards[$i]->autoReturn;
185                $autoReadSentence = $boards[$i]->autoReadSentence;
186
187                $idDst = $this->BoardInterface->copyBoard($IDGboard, $name, $width, $height, $autoReturn, $autoReadSentence);
188                if ($boards[$i]->primaryBoard) {
189                    $this->BoardInterface->changePrimaryBoard($idDst, $IDGboard);
190                    $idToShow = $idDst;
191                }
192                $boardtables = $this->BoardInterface->getBoardTables($idSrc);
193                foreach ($boardtables as $row) {
194                    $boardtables = $this->BoardInterface->copyBoardTables($idDst, $sameGroupBoard, $row);
195                }
196                array_push($changedLinks, $idSrc);
197                array_push($changedLinks, $idDst);
198            }
199            for ($i = 0; $i < count($changedLinks); $i++) {
200                $this->PanelInterface->updateBoardLinks($IDGboard, $changedLinks[$i], $changedLinks[$i + 1]);
201                $i++;
202            }
203        } else {
204            $primaryUserBoard = $this->BoardInterface->getPrimaryBoard($board[0]->ID_GB);
205            $idToShow = $primaryUserBoard[0]->ID_Board;
206        }
207        $this->BoardInterface->commitTrans();
208        $response = [
209            'idBoard' => $idToShow
210        ];
211        $this->response($response, REST_Controller::HTTP_OK);
212    }
213
214    public function copyGroupBoard_post() {
215
216        $postdata = file_get_contents("php://input");
217        $request = json_decode($postdata);
218        $idusu = $request->user;
219        $srcGroupBoard = $request->id;
220        $changedLinks = array();
221       
222        $this->BoardInterface->initTrans();
223        $primaryBoard = $this->BoardInterface->getInfoGroupBoard($srcGroupBoard);
224
225        $IDGboard = $this->PanelInterface->newGroupPanel($primaryBoard[0]->GBname, $idusu, $primaryBoard[0]->defWidth, $primaryBoard[0]->defHeight, $primaryBoard[0]->imgGB);
226        $boards = $this->BoardInterface->getBoards($srcGroupBoard);
227
228        $sameGroupBoard = 1;
229        for ($i = 0; $i < count($boards); $i++) {
230            $idSrc = $boards[$i]->ID_Board;
231
232            $name = $boards[$i]->Bname;
233            $width = $boards[$i]->width;
234            $height = $boards[$i]->height;
235            $autoReturn = $boards[$i]->autoReturn;
236            $autoReadSentence = $boards[$i]->autoReadSentence;
237
238            $idDst = $this->BoardInterface->copyBoard($IDGboard, $name, $width, $height, $autoReturn, $autoReadSentence);
239            if ($boards[$i]->primaryBoard) {
240                $this->BoardInterface->changePrimaryBoard($idDst, $IDGboard);
241            }
242            $boardtables = $this->BoardInterface->getBoardTables($idSrc);
243            foreach ($boardtables as $row) {
244                $boardtables = $this->BoardInterface->copyBoardTables($idDst, $sameGroupBoard, $row);
245                $idusuorigen = $this->session->userdata('idusu');
246                if ($row->ID_CPicto != null) {
247                    $this->Lexicon->addWordStatsX1($row->ID_CPicto, $idusu, true);
248                    if ($row->imgCell != null) {
249                        $this->Lexicon->addImgTempStatsX1($row->ID_CPicto, $idusu, $row->imgCell);
250                    }
251                }
252            }
253
254            array_push($changedLinks, $idSrc);
255            array_push($changedLinks, $idDst);
256        }
257
258        for ($i = 0; $i < count($changedLinks); $i++) {
259            $this->PanelInterface->updateBoardLinks($IDGboard, $changedLinks[$i], $changedLinks[$i + 1]);
260            $i++;
261        }
262        $this->AddWordInterface->copyVocabulary($idusuorigen,$idusu);
263
264        $this->BoardInterface->commitTrans();
265        $response = [
266        ];
267        $this->response($response, REST_Controller::HTTP_OK);
268    }
269
270    public function loginToCopy_post() {
271        $postdata = file_get_contents("php://input");
272        $request = json_decode($postdata);
273        $user = $request->user;
274        $pass = $request->pass;
275
276        $userObj = $this->PanelInterface->getUser($user, $pass);
277
278        $response = [
279            'userName' => $user,
280            'userID' => $userObj[0]->ID_User
281        ];
282        $this->response($response, REST_Controller::HTTP_OK);
283    }
284
285}
Note: See TracBrowser for help on using the repository browser.