Example #1
0
 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();
 }
Example #2
0
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);
}
Example #3
0
 /**
  * Построение запроса для обращения к БД
  */
 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;
 }
Example #4
0
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}]");
    }
}
Example #5
0
 /** @return UnloadArrayAdapter */
 public static function inst()
 {
     return parent::inst(array_get_value_unset(SESSION_UNLOAD_PARAMS, $_SESSION, array()));
 }
Example #6
0
 /**
  * Метод формирует сщвуржимое 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;
 }