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; }
private function __construct(UserPointDO $point) { $this->point = $point; $this->class = FoldedResourcesManager::inst()->getFoldedEntityByDbCode($point->getReasonId())->getClassInst(); PsUtil::assertInstanceOf($this->class, 'PointsGiver'); }
/** * Загружает все таблицы, к которым может быть привязан кеш */ private static function getTables2Foldings($scope) { return FoldedResourcesManager::inst()->getTableFoldingsMap($scope); }
/** * Фозвращает фолдинги, хранимые в этой таблице */ public function getFoldings() { return FoldedResourcesManager::inst()->getTableFoldings($this->getName()); }
public function buildContent() { $PARAMS['foldings'] = Handlers::getInstance()->getFoldings(); $PARAMS['depends'] = FoldedResourcesManager::inst()->getDependsOnMap(); return $this->foldedEntity->fetchTpl($PARAMS); }
/** * Метод получает сущность фолдинга по её коду и убеждается, что она принадлежит данному фолдингу * * @return FoldedEntity */ protected function getFoldedEntityByDbCode($code) { $entity = FoldedResourcesManager::inst()->getFoldedEntityByDbCode($code); check_condition($entity->getFolding() === $this, "Сущность {$entity} с кодом [{$code}] не принадлежит фолдингу {$this}"); return $entity; }
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; }