/**
  * Fetches the base language used to copy the entities
  *
  * @return \RedKiteLabs\RedKiteCms\RedKiteCmsBundle\Model\Language
  */
 protected function getBaseLanguage()
 {
     $languageRepository = $this->languageManager->getLanguageRepository();
     // Tries to fetch the current language from the request
     if (null !== $this->request) {
         $languages = $this->request->getLanguages();
         $alLanguage = $languageRepository->fromLanguageName($languages[1]);
         if (null !== $alLanguage) {
             return $alLanguage;
         }
         // @codeCoverageIgnoreStart
     }
     // @codeCoverageIgnoreEnd
     // Fetches the current language from the main language when the adding one is not the main language
     if ($this->mainLanguage->getId() != $this->languageManager->get()->getId()) {
         return $this->mainLanguage;
     }
     return $languageRepository->firstOne();
 }
 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']);
 }