/**
  * {@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);
 }
Exemple #2
0
 /**
  * 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;
 }
Exemple #3
0
    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;
 }
Exemple #6
0
 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;
 }
Exemple #7
0
 * 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;
 }
Exemple #9
0
 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;
 }