_tbl = $tblAcl->getName(); $this->_acl = $tblAcl; $this->_zasobID = $tblAcl->getID(); $this->_pageSize = 10; { UserProfile::load(); $tableAjaxSettings = UserProfile::getTableAjaxSettings(); $this->_pageSize = V::get('pageSize', 10, $tableAjaxSettings, 'int'); } $this->_pageSizes = array(10, 20, 50, 100);// default page sizes $this->_filterInit = new stdClass(); $hash = V::get('_hash', '', $_GET); if ($hash) { $this->_htmlID = $hash; $this->_readState(); } else { $this->_htmlID = $this->generateHtmlID(); $this->_readState(); } } public function setSyncUrl($syncUrl) { $this->syncUrl = $syncUrl; } public function showProcesInit($bool = true) { $this->_showProcesInit = $bool; } public function showUserTableFilter($url = null) { $this->_useUserTableFilter = $url; } private function _hasStateFilterInit() { return array_key_exists($this->_htmlID, $_SESSION['TableAjax_Cache']) && array_key_exists('_filterInit', $_SESSION['TableAjax_Cache'][$this->_htmlID]); } // TODO: read state from cache by key $this->_htmlID // TODO: load filters and state: table, edit, add, etc. // TODO: save this data in Workspace 1, 2, 3, etc. // TODO: default filters in VIEWTABLE_AJAX // $tbl->setLabel($zasobObj->OPIS); // $tbl->setFilterInit($filterInit); // $tbl->addRowFunction('edit'); // $tbl->addRowFunction('hist'); // $tbl->addRowFunction('files'); // $tbl->addRowFunction('cp'); private function _readState() { if (!array_key_exists('TableAjax_Cache', $_SESSION)) { $_SESSION['TableAjax_Cache'] = array(); } //trigger_error("F." . __FUNCTION__ . " (" . (array_key_exists($this->_htmlID, $_SESSION['TableAjax_Cache'])) . ")", E_USER_NOTICE); //trigger_error("F." . __FUNCTION__ . " (".basename($_SERVER['SCRIPT_FILENAME'])."::_filterInit: " . json_encode($_SESSION['TableAjax_Cache'][$this->_htmlID]['_filterInit']) . ")", E_USER_NOTICE); if (array_key_exists($this->_htmlID, $_SESSION['TableAjax_Cache'])) { foreach ($_SESSION['TableAjax_Cache'][$this->_htmlID] as $k => $v) { //trigger_error("F." . __FUNCTION__ . " key: ({$k})", E_USER_NOTICE); switch ($k) { case '_label': $this->_label = $v; break; case '_filterInit': $this->_filterInit = $v; break; case '_rowFunctions': $this->_rowFunctions = $v; break; default: } } } } protected function _saveState($key = null) { if (!array_key_exists('TableAjax_Cache', $_SESSION)) { $_SESSION['TableAjax_Cache'] = array(); } if (!array_key_exists($this->_htmlID, $_SESSION['TableAjax_Cache'])) { $_SESSION['TableAjax_Cache'][$this->_htmlID] = array(); } if (!$key) { $_SESSION['TableAjax_Cache'][$this->_htmlID]['_label'] = $this->_label; $_SESSION['TableAjax_Cache'][$this->_htmlID]['_filterInit'] = $this->_filterInit; $_SESSION['TableAjax_Cache'][$this->_htmlID]['_rowFunctions'] = $this->_rowFunctions; } else if ($key == '_label') { $_SESSION['TableAjax_Cache'][$this->_htmlID]['_label'] = $this->_label; } else if ($key == '_filterInit') { $_SESSION['TableAjax_Cache'][$this->_htmlID]['_filterInit'] = $this->_filterInit; } else if ($key == '_rowFunctions') { $_SESSION['TableAjax_Cache'][$this->_htmlID]['_rowFunctions'] = $this->_rowFunctions; } } public function setPageSizes($pageSizes) { $this->_pageSizes = $pageSizes; } public function setFilterInit($filterInit) { if ($this->_hasStateFilterInit()) { return; } $this->_filterInit = (object)$filterInit; $this->_saveState(); } /** * @param array $forceFilterInit */ public function setForceFilterInit($forceFilterInit) { $this->_forceFilterInit = (object)$forceFilterInit; } private function setFilters($filterInit) { $this->_filterInit = (object)$filterInit; $this->_saveState(); } public function setRowFunctions($functions) { $this->_rowFunctions = []; $defaultRowFunction = array(); $defaultRowFunction['edit'] = array('href'=>'#EDIT/{0}', 'ico'=>'glyphicon glyphicon-pencil', 'title'=>'Edytuj rekord'); $defaultRowFunction['hist'] = array('href'=>'#HIST/{0}', 'ico'=>'glyphicon glyphicon-book', 'title'=>'Historia'); $defaultRowFunction['files'] = array('href'=>'#FILES/{0}', 'ico'=>'glyphicon glyphicon-folder-open', 'title'=>'Pliki'); $defaultRowFunction['cp'] = array('href'=>'#', 'ico'=>'glyphicon glyphicon-plus-sign', 'title'=>'Kopiuj rekord', 'onclick'=>'return tableAjaxCopy({0});'); $defaultRowFunction['msgs'] = array('href'=>"index.php?_route=TableMsgs&_task=tableRow&idTable={$this->_zasobID}&idRow={0}", 'ico'=>'glyphicon glyphicon-envelope', 'title'=>'Wiadomości'); foreach ($functions as $funName => $params) { if (true === $params) { if (array_key_exists($funName, $defaultRowFunction)) { $this->_rowFunctions[$funName] = $defaultRowFunction[$funName]; } else { throw new Exception("Row function not defined '{$funName}'"); } } if (is_array($params)) { $this->_rowFunctions[$funName] = $params; } } $this->_saveState('_rowFunctions'); } public function addRowFunction($funName, $funParams = array()) { $defaultRowFunction = array(); //$defaultRowFunction['edit'] = ''; //$defaultRowFunction['hist'] = ''; //$defaultRowFunction['files'] = ''; //$defaultRowFunction['cp'] = ''; $defaultRowFunction['edit'] = array('href'=>'#EDIT/{0}', 'ico'=>'glyphicon glyphicon-pencil', 'title'=>'Edytuj rekord'); $defaultRowFunction['hist'] = array('href'=>'#HIST/{0}', 'ico'=>'glyphicon glyphicon-book', 'title'=>'Historia'); $defaultRowFunction['files'] = array('href'=>'#FILES/{0}', 'ico'=>'glyphicon glyphicon-folder-open', 'title'=>'Pliki'); $defaultRowFunction['cp'] = array('href'=>'#', 'ico'=>'glyphicon glyphicon-plus-sign', 'title'=>'Kopiuj rekord', 'onclick'=>'return tableAjaxCopy({0});'); $defaultRowFunction['msgs'] = array('href'=>"index.php?_route=TableMsgs&_task=tableRow&idTable={$this->_zasobID}&idRow={0}", 'ico'=>'glyphicon glyphicon-envelope', 'title'=>'Wiadomości'); if (array_key_exists($funName, $defaultRowFunction)) { $this->_rowFunctions[$funName] = $defaultRowFunction[$funName]; } else { $this->_rowFunctions[$funName] = $funParams; } $this->_saveState('_rowFunctions'); } private function _parseRowFunctions($recordID = null, $pomin = array(), $showLabel = false) { $rowFunctions = array(); foreach ($this->_rowFunctions as $kFunName => $vParams) { if (in_array($kFunName, $pomin)) continue; //$rowFunctionsOut .= str_replace('{0}', $recordID, $vUrl); $attrs = array(); // $defaultRowFunction['cp'] = (object)array('href'=>'#', 'ico'=>'glyphicon glyphicon-plus-sign', 'title'=>'Kopiuj rekord', 'onclick'=>'return tableAjaxCopy({0});'); $label = ''; $ico = ''; foreach ($vParams as $kParamName => $v) { if ($kParamName == 'ico') { $ico = ''; continue; } $attr = $v; if ($recordID > 0) { $attr = str_replace('{0}', $recordID, $attr); } if ($showLabel && $kParamName == 'title') { $label = $attr; } $attr = $kParamName . '="' . $attr . '"'; $attrs[] = $attr; } $rowFunctions[$kFunName] = '' . "{$ico} {$label} " . ''; } return $rowFunctions; } private function _showRowFunctions($recordID = null, $pomin = array(), $showLabel = false) { $rowFunctionsOut = $this->_parseRowFunctions($recordID, $pomin, $showLabel); $rowFunctionsOut = implode('', $rowFunctionsOut); return $rowFunctionsOut; } private function _showRowFunctionsJson($recordID = null, $pomin = array(), $showLabel = false) { $rowFunctions = $this->_parseRowFunctions($recordID, $pomin, $showLabel); $rowFunctions = (object)$rowFunctions; return $rowFunctions; } private function getProcesInitSelected() { $userAcl = User::getAcl(); return $userAcl->getPermsFiltrProcesId(); } public function allowTreeView() { if ($this->_tbl == 'CRM_LISTA_ZASOBOW') return true; if ($this->_tbl == 'CRM_PROCES') return true; return false; } public function renderStatic($tblAjaxMap = null) { static $_rendered = false; if ($_rendered) return; if ($tblAjaxMap) $tblAjaxMap->printCSS(); if ($tblAjaxMap) $tblAjaxMap->printJS(); echo UI::h('script', ['src'=>"stuff/jquery-ui-1.10.4.custom.min.js"]); echo UI::h('script', ['src'=>"static/sweetalert2.min.js"]); echo UI::h('script', ['src'=>"static/jquery.doubleScroll.js"]); echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"stuff/jquery-ui-smoothness/jquery-ui-1.10.4.custom.min.css"]); echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"static/sweetalert2.min.css"]); echo UI::h('style', ['type'=>"text/css"], " .AjaxTable{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} .AjaxTableCont {position:relative; margin:10px 0; width:100%; overflow-x:auto; border:none;} .AjaxTable *, .AjaxTable.table {white-space:nowrap; width:auto;} .AjaxTable .popover * {white-space:normal;} .AjaxTable p {margin:0;} .AjaxTable td, .AjaxTable th {line-height:18px;} .AjaxTable i {margin: 0 0 0 2px;opacity: 0.5;} .AjaxTable span.filter {background-color:#999;} .AjaxTable .indeterminate {opacity: 0.4;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)\";filter:alpha(opacity=40);} .AjaxTable .columnpicker li, .AjaxTable .actions li {padding-left:5px;} .AjaxTableCont .btn-toolbar {margin:2px 0 0 0;} .AjaxTableCont .btn-toolbar .btn-group {vertical-align:top;} .AjaxTable input[type=checkbox] {margin:0;padding:0;height:13px;} .AjaxTable input[type=text].filter {margin:0;padding:0 5px;box-shadow:none;width:100%;background:#eee;color:#000;} .AjaxTable input[type=text].filter {border-width:2px 0;border-color:#eee;border-style:solid;} .AjaxTable input[type=text].filter-active {border-color:#00ACCC;} .AjaxTable .date-wrap {width:100%;min-width:115px;} .AjaxTable .dateWrap .add-on {margin:0;padding:0;background:none;border:none;float:right;cursor:pointer;} .AjaxTable .actions a {padding:0;margin:0;} .AjaxTableCont .text-right {text-align:right} .AjaxTableCont .breadcrumb em {color:#bbb;} .AjaxTable-loading .head-info {background:url(./icon/loading.gif) no-repeat left top; background-position:0 6px;} .AjaxTable-loading .loading-info, .AjaxTableCont .tblAjax__inlineEditBox .loading-info {display:block; padding:0 0 0 20px; background:url(./icon/loading.gif) no-repeat left top;} .AjaxTableCont .loading-info {display:none;} .AjaxTableCont .tblAjax__inlineEditBox .loading-info {display:block;} .AjaxTableCont .table {margin-bottom:0px;} .AjaxTableCont .stickyCol1 a { color:#333; } .AjaxTableCont .stickyCol1 a:hover { color:#337AB7; text-decoration:none; } .AjaxTableTaskCnt {padding:0 10px 10px 10px;} .AjaxTable .tbl-short-txt{max-width:140px; overflow:hidden;} .AjaxTable .tbl-short-txt span{display:block; height:18px;} .AjaxTable .tooltip-inner{white-space:normal;} .AjaxTable thead .sort .ta-ordering {cursor:pointer;} .AjaxTable thead .sort .ta-ordering span {margin:0 10px 0 0; padding:0; background-repeat:no-repeat; background-position:right top;} .AjaxTable thead .sort .ta-ordering-down span:after{content:\"\\e252\";font-family:\"Glyphicons Halflings\";line-height:1;margin:0 0 0 3px;display:inline-block;color:#bbb;} .AjaxTable thead .sort .ta-ordering-up span:after{content:\"\\e253\";font-family:\"Glyphicons Halflings\";line-height:1;margin:0 0 0 3px;display:inline-block;color:#bbb;} .AjaxTable thead .sort .ta-ordering {position:relative;} .AjaxTable thead .sort th .hover-show:hover{background-color:#000; background-image:url(stuff/twitter-bootstrap/img/glyphicons-halflings-white.png);} .AjaxTable thead .sort th .hover-show{display:none;} .AjaxTable thead .sort th:hover .hover-show{display:inline;} .AjaxTable thead .sort .ta-ordering .remove-cell {position:absolute; top:6px; right:2px; display:none; color:#f00;} .AjaxTable thead .sort .ta-ordering:hover .remove-cell {display:block;} .AjaxTableCont .pagination { margin:0; } .AjaxTableCont .pagination a { line-height:16px; } .AjaxTableCont .AjaxTableEdit-label { display:block; margin:0 0 3px 0; font-size:12px !important; line-height:16px !important; } .AjaxTableCont .AjaxTableEdit-label code { padding:0; white-space:nowrap; background-color:transparent; border:none; color:#777; font-size:10px !important; line-height:14px !important; } .AjaxTableCont .AjaxTableEdit .show-last-value .button-appendBack .glyphicon, .AjaxTableCont .AjaxFrmHorizontalEdit .show-last-value .button-appendBack .glyphicon {display:none;} .AjaxTableHist em {color:silver;} .AjaxTableCont .foot * { font-size:12px !important; } .AjaxTableCont .foot { margin:10px; } .AjaxTableCont .foot .foot-info { float:left; padding:0 20px; } .AjaxTableCont .foot .foot-info p { line-height:16px; margin:5px 0; } .AjaxTable-loading .foot .foot-info {padding-left:20px; background:url(./icon/loading.gif) no-repeat left top;} .tblAjax__head__specialFilter {margin:0;padding:4px 4px 4px 127px;} .tblAjax__head__specialFilter .btn-group {margin:0 4px;padding:0;} .tblAjax__head__specialFilter .btn-group .glyphicon-remove {color:#f00;} .tblAjax__head__specialFilter .btn-group button.disabled .glyphicon-remove {color:#bbb;} /* overwrite bootstrap table border */ .AjaxTable, .AjaxTableEdit, .AjaxTable td, .AjaxTableEdit td, .AjaxTable th, .AjaxTableEdit th { border-color:#999; } /* cell A_STATUS */ .AjaxTable .cell-A_STATUS-NORMAL { background:#aeffae; color:#000; text-align:center; } .AjaxTable .cell-A_STATUS-WAITING { background:#ffd2ff; color:#000; text-align:center; } .AjaxTable .cell-A_STATUS-MONITOR { background:#cccaff; color:#000; text-align:center; } .AjaxTable .cell-A_STATUS-WARNING { background:#ffbaba; color:#000; text-align:center; } .AjaxTable .cell-A_STATUS-DELETED { background:#e0e0e0; color:#808080; text-align:center; } .AjaxTable .cell-A_STATUS-OFF_SOFT { background:#fce3b7; color:#808080; text-align:center; } .AjaxTable .cell-A_STATUS-OFF_HARD { background:#eee; color:#808080; text-align:center; } /* cell Status */ .AjaxTable .cell-Status-U { background:rgb(0,176,80); color:#000; text-align:center; } .AjaxTable .cell-Status-NU { background:#f00; color:#000; text-align:center; } .AjaxTable .cell-Status-P { background:rgb(112,48,160); color:#000; text-align:center; } .AjaxTable .cell-Status-PT { background:rgb(127,127,127); color:#000; text-align:center; } .AjaxTable .cell-Status-O { background:rgb(0,176,240); color:#000; text-align:center; } .AjaxTable .cell-Status-DZ { background:rgb(0,112,192); color:#000; text-align:center; } .AjaxTable .cell-Status-Z {} /* map */ .AjaxTable .cell-mapfld { cursor:pointer; } .AjaxTable .cell-mapfld:hover { opacity:1; } .AjaxTable .cell-mapfld-remove { display:none; } .AjaxTable .cell-mapfld-hasValue .cell-mapfld-select { color:#f00; } .AjaxTable .cell-mapfld-hasValue .cell-mapfld-remove { display:inline-block; } .AjaxTableCont .mapEditor { position:absolute; bottom:0; right:6px; width:512px; height:318px; overflow:hidden; color:#eee; border:1px solid #999; } .AjaxTableCont .mapEditor-panel { height:16px; padding:0 6px; background:#999; border-bottom:1px solid #eee; } .AjaxTableCont .mapEditor-panel a { display:block; float:right; padding:0 6px; font-weight:bold; font-size:12px; line-height:16px; color:#fff; } .AjaxTableCont .mapEditor-panel a:hover { color:#006CD7; text-decoration:none; } .AjaxTableCont .mapEditor-panel a.mapEditor-panel-close:hover { color:#f00; } .AjaxTableCont .mapEditor-map { background:#fff; height:400px; } .AjaxTableCont-mapEditorContainer .mapEditor-map { border:1px solid #999; overflow:hidden; } /* .mapEditor-btnBackToWindow \"olControlSave\",overview_replacement */ .olControlEditingToolbar .mapEditor-btnBackToWindowItemInactive, .olControlEditingToolbar .mapEditor-btnBackToWindowItemActive { background-image: url(icon/map.window.png); background-position: 0 0; background-repeat: no-repeat; } /* .mapEditor-btnBackToWindowItemInactive { background-image: url(stuff/open-layers/theme/default/img/overview_replacement.gif); } .mapEditor-btnBackToWindowItemActive { background-image: url(stuff/open-layers/theme/default/img/overview_replacement.gif); } */ .ui-dialog-content .mapEditor-btnBackToWindowItemInactive, .ui-dialog-content .mapEditor-btnBackToWindowItemActive { display:none; } .AjaxTableCont .valign-btns-bottom a { vertical-align:text-bottom; font-weight:normal; font-size:12px; line-height:14px; } .ui-resizable-s { bottom:0; } .ui-resizable-e { right:0; } .AjaxTableCont-mapEditorContainer .ui-resizable-s { background-color:#ddd; } .AjaxTableCont-mapEditorContainer .ui-resizable-s:hover { background-color:#888; } "); $_rendered = true; } public function render() { $acl = $this->_acl; $hasGeomFlds = Core_AclHelper::hasGeomFields($acl); $tblAjaxMap = ($hasGeomFlds) ? new TableAjaxMap($acl, 512, 400) : null; $hasPermCreate = Core_AclHelper::hasCreatePerms($acl); $jsToogleFiltrProcesuFunctionName = 'tableAjaxToggleFiltrProcesInit'; ob_start(); $this->renderStatic($tblAjaxMap); UI::startContainer(); UI::showMessagesForTable($this->_tbl); UI::endContainer(); ?>
_filterInit; $forceFilterInit = $this->_forceFilterInit; $pageSizes = $this->_pageSizes; $pageSize = $this->_pageSize; $rowFunctions = $this->_rowFunctions;//$this->_showRowFunctionsJson(); $exportFields = Core_AclHelper::getExportFieldList($acl); ?> _acl->getRawLabel(100) . " - " . UI::getTitle()); $out = ob_get_contents(); ob_end_clean(); return $out; } public function _viewProcesInitListItem($vInitId, $gotoIds, $pInitList) { $vLabel = $pInitList[$vInitId]; $kId = $vInitId; ?> "> "> "> _zasobID); return !empty($layers); } public function ajaxTask($task) { switch ($task) { case 'EDIT_INLINE': { $this->sendAjaxResponseJson('ajaxInlineEdit', $_REQUEST); break; } case 'EDIT_INLINE_SAVE': { $this->sendAjaxResponseJson('ajaxEditInlineSave', $_REQUEST); break; } case 'COPY': { $this->sendAjaxResponseJson('ajaxCopy', $_REQUEST); break; } case 'CREATE': { $this->sendAjaxCreate($_REQUEST); break; } case 'CREATE_SAVE': { $this->sendAjaxResponseJson('ajaxCreateSave', $_REQUEST); break; } case 'HIST': { $this->sendAjaxResponseJson('ajaxHist', $_REQUEST); break; } case 'FILES': { try { $id = V::get('ID', 0, $_REQUEST, 'int'); if ($id <= 0) throw new HttpException("404", 404); $this->sendAjaxFiles($id, $_REQUEST); } catch (HttpException $e) { Http::sendHeaderByCode($e->getCode()); echo $e->getMessage(); //UI::alert('danger', $e->getMessage()); } catch (Exception $e) { echo '
'; UI::alert('danger', $e->getMessage()); echo '
'; } break; } case 'FILES_UPLOAD': { $this->sendAjaxResponseJson('ajaxFileUpload', $_REQUEST); break; } case 'FILES_LIST': { $this->sendAjaxResponseJson('ajaxFileList', $_REQUEST); break; } case 'FILE_REMOVE': { $args = array(); $args['ID'] = V::get('ID', '', $_REQUEST); $args['filename'] = V::get('filename', '', $_POST); $this->sendAjaxResponseJson('ajaxFileRemove', $args); break; } case 'filePermsRefresh': { $this->sendAjaxResponseJson('ajaxFilePermsRefresh', $_REQUEST); break; } case 'FILES_CONN_TBL_LIST': { $id = V::get('ID', 0, $_REQUEST, 'int'); if ($id > 0) { $this->sendAjaxFilesConnTblList($id, $_REQUEST); } else { echo '404'; } break; } case 'TYPESPECIAL': { $fldID = V::get('fldID', 0, $_REQUEST, 'int'); if ($fldID > 0) { $this->sendTypeSpecial($fldID, $_REQUEST); } else { echo '404'; } break; } case 'HIDDEN_COLS_SAVE': { $this->sendAjaxResponseJson('ajaxHiddenColsSave', $_POST); break; } case 'PAGE_SIZE_SAVE': { $this->sendAjaxResponseJson('ajaxPageSizeSave', $_POST); break; } case 'THE_GEOM_SAVE': { $this->sendAjaxResponseJson('ajaxTheGeomSave', $_REQUEST); break; } case 'PROCES_INIT_FILTR': { $this->sendAjaxResponseJson('ajaxProcesInitFiltr', $_REQUEST); break; } default: $this->sendAjaxResponseJson('ajaxData', $_REQUEST); } } /** * ajax url: &_task=EDIT_INLINE * @param $rowID - $_GET['ID'] * @param $fieldName - $_GET['col'] */ private function ajaxInlineEdit() { $DBG = ('1' == V::get('DBG', '', $_REQUEST)); $args = $_REQUEST; $rowID = V::get('ID', 0, $_REQUEST, 'int'); $fieldName = V::get('col', '', $_REQUEST); if ($rowID <= 0 || empty($fieldName)) throw new HttpException("404", 404); $response = array(); ob_start(); $fieldID = $this->_acl->getFieldIdByName($fieldName); if (!$fieldID) { echo "404: No field by name ({$fieldName})"; exit; } $response['idZasob'] = $fieldID; $response['htmlFieldName'] = "f{$fieldID}"; if ($DBG) echo "fieldID: {$fieldID}\n"; $row = $this->_acl->buildQuery([])->getItem($rowID); if (!$row) { echo "404: No item ID({$rowID})"; exit; } if (!$this->_acl->canReadObjectField($fieldName, $row)) { if ($DBG) echo " R not allowed\n"; } else { if ($DBG) echo " R allowed\n"; } if (!$this->_acl->canWriteObjectField($fieldName, $row)) { if ($DBG) echo " W not allowed\n"; } else { if ($DBG) echo " W allowed\n"; } $fieldVal = ''; if ($this->_acl->canReadObjectField($fieldName, $row)) { $fieldVal = V::get($fieldName, $fieldVal, $row); } else { $fieldVal = '*****'; } $fieldVal = V::get("f{$fieldID}", $fieldVal, $_POST); $vCol = $this->_acl->getField($fieldID); $vCol['label'] = (!empty($vCol['label']))? $vCol['label'] : $vCol['name']; $response['fieldLabel'] = $vCol['label']; $tsValues = array(); $typeSpecial = Typespecial::getInstance($fieldID, $vCol['name']); if ($typeSpecial) { if($DBG){echo'
Typespecial('.$fieldID.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($typeSpecial);echo'
';} $specialValues = $typeSpecial->getEditSelectedValuesByIds($this->_zasobID, $row->ID, $fieldName, V::get($fieldName, $fieldVal, $row)); if($DBG){echo'
Typespecial('.$fieldID.') specialValues (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($specialValues);echo'
';} if (!empty($specialValues)) { $tsValues[$row->ID] = implode('
', $specialValues); } } $fieldParams = array('widthClass'=>'inside-modal', 'maxGrid'=>6); if (!empty($tsValues[$row->ID])) $fieldParams['typespecialValue'] = $tsValues[$row->ID]; if (!empty($tsValues[$row->ID])) $response['typespecialValue'] = $tsValues[$row->ID]; $vDefault = $this->_acl->getColDefault($fieldName); if (!empty($vDefault)) $fieldParams['default'] = $vDefault; if (!empty($vDefault)) $response['defaultValue'] = $vDefault; { try { $item = $this->_acl->getFormItem('W', $fieldID, "f{$fieldID}", $fieldVal, $fieldParams, $row); $response['formItem'] = $item; if (!empty($item['rawColType']['simpleType'])) $response['simpleType'] = $item['rawColType']['simpleType']; if (!empty($item['rawColType']['restrictions'])) $response['restrictions'] = $item['rawColType']['restrictions']; echo '
'; DBG::_(true, true, "item", $item, __CLASS__, __FUNCTION__, __LINE__); echo '
'; } catch (Exception $e) { echo '
'; UI::alert('danger', $e->getMessage()); echo '
'; } } ?> _acl->canWriteObjectField($fieldName, $row)) { // TODO: hide Zapisz btn on frontend side if (!$this->_acl->canReadObjectField($fieldName, $row)) { UI::alert('warning', "Brak uprawnień do odczytu i zapisu"); } else { echo '

' . $fieldVal . '

'; UI::alert('warning', "Brak uprawnień do zapisu"); } } else { echo $this->_acl->showFormItem('W', $fieldID, "f{$fieldID}", $fieldVal, $fieldParams, $row); if ($typeSpecial || $this->_acl->isDateField($fieldName) || $this->_acl->isDateTimeField($fieldName) ) { echo '

'; } } $response['legacy_html'] = ob_get_clean(); //$response['legacy_html'] = utf8_encode($response['legacy_html']);// pl chars bug return $response; } private function ajaxEditInlineSave($args) { $primaryKeyField = $this->_acl->getPrimaryKeyField(); $primaryKey = V::get($primaryKeyField, 0, $args, 'int'); $fieldName = V::get('col', '', $_REQUEST); if (empty($primaryKey)) throw new HttpException("Wrong param id!", 400); if (empty($fieldName)) throw new HttpException("Wrong param col!", 400); $fieldID = $this->_acl->getFieldIdByName($fieldName); if (!$fieldID) throw new HttpException("Field not exists!", 404); $item = $this->_acl->buildQuery([])->getItem($primaryKey); if (!$item) throw new HttpException("Item not exists!", 404); $itemFromUser = $this->_acl->convertObjectFromUserInput($args, $type = 'array_by_id', $prefix = 'f'); if (!isset($itemFromUser[$fieldName])) throw new HttpException("Field not set!", 400); $itemPatch = array(); $itemPatch[$fieldName] = V::get($fieldName, null, $itemFromUser); $itemPatch[$primaryKeyField] = $primaryKey; $response = new stdClass(); try { $affected = $this->_acl->updateItem($itemPatch); if ($affected > 0) { $response->type = 'success'; $response->msg = "Rekord zapisany pomyślnie";//"Record saved successfully"; } else if ($affected == 0) { $response->type = 'info'; $response->msg = "Nie wprowadzono żadnych zmian"; } $response->record = $this->_acl->buildQuery([])->getItem($primaryKey); } catch (Exception $e) { $response->type = 'error'; $response->msg = $e->getMessage(); } return $response; } public function sendAjaxEdit($id, $args) { header("Content-type: text/plain"); $DBG = ('1' == V::get('DBG', '', $_REQUEST)); $acl = $this->_acl; $record = $acl->buildQuery([])->getItem($id); if (!$acl->canWriteRecord($record) && !$acl->hasPermSuperWrite()) { UI::alert('danger', "Brak dostępu do rekordu");// TODO: more info - reason return; } $fieldsList = array(); foreach ($acl->getFieldListByIdZasob() as $kID => $fieldName) { if ($fieldName == 'ID') continue; $field['name'] = $fieldName; $field['opis'] = $acl->getFieldOpis($fieldName); $field['label'] = $acl->getFieldLabel($fieldName); if (empty($field['label'])) $field['label'] = str_replace('_', ' ', $fieldName); $fieldsList[$kID] = $field; } $cols = array(); foreach ($fieldsList as $kID => $field) { $cols[$kID] = ''; if ($this->_acl->canReadObjectField($field['name'], $record)) { $cols[$kID] = V::get($field['name'], '', $record); } else { $cols[$kID] = '*****'; } // if ($acl->canReadObjectField($field['name'])) { // $cols[$kID] = V::get($field['name'], '', $record); // } else { // $cols[$kID] = '*****'; // } $cols[$kID] = V::get("f{$kID}", $cols[$kID], $_POST); } $tsValues = array(); if($DBG){echo'
fieldsList (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($fieldsList);echo'
';} if (!empty($fieldsList)) { foreach ($fieldsList as $vColID => $vCol) { $typeSpecial = Typespecial::getInstance($vColID, $vCol['name']); if ($typeSpecial) { if($DBG){echo'
Typespecial('.$vColID.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($typeSpecial);echo'
';} $colValue = V::get($vCol['name'], '', $record); if($DBG){echo'
V::get('.$vCol['name'].', "", $record) (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($colValue);echo'
';} $specialValues = $typeSpecial->getEditSelectedValuesByIds($this->_zasobID, $record['ID'], $vCol['name'], $colValue); if($DBG){echo'
Typespecial('.$vColID.') specialValues (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($specialValues);echo'
';} if (!empty($specialValues)) { $tsValues[$vColID] = implode('
', $specialValues); } } } } if($DBG){echo'
tsValues (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($tsValues);echo'
';} $rowFunctionsOut = $this->_showRowFunctions($record['ID'], array('edit', 'cp'), true); ?>
Edycja rekordu Nr $vCol) : ?> canWriteObjectField($vCol['name'], $record)) : ?>
true, 'tabindex'=>(++$tabindex), 'maxGrid'=>8); if (!empty($tsValues[$kID])) { $fieldParams['typespecialValue'] = $tsValues[$kID]; } echo $acl->showFormItem('W', $kID, "f{$kID}", $cols[$kID], $fieldParams, $record); ?>
canReadObjectField($vCol['name'], $record)) : ?>

showFormItem('R', $kID, "f{$kID}", $cols[$kID], array('appendBack'=>true), $record); if (!empty($tsValues[$kID])) { echo $tsValues[$kID]; } else if (!empty($record[ $vCol['name'] ])) { echo $record[ $vCol['name'] ]; } ?>

_acl; header("Content-type: text/plain"); $DBG = ('1' == V::get('DBG', '', $_REQUEST)); if (!Core_AclHelper::hasCreatePerms($acl)) { ?>
Brak uprawnień do utworzenia nowego rekordu.
$v) { if (strlen($k) > 4 && substr($k, 0, 3) == 'ff_' && !empty($v)) {// force filter prefix $fldName = substr($k, 3); $forceFilterInit[$fldName] = $v; } } $fieldsList = $this->_acl->getFields(); foreach ($fieldsList as $kID => $vCol) { $defaultValue = ''; if ($vCol['name'] == 'ID') { unset($fieldsList[$kID]); continue; } if (!empty($forceFilterInit[$vCol['name']])) { $defaultValue = $forceFilterInit[$vCol['name']]; } // TODO: read from session cache $cols[$kID] = V::get("f{$kID}", $defaultValue, $_POST); $fieldsList[$kID]['label'] = (!empty($vCol['label']))? $vCol['label'] : $vCol['name']; } ?>
Dodaj nowy rekord $vCol) : ?> _acl->canCreateField($vCol['name'])) : ?>
true, 'tabindex'=>(++$tabindex), 'maxGrid'=>8); echo $this->_acl->showFormItem('C', $kID, "f{$kID}", $cols[$kID], $fieldParams); ?>
_acl->convertObjectFromUserInput($args, $type = 'array_by_id', $prefix = 'f'); $createdId = $this->_acl->addItem($item); if ($createdId) { $response->type = 'success'; $response->msg = "Utworzono pomyślnie rekord nr {$createdId}"; $response->id = $createdId; $response->record = $this->_acl->buildQuery([])->getItem($createdId); } else { $response->type = 'error'; $response->msg = "Nie udało się utworzyć nowego rekordu!"; } } catch (Exception $e) { $response->type = 'error'; $response->msg = $e->getMessage(); } return $response; } private function ajaxCopy($args) { $id = V::get('ID', 0, $_REQUEST, 'int'); if ($id <= 0) { throw new HttpException("Wrong param ID!", 404); } $item = $this->_acl->buildQuery([])->getItem($id); if (!$item) { throw new HttpException("Item '{$id}' not exists!", 404); } $response = new stdClass(); $itemCopy = $this->_acl->createItemCopy($item); $createdId = null; try { $createdId = $this->_acl->addItem($itemCopy); if ($createdId) { $response->type = 'success'; $response->msg = "Rekord skopiowany pomyślnie - utworzono rekord nr {$createdId}"; $response->id = $createdId; $response->record = $this->_acl->buildQuery([])->getItem($createdId); } else { $response->type = 'error'; $response->msg = "Nie udało się skopiować rekordu!"; } } catch (Exception $e) { $response->type = 'error'; $response->msg = "Wystąpiły błędy!"; $response->msg = $e->getMessage(); } return $response; } private function ajaxHist($args) { $jsonResponse = array(); $id = V::get('ID', 0, $args, 'int'); $acl = $this->_acl; $record = $acl->buildQuery([])->getItem($id); if (!$record) throw new HttpException("404: No item ID({$id})", 404); $visibleCols = $acl->getRealFieldList(); $rowsHist = $acl->getHistItems($id); $jsonResponse['row_functions'] = $this->_parseRowFunctions($record->ID, array('hist', 'cp'), $showLabel = true); $visibleColsWithIds = array(); $visibleColsLabels = array(); foreach ($visibleCols as $vColName) { $fldId = $acl->getFieldIdByName($vColName); if ($fldId) { $visibleColsWithIds[$fldId] = $vColName; $label = $acl->getFieldLabel($vColName); $label = (!$label)? $vColName : '' . $label . ''; $visibleColsLabels[$fldId] = $label; } } $jsonResponse['label'] = "Historia rekordu Nr {$id}"; $jsonResponse['fields'] = array_values($visibleColsWithIds); $jsonResponse['field_label'] = $visibleColsLabels; if (empty($rowsHist)) return $jsonResponse; $jsonResponse['rows'] = array(); foreach ($rowsHist as $histRow) { $histItem = array(); $histItem['ID'] = V::get('ID', '', $histRow); $histItem['_created'] = V::get('_created', '', $histRow); $histItem['_author'] = V::get('_author', '', $histRow); $histItem['changes'] = array(); foreach ($visibleColsWithIds as $fldId => $fieldName) { if (!array_key_exists($fieldName, (array)$histRow)) continue; $value = V::get($fieldName, '', $histRow); if ('N/S;' == $value) continue; $changeItem = array(); $changeItem['fieldName'] = $fieldName; $changeItem['acl_read'] = $acl->canReadObjectField($fieldName, $record); if ($changeItem['acl_read']) { $changeItem['value'] = V::get($fieldName, '', $histRow); } if ('the_geom' == $fieldName && $acl->canWriteObjectField($fieldName, $record)) { $sourceName = $acl->getSourceName(); if ('default_db' == $sourceName && !empty($value)) { $typeName = $acl->getName(); $idHist = V::get('ID', '', $histRow); $changeItem['revert_function_url'] = Request::getPathUri() . "index.php?_route=ViewTableAjax&typeName=p5_{$sourceName}:{$typeName}&_task=revertFromHistAjax&ID={$id}&idHist={$idHist}&fieldName={$fieldName}"; $changeItem['revert_function_data'] = "ID={$id}&idHist={$idHist}&fieldName={$fieldName}"; } } $histItem['changes'][$fieldName] = $changeItem; } $jsonResponse['rows'][] = $histItem; } return $jsonResponse; } public function ajaxFileUpload($args) { $id = V::get('ID', 0, $args, 'int'); if ($id <= 0) throw new HttpException("404", 404); $dbID = $this->_acl->getDB(); $db = DB::getDB($dbID); if (!$db) throw new HttpException("No DB ({$dbID})", 406); $record = $this->_acl->buildQuery([])->getItem($id); if (!$record) throw new HttpException("No item ID({$rowID})", 404); if (!$this->_acl->canReadRecord($record)) throw new Exception("Brak uprawnień do odczytu"); if (!$this->_acl->canWriteRecord($record)) throw new Exception("Brak uprawnień do zapisu"); $tblName = $this->_acl->getName(); $confTblName = "{$tblName}_COLUMN"; $folderConfAll = FoldersConfig::getRawData(); if (!FoldersConfig::hasConfig($confTblName)) throw new HttpException("Brak danych konfiguracyjnych ({$tblName})", 404); $folderConf = FoldersConfig::getAll($confTblName); $uploader = new FileUploader($confTblName, $record); if (!$uploader->setConfig($folderConf)) throw new HttpException("Błąd danych konfiguracyjnych ({$tblName})", 404); $uploader->findFolder(); $errorMsg = ''; if (!empty($args['SCANS_COLUMN_ADD'])) { $uploaded = $uploader->tryMoveFromScanAjax($errorMsg); } else { $uploaded = $uploader->tryUploadAjax($errorMsg); } $retJson = new stdClass(); if (!$uploaded) throw new Exception($errorMsg); $uploadedFileName = ''; $uploadedFile = $uploader->getLastUploadedFile(); if ($uploadedFile) { $uploadedFileName = explode('/', $uploadedFile); $uploadedFileName = end($uploadedFileName); } //echo '{"type":"SUCCESS", "string": "Plik został poprawnie wgrany do odpowiedniego katalogu '.$uploadedFileName.'"}'; $retJson->type = 'SUCCESS'; $retJson->msg = "Plik został poprawnie wgrany do odpowiedniego katalogu {$uploadedFileName}"; if (!empty($uploadedFileName)) { $sqlObj = new stdClass(); $sqlObj->ID = $record->ID; $sqlObj->M_DIST_FILES = "Wgrano plik {$uploadedFileName}"; $db->UPDATE_OBJ($this->_tbl, $sqlObj); } return $retJson; } public function ajaxFileRemove($args) { $id = V::get('ID', 0, $args, 'int'); if ($id <= 0) throw new HttpException("404", 404); $filename = V::get('filename', '', $args); if (empty($filename)) throw new Exception("Nie wybrano pliku do usunięcia"); $dbID = $this->_acl->getDB(); $db = DB::getDB($dbID); if (!$db) throw new HttpException("No DB ({$dbID})", 406); $record = $this->_acl->buildQuery([])->getItem($id); if (!$record) throw new HttpException("No item ID({$rowID})", 404); if (!$this->_acl->canReadRecord($record)) throw new Exception("Brak uprawnień do odczytu"); if (!$this->_acl->canWriteRecord($record)) throw new Exception("Brak uprawnień do zapisu"); $tblName = $this->_acl->getName(); $confTblName = "{$tblName}_COLUMN"; $folderConfAll = FoldersConfig::getRawData(); if (!FoldersConfig::hasConfig($confTblName)) throw new HttpException("Brak danych konfiguracyjnych ({$tblName})", 404); $folderConf = FoldersConfig::getAll($confTblName); $uploader = new FileUploader($confTblName, $record); if (!$uploader->setConfig($folderConf)) throw new HttpException("Błąd danych konfiguracyjnych ({$tblName})", 404); $uploader->findFolder(); $errorMsg = ''; $removed = $uploader->tryRemoveFromAjax($filename, $errorMsg); if (!$removed) throw new Exception($errorMsg); $retJson = new stdClass(); $retJson->type = 'SUCCESS'; $retJson->msg = 'Plik został poprawnie usunięty'; return $retJson; } public function ajaxFileList($args) { $id = V::get('ID', 0, $args, 'int'); if ($id <= 0) throw new HttpException("404", 404); $dbID = $this->_acl->getDB(); $db = DB::getDB($dbID); if (!$db) throw new HttpException("No DB ({$dbID})", 406); $record = $this->_acl->buildQuery([])->getItem($id); if (!$record) throw new HttpException("No item ID({$rowID})", 404); if (!$this->_acl->canReadRecord($record)) throw new Exception("Brak uprawnień do odczytu"); $tblName = $this->_acl->getName(); $confTblName = "{$tblName}_COLUMN"; $folderConfAll = FoldersConfig::getRawData(); if (!FoldersConfig::hasConfig($confTblName)) throw new HttpException("Brak danych konfiguracyjnych ({$tblName})", 404); $folderConf = FoldersConfig::getAll($confTblName); $uploader = new FileUploader($confTblName, $record); if (!$uploader->setConfig($folderConf)) throw new HttpException("Błąd danych konfiguracyjnych ({$tblName})", 404); $uploader->findFolder(); $mainFolder = $uploader->getDestFolder(); $files = $uploader->getFilesFromFolder($mainFolder, false, true); $localPath = $uploader->getLocalPath(); $folderWeb = $uploader->getFolderWeb(); $jsonFiles = $this->convertFileListToJson($files, $folderWeb, $localPath, $mainFolder); return $jsonFiles; } private function ajaxFilePermsRefresh($args) { $id = V::get('ID', 0, $args, 'int'); if ($id <= 0) throw new HttpException("Wrong param ID", 404); $dbID = $this->_acl->getDB(); $db = DB::getDB($dbID); if (!$db) throw new HttpException("No DB", 406); $record = $this->_acl->buildQuery([])->getItem($id); if (!$record) throw new Exception("No item ID({$rowID})", 404); $tblName = $this->_acl->getName(); // TODO: SyncPermsCustomTables->getRecordTask($tbl, $id); $sql_L_APPOITMENT_USER = V::get('L_APPOITMENT_USER', '', $record); $sql_A_ADM_COMPANY = V::get('A_ADM_COMPANY', '', $record); $sql_A_CLASSIFIED = V::get('A_CLASSIFIED', '', $record); $mainDB = DB::getDB(); if ('IN7_MK_BAZA_DYSTRYBUCJI' == $tblName) { $sql = "insert into `_SYNC_FILE_PERMS` ( `ID_PROJECT`, `A_SYNCHRONIZED` ) values ( '{$record->ID}' , 0 ) ON DUPLICATE KEY UPDATE `A_SYNCHRONIZED`=0 "; } else if ('IN7_DZIENNIK_KORESP' == $tblName) { $sql = "insert into `_SYNC_FILE_PERMS` ( `ID_PROJECT`, `A_SYNCHRONIZED` ) values ( '{$record->ID_PROJECT}' , 0 ) ON DUPLICATE KEY UPDATE `A_SYNCHRONIZED`=0 "; } else { $sql = "insert into `_SYNC_TABLE_FILE_PERMS` ( `TBL_NAME`, `TBL_ID`, `L_APPOITMENT_USER`, `A_ADM_COMPANY`, `A_CLASSIFIED`, `A_SYNCHRONIZED` ) values ( '{$tblName}' , '{$id}' , '{$sql_L_APPOITMENT_USER}' , '{$sql_A_ADM_COMPANY}' , '{$sql_A_CLASSIFIED}' , 0 ) ON DUPLICATE KEY UPDATE `A_SYNCHRONIZED`=0 "; } $res = $mainDB->query($sql); if ($mainDB->has_errors()) { //echo'
 (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'
'; //echo'
 (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($mainDB->get_errors());echo'
'; throw new Exception("Nie udało się dodać zadania"); } // TODO: this blocks browser ajax query //$limit = 3; //while ($limit--) { // sleep(10); // TODO: check if task is done //} $confTblName = "{$tblName}_COLUMN"; $folderConfAll = FoldersConfig::getRawData(); if (!FoldersConfig::hasConfig($confTblName)) { throw new Exception("Brak danych konfiguracyjnych ({$tblName})", 404); } $folderConf = FoldersConfig::getAll($confTblName); $uploader = new FileUploader($confTblName, $record); if (!$uploader->setConfig($folderConf)) { throw new Exception("Błąd danych konfiguracyjnych ({$tblName})", 404); } $uploader->findFolder(); $mainFolder = $uploader->getDestFolder(); $files = $uploader->getFilesFromFolder($mainFolder, false, true); $localPath = $uploader->getLocalPath(); $folderWeb = $uploader->getFolderWeb(); $jsonData = new stdClass(); $jsonData->msg = 'Zadanie dodane'; $jsonData->type = 'success'; $jsonData->files = $this->convertFileListToJson($files, $folderWeb, $localPath, $mainFolder); return $jsonData; } private function sendAjaxFilesConnTblList($id, $args) { header("Content-type: application/json"); $DBG = ('1' == V::get('DBG', '', $_REQUEST)); $dbID = $this->_acl->getDB(); $db = DB::getDB($dbID); if (!$db) { header('HTTP/1.0 406 Not Acceptable'); echo 'No DB (' . $dbID . ')'; exit; } $record = $this->_acl->buildQuery([])->getItem($id); if (!$record) { header('HTTP/1.0 404 Not Found'); echo 'No item ID(' . $rowID . ')'; exit; } $connTblName = ''; $connTblID = V::get('connTblID', 0, $_REQUEST, 'int'); if ($connTblID <= 0) { header('HTTP/1.0 406 Not Acceptable'); echo 'No conn Table ID'; exit; } $connTblTypespecials = $this->getConnectedTblTypespecials($connTblID); if (empty($connTblTypespecials)) { header('HTTP/1.0 406 Not Acceptable'); echo "No conn Table (ID={$connTblID})"; exit; } if($DBG){echo'
connTblTypespecials (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($connTblTypespecials);echo'
';} if(1) { header('HTTP/1.0 404 Not Found'); echo 'TODO: ...'; exit; } $tblName = $this->_acl->getName(); $confTblName = "{$tblName}_COLUMN"; $folderConfAll = FoldersConfig::getRawData(); if (!FoldersConfig::hasConfig($confTblName)) { header('HTTP/1.0 404 Not Found'); echo '{"type":"ERROR", "string": "Brak danych konfiguracyjnych (' . $tblName . ')"}'; exit; } $folderConf = FoldersConfig::getAll($confTblName); $uploader = new FileUploader($confTblName, $record); if (!$uploader->setConfig($folderConf)) { header('HTTP/1.0 404 Not Found'); echo '{"type":"ERROR", "string": "Błąd danych konfiguracyjnych (' . $tblName . ')"}'; exit; } $uploader->findFolder(); $mainFolder = $uploader->getDestFolder(); $files = $uploader->getFilesFromFolder($mainFolder, false, true); $localPath = $uploader->getLocalPath(); $folderWeb = $uploader->getFolderWeb(); $jsonFiles = $this->convertFileListToJson($files, $folderWeb, $localPath, $mainFolder); echo json_encode($jsonFiles); exit; } public function convertFileListToJson($files, $folderWeb, $localPath, $mainFolder) { $jsonFiles = array(); if (!is_array($files) || empty($files)) { return $jsonFiles; } sort($files); foreach ($files as $vFilePath) { $file = new stdClass(); $file->name = str_replace("{$localPath}/{$mainFolder}/", '', $vFilePath); //$file->name = explode('/', $vFilePath); //$file->name = end($file->name); $file->size = filesize($vFilePath); $file->sizeStr = V::humanFileSize($file->size); $file->type = ''; $file->created = date("Y-m-d H:i:s", filectime($vFilePath)); $file->web = str_replace($localPath, $folderWeb, $vFilePath); $jsonFiles[] = $file; } return $jsonFiles; } private function getConnectedTables() { $connTbls = array(); return $connTbls;// TODO: OFF - hardlinki tworzone w bash_sync_perms.php $fields = $this->_acl->getVirtualFieldListByIdZasob(); if (!empty($fields)) { foreach ($fields as $vColID => $vCol) { $typeSpecial = Typespecial::getInstance($vColID); if ($typeSpecial) { $tsConnTbls = $typeSpecial->getTblAliasList(); if (!empty($tsConnTbls)) { foreach ($tsConnTbls as $kID => $vName) { $connTbls[$kID] = $vName; } } } } } return $connTbls; } private function getConnectedTblTypespecials($connTblID) { $connTblTypespecials = array(); $fields = $this->_acl->getVirtualFieldListByIdZasob(); if (!empty($fields)) { foreach ($fields as $vColID => $vCol) { $typeSpecial = Typespecial::getInstance($vColID); if ($typeSpecial) { $tsConnTbls = $typeSpecial->getTblAliasList(); if (array_key_exists($connTblID, $tsConnTbls)) { $connTblTypespecials[] = $typeSpecial; } } } } return $connTblTypespecials; } private function sendAjaxFiles($id, $args) { header("Content-type: text/plain"); $DBG = ('1' == V::get('DBG', '', $_REQUEST)); $dbID = $this->_acl->getDB(); $db = DB::getDB($dbID); if (!$db) throw new HttpException("", 406); $record = $this->_acl->buildQuery([])->getItem($id); if (!$record) throw new HttpException("404: No item ID({$rowID})", 404); if (!$this->_acl->canReadRecord($record)) throw new Exception("Brak uprawnień do odczytu"); $tblName = $this->_acl->getName(); $confTblName = "{$tblName}_COLUMN"; $folderConfAll = FoldersConfig::getRawData(); if (!FoldersConfig::hasConfig($confTblName)) throw new HttpException("Brak danych konfiguracyjnych", 404); $folderConf = FoldersConfig::getAll($confTblName); //echo'
$folderConf (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($folderConf);echo'
'; $uploader = new FileUploader($confTblName, $record); $errMsg = ''; if (!$uploader->setConfig($folderConf, $errMsg)) throw new HttpException("Błąd danych konfiguracyjnych ({$tblName})" . '
' . "\n" . $errMsg, 404); $uploader->findFolder(); if($DBG){ echo'
uploader (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($uploader);echo'
'; } $mainFolder = $uploader->getDestFolder(); if($DBG){ echo'
mainFolder (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($mainFolder);echo'
'; } if (!$mainFolder) { $destFolderPath = $uploader->getDestLocalPath(true); $folderCreated = $uploader->tryCreateDestFolder($destFolderPath); if ($folderCreated) { //UI::alert('info', "Utworzono katalog"); $uploader->findFolder(); $mainFolder = $uploader->getDestFolder(); } else { UI::alert('warning', "Nie udało się utworzyć katalogu"); } } $files = $uploader->getFilesFromFolder($mainFolder, false, true); if($DBG){ echo'
files (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($files);echo'
'; } $sharePoint = V::get('share_point', null, $folderConf); if ($sharePoint) { if ('//' == substr($mainFolder, 0, 2)) { $sharePoint = FoldersConfig::getNfsOsPath() . "{$mainFolder}"; } else { $sharePoint = FoldersConfig::getNfsOsPath() . "{$sharePoint}/{$mainFolder}"; } } $localPath = $uploader->getLocalPath(); $folderWeb = $uploader->getFolderWeb(); $jsonFiles = $this->convertFileListToJson($files, $folderWeb, $localPath, $mainFolder); if($DBG){ echo'
jsonFiles (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($jsonFiles);echo'
'; } $folderSkanyConf = FoldersConfig::getAll('SCANS_COLUMN'); $skanyLocalPath = V::get('mount_point', null, $folderSkanyConf); $skanySharePoint = V::get('share_point', null, $folderSkanyConf); $skanyFolderWeb = V::get('www_share_point', null, $folderSkanyConf); $skanyFiles = $uploader->getFilesFromSkany($folderSkanyConf, false); sort($skanyFiles); $fileTypes = FoldersConfig::getAll('m_dist_files_types'); $rowFunctionsOut = $this->_showRowFunctions($record->ID, array('files', 'cp'), true); $fileIndexField = V::get('DEST_FILE_INDEX_FIELD', 'ID', $folderConf); $fileIndex = V::get($fileIndexField, $record->ID, $record); ?>

Pliki w katalogu

Brak folderu!

Folder dla tego rekordu nie został utworzony.

Brak plików



_acl->canWriteRecord($record)) : ?>
Brak uprawnień do dodawania plików

Ustal nazwę pliku zgodną z obiegiem dokumentów ?>

Nr Typ Opis Data wersji Numer wersji




wybrany plik do folderu:

getDestPathShare(true); ?>
(Jeśli folder nie istnieje to zostanie utworzony automatycznie)

_acl->getField($fldID); DBG::log($fld, 'array', "\$fld({$fldID})"); if (!$fld) { // 404 } else { $fldName = $fld['name']; } $jsonData = array(); $typeSpecial = Typespecial::getInstance($fldID, $fldName); if ($typeSpecial) { $query = V::get('q', '', $_REQUEST); DBG::log("\$query({$query})"); $rawRows = null; $rows = $typeSpecial->getValuesWithExports($query); DBG::log($rows, 'array', "\$rows({$query})"); foreach ($rows as $kID => $vItem) { $itemJson = new stdClass(); $itemJson->id = $vItem->id; $itemJson->name = $vItem->param_out; if (!empty($vItem->exports)) { $itemJson->exports = $vItem->exports; } if (!empty($vItem->{'$order'})) { $itemJson->{'$order'} = $vItem->{'$order'}; } $jsonData[] = $itemJson; } } /* MENU_INIT:VIEWTABLE_AJAX ZASOB_ID:1188 _task:TYPESPECIAL fldID:3866 Form Dataview sourceview URL encoded q:te */ echo json_encode($jsonData); exit; } public function ajaxData($args) {// executed from url: "{$this->syncUrl"&_hash={$this->_htmlID}&_task=loadDataAjax" $DBG = ('1' == V::get('DBG', '', $_REQUEST)); $acl = $this->_acl; $pageSize = V::get('pageSize', $this->_pageSize, $args, 'int'); $page = V::get('page', 0, $args, 'int'); $currSortCol = V::get('currSortCol', '', $args); $currSortFlip = V::get('currSortFlip', '', $args); if ($page > 0) { $page -= 1; } $params = array(); $params['limit'] = $pageSize; $params['limitstart'] = $page * $params['limit']; $params['order_by'] = ($currSortCol)? $currSortCol : ''; $params['order_dir'] = $currSortFlip; foreach ($args as $k => $v) { if (strlen($k) > 3 && substr($k, 0, 2) == 'f_' && strlen($v) > 0) {// filter prefix $params[$k] = $v; } else if (strlen($k) > 4 && substr($k, 0, 3) == 'sf_' && strlen($v) > 0) {// special filter prefix $params[$k] = $v; } } $filters = new stdClass(); $filters->currSortCol = $currSortCol; $filters->currSortFlip = $currSortFlip; foreach ($args as $k => $v) { if (strlen($k) > 3 && substr($k, 0, 2) == 'f_' && strlen($v) > 0) {// filter prefix $filters->{$k} = $v; } else if (strlen($k) > 4 && substr($k, 0, 3) == 'sf_' && strlen($v) > 0) {// special filter prefix $filters->{$k} = $v; } } $this->setFilters($filters); $vCols = $acl->getVirtualFieldListByIdZasob(); if (!empty($vCols)) { if($DBG){echo'
vCols (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($vCols);echo'
';} } $visibleCols = $acl->getVisibleFieldListByIdZasob(); if($DBG){echo'
visibleCols (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($visibleCols);echo'
';} $jsonData = new stdClass(); $jsonData->page = $page + 1; $jsonData->pageSize = $pageSize; $jsonData->filters = $filters; $jsonData->cols = new stdClass(); $jsonData->primaryKey = $acl->getPrimaryKeyField(); $ind = 0; foreach ($visibleCols as $fieldID => $col) { $ind++; $columnConfig = (object)array('index'=>$ind); if (in_array($col, array('A_STATUS','A_STATUS_CURRENT','A_SERVICES_STATUS_CURRENT'))) { $columnConfig->format = '
{0}
'; } else if (in_array($col, array('Status'))) { // Ahmes problems Status colors $columnConfig->format = '
{0}
'; } else if ($acl->isGeomField($col)) { $columnConfig->type = 'geom'; } if ('' !== ($label = $acl->getFieldLabel($col))) { $columnConfig->friendly = $label; } $colType = $acl->getFieldType($col); if ($colType) {// @see MarkTableAjaxFilterColType if($DBG){echo'
field('.$col.') $colType (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($colType);echo'
';} if ($colType['type'] == 'date') { //$columnConfig->type = 'date';// TODO: require datetimepicker } if (!empty($colType['simpleType'])) $columnConfig->type = $colType['simpleType']; } else {// typespecial - no type $columnConfig->type = 'special'; } $columnConfig->xsdType = $acl->getXsdFieldType($col); if ($columnConfig->xsdType) { list($prefix, $typeName, $refTypeName) = explode(":", $columnConfig->xsdType); DBG::log([$prefix, $typeName, $refTypeName], 'array', "col '{$col}'"); switch ($prefix) { case 'ref': case 'alias_ref': if (!$refTypeName) throw new HttpException("Schema Error for field({$col}) xsdType({$columnConfig->xsdType})", 500); $columnConfig->type = 'ref'; $columnConfig->xsdRefUri = Api_WfsNs::getNsUri($typeName); $columnConfig->xsdRefType = $refTypeName; $columnConfig->xsdRefNsPrefix = $typeName; break; case 'xsd': switch ($typeName) { case 'string': $columnConfig->type = 'string'; break; case 'integer': $columnConfig->type = 'number'; break; case 'int': $columnConfig->type = 'number'; break; case 'long': $columnConfig->type = 'number'; break; } break; case 'p5': switch ($typeName) { case 'enum': $columnConfig->type = 'string'; break; case 'alias': { $format = $acl->getXsdFieldParam($col, 'format'); if ($format) $columnConfig->format = $format; } break; case 'string': { $columnConfig->type = 'p5:string'; $columnConfig->formatByValue = $acl->getXsdFieldParam($col, 'formatByValue'); } break; } break; } } $typeSpecial = Typespecial::getInstance($fieldID, $col); if ($typeSpecial) { if($DBG){echo'
typeSpecial (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($typeSpecial);echo'
';} $columnConfig->_tsRetId = $typeSpecial->getReturnId(); if ($columnConfig->_tsRetId == 0) { $tsParamOut = V::get('param_out', null, $typeSpecial); if ($tsParamOut) { $tsFormat = V::get('format', null, $tsParamOut); $tsValues = V::get('values', null, $tsParamOut); $tsAliases = V::get('alias', null, $tsParamOut); if (false !== strpos($tsFormat, ' Array([ID] => 1467), [alias] => Array([1467] => ID) */ $bugTsColsNotVisible = array(); foreach ($tsValues as $kVarName => $vIdZasob) { if (array_key_exists($vIdZasob, $tsAliases)) { $tsAliasMap[$kVarName] = $tsAliases[$vIdZasob]; } else { $bugTsColsNotVisible[] = "noAliasFor {$vIdZasob}"; } if (!array_key_exists($vIdZasob, $visibleCols)) { $bugTsColsNotVisible[] = $vIdZasob; } } if (empty($bugTsColsNotVisible)) { $tsSimpleLink = new stdClass(); $tsSimpleLink->format = $tsFormat; $tsSimpleLink->aliasMap = $tsAliasMap; $columnConfig->_tsSimpleLink = $tsSimpleLink; $columnConfig->type = 'simpleLink'; } else { $columnConfig->_tsSimpleLinkBug = $bugTsColsNotVisible; } } } } } if ($columnConfig->xsdType) {// fix fields type p5:typeSpecialSimpleLink (previously defined by Typespecial) switch ($columnConfig->xsdType) { case 'p5:typeSpecialSimpleLink': { $columnConfig->type = 'simpleLink'; $columnConfig->_tsRetId = 0; $columnConfig->_tsSimpleLink = new stdClass(); $columnConfig->_tsSimpleLink->format = $acl->getXsdFieldParam($col, 'format'); $columnConfig->_tsSimpleLink->aliasMap = $acl->getXsdFieldParam($col, 'aliasMap'); } break; } } // @see ajaxHiddenColsSave if (UserProfile::isHiddenColumn($acl->getID(), $fieldID)) { $columnConfig->hidden = true; } $columnConfig->description = $acl->getFieldOpis($col); $jsonData->cols->{$col} = $columnConfig; } $jsonData->rows = array(); $queryFeatures = $acl->buildQuery($params); $jsonData->total = $queryFeatures->getTotal(); if($DBG){echo'
get_total (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($jsonData->total);echo'
';} $listItems = $queryFeatures->getItems(); $primaryKeyField = $acl->getPrimaryKeyField(); $items = []; foreach ($listItems as $item) $items[ $item[$primaryKeyField] ] = $item; if($DBG){echo'
items (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($items);echo'
';} // TODO: add virtual data by Typespecial if (!empty($vCols) && !empty($items)) { foreach ($vCols as $vColID => $vCol) { $colType = $acl->getFieldTypeById($vColID); if ($colType) continue;// pomin Typespecial dla realnych komorek w bazie danych $typeSpecial = Typespecial::getInstance($vColID, $vCol); if ($typeSpecial) { $columnConfig = V::get($vCol, null, $jsonData->cols); if ($columnConfig && !empty($columnConfig->_tsSimpleLink)) { // pomin simple link values - mved to js render } else { if($DBG){echo'
Typespecial('.$vColID.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($typeSpecial);echo'
';} $ids = array_keys($items); $specialValues = $typeSpecial->getValuesByIds($this->_zasobID, $ids); if($DBG){echo'
Typespecial('.$vCol.') specialValues (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($specialValues);echo'
';} if (!empty($specialValues)) foreach ($specialValues as $kItemID => $vValues) { $tsValue = implode('
', $vValues); if($DBG){echo'
Item['.$kItemID.'].'.$vCol.' specialValues (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($items[$kItemID]);echo'
';} if (!empty($items[$kItemID][$vCol]) && !empty($tsValue)) { $items[$kItemID][$vCol] .= ": {$tsValue}"; } else { $items[$kItemID][$vCol] = $tsValue; } } } } } } { if(V::get('DBG', '', $_GET)){$jsonData->__DBG__ = [];} $p5Alias = []; foreach ((array)$jsonData->cols as $fieldName => $conf) { if ('p5:alias' == V::get('xsdType', '', $conf)) { if(V::get('DBG', '', $_GET)){$jsonData->__DBG__[$fieldName] = $conf;} $aliasType = $acl->getXsdFieldParam($fieldName, 'type');// 'type' => 'sql_table_alias', if ('sql_table_alias' == $aliasType) { $p5Alias[$fieldName] = (array)$conf; $p5Alias[$fieldName]['type'] = 'sql_table_alias'; $p5Alias[$fieldName]['local_join_key'] = $acl->getXsdFieldParam($fieldName, 'local_join_key');// 'local_join_key' => 'ID', $p5Alias[$fieldName]['remote_table_name'] = $acl->getXsdFieldParam($fieldName, 'remote_table_name');// 'remote_table_name' => 'CRM_LISTA_ZASOBOW_ORDERS_summary_view', $p5Alias[$fieldName]['remote_join_key'] = $acl->getXsdFieldParam($fieldName, 'remote_join_key');// 'remote_join_key' => 'ID', $p5Alias[$fieldName]['remote_column_value'] = $acl->getXsdFieldParam($fieldName, 'remote_column_value');// 'remote_column_value' => 'SUM_POS', } else if ('sql_query_alias' == $aliasType) { $p5Alias[$fieldName] = (array)$conf; $p5Alias[$fieldName]['type'] = 'sql_query_alias'; $p5Alias[$fieldName]['local_join_key'] = $acl->getXsdFieldParam($fieldName, 'local_join_key'); $p5Alias[$fieldName]['join_query_format'] = $acl->getXsdFieldParam($fieldName, 'join_query_format'); } } } if(V::get('DBG', '', $_GET)){$jsonData->__DBG__['$p5Alias'] = $p5Alias;} if(V::get('DBG', '', $_GET)){$jsonData->__DBG__['$aliasValuesRaw'] = [];} if ($p5Alias) { $sqlLocalTableName = $acl->getRootTableName(); $primaryKeyField = $acl->getPrimaryKeyField(); foreach ($p5Alias as $fieldName => $conf) { $aliasValuesRaw = []; if ('sql_table_alias' == $conf['type']) { $localKeys = []; $localKeyName = V::get('local_join_key', '', $conf); if ($localKeyName) { if (!array_key_exists($localKeyName, $localKeys)) { $localKeys[$localKeyName] = []; foreach ($items as $item) { $keyLocal = V::get($localKeyName, 0, $item); if ($keyLocal) $localKeys[$localKeyName][] = DB::getPDO()->quote($keyLocal, PDO::PARAM_STR); } } if(V::get('DBG', '', $_GET)){$jsonData->__DBG__['$localKeys'] = $localKeys;} if (!empty($localKeys[$localKeyName])) { $sqlRemoteTable = V::get('remote_table_name', '', $conf); $sqlRemoteValueFieldName = V::get('remote_column_value', '', $conf); $sqlRemoteKeyName = V::get('remote_join_key', '', $conf); $sqlLocalKeyName = $acl->getSqlFieldName($localKeyName); $aliasValuesRaw = DB::getPDO()->fetchAllByKey(" select r.{$sqlRemoteKeyName} as {$sqlLocalKeyName}, r.{$sqlRemoteValueFieldName} as remote_value from {$sqlRemoteTable} r where r.{$sqlRemoteKeyName} in(" . implode(",", $localKeys[$localKeyName]) . ") ", $sqlLocalKeyName); if(V::get('DBG', '', $_GET)){$jsonData->__DBG__['$aliasValuesRaw'][$fieldName] = $aliasValuesRaw;} } } } else if ('sql_query_alias' == $conf['type']) { $localKeys = []; $localKeyName = V::get('local_join_key', '', $conf); $sqlFormat = V::get('join_query_format', '', $conf); if ($localKeyName && $sqlFormat) { if (!array_key_exists($localKeyName, $localKeys)) { $localKeys[$localKeyName] = []; foreach ($items as $item) { $keyLocal = V::get($localKeyName, 0, $item); if ($keyLocal) $localKeys[$localKeyName][] = DB::getPDO()->quote($keyLocal, PDO::PARAM_STR); } } } if (!empty($localKeys[$localKeyName])) { $sql = str_replace('{sql_in_local_join_key}', implode(",", $localKeys[$localKeyName]), $sqlFormat); $sqlLocalKeyName = $acl->getSqlFieldName($localKeyName); $aliasValuesRaw = DB::getPDO()->fetchAllByKey($sql, $sqlLocalKeyName); } } DBG::log($aliasValuesRaw, 'array', '$aliasValuesRaw'); if (!empty($aliasValuesRaw)) { if(V::get('DBG_P5', '', $_GET)){echo '{ "$aliasValuesRaw": '.json_encode($aliasValuesRaw).', "dbg": [' . "\n";} array_walk($items, function (&$item) use ($fieldName, $sqlLocalKeyName, $aliasValuesRaw) { $sqlValue = V::get($sqlLocalKeyName, null, $item); if(V::get('DBG_P5', '', $_GET)){echo '{ "sqlValue": "'.$sqlValue.'", "remote_value": "'.$aliasValuesRaw[$sqlValue]['remote_value'].'", "item": '.json_encode($item) . '},' . "\n";} if ($sqlValue !== null && array_key_exists($sqlValue, $aliasValuesRaw)) { if(V::get('DBG_P5', '', $_GET)){echo '{ "TODO_update_value": "'.$aliasValuesRaw[$sqlValue]['remote_value'].'"},' . "\n";} $item[$fieldName] = $aliasValuesRaw[$sqlValue]['remote_value']; if(V::get('DBG_P5', '', $_GET)){echo '{ "TODO_updated_value": "'.$item[$fieldName].'"},' . "\n";} } }); if(V::get('DBG_P5', '', $_GET)){echo "\n".'{}]}';die();} } } } } foreach ($items as $item) { // TODO: hide items without 'R' foreach ($visibleCols as $fieldName) { // TODO: ID default 'R' if (!$acl->canReadObjectField($fieldName, $item)) $item[$fieldName] = '*****'; // null => empty string if (!isset($item[$fieldName]) || (!$item[$fieldName] && $item[$fieldName] !== '0')) { if($DBG){echo'
isEmptyString['.$fieldName.'] (F.' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($item[$fieldName]);echo'
';} $item[$fieldName] = ''; } } $jsonData->rows[] = $item; } $jsonData->type = 'success'; $jsonData->msg = 'pobrano nowe dane'; return $jsonData; } private function fixEmptyValueFromUser($fieldID) {// TODO: moved to TableAcl->fixEmptyValueFromUser $value = ''; $type = $this->_acl->getFieldTypeById($fieldID); if ($type) { if ($type['type'] == 'date') { $value = $type['default']; } // fix bug when field is unique and is null allowed: change empty string to null if ($type['null']) { $value = 'NULL'; } // fix bug when field is enum and is set to '0': for php '0' is empty if (substr($type['type'], 0, 4) == 'enum') {// && $args["f{$fieldID}"] === '0') { if (false !== strpos($type['type'], "''")) { // enum('', '1','2') $value = ''; } else if (false !== strpos($type['type'], "'0'")) { // enum('0', '1','2') $value = '0'; } else { $value = $type['default']; } } } return $value; } /** * set hidden cols in $_SESSION['USER_PROFILE'][$this->_zasobID]; * $_SESSION['USER_PROFILE'][$this->_zasobID][fld_id] => boolean */ private function ajaxHiddenColsSave($args) { $response = new stdClass(); if (empty($args)) { $response->type = 'info'; return $response; } UserProfile::load(); // clean up old, wrong values if (array_key_exists("{$this->_tbl}_COLUMN", $_SESSION['USER_PROFILE'])) { unset($_SESSION['USER_PROFILE']["{$this->_tbl}_COLUMN"]); } $colVis = UserProfile::getHiddenCols($this->_zasobID); $fields = $this->_acl->getFieldListByIdZasob(); foreach ($fields as $idField => $fieldName) { if (isset($args[$fieldName])) { if ($args[$fieldName] == 'SHOW') { $colVis[$idField] = 1; } else if ($args[$fieldName] == 'HIDE') { $colVis[$idField] = 0; } } } UserProfile::setHiddenCols($this->_zasobID, $colVis); UserProfile::save(); $response->type = 'success'; return $response; } private function ajaxPageSizeSave($args) { $response = new stdClass(); if (empty($args)) { $response->type = 'info'; return $response; } $pageSize = V::get('pageSize', 0, $args, 'int'); UserProfile::load(); // clean up old, wrong values if (array_key_exists("{$this->_tbl}_COLUMN", $_SESSION['USER_PROFILE'])) { unset($_SESSION['USER_PROFILE']["{$this->_tbl}_COLUMN"]); } $tableAjaxSettings = UserProfile::getTableAjaxSettings(); $tableAjaxSettings['pageSize'] = $pageSize; UserProfile::setTableAjaxSettings($tableAjaxSettings); UserProfile::save(); $response->type = 'success'; return $response; } private function ajaxTheGeomSave($args) { $primaryKeyField = $this->_acl->getPrimaryKeyField(); $primaryKey = V::get($primaryKeyField, 0, $args, 'int'); $polygon = V::get('polygon', 0, $args); $geomFieldName = 'the_geom'; if ($primaryKey <= 0) { throw new HttpException("Wrong param ID", 404); } // TODO: validate polygon - ex.: POLYGON((2072030.2315435 7234115.910678,2072029.4815435 7234093.660678,2072115.2315435 7234091.160678,2072115.4815435 7234113.660678,2072115.2315435 7234113.660678,2072094.2315435 7234113.910678,2072030.2315435 7234115.910678))) $record = $this->_acl->buildQuery([])->getItem($primaryKey); if (!$this->_acl->canWriteRecord($record) && !$this->_acl->hasPermSuperWrite()) { throw new HttpException("Brak dostępu do rekordu", 403); } if (!$this->_acl->canWriteObjectField($geomFieldName, $record)) { throw new HttpException("Brak dostępu do zapisu dla pola {$geomFieldName}", 403); } $itemPatch = array(); $itemPatch[$geomFieldName] = "GeomFromText('{$polygon}')"; $itemPatch[$primaryKeyField] = $primaryKey; $response = new stdClass(); try { $affected = $this->_acl->updateItem($itemPatch); if ($affected > 0) { $response->type = 'success'; $response->msg = "Rekord zapisany pomyślnie";//"Record saved successfully"; } else if ($affected == 0) { $response->type = 'info'; $response->msg = "Nie wprowadzono żadnych zmian"; } $response->record = $this->_acl->buildQuery([])->getItem($primaryKey); } catch (Exception $e) { $response->type = 'error'; $response->msg = $e->getMessage(); } return $response; } private function sendAjaxResponseJson($method, $args) { try { $response = $this->{$method}($args); } catch (HttpException $e) { $response = new stdClass(); $response->type = 'error'; $response->msg = $e->getMessage(); $response->errorCode = $e->getCode(); Http::sendHeaderByCode($e->getCode()); } catch (Exception $e) { $response = new stdClass(); $response->type = 'error'; $response->msg = $e->getMessage(); $response->errorCode = $e->getCode(); } header('Content-type: application/json'); if (!$response) $response = new stdClass(); echo json_encode($response); exit; } private function ajaxProcesInitFiltr($args) {// ajax task 'PROCES_INIT_FILTR' $response = new stdClass(); $pInitList = array();// [proces_init_id] => label (DESC) if (!$this->_showProcesInit) { $response->type = 'error'; return $response; } $userAcl = User::getAcl(); $pInitList = $userAcl->getTableProcesInitList($this->_zasobID); if (!empty($pInitList)) { $procesIds = array_keys($pInitList); $mapTree = ACL::getProcesInitMapTreeOnlyIds($procesIds); DBG::_('DBG_MAP', '1', "mapTree", $mapTree, __CLASS__, __FUNCTION__, __LINE__); DBG::_('DBG_MAP', '1', "pInitList", $pInitList, __CLASS__, __FUNCTION__, __LINE__); $pInitListSelected = $this->getProcesInitSelected(); $response->pInitData = new stdClass(); $response->pInitData->pInitList = $pInitList; $response->pInitData->mapTree = $mapTree; $response->pInitData->pInitListSelected = $pInitListSelected; } $response->type = 'success'; return $response; } }