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