[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/src/Form/Field/ -> FrontendlanguageField.php (source)

   1  <?php
   2  
   3  /**
   4   * Joomla! Content Management System
   5   *
   6   * @copyright  (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
   7   * @license    GNU General Public License version 2 or later; see LICENSE.txt
   8   */
   9  
  10  namespace Joomla\CMS\Form\Field;
  11  
  12  use Joomla\CMS\Factory;
  13  
  14  // phpcs:disable PSR1.Files.SideEffects
  15  \defined('JPATH_PLATFORM') or die;
  16  // phpcs:enable PSR1.Files.SideEffects
  17  
  18  /**
  19   * Provides a list of published content languages with home pages
  20   *
  21   * @see    \Joomla\CMS\Form\Field\LanguageField for a select list of application languages.
  22   * @since  3.5
  23   */
  24  class FrontendlanguageField extends ListField
  25  {
  26      /**
  27       * The form field type.
  28       *
  29       * @var    string
  30       * @since  3.5
  31       */
  32      public $type = 'Frontend_Language';
  33  
  34      /**
  35       * Method to get the field options for frontend published content languages with homes.
  36       *
  37       * @return  array  The options the field is going to show.
  38       *
  39       * @since   3.5
  40       */
  41      protected function getOptions()
  42      {
  43          // Get the database object and a new query object.
  44          $db    = $this->getDatabase();
  45          $query = $db->getQuery(true);
  46  
  47          $query->select('a.lang_code AS value, a.title AS text')
  48              ->from($db->quoteName('#__languages') . ' AS a')
  49              ->where('a.published = 1')
  50              ->order('a.title');
  51  
  52          // Select the language home pages.
  53          $query->select('l.home, l.language')
  54              ->innerJoin($db->quoteName('#__menu') . ' AS l ON l.language=a.lang_code AND l.home=1 AND l.published=1 AND l.language <> ' . $db->quote('*'))
  55              ->innerJoin($db->quoteName('#__extensions') . ' AS e ON e.element = a.lang_code')
  56              ->where('e.client_id = 0')
  57              ->where('e.enabled = 1')
  58              ->where('e.state = 0');
  59  
  60          $db->setQuery($query);
  61  
  62          try {
  63              $languages = $db->loadObjectList();
  64          } catch (\RuntimeException $e) {
  65              $languages = array();
  66  
  67              if (Factory::getUser()->authorise('core.admin')) {
  68                  Factory::getApplication()->enqueueMessage($e->getMessage(), 'error');
  69              }
  70          }
  71  
  72          // Merge any additional options in the XML definition.
  73          return array_merge(parent::getOptions(), $languages);
  74      }
  75  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer