mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-20 09:08:42 +02:00
EventService: call FireEvent with only one parameter (PSR14)
This commit is contained in:
@@ -24,10 +24,11 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
use Combodo\iTop\Service\EventService;
|
||||
use Combodo\iTop\Service\EventName;
|
||||
use Combodo\iTop\Application\Branding;
|
||||
use Combodo\iTop\Application\Helper\Session;
|
||||
use Combodo\iTop\Service\EventData;
|
||||
use Combodo\iTop\Service\EventName;
|
||||
use Combodo\iTop\Service\EventService;
|
||||
|
||||
/**
|
||||
* Web page used for displaying the login form
|
||||
@@ -488,14 +489,14 @@ class LoginWebPage extends NiceWebPage
|
||||
{
|
||||
if ($bFireEvent)
|
||||
{
|
||||
EventService::FireEvent(EventName::LOGIN, null, array('code' => $iErrorCode, 'state' => $sLoginState));
|
||||
EventService::FireEvent(new EventData(EventName::LOGIN, null, ['code' => $iErrorCode, 'state' => $sLoginState]));
|
||||
}
|
||||
Session::WriteClose();
|
||||
return $iErrorCode; // Asked to exit FSM, generally login OK
|
||||
}
|
||||
if ($iResponse == self::LOGIN_FSM_ERROR)
|
||||
{
|
||||
EventService::FireEvent(EventName::LOGIN, null, array('code' => $iErrorCode, 'state' => $sLoginState));
|
||||
EventService::FireEvent(new EventData(EventName::LOGIN, null, ['code' => $iErrorCode, 'state' => $sLoginState]));
|
||||
$sLoginState = self::LOGIN_STATE_SET_ERROR; // Next state will be error
|
||||
// An error was detected, skip the other plugins turn
|
||||
break;
|
||||
@@ -509,7 +510,7 @@ class LoginWebPage extends NiceWebPage
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
EventService::FireEvent(EventName::LOGIN, null, array('state' => $_SESSION['login_state']));
|
||||
EventService::FireEvent(new EventData(EventName::LOGIN, null, ['state' => $_SESSION['login_state']]));
|
||||
IssueLog::Error($e->getTraceAsString());
|
||||
static::ResetSession();
|
||||
die($e->getMessage());
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
use Combodo\iTop\Core\MetaModel\FriendlyNameType;
|
||||
use Combodo\iTop\Service\EventData;
|
||||
use Combodo\iTop\Service\EventName;
|
||||
use Combodo\iTop\Service\EventService;
|
||||
|
||||
@@ -5806,6 +5807,7 @@ abstract class DBObject implements iDisplay
|
||||
* @param array $aEventData
|
||||
*
|
||||
* @throws \CoreException
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function FireEvent($sEvent, $aEventData = array())
|
||||
{
|
||||
@@ -5815,7 +5817,7 @@ abstract class DBObject implements iDisplay
|
||||
foreach (MetaModel::EnumParentClasses(get_class($this), ENUM_PARENT_CLASSES_ALL, false) as $sClass) {
|
||||
$aEventSources[] = $sClass;
|
||||
}
|
||||
EventService::FireEvent($sEvent, $aEventSources, $aEventData);
|
||||
EventService::FireEvent(new EventData($sEvent, $aEventSources, $aEventData));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
use Combodo\iTop\Service\EventData;
|
||||
use Combodo\iTop\Service\EventName;
|
||||
use Combodo\iTop\Service\EventService;
|
||||
|
||||
@@ -220,7 +221,7 @@ class ormDocument
|
||||
'object' => $oObj,
|
||||
'document' => $oDocument,
|
||||
);
|
||||
EventService::FireEvent(EventName::DOWNLOAD_DOCUMENT, $sClass, $aEventData);
|
||||
EventService::FireEvent(new EventData(EventName::DOWNLOAD_DOCUMENT, $sClass, $aEventData));
|
||||
$oPage->TrashUnexpectedOutput();
|
||||
$oPage->SetContentType($oDocument->GetMimeType());
|
||||
$oPage->SetContentDisposition($sContentDisposition,$oDocument->GetFileName());
|
||||
|
||||
@@ -24,16 +24,15 @@ class EventData
|
||||
* EventServiceData constructor.
|
||||
*
|
||||
* @param string $sEvent
|
||||
* @param mixed $mEventSource
|
||||
* @param string|array|null $mEventSource
|
||||
* @param array $aEventData
|
||||
* @param array $aCallbackData
|
||||
*/
|
||||
public function __construct(string $sEvent, $mEventSource, array $aEventData, array $aCallbackData)
|
||||
public function __construct(string $sEvent, $mEventSource = null, array $aEventData = [])
|
||||
{
|
||||
$this->sEvent = $sEvent;
|
||||
$this->aEventData = $aEventData;
|
||||
$this->mEventSource = $mEventSource;
|
||||
$this->aCallbackData = $aCallbackData;
|
||||
$this->aCallbackData = [];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,7 +73,15 @@ class EventData
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @param array|null $aCallbackData
|
||||
*/
|
||||
public function SetCallbackData(?array $aCallbackData)
|
||||
{
|
||||
$this->aCallbackData = $aCallbackData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|null
|
||||
*/
|
||||
public function GetCallbackData(): array
|
||||
{
|
||||
|
||||
@@ -25,7 +25,7 @@ class EventService
|
||||
* @param string $sEvent corresponding event
|
||||
* @param callable $callback The callback to call
|
||||
* @param array|string|null $sEventSource event filtering depending on the source of the event
|
||||
* @param array $aCallbackData optional data given by the registrar to the callback
|
||||
* @param array|null $aCallbackData optional data given by the registrar to the callback
|
||||
* @param array|string|null $context context filter
|
||||
* @param float $fPriority optional priority for callback order
|
||||
*
|
||||
@@ -33,7 +33,7 @@ class EventService
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function Register(string $sEvent, callable $callback, $sEventSource = null, array $aCallbackData = [], $context = null, float $fPriority = 0.0): string
|
||||
public static function Register(string $sEvent, callable $callback, $sEventSource = null, ?array $aCallbackData = [], $context = null, float $fPriority = 0.0): string
|
||||
{
|
||||
is_callable($callback, false, $sName);
|
||||
|
||||
@@ -78,8 +78,10 @@ class EventService
|
||||
*
|
||||
* @throws \Exception from the callback
|
||||
*/
|
||||
public static function FireEvent(string $sEvent, $eventSource = null, array $aEventData = array())
|
||||
public static function FireEvent(EventData $oEventData)
|
||||
{
|
||||
$sEvent = $oEventData->GetEvent();
|
||||
$eventSource = $oEventData->GetEventSource();
|
||||
$oKPI = new ExecutionKPI();
|
||||
$sSource = isset($aEventData['debug_info']) ? " {$aEventData['debug_info']}" : '';
|
||||
$sEventName = "$sEvent:".self::GetSourcesAsString($eventSource);
|
||||
@@ -102,7 +104,8 @@ class EventService
|
||||
IssueLog::Debug("Fire event '$sEventName'$sSource calling '{$sName}'", LOG_EVENT_SERVICE_CHANNEL);
|
||||
try {
|
||||
if (is_callable($aEventCallback['callback'])) {
|
||||
call_user_func($aEventCallback['callback'], new EventData($sEvent, $eventSource, $aEventData, $aEventCallback['data']));
|
||||
$oEventData->SetCallbackData($aEventCallback['data']);
|
||||
call_user_func($aEventCallback['callback'], $oEventData);
|
||||
} else {
|
||||
IssueLog::Debug("Callback '{$sName}' not a callable anymore, unregister", LOG_EVENT_SERVICE_CHANNEL);
|
||||
self::UnRegisterCallback($aEventCallback['id']);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with iTop. If not, see <http://www.gnu.org/licenses/>
|
||||
use Combodo\iTop\Service\EventData;
|
||||
use Combodo\iTop\Service\EventName;
|
||||
use Combodo\iTop\Service\EventService;
|
||||
|
||||
@@ -52,7 +53,7 @@ class CLIPage implements Page
|
||||
{
|
||||
$aData['debug_info'] = 'from: '.get_class($this).":[$this->s_title]";
|
||||
$aData['object'] = $this;
|
||||
EventService::FireEvent(EventName::AFTER_DISPLAY_PAGE, get_class($this), $aData);
|
||||
EventService::FireEvent(new EventData(EventName::AFTER_DISPLAY_PAGE, get_class($this), $aData));
|
||||
}
|
||||
|
||||
public function add($sText)
|
||||
|
||||
@@ -17,6 +17,7 @@ use Combodo\iTop\Application\UI\Base\Layout\iUIContentBlock;
|
||||
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlock;
|
||||
use Combodo\iTop\Renderer\BlockRenderer;
|
||||
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
|
||||
use Combodo\iTop\Service\EventData;
|
||||
use Combodo\iTop\Service\EventName;
|
||||
use Combodo\iTop\Service\EventService;
|
||||
|
||||
@@ -1354,7 +1355,7 @@ JS;
|
||||
{
|
||||
$aData['debug_info'] = 'from: '.get_class($this).":[$this->s_title]";
|
||||
$aData['object'] = $this;
|
||||
EventService::FireEvent(EventName::AFTER_DISPLAY_PAGE, get_class($this), $aData);
|
||||
EventService::FireEvent(new EventData(EventName::AFTER_DISPLAY_PAGE, get_class($this), $aData));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
namespace Combodo\iTop\Test\UnitTest\Service;
|
||||
|
||||
use Combodo\iTop\Service\EventService;
|
||||
use Combodo\iTop\Service\EventData;
|
||||
use Combodo\iTop\Service\EventService;
|
||||
use Combodo\iTop\Test\UnitTest\ItopTestCase;
|
||||
use ContextTag;
|
||||
use TypeError;
|
||||
@@ -57,7 +57,7 @@ class EventTest extends ItopTestCase
|
||||
{
|
||||
$sId = EventService::Register('event', function () { $this->debug("Closure: event received !!!"); self::IncrementCallCount(); });
|
||||
$this->debug("Registered $sId");
|
||||
EventService::FireEvent('event');
|
||||
EventService::FireEvent(new EventData('event'));
|
||||
$this->assertEquals(1, self::$iEventCalls);
|
||||
}
|
||||
|
||||
@@ -72,9 +72,9 @@ class EventTest extends ItopTestCase
|
||||
{
|
||||
$sId = EventService::Register('event', $callback);
|
||||
$this->debug("Registered $sId");
|
||||
EventService::FireEvent('event');
|
||||
EventService::FireEvent(new EventData('event'));
|
||||
$this->assertEquals(1, self::$iEventCalls);
|
||||
EventService::FireEvent('event');
|
||||
EventService::FireEvent(new EventData('event'));
|
||||
$this->assertEquals(2, self::$iEventCalls);
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ class EventTest extends ItopTestCase
|
||||
EventService::Register('event_a', array($oReceiver, 'BrokenCallback'));
|
||||
|
||||
$this->expectException(TypeError::class);
|
||||
EventService::FireEvent('event_a');
|
||||
EventService::FireEvent(new EventData('event_a'));
|
||||
}
|
||||
|
||||
public function testRemovedCallback()
|
||||
@@ -105,7 +105,7 @@ class EventTest extends ItopTestCase
|
||||
$oReceiver = null;
|
||||
gc_collect_cycles();
|
||||
|
||||
EventService::FireEvent('event_a');
|
||||
EventService::FireEvent(new EventData('event_a'));
|
||||
$this->assertEquals(1, self::$iEventCalls);
|
||||
}
|
||||
|
||||
@@ -122,9 +122,9 @@ class EventTest extends ItopTestCase
|
||||
EventService::Register('event_b', array('Combodo\iTop\Test\UnitTest\Service\TestEventReceiver', 'OnStaticEvent1'));
|
||||
EventService::Register('event_b', 'Combodo\iTop\Test\UnitTest\Service\TestEventReceiver::OnStaticEvent2');
|
||||
|
||||
EventService::FireEvent('event_a');
|
||||
EventService::FireEvent(new EventData('event_a'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
EventService::FireEvent('event_b');
|
||||
EventService::FireEvent(new EventData('event_b'));
|
||||
$this->assertEquals(8, self::$iEventCalls);
|
||||
}
|
||||
|
||||
@@ -140,66 +140,66 @@ class EventTest extends ItopTestCase
|
||||
$sId = EventService::Register('event1', array($oReceiver, 'OnEvent1'));
|
||||
$this->debug("Registered $sId");
|
||||
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
}
|
||||
|
||||
public function testData()
|
||||
{
|
||||
$oReceiver = new TestEventReceiver();
|
||||
EventService::Register('event1', array($oReceiver, 'OnEventWithData'), '');
|
||||
EventService::Register('event1', array($oReceiver, 'OnEventWithData'), '');
|
||||
EventService::FireEvent('event1', '', array('text' => 'Event Data 1'));
|
||||
EventService::Register('event1', [$oReceiver, 'OnEventWithData'], '');
|
||||
EventService::Register('event1', [$oReceiver, 'OnEventWithData'], '');
|
||||
EventService::FireEvent(new EventData('event1', '', ['text' => 'Event Data 1']));
|
||||
$this->assertEquals(2, self::$iEventCalls);
|
||||
}
|
||||
|
||||
public function testPriority()
|
||||
{
|
||||
$oReceiver = new TestEventReceiver();
|
||||
EventService::Register('event1', array($oReceiver, 'OnEvent1'), '', null, null, 0);
|
||||
EventService::Register('event1', array($oReceiver, 'OnEvent2'), '', null, null, 1);
|
||||
EventService::Register('event1', [$oReceiver, 'OnEvent1'], '', null, null, 0);
|
||||
EventService::Register('event1', [$oReceiver, 'OnEvent2'], '', null, null, 1);
|
||||
|
||||
EventService::Register('event2', array($oReceiver, 'OnEvent1'), '', null, null, 1);
|
||||
EventService::Register('event2', array($oReceiver, 'OnEvent2'), '', null, null, 0);
|
||||
EventService::Register('event2', [$oReceiver, 'OnEvent1'], '', null, null, 1);
|
||||
EventService::Register('event2', [$oReceiver, 'OnEvent2'], '', null, null, 0);
|
||||
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(2, self::$iEventCalls);
|
||||
EventService::FireEvent('event2');
|
||||
EventService::FireEvent(new EventData('event2'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
}
|
||||
|
||||
public function testContext()
|
||||
{
|
||||
$oReceiver = new TestEventReceiver();
|
||||
EventService::Register('event1', array($oReceiver, 'OnEvent1'), '', null, null, 0);
|
||||
EventService::Register('event1', array($oReceiver, 'OnEvent2'), '', null, 'test_context', 1);
|
||||
EventService::FireEvent('event1');
|
||||
EventService::Register('event1', [$oReceiver, 'OnEvent1'], '', null, null, 0);
|
||||
EventService::Register('event1', [$oReceiver, 'OnEvent2'], '', null, 'test_context', 1);
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(1, self::$iEventCalls);
|
||||
ContextTag::AddContext('test_context');
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(3, self::$iEventCalls);
|
||||
}
|
||||
|
||||
public function testEventSource()
|
||||
{
|
||||
$oReceiver = new TestEventReceiver();
|
||||
EventService::Register('event1', array($oReceiver, 'OnEvent1'), 'A', null, null, 0);
|
||||
EventService::Register('event1', array($oReceiver, 'OnEvent2'), 'A', null, null, 1);
|
||||
EventService::Register('event1', [$oReceiver, 'OnEvent1'], 'A', null, null, 0);
|
||||
EventService::Register('event1', [$oReceiver, 'OnEvent2'], 'A', null, null, 1);
|
||||
EventService::Register('event1', 'Combodo\iTop\Test\UnitTest\Service\TestEventReceiver::OnStaticEvent1', null, null, null, 2);
|
||||
|
||||
EventService::Register('event2', array($oReceiver, 'OnEvent1'), 'A', null, null, 1);
|
||||
EventService::Register('event2', [$oReceiver, 'OnEvent1'], 'A', null, null, 1);
|
||||
EventService::Register('event2', 'Combodo\iTop\Test\UnitTest\Service\TestEventReceiver::OnStaticEvent1', null, null, null, 2);
|
||||
EventService::Register('event2', array($oReceiver, 'OnEvent2'), 'B', null, null, 0);
|
||||
EventService::Register('event2', [$oReceiver, 'OnEvent2'], 'B', null, null, 0);
|
||||
|
||||
EventService::FireEvent('event1', 'A');
|
||||
EventService::FireEvent(new EventData('event1', 'A'));
|
||||
$this->assertEquals(3, self::$iEventCalls);
|
||||
EventService::FireEvent('event2', 'A');
|
||||
EventService::FireEvent(new EventData('event2', 'A'));
|
||||
$this->assertEquals(5, self::$iEventCalls);
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(6, self::$iEventCalls);
|
||||
EventService::FireEvent('event2');
|
||||
EventService::FireEvent(new EventData('event2'));
|
||||
$this->assertEquals(7, self::$iEventCalls);
|
||||
EventService::FireEvent('event2', array('A', 'B'));
|
||||
EventService::FireEvent(new EventData('event2', ['A', 'B']));
|
||||
$this->assertEquals(10, self::$iEventCalls);
|
||||
|
||||
}
|
||||
@@ -217,18 +217,18 @@ class EventTest extends ItopTestCase
|
||||
$sId = EventService::Register('event2', array($oReceiver, 'OnEvent1'));
|
||||
$this->debug("Registered $sId");
|
||||
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(3, self::$iEventCalls);
|
||||
|
||||
EventService::FireEvent('event2');
|
||||
EventService::FireEvent(new EventData('event2'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
|
||||
EventService::UnRegisterEvent('event1');
|
||||
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
|
||||
EventService::FireEvent('event2');
|
||||
EventService::FireEvent(new EventData('event2'));
|
||||
$this->assertEquals(5, self::$iEventCalls);
|
||||
}
|
||||
|
||||
@@ -244,18 +244,18 @@ class EventTest extends ItopTestCase
|
||||
$sId = EventService::Register('event2', array($oReceiver, 'OnEvent1'));
|
||||
$this->debug("Registered $sId");
|
||||
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(3, self::$iEventCalls);
|
||||
|
||||
EventService::FireEvent('event2');
|
||||
EventService::FireEvent(new EventData('event2'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
|
||||
EventService::UnRegisterAll();
|
||||
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
|
||||
EventService::FireEvent('event2');
|
||||
EventService::FireEvent(new EventData('event2'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
}
|
||||
|
||||
@@ -271,18 +271,18 @@ class EventTest extends ItopTestCase
|
||||
$sId = EventService::Register('event2', array($oReceiver, 'OnEvent1'));
|
||||
$this->debug("Registered $sId");
|
||||
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(3, self::$iEventCalls);
|
||||
|
||||
EventService::FireEvent('event2');
|
||||
EventService::FireEvent(new EventData('event2'));
|
||||
$this->assertEquals(4, self::$iEventCalls);
|
||||
|
||||
EventService::UnRegisterCallback($sIdToRemove);
|
||||
|
||||
EventService::FireEvent('event1');
|
||||
EventService::FireEvent(new EventData('event1'));
|
||||
$this->assertEquals(6, self::$iEventCalls);
|
||||
|
||||
EventService::FireEvent('event2');
|
||||
EventService::FireEvent(new EventData('event2'));
|
||||
$this->assertEquals(7, self::$iEventCalls);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user