public static function psctrl(array $params) { $id = array_get_value_unset('id', $params); $class = to_array(array_get_value_unset('class', $params)); $class[] = 'pscontrols'; if (!empty($params)) { array_remove_keys($params, array_diff(array_keys($params), PsUtil::getClassConsts(__CLASS__, 'ACTION_'))); } return empty($params) ? '' : PSSmarty::template('common/pscontrols.tpl', array('id' => $id, 'class' => PsHtml::classes2string($class), 'actions' => $params))->fetch(); }
function smarty_block_ipagehref($params, $content, Smarty_Internal_Template &$template) { if (!$content) { return; } $content = trim($content); $content = $content == '.' ? null : $content; $item = array_get_value_unset('item', $params); return IdentPagesManager::inst()->getIdentPageHref($item, $params, $content); }
/** * Построение запроса для обращения к БД */ private function makeQuery($prefix, array &$params, $asc = null) { check_condition($prefix, 'Не передан запрос'); $queryString = array(trim($prefix) . ' where type=? and b_deleted=0'); $queryParams = array(self::assertValidType(array_get_value_unset('type', $params))); //id_upload $id_upload = array_get_value_unset('id_upload', $params); if (is_inumeric($id_upload)) { $queryString[] = 'id_upload=?'; $queryParams[] = $id_upload; } //id_user $id_user = array_get_value_unset('id_user', $params); if (is_inumeric($id_user)) { $queryString[] = 'id_user is not null and id_user=?'; $queryParams[] = $id_user; } check_condition(empty($params), 'Неизвестные ключи переданы для запроса файла: ' . array_to_string($params, false)); $order = $asc === true ? ' order by dt_event asc, id_upload asc' : ''; $order = $asc === false ? ' order by dt_event desc, id_upload desc' : ''; $params = $queryParams; return implode(' and ', $queryString) . $order; }
function smarty_block_choice($params, $content, Smarty_Internal_Template &$smarty) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; } //<select name="$name" /> || <input type="checkbox|readio" name="$name" /> $name = array_get_value('name', $params); //Если передан label, то поле будет отображено, как field формы $label = array_get_value('label', $params); //Текущее значение $curVal = array_get_value_unset('value', $params); //Текущее значение $choiceType = array_get_value_unset('type', $params); //Значения $options = array_get_value(SmartyBlockContext::CHOICE_OPTION, $ctxtParams); if (isEmpty($options)) { return; //--- } switch ($choiceType) { case 'combo': case 'select': echo $label ? PsHtmlForm::select($label, $name, $params, $options, $curVal) : PsHtml::select($params, $options, $curVal); break; case 'check': case 'checkboxes': echo $label ? PsHtmlForm::checkboxes($label, $name, $options, $curVal) : PsHtml::checkboxes($name, $options, $curVal); break; case 'radio': case 'radios': echo $label ? PsHtmlForm::radios($label, $name, $options, $curVal) : PsHtml::radios($name, $options, $curVal); break; default: echo PsHtml::divErr("Неизвестный тип выбора: [{$choiceType}]"); } }
/** @return UnloadArrayAdapter */ public static function inst() { return parent::inst(array_get_value_unset(SESSION_UNLOAD_PARAMS, $_SESSION, array())); }
/** * Метод формирует сщвуржимое db.ini файла для развёрнутой схемы. * * За основу берутся текущие натсройки db.ini, которые могут быть расширены * или сокращены (если таблица удалена из схемы). * * @param string $scope - тип развёрнутой схемы. * Она может быть развёрнута, как SDK или как проектная. * Считаем, что в схему могли как добавиться новые таблицы, * так и кол-во таблиц в схеме могло быть сокращено. * @return array - настройки таблиц для db.ini */ public static function makeDbIniForSchema($scope, array $dbTables) { /* * Список таблиц SDK можно получить из db.ini, так как если мы работаем по SDK, * то нужно взять старые настройки и порядок таблиц. * Если же мы работаем по проектному скоупу, то db.ini для SDK уже актуален. */ $sdkTableNames = DbIni::getSdkTables(); $settings = array(); switch ($scope) { case ENTITY_SCOPE_SDK: foreach ($sdkTableNames as $tableName) { if (!array_key_exists($tableName, $dbTables)) { //Таблица была исключена из схемы continue; //--- } $table = array_get_value_unset($tableName, $dbTables); $settings[$tableName] = array(); /* @var $property PsTableColumnProps */ foreach (PsTableColumnProps::getAllowedTableProperties($table) as $propName => $property) { $settings[$tableName][$propName] = $table->isProperty($property); } /* @var $property PsTableColumnProps */ foreach (PsTableColumnProps::getAllowedColumnProperties($table) as $propName => $property) { /* @var $col PsTableColumn */ foreach ($table->getColumns() as $colName => $col) { if ($col->isProperty($property)) { $settings[$tableName][$propName][] = $colName; } } } } /* * Добавляем несконфигурированные таблицы */ foreach ($dbTables as $tableName => $table) { $settings[$tableName] = array(); /* @var $property PsTableColumnProps */ foreach (PsTableColumnProps::getAllowedTableProperties($dbTables[$tableName]) as $propName => $property) { $settings[$tableName][$propName] = false; } } break; case ENTITY_SCOPE_PROJ: //Сразу удаляем из списка все таблицы SDK array_remove_keys($dbTables, $sdkTableNames); foreach (DbIni::getProjectTables() as $tableName) { if (!array_key_exists($tableName, $dbTables)) { //Таблица была исключена из схемы или перенесена в SDK continue; //--- } $table = array_get_value_unset($tableName, $dbTables); $settings[$tableName] = array(); /* @var $property PsTableColumnProps */ foreach (PsTableColumnProps::getAllowedTableProperties($table) as $propName => $property) { $settings[$tableName][$propName] = $table->isProperty($property); } /* @var $property PsTableColumnProps */ foreach (PsTableColumnProps::getAllowedColumnProperties($table) as $propName => $property) { /* @var $col PsTableColumn */ foreach ($table->getColumns() as $colName => $col) { if ($col->isProperty($property)) { $settings[$tableName][$propName][] = $colName; } } } } /* * Не добавляем несконфигурированные таблицы, так как для проектных * таблиц мы не требуем полного перечисления в db.ini */ break; default: raise_error("Unknown scope [{$scope}]"); } return $settings; }