[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/plugins/webservices/languages/ -> languages.php (source)

   1  <?php
   2  
   3  /**
   4   * @package     Joomla.Plugin
   5   * @subpackage  Webservices.Languages
   6   *
   7   * @copyright   (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
   8   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   9  
  10   * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
  11   */
  12  
  13  use Joomla\CMS\Factory;
  14  use Joomla\CMS\Plugin\CMSPlugin;
  15  use Joomla\CMS\Router\ApiRouter;
  16  use Joomla\Router\Route;
  17  
  18  // phpcs:disable PSR1.Files.SideEffects
  19  \defined('_JEXEC') or die;
  20  // phpcs:enable PSR1.Files.SideEffects
  21  
  22  /**
  23   * Web Services adapter for com_languages.
  24   *
  25   * @since  4.0.0
  26   */
  27  class PlgWebservicesLanguages extends CMSPlugin
  28  {
  29      /**
  30       * Load the language file on instantiation.
  31       *
  32       * @var    boolean
  33       * @since  4.0.0
  34       */
  35      protected $autoloadLanguage = true;
  36  
  37      /**
  38       * Registers com_languages's API's routes in the application
  39       *
  40       * @param   ApiRouter  &$router  The API Routing object
  41       *
  42       * @return  void
  43       *
  44       * @since   4.0.0
  45       */
  46      public function onBeforeApiRoute(&$router)
  47      {
  48          $router->createCRUDRoutes(
  49              'v1/languages/content',
  50              'languages',
  51              ['component' => 'com_languages']
  52          );
  53  
  54          $this->createLanguageOverridesRoutes($router);
  55          $this->createLanguageInstallerRoutes($router);
  56      }
  57  
  58      /**
  59       * Create language overrides routes
  60       *
  61       * @param   ApiRouter  &$router  The API Routing object
  62       *
  63       * @return  void
  64       *
  65       * @since   4.0.0
  66       */
  67      private function createLanguageOverridesRoutes(&$router)
  68      {
  69          $defaults = ['component' => 'com_languages'];
  70  
  71          $routes = [
  72              new Route(['POST'], 'v1/languages/overrides/search', 'strings.search', [], $defaults),
  73              new Route(['POST'], 'v1/languages/overrides/search/cache/refresh', 'strings.refresh', [], $defaults),
  74          ];
  75  
  76          $router->addRoutes($routes);
  77  
  78          /** @var \Joomla\Component\Languages\Administrator\Model\LanguagesModel $model */
  79          $model = Factory::getApplication()->bootComponent('com_languages')
  80              ->getMVCFactory()->createModel('Languages', 'Administrator', ['ignore_request' => true]);
  81  
  82          foreach ($model->getItems() as $item) {
  83              $baseName          = 'v1/languages/overrides/site/' . $item->lang_code;
  84              $controller        = 'overrides';
  85              $overridesDefaults = array_merge($defaults, ['lang_code' => $item->lang_code, 'app' => 'site']);
  86              $getDefaults       = array_merge(['public' => false], $overridesDefaults);
  87  
  88              $routes = [
  89                  new Route(['GET'], $baseName, $controller . '.displayList', [], $getDefaults),
  90                  new Route(['GET'], $baseName . '/:id', $controller . '.displayItem', ['id' => '([A-Z0-9_]+)'], $getDefaults),
  91                  new Route(['POST'], $baseName, $controller . '.add', [], $overridesDefaults),
  92                  new Route(['PATCH'], $baseName . '/:id', $controller . '.edit', ['id' => '([A-Z0-9_]+)'], $overridesDefaults),
  93                  new Route(['DELETE'], $baseName . '/:id', $controller . '.delete', ['id' => '([A-Z0-9_]+)'], $overridesDefaults),
  94              ];
  95  
  96              $router->addRoutes($routes);
  97  
  98              $baseName          = 'v1/languages/overrides/administrator/' . $item->lang_code;
  99              $overridesDefaults = array_merge($defaults, ['lang_code' => $item->lang_code, 'app' => 'administrator']);
 100              $getDefaults       = array_merge(['public' => false], $overridesDefaults);
 101  
 102              $routes = [
 103                  new Route(['GET'], $baseName, $controller . '.displayList', [], $getDefaults),
 104                  new Route(['GET'], $baseName . '/:id', $controller . '.displayItem', ['id' => '([A-Z0-9_]+)'], $getDefaults),
 105                  new Route(['POST'], $baseName, $controller . '.add', [], $overridesDefaults),
 106                  new Route(['PATCH'], $baseName . '/:id', $controller . '.edit', ['id' => '([A-Z0-9_]+)'], $overridesDefaults),
 107                  new Route(['DELETE'], $baseName . '/:id', $controller . '.delete', ['id' => '([A-Z0-9_]+)'], $overridesDefaults),
 108              ];
 109  
 110              $router->addRoutes($routes);
 111          }
 112      }
 113  
 114      /**
 115       * Create language installer routes
 116       *
 117       * @param   ApiRouter  &$router  The API Routing object
 118       *
 119       * @return  void
 120       *
 121       * @since   4.0.0
 122       */
 123      private function createLanguageInstallerRoutes(&$router)
 124      {
 125          $defaults    = ['component' => 'com_installer'];
 126          $getDefaults = array_merge(['public' => false], $defaults);
 127  
 128          $routes = [
 129              new Route(['GET'], 'v1/languages', 'languages.displayList', [], $getDefaults),
 130              new Route(['POST'], 'v1/languages', 'languages.install', [], $defaults),
 131          ];
 132  
 133          $router->addRoutes($routes);
 134      }
 135  }


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