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)
{