[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/api/components/com_media/src/Model/ -> AdaptersModel.php (source)

   1  <?php
   2  /**
   3   * @package     Joomla.API
   4   * @subpackage  com_media
   5   *
   6   * @copyright   (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
   7   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   8   */
   9  
  10  namespace Joomla\Component\Media\Api\Model;
  11  
  12  \defined('_JEXEC') or die;
  13  
  14  use Joomla\CMS\MVC\Model\BaseModel;
  15  use Joomla\CMS\MVC\Model\ListModelInterface;
  16  use Joomla\CMS\Pagination\Pagination;
  17  use Joomla\Component\Media\Administrator\Provider\ProviderManagerHelperTrait;
  18  
  19  /**
  20   * Media web service model supporting lists of media adapters.
  21   *
  22   * @since  4.1.0
  23   */
  24  class AdaptersModel extends BaseModel implements ListModelInterface
  25  {
  26      use ProviderManagerHelperTrait;
  27  
  28      /**
  29       * A hacky way to enable the standard jsonapiView::displayList() to create a Pagination object,
  30       * since com_media's ApiModel does not support pagination as we know from regular ListModel derived models.
  31       *
  32       * @var    int
  33       * @since  4.1.0
  34       */
  35      private $total = 0;
  36  
  37      /**
  38       * Method to get a list of files and/or folders.
  39       *
  40       * @return  array  An array of data items.
  41       *
  42       * @since   4.1.0
  43       */
  44  	public function getItems(): array
  45      {
  46          $adapters = [];
  47          foreach ($this->getProviderManager()->getProviders() as $provider)
  48          {
  49              foreach ($provider->getAdapters() as $adapter)
  50              {
  51                  $obj              = new \stdClass();
  52                  $obj->id          = $provider->getID() . '-' . $adapter->getAdapterName();
  53                  $obj->provider_id = $provider->getID();
  54                  $obj->name        = $adapter->getAdapterName();
  55                  $obj->path        = $provider->getID() . '-' . $adapter->getAdapterName() . ':/';
  56  
  57                  $adapters[] = $obj;
  58              }
  59          }
  60  
  61          // A hacky way to enable the standard jsonapiView::displayList() to create a Pagination object.
  62          $this->total = \count($adapters);
  63  
  64          return $adapters;
  65      }
  66  
  67      /**
  68       * Method to get a \JPagination object for the data set.
  69       *
  70       * @return  Pagination  A Pagination object for the data set.
  71       *
  72       * @since   4.1.0
  73       */
  74  	public function getPagination(): Pagination
  75      {
  76          return new Pagination($this->getTotal(), $this->getStart(), 0);
  77      }
  78  
  79      /**
  80       * Method to get the starting number of items for the data set. Because com_media's ApiModel
  81       * does not support pagination as we know from regular ListModel derived models,
  82       * we always start at the top.
  83       *
  84       * @return  integer  The starting number of items available in the data set.
  85       *
  86       * @since   4.1.0
  87       */
  88  	public function getStart(): int
  89      {
  90          return 0;
  91      }
  92  
  93      /**
  94       * Method to get the total number of items for the data set.
  95       *
  96       * @return  integer  The total number of items available in the data set.
  97       *
  98       * @since   4.1.0
  99       */
 100  	public function getTotal(): int
 101      {
 102          return $this->total;
 103      }
 104  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer