Skip to content
46 changes: 46 additions & 0 deletions api/components/com_users/src/Controller/UsersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

\defined('_JEXEC') or die;

use Joomla\CMS\Filter\InputFilter;
use Joomla\CMS\MVC\Controller\ApiController;
use Joomla\Component\Fields\Administrator\Helper\FieldsHelper;

Expand Down Expand Up @@ -65,4 +66,49 @@ protected function save($recordKey = null)

return parent::save($recordKey);
}

/**
* User list view with filtering of data
*
* @return static A BaseController object to support chaining.
*
* @since __DEPLOY_VERSION__
*/
public function displayList()
{
$apiFilterInfo = $this->input->get('filter', [], 'array');
$filter = InputFilter::getInstance();

if (array_key_exists('state', $apiFilterInfo))
{
$this->modelState->set('filter.state', $filter->clean($apiFilterInfo['state'], 'INT'));
}

if (array_key_exists('active', $apiFilterInfo))
{
$this->modelState->set('filter.active', $filter->clean($apiFilterInfo['active'], 'INT'));
}

if (array_key_exists('groupid', $apiFilterInfo))
{
$this->modelState->set('filter.group_id', $filter->clean($apiFilterInfo['groupid'], 'INT'));
}

if (array_key_exists('search', $apiFilterInfo))
{
$this->modelState->set('filter.search', $filter->clean($apiFilterInfo['search'], 'STRING'));
}

if (array_key_exists('registrationdate', $apiFilterInfo))
{
$this->modelState->set('filter.range', $filter->clean($apiFilterInfo['registrationdate'], 'STRING'));
}

if (array_key_exists('lastvisitdate', $apiFilterInfo))
{
$this->modelState->set('filter.lastvisitrange', $filter->clean($apiFilterInfo['lastvisitdate'], 'STRING'));
}

return parent::displayList();
}
}