/** * {@inheritdoc} */ public function onAuthenticationSuccess(Request $request, TokenInterface $token) { if (null !== ($user = $token->getUser())) { $user->setLastLogin(new \DateTime('now')); Kernel::getInstance()->getService('em')->flush(); } return parent::onAuthenticationSuccess($request, $token); }
/** * Seach NodeId exclusively * * @param array $tags * @return array */ public static function getNodeIdsByTagExcl($tags) { $qb = Kernel::getInstance()->getService('em')->createQueryBuilder(); $qb->select("nj.id")->addSelect("COUNT(t.id) as num")->from("RZ\\Roadiz\\Core\\Entities\\Tag", "t")->leftJoin("t.nodes", "nj"); foreach ($tags as $key => $tag) { $qb->orWhere($qb->expr()->eq('t.id', ':tag' . $key)); } $qb->groupBy("nj.id"); $query = $qb->getQuery(); foreach ($tags as $key => $tag) { $query->setParameter("tag" . $key, $tag); } $results = $query->getResult(); $count = count($tags); $nodes = []; foreach ($results as $key => $result) { if ($count === (int) $result["num"]) { $nodes[] = $result["id"]; } } return $nodes; }
exit(1); } define('ROADIZ_ROOT', dirname(__FILE__)); // Include Composer Autoload (relative to project root). require "vendor/autoload.php"; if (php_sapi_name() == 'cli') { echo 'Use "bin/roadiz" as an executable instead of calling index.php' . PHP_EOL; } else { try { Kernel::getInstance()->boot(); $request = Kernel::getInstance()->getRequest(); /* * Bypass Roadiz kernel to directly serve images assets */ if (0 === strpos($request->getPathInfo(), '/assets') && preg_match('#^/assets/(?P<queryString>[a-zA-Z:0-9\\-]+)/(?P<filename>[a-zA-Z0-9\\-_\\./]+)$#s', $request->getPathInfo(), $matches)) { $ctrl = new \RZ\Roadiz\CMS\Controllers\AssetsController(); $response = $ctrl->interventionRequestAction($request, $matches['queryString'], $matches['filename']); $response->prepare($request); $response->send(); } else { /* * Start Roadiz App handling */ Kernel::getInstance()->initEvents(); Kernel::getInstance()->runApp(); } } catch (NoConfigurationFoundException $e) { $response = Kernel::getInstance()->getEmergencyResponse($e); $response->send(); } }
/** * @dataProvider getUrlProvider */ public function testGetUrl($nodeSource, $expectedUrl) { $generator = new NodesSourcesUrlGenerator(Kernel::getInstance()->getRequest(), $nodeSource); $this->assertEquals($generator->getUrl(), $expectedUrl); }
/** * @param Pimple\Container $container [description] */ public function register(Container $container) { $container['twig.cacheFolder'] = function ($c) { return ROADIZ_ROOT . '/cache/twig_cache'; }; /* * Return every paths to search for twig templates. */ $container['twig.loaderFileSystem'] = function ($c) { $vendorDir = realpath(ROADIZ_ROOT . '/vendor'); // le chemin vers TwigBridge pour que Twig puisse localiser // le fichier form_div_layout.html.twig $vendorTwigBridgeDir = $vendorDir . '/symfony/twig-bridge'; return new \Twig_Loader_Filesystem([$vendorTwigBridgeDir . '/Resources/views/Form', ROADIZ_ROOT . '/src/Roadiz/CMS/Resources/views']); }; /* * Main twig environment */ $container['twig.environment'] = function ($c) { $twig = new \Twig_Environment($c['twig.loaderFileSystem'], ['debug' => $c['config']['devMode'], 'cache' => $c['twig.cacheFolder']]); $c['twig.formRenderer']->setEnvironment($twig); $twig->addExtension(new FormExtension(new TwigRenderer($c['twig.formRenderer'], $c['csrfTokenManager']))); $twig->addFilter($c['twig.markdownExtension']); $twig->addFilter($c['twig.inlineMarkdownExtension']); $twig->addFilter($c['twig.centralTruncateExtension']); /* * Extensions */ $twig->addExtension(new TranslationExtension($c['translator'])); $twig->addExtension(new \Twig_Extensions_Extension_Intl()); $twig->addExtension($c['twig.routingExtension']); $twig->addExtension(new \Twig_Extensions_Extension_Text()); $twig->addExtension(new BlockRenderExtension($c, Kernel::getInstance())); if (true !== $c['config']['install']) { $twig->addExtension(new NodesSourcesExtension($c['securityAuthorizationChecker'])); } $twig->addExtension(new DocumentExtension()); $twig->addExtension(new UrlExtension($c['request'], $c['nodesSourcesUrlCacheProvider'], (bool) \RZ\Roadiz\Core\Bags\SettingsBag::get('force_locale'))); $twig->addExtension(new RoadizTranslationExtension($c['request'])); if (null !== $c['twig.cacheExtension']) { $twig->addExtension($c['twig.cacheExtension']); } if (true === $c['config']['devMode']) { $twig->addExtension(new \Twig_Extension_Debug()); } return $twig; }; /* * Twig form renderer extension */ $container['twig.formRenderer'] = function ($c) { return new TwigRendererEngine(['form_div_layout.html.twig']); }; /* * Twig routing extension */ $container['twig.routingExtension'] = function ($c) { return new RoutingExtension($c['urlGenerator']); }; /* * Markdown extension */ $container['twig.markdownExtension'] = function ($c) { return new \Twig_SimpleFilter('markdown', function ($object) { return Parsedown::instance()->text($object); }, ['is_safe' => ['html']]); }; /* * InlineMarkdown extension */ $container['twig.inlineMarkdownExtension'] = function ($c) { return new \Twig_SimpleFilter('inlineMarkdown', function ($object) { return Parsedown::instance()->line($object); }, ['is_safe' => ['html']]); }; /* * Central Truncate extension */ $container['twig.centralTruncateExtension'] = function ($c) { return new \Twig_SimpleFilter('centralTruncate', function ($object, $length, $offset = 0, $ellipsis = "[…]") { if (strlen($object) > $length + strlen($ellipsis)) { $str1 = substr($object, 0, floor($length / 2) + floor($offset / 2)); $str2 = substr($object, floor($length / 2) * -1 + floor($offset / 2)); return $str1 . $ellipsis . $str2; } else { return $object; } }); }; /* * Twig cache extension * see https://github.com/asm89/twig-cache-extension */ $container['twig.cacheExtension'] = function ($c) { $resultCacheDriver = $c['em']->getConfiguration()->getResultCacheImpl(); if ($resultCacheDriver !== null) { $cacheProvider = new DoctrineCacheAdapter($resultCacheDriver); $cacheStrategy = new LifetimeCacheStrategy($cacheProvider); $cacheExtension = new CacheExtension($cacheStrategy); return $cacheExtension; } else { return null; } }; return $container; }
protected static function browseTree($tag) { $childObj = []; $sourceObj = []; foreach ($tag->getChildren() as $child) { $childObj[] = static::browseTree($child); } $tag->getChildren()->clear(); foreach ($tag->getTranslatedTags() as $tagTranslation) { $trans = Kernel::getInstance()->getService('em')->getRepository("RZ\\Roadiz\\Core\\Entities\\Translation")->findOneByLocale($tagTranslation->getTranslation()->getLocale()); if (empty($trans)) { $trans = new Translation(); $trans->setLocale($tagTranslation->getTranslation()->getLocale()); $trans->setName(Translation::$availableLocales[$tagTranslation->getTranslation()->getLocale()]); Kernel::getInstance()->getService('em')->persist($trans); } $tagTranslation->setTranslation($trans); $tagTranslation->setTag(null); Kernel::getInstance()->getService('em')->persist($tagTranslation); $sourceObj[] = $tagTranslation; } Kernel::getInstance()->getService('em')->persist($tag); foreach ($childObj as $child) { $child->setParent($tag); } foreach ($sourceObj as $tagTranslation) { $tagTranslation->setTag($tag); } Kernel::getInstance()->getService('em')->flush(); return $tag; }
* of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is furnished * to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. * * Except as contained in this notice, the name of the ROADIZ shall not * be used in advertising or otherwise to promote the sale, use or other dealings * in this Software without prior written authorization from Ambroise Maupate and Julien Blanchet. * * @file bootstrap.php * @author Ambroise Maupate */ use RZ\Roadiz\Core\Kernel; define('ROADIZ_ROOT', dirname(__FILE__) . '/..'); // Include Composer Autoload (relative to project root). require ROADIZ_ROOT . "/vendor/autoload.php"; Kernel::getInstance()->boot(); Kernel::getInstance()->initEvents();
protected static function makeNodeRec($data) { $nodetype = Kernel::getInstance()->getService('em')->getRepository('RZ\\Roadiz\\Core\\Entities\\NodeType')->findOneByName($data["node_type"]); $node = new Node($nodetype); $node->setNodeName($data['node_name']); $node->setHome($data['home']); $node->setVisible($data['visible']); $node->setStatus($data['status']); $node->setLocked($data['locked']); $node->setPriority($data['priority']); $node->setHidingChildren($data['hiding_children']); $node->setArchived($data['archived']); $node->setSterile($data['sterile']); $node->setChildrenOrder($data['children_order']); $node->setChildrenOrderDirection($data['children_order_direction']); foreach ($data["nodes_sources"] as $source) { $trans = new Translation(); $trans->setLocale($source['translation']); $trans->setName(Translation::$availableLocales[$source['translation']]); $namespace = NodeType::getGeneratedEntitiesNamespace(); $classname = $nodetype->getSourceEntityClassName(); $class = $namespace . "\\" . $classname; $nodeSource = new $class($node, $trans); $nodeSource->setTitle($source["title"]); $nodeSource->setMetaTitle($source["meta_title"]); $nodeSource->setMetaKeywords($source["meta_keywords"]); $nodeSource->setMetaDescription($source["meta_description"]); $fields = $nodetype->getFields(); foreach ($fields as $field) { if (!$field->isVirtual()) { if ($field->getType() == NodeTypeField::DATETIME_T || $field->getType() == NodeTypeField::DATE_T) { $date = new \DateTime($source[$field->getName()]['date'], new \DateTimeZone($source[$field->getName()]['timezone'])); $setter = $field->getSetterName(); $nodeSource->{$setter}($date); } else { $setter = $field->getSetterName(); $nodeSource->{$setter}($source[$field->getName()]); } } } if (!empty($source['url_aliases'])) { foreach ($source['url_aliases'] as $url) { $alias = new UrlAlias($nodeSource); $alias->setAlias($url['alias']); $nodeSource->addUrlAlias($alias); } } $node->getNodeSources()->add($nodeSource); } if (!empty($data['tags'])) { foreach ($data["tags"] as $tag) { $tmp = Kernel::getInstance()->getService('em')->getRepository('RZ\\Roadiz\\Core\\Entities\\Tag')->findOneBy(["tagName" => $tag]); $node->getTags()->add($tmp); } } if (!empty($data['children'])) { foreach ($data['children'] as $child) { $tmp = static::makeNodeRec($child); $node->addChild($tmp); } } return $node; }
protected static function browseTree($node) { $childObj = []; $sourceObj = []; foreach ($node->getChildren() as $child) { $childObj[] = static::browseTree($child); } $node->getChildren()->clear(); foreach ($node->getNodeSources() as $nodeSource) { $trans = Kernel::getInstance()->getService('em')->getRepository("RZ\\Roadiz\\Core\\Entities\\Translation")->findOneByLocale($nodeSource->getTranslation()->getLocale()); if (empty($trans)) { $trans = new Translation(); $trans->setLocale($nodeSource->getTranslation()->getLocale()); $trans->setName(Translation::$availableLocales[$nodeSource->getTranslation()->getLocale()]); Kernel::getInstance()->getService('em')->persist($trans); } $nodeSource->setTranslation($trans); foreach ($nodeSource->getUrlAliases() as $alias) { Kernel::getInstance()->getService('em')->persist($alias); } $nodeSource->setNode(null); Kernel::getInstance()->getService('em')->persist($nodeSource); $sourceObj[] = $nodeSource; } Kernel::getInstance()->getService('em')->persist($node); foreach ($childObj as $child) { $child->setParent($node); } foreach ($sourceObj as $nodeSource) { $nodeSource->setNode($node); } Kernel::getInstance()->getService('em')->flush(); return $node; }