3
* Xibo - Digitial Signage - http://www.xibo.org.uk
4
* Copyright (C) 2011 Daniel Garner
6
* This file is part of Xibo.
8
* Xibo is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU Affero General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
13
* Xibo is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU Affero General Public License for more details.
18
* You should have received a copy of the GNU Affero General Public License
19
* along with Xibo. If not, see <http://www.gnu.org/licenses/>.
21
defined('XIBO') or die('Sorry, you are not allowed to directly access this page.<br /> Please press the back button in your browser.');
28
function __construct(database $db, user $user)
33
Kit::ClassLoader('dataset');
34
Kit::ClassLoader('datasetcolumn');
35
Kit::ClassLoader('datasetdata');
38
function on_page_load()
43
function echo_page_heading()
49
function displayPage()
51
require('template/pages/dataset_view.php');
54
public function DataSetFilter()
59
<div class="XiboGrid" id="$id">
60
<div class="XiboFilter">
61
<form onsubmit="return false">
62
<input type="hidden" name="p" value="dataset">
63
<input type="hidden" name="q" value="DataSetGrid">
66
<div class="XiboData">
74
public function DataSetGrid()
78
$response = new ResponseManager();
80
$msgEdit = __('Edit');
81
$msgDelete = __('Delete');
82
$msgPermissions = __('Permissions');
85
<div class="info_table">
86
<table style="width:100%">
92
<th>$msgPermissions</th>
99
foreach($this->user->DataSetList() as $dataSet)
101
$auth = $user->DataSetAuth($dataSet['datasetid'], true);
102
$owner = $user->getNameFromID($dataSet['ownerid']);
103
$groups = $this->GroupsForDataSet($dataSet['datasetid']);
106
$output .= ' <td>' . $dataSet['dataset'] . '</td>';
107
$output .= ' <td>' . $dataSet['description'] . '</td>';
108
$output .= ' <td>' . $owner . '</td>';
109
$output .= ' <td>' . $groups . '</td>';
114
$output .= '<button class="XiboFormButton" href="index.php?p=dataset&q=DataSetDataForm&datasetid=' . $dataSet['datasetid'] . '&dataset=' . $dataSet['dataset'] . '"><span>' . __('View Data') . '</span></button>';
115
$output .= '<button class="XiboFormButton" href="index.php?p=dataset&q=DataSetColumnsForm&datasetid=' . $dataSet['datasetid'] . '&dataset=' . $dataSet['dataset'] . '"><span>' . __('View Columns') . '</span></button>';
116
$output .= '<button class="XiboFormButton" href="index.php?p=dataset&q=EditDataSetForm&datasetid=' . $dataSet['datasetid'] . '"><span>' . $msgEdit . '</span></button>';
120
$output .= '<button class="XiboFormButton" href="index.php?p=dataset&q=DeleteDataSetForm&datasetid=' . $dataSet['datasetid'] . '"><span>' . $msgDelete . '</span></button>';
122
if ($auth->modifyPermissions)
123
$output .= '<button class="XiboFormButton" href="index.php?p=dataset&q=PermissionsForm&datasetid=' . $dataSet['datasetid'] . '"><span>' . $msgPermissions . '</span></button>';
129
$output .= '</tbody></table></div>';
130
$response->SetGridResponse($output);
131
$response->Respond();
134
public function AddDataSetForm()
137
$user =& $this->user;
138
$response = new ResponseManager();
140
$helpManager = new HelpManager($db, $user);
142
$msgName = __('Name');
143
$msgDesc = __('Description');
146
<form id="AddDataSetForm" class="XiboForm" method="post" action="index.php?p=dataset&q=AddDataSet">
149
<td><label for="dataset" accesskey="n">$msgName<span class="required">*</span></label></td>
150
<td><input name="dataset" class="required" type="text" id="dataset" tabindex="1" /></td>
153
<td><label for="description" accesskey="d">$msgDesc</label></td>
154
<td><input name="description" type="text" id="description" tabindex="2" /></td>
161
$response->SetFormRequestResponse($form, __('Add DataSet'), '350px', '275px');
162
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'Add') . '")');
163
$response->AddButton(__('Cancel'), 'XiboDialogClose()');
164
$response->AddButton(__('Add'), '$("#AddDataSetForm").submit()');
165
$response->Respond();
171
public function AddDataSet()
174
$user =& $this->user;
175
$response = new ResponseManager();
177
$dataSet = Kit::GetParam('dataset', _POST, _STRING);
178
$description = Kit::GetParam('description', _POST, _STRING);
180
$dataSetObject = new DataSet($db);
181
if (!$dataSetId = $dataSetObject->Add($dataSet, $description, $this->user->userid))
182
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
184
// Also add one column
185
$dataSetColumn = new DataSetColumn($db);
186
$dataSetColumn->Add($dataSetId, 'Col1', 1, null, 1);
188
$response->SetFormSubmitResponse(__('DataSet Added'));
189
$response->Respond();
192
public function EditDataSetForm()
195
$user =& $this->user;
196
$response = new ResponseManager();
198
$helpManager = new HelpManager($db, $user);
200
$dataSetId = Kit::GetParam('datasetid', _GET, _INT);
202
$auth = $user->DataSetAuth($dataSetId, true);
204
trigger_error(__('Access Denied'));
206
// Get the information we already know
207
$SQL = sprintf("SELECT DataSet, Description FROM dataset WHERE DataSetID = %d", $dataSetId);
209
if (!$row = $db->GetSingleRow($SQL))
210
trigger_error(__('Unable to get DataSet information'));
212
$dataSet = $row['DataSet'];
213
$description = $row['Description'];
215
$msgName = __('Name');
216
$msgDesc = __('Description');
219
<form id="EditDataSetForm" class="XiboForm" method="post" action="index.php?p=dataset&q=EditDataSet">
220
<input type="hidden" name="datasetid" value="$dataSetId" />
223
<td><label for="dataset" accesskey="n">$msgName<span class="required">*</span></label></td>
224
<td><input name="dataset" class="required" type="text" id="dataset" tabindex="1" value="$dataSet" /></td>
227
<td><label for="description" accesskey="d">$msgDesc</label></td>
228
<td><input name="description" type="text" id="description" tabindex="2" value="$description" /></td>
235
$response->SetFormRequestResponse($form, __('Edit DataSet'), '350px', '275px');
236
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'Add') . '")');
237
$response->AddButton(__('Cancel'), 'XiboDialogClose()');
238
$response->AddButton(__('Edit'), '$("#EditDataSetForm").submit()');
239
$response->Respond();
242
public function EditDataSet()
245
$user =& $this->user;
246
$response = new ResponseManager();
248
$dataSetId = Kit::GetParam('datasetid', _POST, _INT);
250
$auth = $user->DataSetAuth($dataSetId, true);
252
trigger_error(__('Access Denied'));
254
$dataSet = Kit::GetParam('dataset', _POST, _STRING);
255
$description = Kit::GetParam('description', _POST, _STRING);
257
$dataSetObject = new DataSet($db);
258
if (!$dataSetObject->Edit($dataSetId, $dataSet, $description))
259
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
261
$response->SetFormSubmitResponse(__('DataSet Edited'));
262
$response->Respond();
266
* Return the Delete Form as HTML
269
public function DeleteDataSetForm()
272
$response = new ResponseManager();
273
$helpManager = new HelpManager($db, $this->user);
275
$dataSetId = Kit::GetParam('datasetid', _GET, _INT);
277
$auth = $this->user->DataSetAuth($dataSetId, true);
279
trigger_error(__('Access Denied'));
281
// Translate messages
282
$msgDelete = __('Are you sure you want to delete this DataSet?');
288
<form id="DataSetDeleteForm" class="XiboForm" method="post" action="index.php?p=dataset&q=DeleteDataSet">
289
<input type="hidden" name="datasetid" value="$dataSetId">
294
$response->SetFormRequestResponse($form, __('Delete this DataSet?'), '350px', '200px');
295
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'Delete') . '")');
296
$response->AddButton(__('Cancel'), 'XiboDialogClose()');
297
$response->AddButton(__('Delete'), '$("#DataSetDeleteForm").submit()');
298
$response->Respond();
301
public function DeleteDataSet()
304
$user =& $this->user;
305
$response = new ResponseManager();
307
$dataSetId = Kit::GetParam('datasetid', _POST, _INT);
309
$auth = $user->DataSetAuth($dataSetId, true);
311
trigger_error(__('Access Denied'));
313
$dataSetObject = new DataSet($db);
314
if (!$dataSetObject->Delete($dataSetId))
315
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
317
$response->SetFormSubmitResponse(__('DataSet Deleted'));
318
$response->Respond();
321
public function DataSetColumnsForm()
324
$response = new ResponseManager();
325
$helpManager = new HelpManager($db, $this->user);
327
$dataSetId = Kit::GetParam('datasetid', _GET, _INT);
328
$dataSet = Kit::GetParam('dataset', _GET, _STRING);
330
$auth = $this->user->DataSetAuth($dataSetId, true);
332
trigger_error(__('Access Denied'));
334
$msgEdit = __('Edit');
335
$msgDelete = __('Delete');
338
<div class="info_table">
339
<table style="width:100%">
344
<th>List Content</th>
345
<th>Column Order</th>
353
$SQL .= "SELECT DataSetColumnID, Heading, DataTypeID, ListContent, ColumnOrder ";
354
$SQL .= " FROM datasetcolumn ";
355
$SQL .= sprintf(" WHERE DataSetID = %d ", $dataSetId);
356
$SQL .= "ORDER BY ColumnOrder ";
358
if (!$results = $db->query($SQL))
359
trigger_error(__('Unable to get columns for DataSet'));
361
while ($row = $db->get_assoc_row($results))
364
$form .= ' <td>' . $row['Heading'] . '</td>';
365
$form .= ' <td>String</td>';
366
$form .= ' <td>' . $row['ListContent'] . '</td>';
367
$form .= ' <td>' . $row['ColumnOrder'] . '</td>';
369
$form .= ' <button class="XiboFormButton" href="index.php?p=dataset&q=EditDataSetColumnForm&datasetid=' . $dataSetId . '&datasetcolumnid=' . $row['DataSetColumnID'] . '&dataset=' . $dataSet . '"><span>' . $msgEdit . '</span></button>';
372
$form .= ' <button class="XiboFormButton" href="index.php?p=dataset&q=DeleteDataSetColumnForm&datasetid=' . $dataSetId . '&datasetcolumnid=' . $row['DataSetColumnID'] . '&dataset=' . $dataSet . '"><span>' . $msgDelete . '</span></button>';
378
$form .= '</tbody></table></div>';
380
$response->SetFormRequestResponse($form, sprintf(__('Columns for %s'), $dataSet), '550px', '400px');
381
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'ViewColumns') . '")');
382
$response->AddButton(__('Close'), 'XiboDialogClose()');
383
$response->AddButton(__('Add Column'), 'XiboFormRender("index.php?p=dataset&q=AddDataSetColumnForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet . '")');
384
$response->Respond();
387
public function AddDataSetColumnForm()
390
$response = new ResponseManager();
391
$helpManager = new HelpManager($db, $this->user);
393
$dataSetId = Kit::GetParam('datasetid', _GET, _INT);
394
$dataSet = Kit::GetParam('dataset', _GET, _STRING);
396
$auth = $this->user->DataSetAuth($dataSetId, true);
398
trigger_error(__('Access Denied'));
400
$msgHeading = __('Heading');
401
$msgListContent = __('List Content');
402
$msgColumnOrder = __('Column Order');
405
<form id="DataSetColumnEditForm" class="XiboForm" method="post" action="index.php?p=dataset&q=AddDataSetColumn">
406
<input type="hidden" name="dataset" value="$dataSet" />
407
<input type="hidden" name="datasetid" value="$dataSetId" />
410
<td><label for="heading" accesskey="h">$msgHeading<span class="required">*</span></label></td>
411
<td><input name="heading" class="required" type="text" id="heading" tabindex="1" /></td>
414
<td><label for="listcontent" accesskey="l">$msgListContent</label></td>
415
<td><input name="listcontent" type="text" id="listcontent" tabindex="2" /></td>
418
<td><label for="columnorder" accesskey="c">$msgColumnOrder</label></td>
419
<td><input name="columnorder" type="text" id="columnorder" tabindex="3" /></td>
425
$response->SetFormRequestResponse($form, __('Add Column'), '450px', '400px');
426
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'EditColumn') . '")');
427
$response->AddButton(__('Cancel'), 'XiboFormRender("index.php?p=dataset&q=DataSetColumnsForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet . '")');
428
$response->AddButton(__('Save'), '$("#DataSetColumnEditForm").submit()');
429
$response->Respond();
432
public function AddDataSetColumn()
435
$user =& $this->user;
436
$response = new ResponseManager();
438
$dataSetId = Kit::GetParam('datasetid', _POST, _INT);
439
$dataSet = Kit::GetParam('dataset', _POST, _STRING);
441
$auth = $user->DataSetAuth($dataSetId, true);
443
trigger_error(__('Access Denied'));
445
$heading = Kit::GetParam('heading', _POST, _WORD);
446
$listContent = Kit::GetParam('listcontent', _POST, _STRING);
447
$columnOrder = Kit::GetParam('columnorder', _POST, _INT);
449
$dataSetObject = new DataSetColumn($db);
450
if (!$dataSetObject->Add($dataSetId, $heading, 1, $listContent))
451
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
453
$response->SetFormSubmitResponse(__('Column Edited'));
454
$response->hideMessage = true;
455
$response->loadForm = true;
456
$response->loadFormUri = 'index.php?p=dataset&q=DataSetColumnsForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet;
457
$response->Respond();
460
public function EditDataSetColumnForm()
463
$response = new ResponseManager();
464
$helpManager = new HelpManager($db, $this->user);
466
$dataSetId = Kit::GetParam('datasetid', _GET, _INT);
467
$dataSetColumnId = Kit::GetParam('datasetcolumnid', _GET, _INT);
468
$dataSet = Kit::GetParam('dataset', _GET, _STRING);
470
$auth = $this->user->DataSetAuth($dataSetId, true);
472
trigger_error(__('Access Denied'));
474
// Get some information about this data set column
475
$SQL = sprintf("SELECT Heading, ListContent, ColumnOrder FROM datasetcolumn WHERE DataSetColumnID = %d", $dataSetColumnId);
477
if (!$row = $db->GetSingleRow($SQL))
478
trigger_error(__('Unabled to get Data Column information'), E_USER_ERROR);
480
$heading = Kit::ValidateParam($row['Heading'], _WORD);
481
$listContent = Kit::ValidateParam($row['ListContent'], _STRING);
482
$columnOrder = Kit::ValidateParam($row['ColumnOrder'], _INT);
484
$msgHeading = __('Heading');
485
$msgListContent = __('List Content');
486
$msgColumnOrder = __('Column Order');
489
<form id="DataSetColumnEditForm" class="XiboForm" method="post" action="index.php?p=dataset&q=EditDataSetColumn">
490
<input type="hidden" name="dataset" value="$dataSet" />
491
<input type="hidden" name="datasetid" value="$dataSetId" />
492
<input type="hidden" name="datasetcolumnid" value="$dataSetColumnId" />
495
<td><label for="heading" accesskey="h">$msgHeading<span class="required">*</span></label></td>
496
<td><input name="heading" class="required" type="text" id="heading" tabindex="1" value="$heading" /></td>
499
<td><label for="listcontent" accesskey="l">$msgListContent</label></td>
500
<td><input name="listcontent" type="text" id="listcontent" tabindex="2" value="$listContent" /></td>
503
<td><label for="columnorder" accesskey="c">$msgColumnOrder</label></td>
504
<td><input name="columnorder" type="text" id="columnorder" tabindex="3" value="$columnOrder" /></td>
510
$response->SetFormRequestResponse($form, __('Edit Column'), '450px', '400px');
511
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'EditColumn') . '")');
512
$response->AddButton(__('Cancel'), 'XiboFormRender("index.php?p=dataset&q=DataSetColumnsForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet . '")');
513
$response->AddButton(__('Save'), '$("#DataSetColumnEditForm").submit()');
514
$response->Respond();
517
public function EditDataSetColumn()
520
$user =& $this->user;
521
$response = new ResponseManager();
523
$dataSetId = Kit::GetParam('datasetid', _POST, _INT);
524
$dataSet = Kit::GetParam('dataset', _POST, _STRING);
526
$auth = $user->DataSetAuth($dataSetId, true);
528
trigger_error(__('Access Denied'));
530
$dataSetColumnId = Kit::GetParam('datasetcolumnid', _POST, _INT);
531
$heading = Kit::GetParam('heading', _POST, _WORD);
532
$listContent = Kit::GetParam('listcontent', _POST, _STRING);
533
$columnOrder = Kit::GetParam('columnorder', _POST, _INT);
535
$dataSetObject = new DataSetColumn($db);
536
if (!$dataSetObject->Edit($dataSetColumnId, $heading, 1, $listContent, $columnOrder))
537
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
539
$response->SetFormSubmitResponse(__('Column Edited'));
540
$response->hideMessage = true;
541
$response->loadForm = true;
542
$response->loadFormUri = 'index.php?p=dataset&q=DataSetColumnsForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet;
543
$response->Respond();
546
public function DeleteDataSetColumnForm()
549
$response = new ResponseManager();
550
$helpManager = new HelpManager($db, $this->user);
552
$dataSetId = Kit::GetParam('datasetid', _GET, _INT);
553
$dataSet = Kit::GetParam('dataset', _GET, _STRING);
555
$auth = $this->user->DataSetAuth($dataSetId, true);
557
trigger_error(__('Access Denied'));
559
$dataSetColumnId = Kit::GetParam('datasetcolumnid', _GET, _INT);
561
$auth = $this->user->DataSetAuth($dataSetId, true);
563
trigger_error(__('Access Denied'));
565
// Translate messages
566
$msgDelete = __('Are you sure you want to delete this Column?');
572
<form id="DataSetColumnDeleteForm" class="XiboForm" method="post" action="index.php?p=dataset&q=DeleteDataSetColumn">
573
<input type="hidden" name="datasetid" value="$dataSetId">
574
<input type="hidden" name="dataset" value="$dataSet">
575
<input type="hidden" name="datasetcolumnid" value="$dataSetColumnId">
580
$response->SetFormRequestResponse($form, __('Delete this Column?'), '350px', '200px');
581
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'DeleteColumn') . '")');
582
$response->AddButton(__('Cancel'), 'XiboFormRender("index.php?p=dataset&q=DataSetColumnsForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet . '")');
583
$response->AddButton(__('Delete'), '$("#DataSetColumnDeleteForm").submit()');
584
$response->Respond();
587
public function DeleteDataSetColumn()
590
$user =& $this->user;
591
$response = new ResponseManager();
593
$dataSetId = Kit::GetParam('datasetid', _POST, _INT);
594
$dataSet = Kit::GetParam('dataset', _POST, _STRING);
596
$auth = $this->user->DataSetAuth($dataSetId, true);
598
trigger_error(__('Access Denied'));
600
$dataSetColumnId = Kit::GetParam('datasetcolumnid', _POST, _INT);
602
$dataSetObject = new DataSetColumn($db);
603
if (!$dataSetObject->Delete($dataSetColumnId))
604
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
606
$response->SetFormSubmitResponse(__('Column Deleted'));
607
$response->hideMessage = true;
608
$response->loadForm = true;
609
$response->loadFormUri = 'index.php?p=dataset&q=DataSetColumnsForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet;
610
$response->Respond();
613
public function DataSetDataForm()
616
$response = new ResponseManager();
617
$helpManager = new HelpManager($db, $this->user);
619
$dataSetId = Kit::GetParam('datasetid', _GET, _INT);
620
$dataSet = Kit::GetParam('dataset', _GET, _STRING);
622
$auth = $this->user->DataSetAuth($dataSetId, true);
624
trigger_error(__('Access Denied'));
626
// Get the max number of rows
628
$SQL .= "SELECT MAX(RowNumber) AS RowNumber, COUNT(DISTINCT datasetcolumn.DataSetColumnID) AS ColNumber ";
629
$SQL .= " FROM datasetdata ";
630
$SQL .= " RIGHT OUTER JOIN datasetcolumn ";
631
$SQL .= " ON datasetcolumn.DataSetColumnID = datasetdata.DataSetColumnID ";
632
$SQL .= sprintf("WHERE datasetcolumn.DataSetID = %d ", $dataSetId);
634
Debug::LogEntry($db, 'audit', $SQL, 'dataset', 'DataSetDataForm');
636
if (!$maxResult = $db->GetSingleRow($SQL))
638
trigger_error($db->error());
639
trigger_error(__('Unable to find the number of data points'), E_USER_ERROR);
642
$maxRows = $maxResult['RowNumber'];
643
$maxCols = $maxResult['ColNumber'];
645
// Get some information about the columns in this dataset
646
$SQL = "SELECT Heading, DataSetColumnID, ListContent, ColumnOrder FROM datasetcolumn WHERE DataSetID = %d ";
647
$SQL .= "ORDER BY ColumnOrder ";
649
if (!$results = $db->query(sprintf($SQL, $dataSetId)))
651
trigger_error($db->error());
652
trigger_error(__('Unable to find the column headings'), E_USER_ERROR);
655
$columnDefinition = array();
657
$form = '<div class="info_table">';
658
$form .= '<table style="width:100%">';
660
$form .= ' <th>' . __('Row Number') . '</th>';
662
while ($row = $db->get_assoc_row($results))
664
$columnDefinition[] = $row;
665
$heading = $row['Heading'];
667
$form .= ' <th>' . $heading . '</th>';
672
// Loop through the max rows
673
for ($row = 1; $row <= $maxRows + 2; $row++)
676
$form .= ' <td>' . $row . '</td>';
678
// $row is the current row
679
for ($col = 0; $col < $maxCols; $col++)
681
$dataSetColumnId = $columnDefinition[$col]['DataSetColumnID'];
682
$listContent = $columnDefinition[$col]['ListContent'];
683
$columnOrder = $columnDefinition[$col]['ColumnOrder'];
685
// Value for this Col/Row
688
if ($row <= $maxRows)
690
// This is intended to be a blank row
692
$SQL .= "SELECT Value ";
693
$SQL .= " FROM datasetdata ";
694
$SQL .= "WHERE datasetdata.RowNumber = %d ";
695
$SQL .= " AND datasetdata.DataSetColumnID = %d ";
696
$SQL = sprintf($SQL, $row, $dataSetColumnId);
698
Debug::LogEntry($db, 'audit', $SQL, 'dataset');
700
if (!$results = $db->query($SQL))
702
trigger_error($db->error());
703
trigger_error(__('Can not get the data row/column'), E_USER_ERROR);
706
if ($db->num_rows($results) == 0)
712
$valueRow = $db->get_assoc_row($results);
713
$value = $valueRow['Value'];
717
// Do we need a select list?
718
if ($listContent != '')
720
$listItems = explode(',', $listContent);
721
$selected = ($value == '') ? ' selected' : '';
722
$select = '<select name="value">';
723
$select.= ' <option value="" ' . $selected . '></option>';
725
for ($i=0; $i < count($listItems); $i++)
727
$selected = ($listItems[$i] == $value) ? ' selected' : '';
729
$select .= '<option value="' . $listItems[$i] . '" ' . $selected . '>' . $listItems[$i] . '</option>';
732
$select .= '</select>';
736
$select = '<input type="text" name="value" value="' . $value . '">';
739
$action = ($value == '') ? 'AddDataSetData' : 'EditDataSetData';
744
<form id="$fieldId" class="XiboDataSetDataForm" action="index.php?p=dataset&q=$action">
745
<input type="hidden" name="fieldid" value="$fieldId">
746
<input type="hidden" name="datasetid" value="$dataSetId">
747
<input type="hidden" name="datasetcolumnid" value="$dataSetColumnId">
748
<input type="hidden" name="rownumber" value="$row">
760
$form .= '</table></div>';
762
$response->SetFormRequestResponse($form, $dataSet, '750px', '600px', 'dataSetData');
763
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('DataSet', 'Data') . '")');
764
$response->AddButton(__('Add Rows'), 'XiboFormRender("index.php?p=dataset&q=DataSetDataForm&datasetid=' . $dataSetId . '&dataset=' . $dataSet . '")');
765
$response->AddButton(__('Done'), 'XiboDialogClose()');
766
$response->Respond();
769
public function AddDataSetData()
772
$user =& $this->user;
773
$response = new ResponseManager();
775
$response->uniqueReference = Kit::GetParam('fieldid', _POST, _WORD);
776
$dataSetId = Kit::GetParam('datasetid', _POST, _INT);
777
$dataSetColumnId = Kit::GetParam('datasetcolumnid', _POST, _INT);
778
$rowNumber = Kit::GetParam('rownumber', _POST, _INT);
779
$value = Kit::GetParam('value', _POST, _STRING);
781
$auth = $user->DataSetAuth($dataSetId, true);
783
trigger_error(__('Access Denied'));
785
$dataSetObject = new DataSetData($db);
786
if (!$dataSetObject->Add($dataSetColumnId, $rowNumber, $value))
787
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
789
$response->SetFormSubmitResponse(__('Data Added'));
790
$response->loadFormUri = 'index.php?p=dataset&q=EditDataSetData';
791
$response->hideMessage = true;
792
$response->keepOpen = true;
793
$response->Respond();
796
public function EditDataSetData()
799
$user =& $this->user;
800
$response = new ResponseManager();
802
$response->uniqueReference = Kit::GetParam('fieldid', _POST, _WORD);
803
$dataSetId = Kit::GetParam('datasetid', _POST, _INT);
804
$dataSetColumnId = Kit::GetParam('datasetcolumnid', _POST, _INT);
805
$rowNumber = Kit::GetParam('rownumber', _POST, _INT);
806
$value = Kit::GetParam('value', _POST, _STRING);
808
$auth = $user->DataSetAuth($dataSetId, true);
810
trigger_error(__('Access Denied'));
814
$dataSetObject = new DataSetData($db);
815
if (!$dataSetObject->Delete($dataSetColumnId, $rowNumber))
816
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
818
$response->SetFormSubmitResponse(__('Data Deleted'));
819
$response->loadFormUri = 'index.php?p=dataset&q=AddDataSetData';
823
$dataSetObject = new DataSetData($db);
824
if (!$dataSetObject->Edit($dataSetColumnId, $rowNumber, $value))
825
trigger_error($dataSetObject->GetErrorMessage(), E_USER_ERROR);
827
$response->SetFormSubmitResponse(__('Data Edited'));
828
$response->loadFormUri = 'index.php?p=dataset&q=EditDataSetData';
831
$response->hideMessage = true;
832
$response->keepOpen = true;
833
$response->Respond();
837
* Get a list of group names for a layout
838
* @param <type> $layoutId
841
private function GroupsForDataSet($dataSetId)
846
$SQL .= 'SELECT `group`.Group ';
847
$SQL .= ' FROM `group` ';
848
$SQL .= ' INNER JOIN lkdatasetgroup ';
849
$SQL .= ' ON `group`.GroupID = lkdatasetgroup.GroupID ';
850
$SQL .= ' WHERE lkdatasetgroup.DataSetID = %d ';
852
$SQL = sprintf($SQL, $dataSetId);
854
if (!$results = $db->query($SQL))
856
trigger_error($db->error());
857
trigger_error(__('Unable to get group information for dataset'), E_USER_ERROR);
862
while ($row = $db->get_assoc_row($results))
864
$groups .= $row['Group'] . ', ';
867
$groups = trim($groups);
868
$groups = trim($groups, ',');
873
public function PermissionsForm()
876
$user =& $this->user;
877
$response = new ResponseManager();
878
$helpManager = new HelpManager($db, $user);
880
$dataSetId = Kit::GetParam('datasetid', _GET, _INT);
882
$auth = $this->user->DataSetAuth($dataSetId, true);
884
if (!$auth->modifyPermissions)
885
trigger_error(__('You do not have permissions to edit this dataset'), E_USER_ERROR);
888
$form = '<form id="DataSetPermissionsForm" class="XiboForm" method="post" action="index.php?p=dataset&q=Permissions">';
889
$form .= '<input type="hidden" name="datasetid" value="' . $dataSetId . '" />';
890
$form .= '<div class="dialog_table">';
891
$form .= ' <table style="width:100%">';
893
$form .= ' <th>' . __('Group') . '</th>';
894
$form .= ' <th>' . __('View') . '</th>';
895
$form .= ' <th>' . __('Edit') . '</th>';
896
$form .= ' <th>' . __('Delete') . '</th>';
899
// List of all Groups with a view/edit/delete checkbox
901
$SQL .= 'SELECT `group`.GroupID, `group`.`Group`, View, Edit, Del, `group`.IsUserSpecific ';
902
$SQL .= ' FROM `group` ';
903
$SQL .= ' LEFT OUTER JOIN lkdatasetgroup ';
904
$SQL .= ' ON lkdatasetgroup.GroupID = group.GroupID ';
905
$SQL .= ' AND lkdatasetgroup.DataSetID = %d ';
906
$SQL .= ' WHERE `group`.GroupID <> %d ';
907
$SQL .= 'ORDER BY `group`.IsEveryone DESC, `group`.IsUserSpecific, `group`.`Group` ';
909
$SQL = sprintf($SQL, $dataSetId, $user->getGroupFromId($user->userid, true));
911
if (!$results = $db->query($SQL))
913
trigger_error($db->error());
914
trigger_error(__('Unable to get permissions for this dataset'), E_USER_ERROR);
917
while($row = $db->get_assoc_row($results))
919
$groupId = $row['GroupID'];
920
$group = ($row['IsUserSpecific'] == 0) ? '<strong>' . $row['Group'] . '</strong>' : $row['Group'];
923
$form .= ' <td>' . $group . '</td>';
924
$form .= ' <td><input type="checkbox" name="groupids[]" value="' . $groupId . '_view" ' . (($row['View'] == 1) ? 'checked' : '') . '></td>';
925
$form .= ' <td><input type="checkbox" name="groupids[]" value="' . $groupId . '_edit" ' . (($row['Edit'] == 1) ? 'checked' : '') . '></td>';
926
$form .= ' <td><input type="checkbox" name="groupids[]" value="' . $groupId . '_del" ' . (($row['Del'] == 1) ? 'checked' : '') . '></td>';
934
$response->SetFormRequestResponse($form, __('Permissions'), '350px', '500px');
935
$response->AddButton(__('Help'), 'XiboHelpRender("' . $helpManager->Link('Layout', 'Permissions') . '")');
936
$response->AddButton(__('Cancel'), 'XiboDialogClose()');
937
$response->AddButton(__('Save'), '$("#DataSetPermissionsForm").submit()');
938
$response->Respond();
941
public function Permissions()
944
$user =& $this->user;
945
$response = new ResponseManager();
946
Kit::ClassLoader('datasetgroupsecurity');
948
$dataSetId = Kit::GetParam('datasetid', _POST, _INT);
949
$groupIds = Kit::GetParam('groupids', _POST, _ARRAY);
951
$auth = $this->user->DataSetAuth($dataSetId, true);
953
if (!$auth->modifyPermissions)
954
trigger_error(__('You do not have permissions to edit this dataset'), E_USER_ERROR);
957
$security = new DataSetGroupSecurity($db);
958
if (!$security->UnlinkAll($dataSetId))
959
trigger_error(__('Unable to set permissions'));
961
// Some assignments for the loop
968
// List of groupIds with view, edit and del assignments
969
foreach($groupIds as $groupPermission)
971
$groupPermission = explode('_', $groupPermission);
972
$groupId = $groupPermission[0];
976
// First time through
978
$lastGroupId = $groupId;
981
if ($groupId != $lastGroupId)
983
// The groupId has changed, so we need to write the current settings to the db.
984
// Link new permissions
985
if (!$security->Link($dataSetId, $groupId, $view, $edit, $del))
986
trigger_error(__('Unable to set permissions'));
989
$lastGroupId = $groupId;
995
switch ($groupPermission[1])
1011
// Need to do the last one
1014
if (!$security->Link($dataSetId, $lastGroupId, $view, $edit, $del))
1015
trigger_error(__('Unable to set permissions'));
1018
$response->SetFormSubmitResponse(__('Permissions Changed'));
1019
$response->Respond();