protected function processImpl(PostArrayAdapter $adapter, $button) { if (!$adapter->hasAllNoEmpty('folding', self::PARAM_NEW_FOLDING_IDENT)) { return 'Не переданы все необходимые параметры.'; } $funique = $adapter->str('folding'); $fident = check_condition($adapter->str(self::PARAM_NEW_FOLDING_IDENT), 'Пустой идентификатор фолдинга'); $folding = Handlers::getInstance()->getFoldingByUnique($funique); $folding->assertNotExistsEntity($fident); switch ($button) { case self::BUTTON_SAVE_DB: $action = PS_ACTION_CREATE; $table = TableExporter::inst()->getTable($folding); //Проставим руками идентификатор фолдинга для колонки из базы $adapter->set($folding->getTableColumnIdent(), $fident); $rec = $table->fetchRowFromForm($adapter->getData(), $action); if (!is_array($rec)) { //Данные для создания записи в БД не прошли валидацию return $rec; } $table->saveRec($rec, $action); //createFoldingDbRec($folding, $ident); //createFoldingDbRec($folding, $ident); case self::BUTTON_SAVE: $folding->createEntity($fident); break; } return new AjaxSuccess(array('url' => AP_APFoldingEdit::urlFoldingEdit($folding->getFoldedEntity($fident)))); }
public function buildContent() { $navigation = AdminPageNavigation::inst(); $PARAMS['mode'] = self::MODE_TABLES_LIST; /* * Просмотр содержимого таблицы */ $table = RequestArrayAdapter::inst()->str('table'); if ($table) { $PARAMS['mode'] = self::MODE_TABLE_VIEW; $table = PsTable::inst($table); $PARAMS['table'] = $table; $PARAMS['rows'] = $table->getRows(); $navigation->addPath(self::urlTables(), 'Настройки'); $navigation->setCurrent('Просмотр ' . $table->getName()); } /* * Просмотр и настройка всех таблиц */ if ($PARAMS['mode'] == self::MODE_TABLES_LIST) { $PARAMS['errors'] = PsDbIniHelper::validateAll(); foreach (ConfigIni::getAllowedScopes() as $scope) { $PARAMS['data'][$scope] = TableExporter::inst()->getTables($scope); $PARAMS['data']["{$scope}.ini"] = DbIni::getIniContent($scope); } $navigation->setCurrent('Настройки'); } echo $this->getFoldedEntity()->fetchTpl($PARAMS); }
protected function processImpl(PostArrayAdapter $aa, $button) { $action = $this->getFormAction(); $table = TableExporter::inst()->getTable($aa->str('table')); $rec = $table->fetchRowFromForm($aa->getData(), $action); if (!is_array($rec)) { return $rec; } return new RecEditFormData($table, $action, $this->isSubmittedByButton(array(self::BUTTON_CREATEF, self::BUTTON_EDITF, self::BUTTON_DELETEF)), $rec); }
protected function processImpl(PostArrayAdapter $adapter, $button) { //return print_r($adapter->data, true); if (!$adapter->hasAllNoEmpty(array('ftype', 'fident'))) { return 'Не переданы все необходимые параметры.'; } $ftype = $adapter->str('ftype'); $fsubtype = $adapter->str('fsubtype'); $ident = $adapter->str('fident'); $folding = Handlers::getInstance()->getFolding($ftype, $fsubtype); $fEntity = $folding->getFoldedEntity($ident, true); $result = 'OK'; switch ($button) { case self::BUTTON_SAVE: /* * На всякий случай убедимся, что нам передали все данные с формы */ check_condition($adapter->hasAll($folding->getAllowedResourceTypes()), 'Переданы не все типы данных для фолдинга'); //Основим обложку, если фолдинг с ней работает if ($folding->isImagesFactoryEnabled()) { $cover = SimpleUploader::inst()->saveUploadedFile(false); if ($cover) { $folding->updateEntityCover($ident, $cover); $cover->remove(); } } //Обновим остальные параемтры $folding->editEntity($ident, $adapter); break; case self::BUTTON_DELETE_ALL: //Удаляем строку из базы TableExporter::inst()->getTable($folding->getTableName())->deleteFoldingDbRec($folding, $ident); case self::BUTTON_DELETE: $folding->deleteEntity($ident); $result = AP_APFoldingEdit::urlFoldingEntitys($folding); break; } return new AjaxSuccess($result); }
$product = isset($_POST['productName']) ? $_POST['productName'] : ""; $version = isset($_POST['productVersion']) ? $_POST['productVersion'] : ""; if (Utils::isAdministrator($product, $version)) { if (isset($_POST["inPage"]) && trim($_POST["inPage"]) == "true") { $clean = Utils::getParam($_POST, 'clean'); $filter = new NoFilter(); $cellRenderer = new DefaultCellRenderer("span"); if ($clean == 'true') { $filter = new UnconfirmedUserFilter(-7, "date"); } else { $filter = new ConfirmedUserFilter(-7, "date"); } $exporter = new InLineExporter('userId', array('userId'), array(17, 25, 30, 20)); $exporter->setFilter($filter); $exporter->setCellRenderer($cellRenderer); $tableExporter = new TableExporter("users", $dbConnectionInfo); $tableExporter->export($exporter, "userId,userName,name,email,date", "ORDER BY date DESC"); if ($exporter->getContent() != "") { echo $exporter->getContent(); } else { echo Utils::translate("noDataAvailable"); } } else { // $exporter = new XmlExporter("comments"); // $comment->exportForPage($info,$exporter); // header('Content-Description: File Transfer'); // header('Content-Type: text/xml'); // header('Content-Disposition: attachment; filename=comments_'.$fName.'_'.$fVersion.'.xml'); // header('Content-Transfer-Encoding: binary'); // header('Expires: 0'); // header('Cache-Control: must-revalidate');
public function buildContent() { $navigation = AdminPageNavigation::inst(); $RQ = RequestArrayAdapter::inst(); /** @var FoldedEntity */ $entity = FoldedStorageInsts::getFoldedEntityByUnique($RQ->str('entity'), false); /** @var FoldedResources */ $folding = $entity ? $entity->getFolding() : FoldedStorageInsts::byUnique($RQ->str('folding'), false); $mode = $RQ->str('mode', self::MODE_FOLDINGS_LIST); $PARAMS['mode'] = $mode; $PARAMS['error'] = null; $PARAMS['entity'] = $entity; $PARAMS['folding'] = $folding; $PARAMS['foldings'] = FoldedStorageInsts::listFoldings(); $ftype = $folding ? $folding->getFoldingType() : ''; $fsubtype = $folding ? $folding->getFoldingSubType() : ''; $fident = $entity ? $entity->getIdent() : ''; $flist = $RQ->str('list'); $ftplpath = $RQ->str('tplpath'); //РЕДИРЕКТ if ($mode != self::MODE_FOLDINGS_LIST && !$folding) { PsUtil::redirectTo(self::urlFoldingsList()); } //ВЫПОЛНЕНИЕ switch ($mode) { //СПИСОК ВСЕХ ФОЛДИНГОВ case self::MODE_FOLDINGS_LIST: $navigation->setCurrent('Список фолдингов'); break; //СПИСОК СУЩНОСТЕЙ ДАННОГО ФОЛДИНГА //СПИСОК СУЩНОСТЕЙ ДАННОГО ФОЛДИНГА case self::MODE_FOLDING_CONTENT: $newIdent = $folding->getNextEntityIdent(); //Форма создания $FORM = FORM_AdminFoldingCreateForm::getInstance(); $FORM->setHidden('folding', $folding->getUnique()); $FORM->setParam(FORM_AdminFoldingCreateForm::PARAM_NEW_FOLDING_IDENT, $newIdent); $FORM->setSmartyParam('folding', $folding); /* @var $TABLE PsTable */ $FORM->setSmartyParam('rec', $folding->getDbRec4Entity($newIdent)); //Форма загрузки $FORM = FORM_AdminFoldingUploadForm::getInstance(); $FORM->setHidden('folding', $folding->getUnique()); $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->setCurrent($folding->getEntityName()); break; case self::MODE_FOLDING_LIST_EDIT: $PARAMS['list'] = $flist; //TODO - выкинуто //$PARAMS['listIdents'] = $folding->getPossibleListIdents($flist); $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName()); $navigation->setCurrent('Редактирование списка ' . $flist); break; case self::MODE_FOLDING_TPLS_LIST: $PARAMS['tplsList'] = $folding->getAllInfoTpls($fident); $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName()); $navigation->addPath(self::urlFoldingEdit($entity), $fident); $navigation->setCurrent('Информационные шаблоны'); break; case self::MODE_FOLDING_TPL_EDIT: $PARAMS['tplsList'] = $folding->getAllInfoTpls($fident); $tpl = $folding->getInfoTpl($entity->getIdent(), $ftplpath); $PARAMS['tpl'] = $tpl; //Отфетчим содержимое, извлеча из запроса те параметры, которые начинаются на sm_ $PARAMS['content'] = $tpl->fetchNoCache($RQ->getByKeyPrefix('sm_', true)); $FORM = FORM_AdminFoldingInfoTplEditForm::getInstance(); $FORM->setHidden('fentity', $entity->getUnique()); $FORM->setHidden('ftpl', $tpl->getInfoRelPath()); $FORM->setSmartyParam('tpl', $tpl->getDirItem()->getFileContents()); $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName()); $navigation->addPath(self::urlFoldingEdit($entity), $fident); $navigation->addPath(self::urlFoldingInfoTplsList($entity), 'Информационные шаблоны'); $navigation->setCurrent($tpl->getInfoRelPath()); break; case self::MODE_FOLDING_EDIT: //Ссылка для скачивания спрайтов $download['class'] = 'download'; $download['data'] = array('ftype' => $ftype, 'fsubtype' => $fsubtype, 'fident' => $fident); $PARAMS['download'] = PsHtml::a($download, '[Скачать]'); $spriteImg = $folding->getSprite($fident); $spriteImg = $spriteImg && $spriteImg->getImgDi()->isImg() ? $spriteImg->getImgDi() : null; $PARAMS['sprite'] = $spriteImg ? PsHtml::a(array('href' => $spriteImg->getRelPath()), '[Спрайт]', true) : null; //Информационные шаблоны $PARAMS['patterns'] = ''; if (count($folding->getInfoDiList($fident))) { $patterns['href'] = self::urlFoldingInfoTplsList($entity); $PARAMS['patterns'] = PsHtml::a($patterns, '[Инфо шаблоны]'); } $PARAMS['info'] = ''; try { $prew = $folding->getFoldedEntityPreview($fident); if (is_array($prew)) { $PARAMS['info'] = array_get_value('info', $prew); $PARAMS['content'] = array_get_value('content', $prew); } else { $PARAMS['content'] = $prew; } } catch (Exception $e) { $PARAMS['content'] = ExceptionHandler::getHtml($e); } /* * Подготовим форму редактирования фолдинга */ $FORM = FORM_AdminFoldingEditForm::getInstance(); /* hiddens */ $FORM->setHidden('ftype', $ftype); $FORM->setHidden('fsubtype', $fsubtype); $FORM->setHidden('fident', $fident); $rtypes = $folding->getAllowedResourceTypes(); /* fields */ foreach ($rtypes as $rtype) { $FORM->setParam($rtype, $folding->getResourceDi($fident, $rtype)->getFileContents(false)); } /* smarty */ $FORM->setSmartyParam('types', $rtypes); $FORM->setSmartyParam('covers', $folding->isImagesFactoryEnabled()); /* table */ $TABLE = null; $DBROW = null; if ($folding->getTableName()) { $TABLE = TableExporter::inst()->getTable($folding->getTableName()); //TODO - выкинуто //$DBROW = $TABLE->getFoldingDbRec($folding, $fident); } $FORM->setSmartyParam('table', $TABLE); $FORM->setSmartyParam('row', $DBROW); if (!$DBROW) { $FORM->removeButton(FORM_AdminFoldingEditForm::BUTTON_DELETE_ALL); } /* * Навигация */ $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName()); $navigation->setCurrent($fident); break; } PsDefines::setReplaceFormulesWithImages(false); echo $this->getFoldedEntity()->fetchTpl($PARAMS); }
public function buildContent() { PsDefines::setReplaceFormulesWithImages(false); $navigation = AdminPageNavigation::inst(); /* * Инициализируем необходимые менеджеры */ $TE = TableExporter::inst(); $RQ = GetArrayAdapter::inst(); $FORM = FORM_RecEditForm::getInstance(); $TABLES = PsTable::configured(); /* * Инициализируем параметры, которые нужно будет передать smarty */ $PARAMS['mode'] = null; $PARAMS['table'] = null; $PARAMS['error'] = null; $PARAMS['errors'] = PsDbIniHelper::validateAll(); /* * Обработаем форму */ try { if ($FORM->isValid4Process()) { $this->processForm($FORM->getData()); } else { if ($FORM->isErrorOccurred()) { $PARAMS['error'] = PsHtml::divErr($FORM->getError()); } } } catch (Exception $e) { $PARAMS['error'] = ExceptionHandler::getHtml($e); } /* * Обработаем параметры и определим режим работы */ $MODE = $RQ->str('mode', self::MODE_TABLES_LIST); /** @var PsTable */ $TABLE = null; // Таблица $ROW = null; // Редактируемая строка switch ($MODE) { case self::MODE_ROW_ADD: //Если передан фолдинг, то подставим в форму создания его параметры $folding = Handlers::getInstance()->getFolding($RQ->str('ftype'), $RQ->str('fsubtype'), false); $fident = $RQ->str('fident'); if ($folding && $folding->getTableName() && $fident) { $TABLE = $TE->getTable($folding); $ROW = $folding->getDbRec4Entity($fident); break; } $TABLE = PsTable::inst($RQ->str('table')); /* * Нам не удалось определить внешний вид создаваемой строки, * но если у данной таблицы один фолдинг - возмём вид строки у него. */ $folding = $TABLE->getSingleFolding(); $ROW = $folding ? $folding->getDbRec4Entity($folding->getNextEntityIdent()) : null; break; case self::MODE_TABLE_ROWS: case self::MODE_TABLE_SQL: case self::MODE_TABLE_ARR: case self::MODE_ROW_EDIT: case self::MODE_ROW_DELETE: $TABLE = PsTable::inst($RQ->str('table')); switch ($MODE) { case self::MODE_ROW_EDIT: case self::MODE_ROW_DELETE: $ROW = $TABLE->getRow($RQ->int($TABLE->getPk()->getName())); break; } break; case self::MODE_INSERTS: //Nothing to do break; default: //Защитимся от некорректного значения параметра 'mode' $MODE = self::MODE_TABLES_LIST; break; } $PARAMS['mode'] = $MODE; $PARAMS['table'] = $TABLE; /* * ВЫПОЛНЯЕМ ОБРАБОТКУ */ switch ($MODE) { case self::MODE_TABLES_LIST: $PARAMS['tables'] = $TABLES; $navigation->setCurrent('Список таблиц'); break; case self::MODE_INSERTS: $PARAMS['tables'] = $TABLES; $navigation->addPath(self::urlTables(), 'Список таблиц'); $navigation->setCurrent('Вставка данных'); break; case self::MODE_TABLE_ROWS: $PARAMS['rows'] = $TABLE->getRows(); $PARAMS['addurl'] = self::urlRecAdd($TABLE); $PARAMS['modified'] = $TABLE->getModifiedRows(); case self::MODE_TABLE_SQL: case self::MODE_TABLE_ARR: $navigation->addPath(self::urlTables(), 'Список таблиц'); $navigation->setCurrent($TABLE->getName()); break; default: switch ($MODE) { /* * Помимо действий над записью, мы ещё раздиляем действия над фолдингами * (если они есть для таблицы). Поэтому мы установм: * FormAction - для типа редактирования записи * FormButton - для типа работы с фолдингом */ case self::MODE_ROW_ADD: $FORM->setFormAction(PS_ACTION_CREATE); $FORM->setButtons(FORM_RecEditForm::BUTTON_CREATE); if ($TABLE->hasFoldings()) { $FORM->addButton(FORM_RecEditForm::BUTTON_CREATEF); } $navigation->setCurrent('Создание записи'); break; case self::MODE_ROW_EDIT: $FORM->setFormAction(PS_ACTION_EDIT); $FORM->setButtons(FORM_RecEditForm::BUTTON_EDIT); if ($TABLE->hasFoldings() && !$TABLE->hasFoldingEntity4DbRec($ROW, true)) { $FORM->addButton(FORM_RecEditForm::BUTTON_EDITF); } $navigation->setCurrent('Редактирование записи'); break; case self::MODE_ROW_DELETE: $FORM->setFormAction(PS_ACTION_DELETE); $FORM->setButtons(FORM_RecEditForm::BUTTON_DELETE); if ($TABLE->hasFoldingEntity4DbRec($ROW, true)) { $FORM->addButton(FORM_RecEditForm::BUTTON_DELETEF); } $navigation->setCurrent('Удаление записи'); break; default: raise_error("Неизвестный режим: [{$MODE}]"); } $FORM->setHidden('table', $TABLE->getName()); $FORM->setSmartyParam('table', $TABLE); $FORM->setSmartyParam('rec', $ROW); $navigation->addPath(self::urlTables(), 'Список таблиц'); $navigation->addPath(self::urlTableRows($TABLE), $TABLE->getName()); break; } echo $this->getFoldedEntity()->fetchTpl($PARAMS); }
public function getParentTablePkReplacement($parentRowId) { return $this->isFk() && $parentRowId ? TableExporter::inst()->getTable($this->getParentTableName())->getPkReplacement($parentRowId) : null; }