[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |