* Date: 02/01/2021 19:05 */ namespace Agenda; use Propel\Runtime\Connection\ConnectionInterface; use Tags\Model\Map\TagsTableMap; use Tags\Model\TagsQuery; use Thelia\Install\Database; use Thelia\Model\Content; use Thelia\Model\FolderQuery; use Thelia\Module\BaseModule; class Agenda extends BaseModule { /** @var string */ const DOMAIN_NAME = 'agenda'; const TAG_AGENDA = 'agenda'; public function postActivation(ConnectionInterface $con = null) { if (true !== (bool) Agenda::getConfigValue('is-initialized', false)) { $database = new Database($con); $database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]); Agenda::setConfigValue('is-initialized', true); } } /** * Déterminer si un contenu fait partie d'un dossier de type agenda (e.g. qui a le tag Agenda) * * @param Content $content * @return bool * @throws \Propel\Runtime\Exception\PropelException */ public static function estContenuAgenda(Content $content) { static $listeDossierAgenda; static $contentCache = []; if (null === $listeDossierAgenda) { $listeDossierAgenda = TagsQuery::create() ->filterBySource('folder') ->filterByTag(self::TAG_AGENDA) ->select([ TagsTableMap::SOURCE_ID ]) ->find() ->getData(); } if (empty($listeDossierAgenda)) { return false; } if (! isset($contentCache[$content->getId()])) { $folderId = $content->getDefaultFolderId(); $contentCache[$content->getId()] = false; while ($folderId > 0) { if (in_array($folderId, $listeDossierAgenda)) { $contentCache[$content->getId()] = true; break; } $folderId = FolderQuery::create()->findPk($folderId)->getParent(); } } return $contentCache[$content->getId()]; } }