/** * {@inheritdoc} */ public function fromPageName($pageName) { if (null === $pageName) { return null; } if (!is_string($pageName)) { throw new InvalidArgumentTypeException('exception_invalid_value_for_fromPageName_method'); } return PageQuery::create()->filterByToDelete(0)->filterByPageName(PageManager::slugify($pageName))->findOne(); }
/** * Edits the managed page attributes object * * @param array $values * @return boolean * @throws \RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Core\Exception\Content\General\InvalidArgumentTypeException * * @api */ protected function edit(array $values = array()) { $values = $this->dispatchBeforeOperationEvent('\\RedKiteLabs\\RedKiteCms\\RedKiteCmsBundle\\Core\\Event\\Content\\Seo\\BeforeSeoEditingEvent', SeoEvents::BEFORE_EDIT_SEO, $values, array('message' => 'exception_seo_editing_aborted', 'domain' => 'exceptions')); try { if (isset($values['Permalink'])) { $currentPermalink = $this->alSeo->getPermalink(); if ($values['Permalink'] != $currentPermalink) { $values["oldPermalink"] = $currentPermalink; $values['Permalink'] = PageManager::slugify($values["Permalink"]); } else { unset($values['Permalink']); } } if (isset($values['MetaTitle']) && $values['MetaTitle'] == $this->alSeo->getMetaTitle()) { unset($values['MetaTitle']); } if (isset($values['MetaDescription']) && $values['MetaDescription'] == $this->alSeo->getMetaDescription()) { unset($values['MetaDescription']); } if (isset($values['MetaKeywords']) && $values['MetaKeywords'] == $this->alSeo->getMetaKeywords()) { unset($values['MetaKeywords']); } $this->validator->checkEmptyParams($values); $this->validator->checkOnceValidParamExists(array('Permalink' => '', 'MetaTitle' => '', 'MetaDescription' => '', 'MetaKeywords' => '', 'SitemapChangefreq' => '', 'SitemapPriority' => ''), $values); $this->seoRepository->startTransaction(); $this->seoRepository->setRepositoryObject($this->alSeo); $result = !empty($values) ? $this->seoRepository->save($values) : true; if (false !== $result) { $eventName = SeoEvents::BEFORE_EDIT_SEO_COMMIT; $result = !$this->eventsHandler->createEvent($eventName, '\\RedKiteLabs\\RedKiteCms\\RedKiteCmsBundle\\Core\\Event\\Content\\Seo\\BeforeEditSeoCommitEvent', array($this, $values))->dispatch()->getEvent($eventName)->isAborted(); } if (false !== $result) { $this->seoRepository->commit(); $this->eventsHandler->createEvent(SeoEvents::AFTER_EDIT_SEO, '\\RedKiteLabs\\RedKiteCms\\RedKiteCmsBundle\\Core\\Event\\Content\\Seo\\AfterSeoEditedEvent', array($this))->dispatch(); return $result; } $this->seoRepository->rollBack(); return $result; } catch (General\EmptyArgumentsException $ex) { } catch (General\ArgumentExpectedException $ex) { } catch (\Exception $e) { if (isset($this->seoRepository) && $this->seoRepository !== null) { $this->seoRepository->rollBack(); } throw $e; } }
/** * This test is a porting of the one proposed by Symfony1 Joobet tutorial */ public function testSlugify() { $this->assertEquals('redkitecms', PageManager::slugify('RedKiteCms')); $this->assertEquals('redkite-cms', PageManager::slugify('redkite cms')); $this->assertEquals('redkite-cms', PageManager::slugify('redkite cms')); $this->assertEquals('redkitecms', PageManager::slugify(' redkitecms')); $this->assertEquals('redkitecms', PageManager::slugify('redkitecms ')); $this->assertEquals('redkite-cms', PageManager::slugify('redkite,cms')); $this->assertEquals('n-a', PageManager::slugify('')); $this->assertEquals('n-a', PageManager::slugify(' - ')); $this->assertEquals('developpeur-web', PageManager::slugify('Développeur Web')); }
protected static function populateDb() { $client = static::createClient(array('environment' => 'rkcms_test', 'debug' => true)); $connection = \Propel::getConnection(); $configuration = $connection->getConfiguration(); $adapter = $configuration->getParameter('datasources.default.adapter'); switch ($adapter) { case "mysql": $queries = array('SET FOREIGN_KEY_CHECKS=0;', 'TRUNCATE al_block;', 'TRUNCATE al_configuration;', 'TRUNCATE al_language;', 'TRUNCATE al_locked_resource;', 'TRUNCATE al_page;', 'TRUNCATE al_seo;', 'TRUNCATE al_role;', 'TRUNCATE al_user;', 'INSERT INTO al_language (language_name) VALUES(\'-\');', 'INSERT INTO al_page (page_name) VALUES(\'-\');', 'INSERT INTO al_configuration (parameter, value) VALUES(\'language\', \'en\');', 'SET FOREIGN_KEY_CHECKS=1;'); break; case "pgsql": $queries = array('TRUNCATE al_configuration RESTART IDENTITY;', 'TRUNCATE al_page RESTART IDENTITY CASCADE;', 'TRUNCATE al_language RESTART IDENTITY CASCADE;', 'TRUNCATE al_block RESTART IDENTITY CASCADE;', 'TRUNCATE al_locked_resource RESTART IDENTITY;', 'TRUNCATE al_seo RESTART IDENTITY CASCADE;', 'TRUNCATE al_user RESTART IDENTITY CASCADE;', 'TRUNCATE al_role RESTART IDENTITY CASCADE;', 'INSERT INTO al_language (language_name) VALUES(\'-\');', 'INSERT INTO al_page (page_name) VALUES(\'-\');', 'INSERT INTO al_configuration (parameter, value) VALUES(\'language\', \'en\');'); break; case "sqlite": $queries = array('DELETE FROM al_block;', 'DELETE FROM al_configuration;', 'DELETE FROM al_language;', 'DELETE FROM al_locked_resource;', 'DELETE FROM al_page;', 'DELETE FROM al_seo;', 'DELETE FROM al_role;', 'DELETE FROM al_user;', 'INSERT INTO al_language (language_name) VALUES(\'-\');', 'INSERT INTO al_page (page_name) VALUES(\'-\');', 'INSERT INTO al_configuration (parameter, value) VALUES(\'language\', \'en\');'); break; } foreach ($queries as $query) { $statement = $connection->prepare($query); $statement->execute(); } $factoryRepository = new FactoryRepository('Propel'); $themes = $client->getContainer()->get('red_kite_labs_theme_engine.themes'); $theme = $themes->getTheme('BootbusinessThemeBundle'); $template = $theme->getTemplate('home'); $eventsHandler = $client->getContainer()->get('red_kite_cms.events_handler'); $pageBlocks = new PageBlocks($factoryRepository); $templateManager = new TemplateManager($eventsHandler, $factoryRepository, $client->getContainer()->get('red_kite_cms.block_manager_factory')); $templateManager->refresh($theme->getThemeSlots(), $template, $pageBlocks); $alLanguageManager = new LanguageManager($eventsHandler, $factoryRepository, new Validator\ParametersValidatorLanguageManager($factoryRepository)); foreach (self::$languages as $language) { $alLanguageManager->set(null)->save($language); } $alPageManager = new PageManager($eventsHandler, $templateManager, $factoryRepository, new Validator\ParametersValidatorPageManager($factoryRepository)); foreach (self::$pages as $page) { if (isset($page["TemplateName"])) { $templateManager->refresh($theme->getThemeSlots(), $theme->getTemplate($page["TemplateName"]), $pageBlocks); $alPageManager->setTemplateManager($templateManager); } $alPageManager->set(null)->save($page); } $roles = array('ROLE_USER', 'ROLE_ADMIN', 'ROLE_SUPER_ADMIN'); foreach ($roles as $role) { $alRole = new Role(); $alRole->setRole($role); $alRole->save(); self::$roles[$role] = $alRole->getId(); } self::addUser('admin', 'admin', self::$roles['ROLE_ADMIN']); }