]> git.mxchange.org Git - friendica.git/commitdiff
Add event for proc_run hook
authorArt4 <art4@wlabs.de>
Thu, 13 Mar 2025 14:50:29 +0000 (14:50 +0000)
committerArt4 <art4@wlabs.de>
Thu, 13 Mar 2025 14:50:29 +0000 (14:50 +0000)
src/Core/Hooks/HookEventBridge.php
src/Core/Worker.php
src/Event/ArrayFilterEvent.php
tests/Unit/Core/Hooks/HookEventBridgeTest.php
tests/Unit/Event/ArrayFilterEventTest.php

index 39da9a13d08247b92915249afcf05fe509555c46..18a41a1730bc21b172c88ff90a2a601f9dfdf266 100644 (file)
@@ -67,6 +67,7 @@ final class HookEventBridge
                ArrayFilterEvent::REVOKE_FOLLOW_CONTACT           => 'revoke_follow',
                ArrayFilterEvent::BLOCK_CONTACT                   => 'block',
                ArrayFilterEvent::UNBLOCK_CONTACT                 => 'unblock',
+               ArrayFilterEvent::ADD_WORKER_TASK                 => 'proc_run',
                HtmlFilterEvent::HEAD                             => 'head',
                HtmlFilterEvent::FOOTER                           => 'footer',
                HtmlFilterEvent::PAGE_HEADER                      => 'page_header',
@@ -114,6 +115,7 @@ final class HookEventBridge
                        ArrayFilterEvent::REVOKE_FOLLOW_CONTACT           => 'onArrayFilterEvent',
                        ArrayFilterEvent::BLOCK_CONTACT                   => 'onArrayFilterEvent',
                        ArrayFilterEvent::UNBLOCK_CONTACT                 => 'onArrayFilterEvent',
+                       ArrayFilterEvent::ADD_WORKER_TASK                 => 'onArrayFilterEvent',
                        HtmlFilterEvent::HEAD                             => 'onHtmlFilterEvent',
                        HtmlFilterEvent::FOOTER                           => 'onHtmlFilterEvent',
                        HtmlFilterEvent::PAGE_HEADER                      => 'onHtmlFilterEvent',
index 995239cde926fd6fbb48b9c92627cbf9522d3054..0f14807adb9a975e856f0a92447908b6c8ef7b7c 100644 (file)
@@ -13,6 +13,7 @@ use Friendica\Core\Logger\Type\WorkerLogger;
 use Friendica\Core\Worker\Entity\Process;
 use Friendica\Database\DBA;
 use Friendica\DI;
+use Friendica\Event\ArrayFilterEvent;
 use Friendica\Util\DateTimeFormat;
 
 /**
@@ -1237,10 +1238,6 @@ class Worker
         * @return int '0' if worker queue entry already existed or there had been an error, otherwise the ID of the worker task
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @note $cmd and string args are surrounded with ''
-        *
-        * @hooks 'proc_run'
-        *    array $arr
-        *
         */
        public static function add(...$args)
        {
@@ -1250,7 +1247,12 @@ class Worker
 
                $arr = ['args' => $args, 'run_cmd' => true];
 
-               Hook::callAll('proc_run', $arr);
+               $eventDispatcher = DI::eventDispatcher();
+
+               $arr = $eventDispatcher->dispatch(
+                       new ArrayFilterEvent(ArrayFilterEvent::ADD_WORKER_TASK, $arr),
+               )->getArray();
+
                if (!$arr['run_cmd'] || !count($args)) {
                        return 1;
                }
index b4ec1122720cfb93503b6653b2dda2a1171315ac..6967524f860d1c855b09f6ad4bf4d5be29f35d59 100644 (file)
@@ -72,6 +72,8 @@ final class ArrayFilterEvent extends Event
 
        public const UNBLOCK_CONTACT = 'friendica.data.unblock_contact';
 
+       public const ADD_WORKER_TASK = 'friendica.data.add_worker_task';
+
        private array $array;
 
        public function __construct(string $name, array $array)
index f1b10ed3c778a3c034d8f8be0d16757d6447a107..d7df82e4d10ef3065ad9ae8c3390b8ef9466b292 100644 (file)
@@ -56,6 +56,7 @@ class HookEventBridgeTest extends TestCase
                        ArrayFilterEvent::REVOKE_FOLLOW_CONTACT           => 'onArrayFilterEvent',
                        ArrayFilterEvent::BLOCK_CONTACT                   => 'onArrayFilterEvent',
                        ArrayFilterEvent::UNBLOCK_CONTACT                 => 'onArrayFilterEvent',
+                       ArrayFilterEvent::ADD_WORKER_TASK                 => 'onArrayFilterEvent',
                        HtmlFilterEvent::HEAD                             => 'onHtmlFilterEvent',
                        HtmlFilterEvent::FOOTER                           => 'onHtmlFilterEvent',
                        HtmlFilterEvent::PAGE_HEADER                      => 'onHtmlFilterEvent',
@@ -288,6 +289,7 @@ class HookEventBridgeTest extends TestCase
                        [ArrayFilterEvent::REVOKE_FOLLOW_CONTACT, 'revoke_follow'],
                        [ArrayFilterEvent::BLOCK_CONTACT, 'block'],
                        [ArrayFilterEvent::UNBLOCK_CONTACT, 'unblock'],
+                       [ArrayFilterEvent::ADD_WORKER_TASK, 'proc_run'],
                ];
        }
 
index be576995c774202ae004fbac42b0ce0676d8363f..2afebba49614bdda9cc7146474fbc53896078e53 100644 (file)
@@ -52,6 +52,7 @@ class ArrayFilterEventTest extends TestCase
                        [ArrayFilterEvent::REVOKE_FOLLOW_CONTACT, 'friendica.data.revoke_follow_contact'],
                        [ArrayFilterEvent::BLOCK_CONTACT, 'friendica.data.block_contact'],
                        [ArrayFilterEvent::UNBLOCK_CONTACT, 'friendica.data.unblock_contact'],
+                       [ArrayFilterEvent::ADD_WORKER_TASK, 'friendica.data.add_worker_task'],
                ];
        }