mirror of
https://github.com/joomla/joomla-cms.git
synced 2024-06-28 16:13:42 +00:00
[4.1] Adapter trait unification (#36097)
* Adapter trait unification * Update administrator/components/com_media/src/Provider/ProviderManagerHelperTrait.php Co-authored-by: Phil E. Taylor <phil@phil-taylor.com> * Update administrator/components/com_media/src/Provider/ProviderManagerHelperTrait.php Co-authored-by: Phil E. Taylor <phil@phil-taylor.com> Co-authored-by: Phil E. Taylor <phil@phil-taylor.com> Co-authored-by: Benjamin Trenkle <bembelimen@users.noreply.github.com>
This commit is contained in:
parent
831c4f1a15
commit
cbab803f97
|
@ -17,15 +17,13 @@ use Joomla\CMS\Filesystem\File;
|
|||
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
|
||||
use Joomla\CMS\Object\CMSObject;
|
||||
use Joomla\CMS\Plugin\PluginHelper;
|
||||
use Joomla\Component\Media\Administrator\Adapter\AdapterInterface;
|
||||
use Joomla\Component\Media\Administrator\Event\FetchMediaItemEvent;
|
||||
use Joomla\Component\Media\Administrator\Event\FetchMediaItemsEvent;
|
||||
use Joomla\Component\Media\Administrator\Event\FetchMediaItemUrlEvent;
|
||||
use Joomla\Component\Media\Administrator\Event\MediaProviderEvent;
|
||||
use Joomla\Component\Media\Administrator\Exception\FileExistsException;
|
||||
use Joomla\Component\Media\Administrator\Exception\FileNotFoundException;
|
||||
use Joomla\Component\Media\Administrator\Exception\InvalidPathException;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManager;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Api Model
|
||||
|
@ -34,13 +32,7 @@ use Joomla\Component\Media\Administrator\Provider\ProviderManager;
|
|||
*/
|
||||
class ApiModel extends BaseDatabaseModel
|
||||
{
|
||||
/**
|
||||
* Holds the available media file adapters.
|
||||
*
|
||||
* @var ProviderManager
|
||||
* @since 4.0.0
|
||||
*/
|
||||
private $providerManager = null;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* The available extensions.
|
||||
|
@ -50,32 +42,6 @@ class ApiModel extends BaseDatabaseModel
|
|||
*/
|
||||
private $allowedExtensions = null;
|
||||
|
||||
/**
|
||||
* Return the requested adapter
|
||||
*
|
||||
* @param string $name Name of the provider
|
||||
*
|
||||
* @since 4.0.0
|
||||
* @return AdapterInterface
|
||||
*
|
||||
* @throws \Exception
|
||||
*/
|
||||
private function getAdapter($name)
|
||||
{
|
||||
if ($this->providerManager == null)
|
||||
{
|
||||
$this->providerManager = new ProviderManager;
|
||||
|
||||
// Fire the event to get the results
|
||||
$eventParameters = ['context' => 'AdapterManager', 'providerManager' => $this->providerManager];
|
||||
$event = new MediaProviderEvent('onSetupProviders', $eventParameters);
|
||||
PluginHelper::importPlugin('filesystem');
|
||||
Factory::getApplication()->triggerEvent('onSetupProviders', $event);
|
||||
}
|
||||
|
||||
return $this->providerManager->getAdapter($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the requested file or folder information. More information
|
||||
* can be found in AdapterInterface::getFile().
|
||||
|
|
|
@ -11,11 +11,8 @@ namespace Joomla\Component\Media\Administrator\Model;
|
|||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\Factory;
|
||||
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
|
||||
use Joomla\CMS\Plugin\PluginHelper;
|
||||
use Joomla\Component\Media\Administrator\Event\MediaProviderEvent;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManager;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Media View Model
|
||||
|
@ -24,6 +21,8 @@ use Joomla\Component\Media\Administrator\Provider\ProviderManager;
|
|||
*/
|
||||
class MediaModel extends BaseDatabaseModel
|
||||
{
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Obtain list of supported providers
|
||||
*
|
||||
|
@ -33,17 +32,9 @@ class MediaModel extends BaseDatabaseModel
|
|||
*/
|
||||
public function getProviders()
|
||||
{
|
||||
// Setup provider manager and event parameters
|
||||
$providerManager = new ProviderManager;
|
||||
$eventParameters = ['context' => 'AdapterManager', 'providerManager' => $providerManager];
|
||||
$event = new MediaProviderEvent('onSetupProviders', $eventParameters);
|
||||
$results = [];
|
||||
$results = [];
|
||||
|
||||
// Import plugin group and fire the event
|
||||
PluginHelper::importPlugin('filesystem');
|
||||
Factory::getApplication()->triggerEvent('onSetupProviders', $event);
|
||||
|
||||
foreach ($providerManager->getProviders() as $provider)
|
||||
foreach ($this->getProviderManager()->getProviders() as $provider)
|
||||
{
|
||||
$result = new \stdClass;
|
||||
$result->name = $provider->getID();
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
namespace Joomla\Component\Media\Api\Helper;
|
||||
namespace Joomla\Component\Media\Administrator\Provider;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
|
@ -24,7 +24,7 @@ use Joomla\Component\Media\Administrator\Provider\ProviderManager;
|
|||
*
|
||||
* @since 4.1.0
|
||||
*/
|
||||
trait AdapterTrait
|
||||
trait ProviderManagerHelperTrait
|
||||
{
|
||||
/**
|
||||
* Holds the available media file adapters.
|
||||
|
@ -45,21 +45,71 @@ trait AdapterTrait
|
|||
private $defaultAdapterName = null;
|
||||
|
||||
/**
|
||||
* Returns an array with the adapter name as key and the path of the file.
|
||||
* Return a provider manager.
|
||||
*
|
||||
* @return array
|
||||
* @return ProviderManager
|
||||
*
|
||||
* @since 4.1.0
|
||||
*/
|
||||
public function getProviderManager(): ProviderManager
|
||||
{
|
||||
if (!$this->providerManager)
|
||||
{
|
||||
// Fire the event to get the results
|
||||
$eventParameters = ['context' => 'AdapterManager', 'providerManager' => new ProviderManager];
|
||||
$event = new MediaProviderEvent('onSetupProviders', $eventParameters);
|
||||
PluginHelper::importPlugin('filesystem');
|
||||
Factory::getApplication()->triggerEvent('onSetupProviders', $event);
|
||||
$this->providerManager = $event->getProviderManager();
|
||||
}
|
||||
|
||||
return $this->providerManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a provider for the given id.
|
||||
*
|
||||
* @return ProviderInterface
|
||||
*
|
||||
* @throws \Exception
|
||||
*
|
||||
* @since 4.1.0
|
||||
*/
|
||||
private function resolveAdapterAndPath(String $path): array
|
||||
public function getProvider(String $id): ProviderInterface
|
||||
{
|
||||
return $this->getProviderManager()->getProvider($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an adapter for the given name.
|
||||
*
|
||||
* @return AdapterInterface
|
||||
*
|
||||
* @throws \Exception
|
||||
*
|
||||
* @since 4.1.0
|
||||
*/
|
||||
public function getAdapter(String $name): AdapterInterface
|
||||
{
|
||||
return $this->getProviderManager()->getAdapter($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array with the adapter name as key and the path of the file.
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
* @since __DEPLOY_VERSION__
|
||||
*/
|
||||
protected function resolveAdapterAndPath(String $path): array
|
||||
{
|
||||
$result = [];
|
||||
$parts = explode(':', $path, 2);
|
||||
|
||||
// If we have 2 parts, we have both an adapter name and a file path
|
||||
if (\count($parts) == 2)
|
||||
if (\count($parts) === 2)
|
||||
{
|
||||
$result['adapter'] = $parts[0];
|
||||
$result['path'] = $parts[1];
|
||||
|
@ -81,34 +131,6 @@ trait AdapterTrait
|
|||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a provider for the given id.
|
||||
*
|
||||
* @return ProviderInterface
|
||||
*
|
||||
* @throws \Exception
|
||||
*
|
||||
* @since 4.1.0
|
||||
*/
|
||||
private function getProvider(String $id): ProviderInterface
|
||||
{
|
||||
return $this->getProviderManager()->getProvider($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an adapter for the given name.
|
||||
*
|
||||
* @return AdapterInterface
|
||||
*
|
||||
* @throws \Exception
|
||||
*
|
||||
* @since 4.1.0
|
||||
*/
|
||||
private function getAdapter(String $name): AdapterInterface
|
||||
{
|
||||
return $this->getProviderManager()->getAdapter($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default adapter name.
|
||||
*
|
||||
|
@ -118,7 +140,7 @@ trait AdapterTrait
|
|||
*
|
||||
* @since 4.1.0
|
||||
*/
|
||||
private function getDefaultAdapterName(): ?string
|
||||
protected function getDefaultAdapterName(): ?string
|
||||
{
|
||||
if ($this->defaultAdapterName)
|
||||
{
|
||||
|
@ -143,27 +165,4 @@ trait AdapterTrait
|
|||
|
||||
return $this->defaultAdapterName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a provider manager.
|
||||
*
|
||||
* @return ProviderManager
|
||||
*
|
||||
* @since 4.1.0
|
||||
*/
|
||||
private function getProviderManager(): ProviderManager
|
||||
{
|
||||
if (!$this->providerManager)
|
||||
{
|
||||
$this->providerManager = new ProviderManager;
|
||||
|
||||
// Fire the event to get the results
|
||||
$eventParameters = ['context' => 'AdapterManager', 'providerManager' => $this->providerManager];
|
||||
$event = new MediaProviderEvent('onSetupProviders', $eventParameters);
|
||||
PluginHelper::importPlugin('filesystem');
|
||||
Factory::getApplication()->triggerEvent('onSetupProviders', $event);
|
||||
}
|
||||
|
||||
return $this->providerManager;
|
||||
}
|
||||
}
|
|
@ -13,7 +13,7 @@ namespace Joomla\Component\Media\Api\Controller;
|
|||
|
||||
use Joomla\CMS\MVC\Controller\ApiController;
|
||||
use Joomla\Component\Media\Administrator\Exception\InvalidPathException;
|
||||
use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Media web service controller.
|
||||
|
@ -22,7 +22,7 @@ use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
|||
*/
|
||||
class AdaptersController extends ApiController
|
||||
{
|
||||
use AdapterTrait;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* The content type of the item.
|
||||
|
|
|
@ -18,7 +18,7 @@ use Joomla\CMS\Language\Text;
|
|||
use Joomla\CMS\MVC\Controller\ApiController;
|
||||
use Joomla\Component\Media\Administrator\Exception\FileExistsException;
|
||||
use Joomla\Component\Media\Administrator\Exception\InvalidPathException;
|
||||
use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
use Joomla\Component\Media\Api\Model\MediumModel;
|
||||
use Joomla\String\Inflector;
|
||||
use Tobscure\JsonApi\Exception\InvalidParameterException;
|
||||
|
@ -30,7 +30,7 @@ use Tobscure\JsonApi\Exception\InvalidParameterException;
|
|||
*/
|
||||
class MediaController extends ApiController
|
||||
{
|
||||
use AdapterTrait;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* The content type of the item.
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace Joomla\Component\Media\Api\Model;
|
|||
\defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\MVC\Model\BaseModel;
|
||||
use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Media web service model supporting a single adapter item.
|
||||
|
@ -21,7 +21,7 @@ use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
|||
*/
|
||||
class AdapterModel extends BaseModel
|
||||
{
|
||||
use AdapterTrait;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Method to get a single adapter.
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace Joomla\Component\Media\Api\Model;
|
|||
use Joomla\CMS\MVC\Model\BaseModel;
|
||||
use Joomla\CMS\MVC\Model\ListModelInterface;
|
||||
use Joomla\CMS\Pagination\Pagination;
|
||||
use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Media web service model supporting lists of media adapters.
|
||||
|
@ -23,7 +23,7 @@ use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
|||
*/
|
||||
class AdaptersModel extends BaseModel implements ListModelInterface
|
||||
{
|
||||
use AdapterTrait;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* A hacky way to enable the standard jsonapiView::displayList() to create a Pagination object,
|
||||
|
|
|
@ -18,7 +18,7 @@ use Joomla\CMS\MVC\Model\ListModelInterface;
|
|||
use Joomla\CMS\Pagination\Pagination;
|
||||
use Joomla\Component\Media\Administrator\Exception\FileNotFoundException;
|
||||
use Joomla\Component\Media\Administrator\Model\ApiModel;
|
||||
use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Media web service model supporting lists of media items.
|
||||
|
@ -27,7 +27,7 @@ use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
|||
*/
|
||||
class MediaModel extends BaseModel implements ListModelInterface
|
||||
{
|
||||
use AdapterTrait;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Instance of com_media's ApiModel
|
||||
|
|
|
@ -19,7 +19,7 @@ use Joomla\Component\Media\Administrator\Exception\FileExistsException;
|
|||
use Joomla\Component\Media\Administrator\Exception\FileNotFoundException;
|
||||
use Joomla\Component\Media\Administrator\Exception\InvalidPathException;
|
||||
use Joomla\Component\Media\Administrator\Model\ApiModel;
|
||||
use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Media web service model supporting a single media item.
|
||||
|
@ -28,7 +28,7 @@ use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
|||
*/
|
||||
class MediumModel extends BaseModel
|
||||
{
|
||||
use AdapterTrait;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Instance of com_media's ApiModel
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace Joomla\Component\Media\Api\View\Adapters;
|
|||
\defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\MVC\View\JsonApiView as BaseApiView;
|
||||
use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Media web service view
|
||||
|
@ -21,7 +21,7 @@ use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
|||
*/
|
||||
class JsonapiView extends BaseApiView
|
||||
{
|
||||
use AdapterTrait;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* The fields to render item in the documents
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace Joomla\Component\Media\Api\View\Media;
|
|||
\defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\MVC\View\JsonApiView as BaseApiView;
|
||||
use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
||||
use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* Media web service view
|
||||
|
@ -21,7 +21,7 @@ use Joomla\Component\Media\Api\Helper\AdapterTrait;
|
|||
*/
|
||||
class JsonapiView extends BaseApiView
|
||||
{
|
||||
use AdapterTrait;
|
||||
use ProviderManagerHelperTrait;
|
||||
|
||||
/**
|
||||
* The fields to render item in the documents
|
||||
|
|
Loading…
Reference in New Issue
Block a user