diff --git a/administrator/components/com_scheduler/src/Traits/TaskPluginTrait.php b/administrator/components/com_scheduler/src/Traits/TaskPluginTrait.php index 699ed6b1a6908..cebb7b65f992e 100644 --- a/administrator/components/com_scheduler/src/Traits/TaskPluginTrait.php +++ b/administrator/components/com_scheduler/src/Traits/TaskPluginTrait.php @@ -21,7 +21,6 @@ use Joomla\Component\Scheduler\Administrator\Event\ExecuteTaskEvent; use Joomla\Component\Scheduler\Administrator\Task\Status; use Joomla\Event\EventInterface; -use Joomla\Event\SubscriberInterface; use Joomla\Utilities\ArrayHelper; /** @@ -146,7 +145,7 @@ public function enhanceTaskItemForm($context, $data = null): bool } // We expect the form XML in "{PLUGIN_PATH}/forms/{FORM_NAME}.xml" - $path = \dirname((new \ReflectionClass(static::class))->getFileName()); + $path = JPATH_PLUGINS . '/' . $this->_type . '/' . $this->_name; $enhancementFormFile = $path . '/forms/' . $enhancementFormName . '.xml'; try diff --git a/plugins/task/requests/requests.xml b/plugins/task/requests/requests.xml index 440092ce518c7..901be27e8d83b 100644 --- a/plugins/task/requests/requests.xml +++ b/plugins/task/requests/requests.xml @@ -9,9 +9,10 @@ www.joomla.org 4.1 PLG_TASK_REQUESTS_XML_DESCRIPTION + Joomla\Plugin\Task\Requests - requests.php - language + services + src forms diff --git a/plugins/task/requests/services/provider.php b/plugins/task/requests/services/provider.php new file mode 100644 index 0000000000000..f6600db7c022d --- /dev/null +++ b/plugins/task/requests/services/provider.php @@ -0,0 +1,47 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Extension\PluginInterface; +use Joomla\CMS\Plugin\PluginHelper; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; +use Joomla\Event\DispatcherInterface; +use Joomla\Http\HttpFactory; +use Joomla\Plugin\Task\Requests\Extension\Requests; + +return new class implements ServiceProviderInterface +{ + /** + * Registers the service provider with a DI container. + * + * @param Container $container The DI container. + * + * @return void + * + * @since __DEPLOY_VERSION__ + */ + public function register(Container $container) + { + $container->set( + PluginInterface::class, + function (Container $container) + { + $plugin = new Requests( + $container->get(DispatcherInterface::class), + (array) PluginHelper::getPlugin('task', 'requests'), + new HttpFactory + ); + + return $plugin; + } + ); + } +}; diff --git a/plugins/task/requests/requests.php b/plugins/task/requests/src/Extension/Requests.php similarity index 65% rename from plugins/task/requests/requests.php rename to plugins/task/requests/src/Extension/Requests.php index 896af0cd61da6..98fe7f53ab3cf 100644 --- a/plugins/task/requests/requests.php +++ b/plugins/task/requests/src/Extension/Requests.php @@ -7,19 +7,21 @@ * @license GNU General Public License version 2 or later; see LICENSE.txt */ +namespace Joomla\Plugin\Task\Requests\Extension; + // Restrict direct access defined('_JEXEC') or die; -use Joomla\CMS\Filesystem\File; -use Joomla\CMS\Filesystem\Path; -use Joomla\CMS\Http\HttpFactory; -use Joomla\CMS\Language\Text; +use Exception; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\Component\Scheduler\Administrator\Event\ExecuteTaskEvent; use Joomla\Component\Scheduler\Administrator\Task\Status as TaskStatus; use Joomla\Component\Scheduler\Administrator\Traits\TaskPluginTrait; +use Joomla\Event\DispatcherInterface; use Joomla\Event\SubscriberInterface; -use Joomla\Registry\Registry; +use Joomla\Filesystem\File; +use Joomla\Filesystem\Path; +use Joomla\Http\HttpFactory; /** * Task plugin with routines to make HTTP requests. @@ -27,7 +29,7 @@ * * @since 4.1.0 */ -class PlgTaskRequests extends CMSPlugin implements SubscriberInterface +class Requests extends CMSPlugin implements SubscriberInterface { use TaskPluginTrait; @@ -44,13 +46,7 @@ class PlgTaskRequests extends CMSPlugin implements SubscriberInterface ]; /** - * @var boolean - * @since 4.1.0 - */ - protected $autoloadLanguage = true; - - /** - * @inheritDoc + * Returns an array of events this subscriber will listen to. * * @return string[] * @@ -65,6 +61,44 @@ public static function getSubscribedEvents(): array ]; } + /** + * @var boolean + * @since 4.1.0 + */ + protected $autoloadLanguage = true; + + /** + * The application object + * + * @var CMSApplicationInterface + * @since __DEPLOY_VERSION__ + */ + protected $app; + + /** + * The http factory + * + * @var HttpFactory + * @since __DEPLOY_VERSION__ + */ + private $httpFactory; + + /** + * Constructor. + * + * @param DispatcherInterface $dispatcher The dispatcher + * @param array $config An optional associative array of configuration settings + * @param HttpFactory $httpFactory The http factory + * + * @since __DEPLOY_VERSION__ + */ + public function __construct(DispatcherInterface $dispatcher, array $config, HttpFactory $httpFactory) + { + parent::__construct($dispatcher, $config); + + $this->httpFactory = $httpFactory; + } + /** * Standard routine method for the get request routine. * @@ -92,15 +126,13 @@ protected function makeGetRequest(ExecuteTaskEvent $event): int $headers = [$authType => $authKey]; } - $options = new Registry; - try { - $response = HttpFactory::getHttp($options)->get($url, $headers, $timeout); + $response = $this->httpFactory->getHttp([])->get($url, $headers, $timeout); } catch (Exception $e) { - $this->logTask(Text::sprintf('PLG_TASK_REQUESTS_TASK_GET_REQUEST_LOG_TIMEOUT')); + $this->logTask($this->app->getLanguage()->_('PLG_TASK_REQUESTS_TASK_GET_REQUEST_LOG_TIMEOUT')); return TaskStatus::TIMEOUT; } @@ -118,7 +150,7 @@ protected function makeGetRequest(ExecuteTaskEvent $event): int } else { - $this->logTask('PLG_TASK_REQUESTS_TASK_GET_REQUEST_LOG_UNWRITEABLE_OUTPUT', 'error'); + $this->logTask($this->app->getLanguage()->_('PLG_TASK_REQUESTS_TASK_GET_REQUEST_LOG_UNWRITEABLE_OUTPUT'), 'error'); $responseStatus = 'NOT_SAVED'; } @@ -129,7 +161,7 @@ protected function makeGetRequest(ExecuteTaskEvent $event): int > Response: $responseStatus EOF; - $this->logTask(Text::sprintf('PLG_TASK_REQUESTS_TASK_GET_REQUEST_LOG_RESPONSE', $responseCode)); + $this->logTask(sprintf($this->app->getLanguage()->_('PLG_TASK_REQUESTS_TASK_GET_REQUEST_LOG_RESPONSE'), $responseCode)); if ($response->code !== 200) {