示例#1
0
 /**
  * Признак readonly
  */
 public function isReadonly()
 {
     return $this->isProperty(PsTableColumnProps::COL_READONLY());
 }
示例#2
0
文件: PsTable.php 项目: ilivanoff/www
 /**
  * Метод валидирует текущие настройки таблицы из db.ini.
  */
 public function getConfigErrors()
 {
     return PsTableColumnProps::validateTableProperties($this);
 }
示例#3
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;
 }