Current File : /home/pacjaorg/public_html/km/administrator/components/com_media/src/Event/FetchMediaItemEvent.php |
<?php
/**
* @package Joomla.Administrator
* @subpackage com_media
*
* @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\Component\Media\Administrator\Event;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
/**
* Event object for fetch media item.
*
* @since 4.1.0
*/
final class FetchMediaItemEvent extends AbstractMediaItemValidationEvent
{
/**
* Constructor.
*
* @param string $name The event name.
* @param array $arguments The event arguments.
*
* @throws \BadMethodCallException
*
* @since 4.1.0
*/
public function __construct($name, array $arguments = [])
{
parent::__construct($name, $arguments);
// Check for required arguments
if (!\array_key_exists('item', $arguments) || !is_object($arguments['item'])) {
throw new \BadMethodCallException("Argument 'item' of event $name is not of the expected type");
}
}
/**
* Validate $item to have all attributes with a valid type
*
* Validation based on \Joomla\Component\Media\Administrator\Adapter\AdapterInterface::getFile()
*
* Properties validated:
* - type: The type can be file or dir
* - name: The name of the item
* - path: The relative path to the root
* - extension: The file extension
* - size: The size of the file
* - create_date: The date created
* - modified_date: The date modified
* - mime_type: The mime type
* - width: The width, when available
* - height: The height, when available
*
* Generation based on \Joomla\Plugin\Filesystem\Local\Adapter\LocalAdapter::getPathInformation()
*
* Properties generated:
* - created_date_formatted: DATE_FORMAT_LC5 formatted string based on create_date
* - modified_date_formatted: DATE_FORMAT_LC5 formatted string based on modified_date
*
* @param \stdClass $item The item to set
*
* @return \stdClass
*
* @since 4.1.0
*
* @throws \BadMethodCallException
*/
protected function setItem(\stdClass $item): \stdClass
{
// Make immutable object
$item = clone $item;
$this->validate($item);
return $item;
}
}