[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/api/components/com_users/src/Controller/ -> UsersController.php (source)

   1  <?php
   2  
   3  /**
   4   * @package     Joomla.API
   5   * @subpackage  com_users
   6   *
   7   * @copyright   (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
   8   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   9   */
  10  
  11  namespace Joomla\Component\Users\Api\Controller;
  12  
  13  use Joomla\CMS\Date\Date;
  14  use Joomla\CMS\Filter\InputFilter;
  15  use Joomla\CMS\Language\Text;
  16  use Joomla\CMS\MVC\Controller\ApiController;
  17  use Joomla\Component\Fields\Administrator\Helper\FieldsHelper;
  18  use Tobscure\JsonApi\Exception\InvalidParameterException;
  19  
  20  // phpcs:disable PSR1.Files.SideEffects
  21  \defined('_JEXEC') or die;
  22  // phpcs:enable PSR1.Files.SideEffects
  23  
  24  /**
  25   * The users controller
  26   *
  27   * @since  4.0.0
  28   */
  29  class UsersController extends ApiController
  30  {
  31      /**
  32       * The content type of the item.
  33       *
  34       * @var    string
  35       * @since  4.0.0
  36       */
  37      protected $contentType = 'users';
  38  
  39      /**
  40       * The default view for the display method.
  41       *
  42       * @var    string
  43       * @since  4.0.0
  44       */
  45      protected $default_view = 'users';
  46  
  47      /**
  48       * Method to allow extended classes to manipulate the data to be saved for an extension.
  49       *
  50       * @param   array  $data  An array of input data.
  51       *
  52       * @return  array
  53       *
  54       * @since   4.0.0
  55       */
  56      protected function preprocessSaveData(array $data): array
  57      {
  58          foreach (FieldsHelper::getFields('com_users.user') as $field) {
  59              if (isset($data[$field->name])) {
  60                  !isset($data['com_fields']) && $data['com_fields'] = [];
  61  
  62                  $data['com_fields'][$field->name] = $data[$field->name];
  63                  unset($data[$field->name]);
  64              }
  65          }
  66  
  67          if (isset($data['password']) && $this->task !== 'add') {
  68              $data['password2'] = $data['password'];
  69          }
  70  
  71          return $data;
  72      }
  73  
  74      /**
  75       * User list view with filtering of data
  76       *
  77       * @return  static  A BaseController object to support chaining.
  78       *
  79       * @since   4.0.0
  80       * @throws  InvalidParameterException
  81       */
  82      public function displayList()
  83      {
  84          $apiFilterInfo = $this->input->get('filter', [], 'array');
  85          $filter        = InputFilter::getInstance();
  86  
  87          if (\array_key_exists('state', $apiFilterInfo)) {
  88              $this->modelState->set('filter.state', $filter->clean($apiFilterInfo['state'], 'INT'));
  89          }
  90  
  91          if (\array_key_exists('active', $apiFilterInfo)) {
  92              $this->modelState->set('filter.active', $filter->clean($apiFilterInfo['active'], 'INT'));
  93          }
  94  
  95          if (\array_key_exists('groupid', $apiFilterInfo)) {
  96              $this->modelState->set('filter.group_id', $filter->clean($apiFilterInfo['groupid'], 'INT'));
  97          }
  98  
  99          if (\array_key_exists('search', $apiFilterInfo)) {
 100              $this->modelState->set('filter.search', $filter->clean($apiFilterInfo['search'], 'STRING'));
 101          }
 102  
 103          if (\array_key_exists('registrationDateStart', $apiFilterInfo)) {
 104              $registrationStartInput = $filter->clean($apiFilterInfo['registrationDateStart'], 'STRING');
 105              $registrationStartDate  = Date::createFromFormat(\DateTimeInterface::RFC3339, $registrationStartInput);
 106  
 107              if (!$registrationStartDate) {
 108                  // Send the error response
 109                  $error = Text::sprintf('JLIB_FORM_VALIDATE_FIELD_INVALID', 'registrationDateStart');
 110  
 111                  throw new InvalidParameterException($error, 400, null, 'registrationDateStart');
 112              }
 113  
 114              $this->modelState->set('filter.registrationDateStart', $registrationStartDate);
 115          }
 116  
 117          if (\array_key_exists('registrationDateEnd', $apiFilterInfo)) {
 118              $registrationEndInput = $filter->clean($apiFilterInfo['registrationDateEnd'], 'STRING');
 119              $registrationEndDate  = Date::createFromFormat(\DateTimeInterface::RFC3339, $registrationEndInput);
 120  
 121              if (!$registrationEndDate) {
 122                  // Send the error response
 123                  $error = Text::sprintf('JLIB_FORM_VALIDATE_FIELD_INVALID', 'registrationDateEnd');
 124                  throw new InvalidParameterException($error, 400, null, 'registrationDateEnd');
 125              }
 126  
 127              $this->modelState->set('filter.registrationDateEnd', $registrationEndDate);
 128          } elseif (
 129              \array_key_exists('registrationDateStart', $apiFilterInfo)
 130              && !\array_key_exists('registrationDateEnd', $apiFilterInfo)
 131          ) {
 132              // If no end date specified the end date is now
 133              $this->modelState->set('filter.registrationDateEnd', new Date());
 134          }
 135  
 136          if (\array_key_exists('lastVisitDateStart', $apiFilterInfo)) {
 137              $lastVisitStartInput = $filter->clean($apiFilterInfo['lastVisitDateStart'], 'STRING');
 138              $lastVisitStartDate  = Date::createFromFormat(\DateTimeInterface::RFC3339, $lastVisitStartInput);
 139  
 140              if (!$lastVisitStartDate) {
 141                  // Send the error response
 142                  $error = Text::sprintf('JLIB_FORM_VALIDATE_FIELD_INVALID', 'lastVisitDateStart');
 143                  throw new InvalidParameterException($error, 400, null, 'lastVisitDateStart');
 144              }
 145  
 146              $this->modelState->set('filter.lastVisitStart', $lastVisitStartDate);
 147          }
 148  
 149          if (\array_key_exists('lastVisitDateEnd', $apiFilterInfo)) {
 150              $lastVisitEndInput = $filter->clean($apiFilterInfo['lastVisitDateEnd'], 'STRING');
 151              $lastVisitEndDate  = Date::createFromFormat(\DateTimeInterface::RFC3339, $lastVisitEndInput);
 152  
 153              if (!$lastVisitEndDate) {
 154                  // Send the error response
 155                  $error = Text::sprintf('JLIB_FORM_VALIDATE_FIELD_INVALID', 'lastVisitDateEnd');
 156  
 157                  throw new InvalidParameterException($error, 400, null, 'lastVisitDateEnd');
 158              }
 159  
 160              $this->modelState->set('filter.lastVisitEnd', $lastVisitEndDate);
 161          } elseif (
 162              \array_key_exists('lastVisitDateStart', $apiFilterInfo)
 163              && !\array_key_exists('lastVisitDateEnd', $apiFilterInfo)
 164          ) {
 165              // If no end date specified the end date is now
 166              $this->modelState->set('filter.lastVisitEnd', new Date());
 167          }
 168  
 169          return parent::displayList();
 170      }
 171  }


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