Example #1
0
 protected function __construct()
 {
     //Извлекаем все изменённые сущности БД
     $CHANGED = DbBean::inst()->getChangedEntitys();
     if (empty($CHANGED)) {
         return;
         //---
     }
     $LOGGER = PsLogger::inst(__CLASS__);
     $LOGGER->info('Изменённые сущности БД: ' . print_r($CHANGED, true));
     foreach ($CHANGED as $chEntity) {
         $type = $chEntity['v_type'];
         $entity = $chEntity['v_entity'];
         $TypeEntity = "{$type} {$entity}";
         switch ($type) {
             /*
              * 1. Проверим изменённые сущности фолдинга
              */
             case DbBean::CHANGE_FOLD_ENT:
                 $fentity = Handlers::getInstance()->getFoldedEntityByUnique($entity, false);
                 if ($fentity) {
                     $LOGGER->info('[{}] -> Сущность фолдинга [{}]', $TypeEntity, $fentity->getUnique());
                     FoldedResourcesManager::onEntityAction(FoldedResourcesManager::ACTION_ENTITY_CHANGED_DB, $fentity->getFolding(), $fentity->getIdent());
                     $fentity->onEntityChanged();
                 }
                 break;
                 /*
                  * 2. Проверим изменённые таблицы/представления
                  */
             /*
              * 2. Проверим изменённые таблицы/представления
              */
             case DbBean::CHANGE_TABLE:
             case DbBean::CHANGE_VIEW:
                 /* @var $folding FoldedResources */
                 foreach (FoldedResourcesManager::inst()->getTableOrViewFoldings($entity) as $folding) {
                     $LOGGER->info('[{}] -> Фолдинг [{}]', $TypeEntity, $folding->getUnique());
                     $folding->onFoldingChanged();
                 }
                 foreach (PSCache::inst()->onDbEntityChanged($entity) as $cacheGr) {
                     $LOGGER->info('[{}] -> Группа кеширования [{}]', $TypeEntity, $cacheGr);
                 }
                 break;
         }
     }
 }
 /**
  * Метод возвращает все интерфейсы фолдингов
  */
 public function getFoldedInterfaces(array $restriction = null)
 {
     $files = FoldedResourcesManager::inst()->getFoldedDir()->getDirContentFull("foldinterfaces", PsConst::EXT_PHP);
     $result = array();
     /* @var $file DirItem */
     foreach ($files as $file) {
         $iface = $file->getNameNoExt();
         if (!ends_with($iface, 'Folding')) {
             continue;
         }
         if (!interface_exists($iface)) {
             continue;
         }
         if ($restriction !== null && !in_array($iface, $restriction)) {
             continue;
         }
         $result[$iface] = PhpClassAdapter::inst($iface);
     }
     return $result;
 }
Example #3
0
 private function __construct(UserPointDO $point)
 {
     $this->point = $point;
     $this->class = FoldedResourcesManager::inst()->getFoldedEntityByDbCode($point->getReasonId())->getClassInst();
     PsUtil::assertInstanceOf($this->class, 'PointsGiver');
 }
Example #4
0
 /**
  * Загружает все таблицы, к которым может быть привязан кеш
  */
 private static function getTables2Foldings($scope)
 {
     return FoldedResourcesManager::inst()->getTableFoldingsMap($scope);
 }
Example #5
0
 /**
  * Фозвращает фолдинги, хранимые в этой таблице
  */
 public function getFoldings()
 {
     return FoldedResourcesManager::inst()->getTableFoldings($this->getName());
 }
Example #6
0
 public function buildContent()
 {
     $PARAMS['foldings'] = Handlers::getInstance()->getFoldings();
     $PARAMS['depends'] = FoldedResourcesManager::inst()->getDependsOnMap();
     return $this->foldedEntity->fetchTpl($PARAMS);
 }
Example #7
0
 /**
  * Метод получает сущность фолдинга по её коду и убеждается, что она принадлежит данному фолдингу
  * 
  * @return FoldedEntity
  */
 protected function getFoldedEntityByDbCode($code)
 {
     $entity = FoldedResourcesManager::inst()->getFoldedEntityByDbCode($code);
     check_condition($entity->getFolding() === $this, "Сущность {$entity} с кодом [{$code}] не принадлежит фолдингу {$this}");
     return $entity;
 }
Example #8
0
 public function getColumnAllowedValuesManual()
 {
     if (!is_array($this->manuallyAllowed)) {
         $this->manuallyAllowed = array();
         if (!$this->isCanBeManuallyRestricted()) {
             return $this->manuallyAllowed;
         }
         /* @var $folded FoldedResources */
         foreach (FoldedResourcesManager::inst()->getTableFoldings($this->getTableName()) as $folded) {
             if ($folded->getTableColumnStype() == $this->getName()) {
                 $this->manuallyAllowed[] = array('value' => $folded->getFoldingSubType(), 'content' => $folded->getEntityName());
             }
         }
     }
     return $this->manuallyAllowed;
 }