[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |