/**
  * {@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();
 }
Пример #2
0
 /**
  * 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;
     }
 }
Пример #3
0
 /**
  * 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']);
 }