62 lines
2.0 KiB
PHP
62 lines
2.0 KiB
PHP
<?php
|
|
namespace PixelYourSite;
|
|
|
|
abstract class EventsFactory {
|
|
|
|
|
|
static function getSlug(){
|
|
return "";
|
|
}
|
|
abstract function getCount();
|
|
abstract function isEnabled();
|
|
abstract function getOptions();
|
|
|
|
abstract function getEvents();
|
|
/**
|
|
* Check is event ready for fire
|
|
* @param $event
|
|
* @return bool
|
|
*/
|
|
abstract function isReadyForFire($event);
|
|
|
|
/**
|
|
* @param String $event
|
|
* @return SingleEvent
|
|
*/
|
|
abstract function getEvent($event);
|
|
|
|
|
|
function generateEvents() {
|
|
if(!$this->isEnabled()) return array();
|
|
$eventsList = array();
|
|
foreach ($this->getEvents() as $eventName) {
|
|
if($this->isReadyForFire($eventName)) {
|
|
$events = $this->getEvent($eventName);
|
|
if($events == null) continue;
|
|
if(!is_array($events)) $events = array($events); // some
|
|
foreach ($events as $event) {
|
|
foreach ( PYS()->getRegisteredPixels() as $pixel ) {
|
|
if(method_exists($pixel,'generateEvents')) {
|
|
$pixelEvents = $pixel->generateEvents( $event );
|
|
foreach ($pixelEvents as $pixelEvent) {
|
|
if(apply_filters("pys_validate_pixel_event",true,$pixelEvent,$pixel)) {
|
|
$eventsList[$pixel->getSlug()][] = $pixelEvent;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
// deprecate
|
|
$pixel_event = clone $event;
|
|
$isSuccess = $pixel->addParamsToEvent( $pixel_event );
|
|
if(!$isSuccess || !apply_filters("pys_validate_pixel_event",true,$pixel_event,$pixel)) continue;
|
|
$eventsList[$pixel->getSlug()][] = $pixel_event;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $eventsList;
|
|
}
|
|
}
|