mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2025-01-13 23:31:13 +01:00
52 lines
1.2 KiB
PHP
52 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace League\Flysystem\Plugin;
|
|
|
|
use InvalidArgumentException;
|
|
use League\Flysystem\FileNotFoundException;
|
|
|
|
class GetWithMetadata extends AbstractPlugin
|
|
{
|
|
/**
|
|
* Get the method name.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getMethod()
|
|
{
|
|
return 'getWithMetadata';
|
|
}
|
|
|
|
/**
|
|
* Get metadata for an object with required metadata.
|
|
*
|
|
* @param string $path path to file
|
|
* @param array $metadata metadata keys
|
|
*
|
|
* @throws InvalidArgumentException
|
|
* @throws FileNotFoundException
|
|
*
|
|
* @return array|false metadata
|
|
*/
|
|
public function handle($path, array $metadata)
|
|
{
|
|
$object = $this->filesystem->getMetadata($path);
|
|
|
|
if ( ! $object) {
|
|
return false;
|
|
}
|
|
|
|
$keys = array_diff($metadata, array_keys($object));
|
|
|
|
foreach ($keys as $key) {
|
|
if ( ! method_exists($this->filesystem, $method = 'get' . ucfirst($key))) {
|
|
throw new InvalidArgumentException('Could not fetch metadata: ' . $key);
|
|
}
|
|
|
|
$object[$key] = $this->filesystem->{$method}($path);
|
|
}
|
|
|
|
return $object;
|
|
}
|
|
}
|