85 lines
2.0 KiB
PHP
85 lines
2.0 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Grav\Plugin\FlexObjects\Events;
|
||
|
|
||
|
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
|
||
|
use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface;
|
||
|
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
|
||
|
use Grav\Framework\Object\Interfaces\ObjectInterface;
|
||
|
use Grav\Plugin\FlexObjects\Controllers\AbstractController;
|
||
|
|
||
|
/**
|
||
|
* @template T as FlexObjectInterface
|
||
|
* @template C as FlexCollectionInterface
|
||
|
*/
|
||
|
class FlexTaskEvent
|
||
|
{
|
||
|
/** @var string */
|
||
|
public $task;
|
||
|
/** @var string */
|
||
|
public $type;
|
||
|
/** @var string */
|
||
|
public $key;
|
||
|
|
||
|
/** @var ObjectInterface */
|
||
|
private $object;
|
||
|
/** @var AbstractController */
|
||
|
private $controller;
|
||
|
|
||
|
/**
|
||
|
* @param AbstractController $controller
|
||
|
* @param string $task
|
||
|
*/
|
||
|
public function __construct(AbstractController $controller, ObjectInterface $object, string $task)
|
||
|
{
|
||
|
$this->task = $task;
|
||
|
$this->type = $controller->getDirectoryType();
|
||
|
$this->key = $controller->getObjectKey();
|
||
|
$this->object = $object;
|
||
|
$this->controller = $controller;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return AbstractController
|
||
|
*/
|
||
|
public function getController(): AbstractController
|
||
|
{
|
||
|
return $this->controller;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return FlexDirectoryInterface
|
||
|
*/
|
||
|
public function getDirectory(): FlexDirectoryInterface
|
||
|
{
|
||
|
return $this->getController()->getDirectory();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return FlexObjectInterface
|
||
|
* @phpstan-return T
|
||
|
*/
|
||
|
public function getModifiedObject(): FlexObjectInterface
|
||
|
{
|
||
|
return $this->object;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return FlexObjectInterface
|
||
|
* @phpstan-return T
|
||
|
*/
|
||
|
public function getOriginalObject(): FlexObjectInterface
|
||
|
{
|
||
|
return $this->controller->getObject();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return FlexCollectionInterface
|
||
|
* @phpstan-return C
|
||
|
*/
|
||
|
public function getCollection(): FlexCollectionInterface
|
||
|
{
|
||
|
return $this->getController()->getDirectory()->getCollection();
|
||
|
}
|
||
|
}
|