<?php
defined('HOSTCMS') || exit('HostCMS: access denied.');
/**
* Показ списка клиентов сайта
*
* - showProperties Показывать дополнительные свойства
* - showMaillists Показывать подписку на почтовые рассылку
*
*
* Доступные свойства:
*
* - total общее количество доступных для отображения элементов
* - patternParams массив данных, извелеченных из URI при применении pattern
*
* @package HostCMS
* @subpackage Siteuser
* @version 6.x
* @author Hostmake LLC
* @copyright © 2005-2018 ООО "Хостмэйк" (Hostmake LLC),
http://www.hostcms.ru
*/
class Siteuser_List_Controller_Show extends Core_Controller
{
/**
* Allowed object properties
* @var array
*/
protected $_allowedProperties = array(
'offset',
'limit',
'page',
'total',
'pattern',
'patternParams',
'showProperties',
'showMaillists',
);
/**
* Siteusers
* @var Siteuser_Model
*/
protected $_Siteusers = NULL;
/**
* Get Siteusers
* @return Siteuser_Model
*/
public function siteusers()
{
return $this->_Siteusers;
}
/**
* Constructor.
* @param Site_Model $oSite
*/
public function __construct(Site_Model $oSite)
{
parent::__construct($oSite->clearEntities());
$this->showProperties = $this->showMaillists = FALSE;
$this->pattern = rawurldecode(Core_Page::instance()->structure->getPath()) . '(page-{page}/)';
$this->_Siteusers = $oSite->Siteusers;
}
/**
* Show built data
* @return self
* @hostcms-event Siteuser_List_Controller_Show.onBeforeRedeclaredShow
*/
public function show()
{
Core_Event::notify(get_class($this) . '.onBeforeRedeclaredShow', $this);
$oSite = $this->getEntity();
$this->addEntity(
Core::factory('Core_Xml_Entity')
->name('page')
->value(intval($this->page))
)->addEntity(
Core::factory('Core_Xml_Entity')
->name('limit')
->value(intval($this->limit))
);
if ($this->limit > 0)
{
// Load model columns BEFORE FOUND_ROWS()
Core_Entity::factory('Siteuser')->getTableColumns();
// Load user BEFORE FOUND_ROWS()
$oUserCurrent = Core_Entity::factory('User', 0)->getCurrent();
$this->_Siteusers
->queryBuilder()
->sqlCalcFoundRows()
->offset(intval($this->offset))
->limit(intval($this->limit));
$aSiteusers = $this->_Siteusers->findAll(FALSE);
$row = Core_QueryBuilder::select(array('FOUND_ROWS()', 'count'))->execute()->asAssoc()->current();
$this->total = $row['count'];
$this->addEntity(
Core::factory('Core_Xml_Entity')
->name('total')
->value(intval($this->total))
);
foreach ($aSiteusers as $oSiteuser)
{
$this->addEntity(
$oSiteuser
->clearEntities()
->showXmlProperties($this->showProperties)
->showXmlMaillists($this->showMaillists)
);
}
}
return parent::show();
}
/**
* Parse URL and set controller properties
* @return self
* @hostcms-event Siteuser_List_Controller_Show.onBeforeParseUrl
* @hostcms-event Siteuser_List_Controller_Show.onAfterParseUrl
*/
public function parseUrl()
{
Core_Event::notify(get_class($this) . '.onBeforeParseUrl', $this);
$oHelpdesk = $this->getEntity();
$Core_Router_Route = new Core_Router_Route($this->pattern);
$this->patternParams = $matches = $Core_Router_Route->applyPattern(Core::$url['path']);
if (isset($matches['page']) && $matches['page'] > 1)
{
$this->page($matches['page'] - 1)
->offset($this->limit * $this->page);
}
Core_Event::notify(get_class($this) . '.onAfterParseUrl', $this);
return $this;
}
}