* @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Scheduler\Administrator\Task; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * The TaskOptions class. * Used as the subject argument for the `onTaskOptionsList` event, plugins that support tasks must add them to the * object through the addOptions() method. * * @since 4.1.0 */ class TaskOptions { /** * An array of TaskOptions * * @var TaskOption[] * @since 4.1.0 */ public $options = []; /** * A plugin can support several task routines * This method is used by a plugin's onTaskOptionsList subscriber to advertise supported routines. * * @param array $taskRoutines An associative array of {@var TaskOption} constructor argument pairs: * [ 'routineId' => 'languageConstantPrefix', ... ] * * @return void * * @since 4.1.0 */ public function addOptions(array $taskRoutines): void { foreach ($taskRoutines as $routineId => $langConstPrefix) { $this->options[] = new TaskOption($routineId, $langConstPrefix); } } /** * @param ?string $routineId A unique identifier for a plugin task routine * * @return ?TaskOption A matching TaskOption if available, null otherwise * * @since 4.1.0 */ public function findOption(?string $routineId): ?TaskOption { if ($routineId === null) { return null; } foreach ($this->options as $option) { if ($option->id === $routineId) { return $option; } } return null; } }