Source for file setdefaultlanguage.php

Documentation is available at setdefaultlanguage.php

  1. <?php
  2. /**
  3.  * @package     Joomla.Installation
  4.  * @subpackage  Controller
  5.  *
  6.  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
  7.  * @license     GNU General Public License version 2 or later; see LICENSE.txt
  8.  */
  9.  
  10. defined('_JEXEC') or die;
  11.  
  12. /**
  13.  * Controller class to set the default application languages for the Joomla Installer.
  14.  *
  15.  * @package     Joomla.Installation
  16.  * @subpackage  Controller
  17.  * @since       3.1
  18.  */
  19. {
  20.     /**
  21.      * Constructor.
  22.      *
  23.      * @since   3.1
  24.      */
  25.     public function __construct()
  26.     {
  27.         parent::__construct();
  28.  
  29.         // Overrides application config and set the configuration.php file so tokens and database works
  30.         JFactory::$config = null;
  31.         JFactory::getConfig(JPATH_SITE . '/configuration.php');
  32.         JFactory::$session = null;
  33.     }
  34.  
  35.     /**
  36.      * Execute the controller.
  37.      *
  38.      * @return  void 
  39.      *
  40.      * @since   3.1
  41.      */
  42.     public function execute()
  43.     {
  44.         // Get the application
  45.         /* @var InstallationApplicationWeb $app */
  46.         $app = $this->getApplication();
  47.  
  48.         // Check for request forgeries.
  49.         JSession::checkToken() or $app->sendJsonResponse(new Exception(JText::_('JINVALID_TOKEN'), 403));
  50.  
  51.         // Get the languages model.
  52.         $model = new InstallationModelLanguages;
  53.  
  54.         // Check for request forgeries in the administrator language
  55.         $admin_lang = $this->input->getString('administratorlang', false);
  56.  
  57.         // Check that the string is an ISO Language Code avoiding any injection.
  58.         if (!preg_match('/^[a-z]{2}(\-[A-Z]{2})?$/', $admin_lang))
  59.         {
  60.             $admin_lang = 'en-GB';
  61.         }
  62.  
  63.         // Attempt to set the default administrator language
  64.         if (!$model->setDefault($admin_lang, 'administrator'))
  65.         {
  66.             // Create a error response message.
  67.             $app->enqueueMessage(JText::_('INSTL_DEFAULTLANGUAGE_ADMIN_COULDNT_SET_DEFAULT'), 'error');
  68.         }
  69.         else
  70.         {
  71.             // Create a response body.
  72.             $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_ADMIN_SET_DEFAULT', $admin_lang));
  73.         }
  74.  
  75.         // Check for request forgeries in the site language
  76.         $frontend_lang = $this->input->getString('frontendlang', false);
  77.  
  78.         // Check that the string is an ISO Language Code avoiding any injection.
  79.         if (!preg_match('/^[a-z]{2}(\-[A-Z]{2})?$/', $frontend_lang))
  80.         {
  81.             $frontend_lang = 'en-GB';
  82.         }
  83.  
  84.         // Attempt to set the default site language
  85.         if (!$model->setDefault($frontend_lang, 'site'))
  86.         {
  87.             // Create a error response message.
  88.             $app->enqueueMessage(JText::_('INSTL_DEFAULTLANGUAGE_FRONTEND_COULDNT_SET_DEFAULT'), 'error');
  89.         }
  90.         else
  91.         {
  92.             // Create a response body.
  93.             $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_FRONTEND_SET_DEFAULT', $frontend_lang));
  94.         }
  95.  
  96.         // Check if user has activated the multilingual site
  97.         $data                = $this->input->post->get('jform', array(), 'array');
  98.         $activeMultilanguage = (int) $data['activateMultilanguage'];
  99.  
  100.         if ($activeMultilanguage)
  101.         {
  102.             if (!$model->enablePlugin('plg_system_languagefilter'))
  103.             {
  104.                 $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_COULD_NOT_ENABLE_PLG_LANGUAGEFILTER', $frontend_lang));
  105.             }
  106.  
  107.             // Activate optional ISO code Plugin
  108.             $activatePluginIsoCode = (int) $data['activatePluginLanguageCode'];
  109.  
  110.             if ($activatePluginIsoCode)
  111.             {
  112.                 if (!$model->enablePlugin('plg_system_languagecode'))
  113.                 {
  114.                     $app->enqueueMessage(JText::_('INSTL_DEFAULTLANGUAGE_COULD_NOT_ENABLE_PLG_LANGUAGECODE'));
  115.                 }
  116.             }
  117.  
  118.             if (!$model->addModuleLanguageSwitcher())
  119.             {
  120.                 $app->enqueueMessage(JText::_('INSTL_DEFAULTLANGUAGE_COULD_NOT_ENABLE_MODULESWHITCHER_LANGUAGECODE'));
  121.             }
  122.  
  123.             // Add menus
  124.             JLoader::registerPrefix('J', JPATH_PLATFORM . '/legacy');
  125.             JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_menus/tables/');
  126.  
  127.             $siteLanguages = $model->getInstalledlangsFrontend();
  128.  
  129.             foreach ($siteLanguages as $siteLang)
  130.             {
  131.                 $error = false;
  132.  
  133.                 // Add Language Manager: Content Languages
  134.                 $tableLanguage = JTable::getInstance('Language');
  135.  
  136.                 // Search if just added
  137.                 $return = $tableLanguage->load(array('lang_code' => $siteLang->language));
  138.  
  139.                 if ($return === false)
  140.                 {
  141.                     $sefLangString = $model->getSefString($siteLang, $siteLanguages);
  142.  
  143.                     if (!$model->addLanguage($siteLang, $sefLangString))
  144.                     {
  145.                         $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_CONTENT_LANGUAGE', $siteLang->name));
  146.                         $error = true;
  147.                     }
  148.                 }
  149.  
  150.                 if (!$error && !$model->addMenuGroup($siteLang))
  151.                 {
  152.                     $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_MENU', $siteLang->name));
  153.                     $error = true;
  154.                 }
  155.  
  156.                 if (!$error && !$model->addMenuItem($siteLang))
  157.                 {
  158.                     $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_MENU_ITEM', $siteLang->name));
  159.                     $error = true;
  160.                 }
  161.  
  162.                 if (!$error && !$model->addModuleMenu($siteLang))
  163.                 {
  164.                     $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_MENU_MODULE', $frontend_lang));
  165.                     $error = true;
  166.                 }
  167.  
  168.                 if (!$error)
  169.                 {
  170.                     $tableCategory = $model->addCategory($siteLang);
  171.  
  172.                     if ($tableCategory === false)
  173.                     {
  174.                         $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_CATEGORY', $frontend_lang));
  175.                         $error = true;
  176.                     }
  177.                 }
  178.  
  179.                 if (!$error)
  180.                 {
  181.                     $categoryId = $tableCategory->id;
  182.  
  183.                     if (!$model->addArticle($siteLang, $categoryId))
  184.                     {
  185.                         $app->enqueueMessage(JText::sprintf('INSTL_DEFAULTLANGUAGE_COULD_NOT_CREATE_ARTICLE', $frontend_lang));
  186.                         $error = true;
  187.                     }
  188.                 }
  189.             }
  190.  
  191.             if (!$model->disableModuleMainMenu())
  192.             {
  193.                 $app->enqueueMessage(JText::_('INSTL_DEFAULTLANGUAGE_COULD_NOT_UNPUBLISH_MOD_DEFAULTMENU'));
  194.             }
  195.  
  196.             if (!$model->enableModule('mod_multilangstatus'))
  197.             {
  198.                 $app->enqueueMessage(JText::_('INSTL_DEFAULTLANGUAGE_COULD_NOT_PUBLISH_MOD_MULTILANGSTATUS'));
  199.             }
  200.         }
  201.  
  202.         $r = new stdClass;
  203.  
  204.         // Redirect to the final page.
  205.         $r->view = 'remove';
  206.         $app->sendJsonResponse($r);
  207.     }
  208. }

Documentation generated on Tue, 19 Nov 2013 15:12:57 +0100 by phpDocumentor 1.4.3