Вывод списка пользователей сайта

Модератор
#
Вывод списка пользователей сайта
<?php
/**
* Показ списка пользователей сайта.
*
* - showProperties Показывать дополнительные свойства
* - showMaillists Показывать подписку на почтовые рассылку
*
* <code>
* $oSite = Core_Entity::factory('Site', 1);
*
* $Siteuser_Controller_List_Show = new Siteuser_Controller_List_Show(
*    $oSite
* );
*
* $Siteuser_Controller_List_Show
*    ->xsl(
*       Core_Entity::factory('Xsl')->getByName('ЛичныйКабинетПользователя')
*    )
*    ->show();
* </code>
*
* @package HostCMS 6\Siteuser
* @version 6.x
* @author Hostmake LLC
* @copyright © 2005-2013 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
*/
class Siteuser_Controller_List_Show extends Core_Controller
{
   /**
    * Allowed object properties
    * @var array
    */
   protected $_allowedProperties = array(
      'showProperties',
      'showMaillists',
   );

   /**
    * Constructor.
    * @param Siteuser_Model $oSiteuser user
    */
   public function __construct(Site_Model $oSite)
   {
      parent::__construct($oSite->clearEntities());
      
      $this->showProperties = FALSE;
      $this->showMaillists = FALSE;
   }

   /**
    * Show built data
    * @return self
    */
   public function show()
   {
      $oSite = $this->getEntity();

      $aSiteusers = $oSite->Siteusers->findAll(FALSE);
      foreach ($aSiteusers as $oSiteuser)
      {
         $this->addEntity(
            $oSiteuser->clearEntities()
               ->showXmlProperties($this->showProperties)
               ->showXmlMaillists($this->showMaillists)
         );
      }

      return parent::show();
   }
}
?>

Пример вызова
$oSite = Core_Entity::factory('Site', 1);

$Siteuser_Controller_List_Show = new Siteuser_Controller_List_Show(
   $oSite
);

$Siteuser_Controller_List_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('СписокПользователейСайта')
   )
   ->show();
#
Re: Вывод списка пользователей сайта
А куда этот код вставлять подскажите для новичков?
#
Re: Вывод списка пользователей сайта
А как вывести список с филтрацией по дополнительным свойствам пользователя?
Например, есть пользователь, у которого размер обуви 45, ему нужно показать пользователей у которых тоже размер обуви 45.
#
Re: Вывод списка пользователей сайта
Или я что то не правильно делаю или код не работает
dankom
#
Re: Вывод списка пользователей сайта
код не работает, пишет сообщение "Class 'Siteuser_Controller_List_Show' not found", версия Корпорация. У кого получилось отпишитесь
В догонку надо вывести просто кол-во пользователей сайта
tatyanin
#
Re: Вывод списка пользователей сайта
tatyanin,
первый код нужно положить в файл /modules/siteuser/controller/list/show.php
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Вывод списка пользователей сайта
XSL шаблон "СписокПользователейСайта" подскажите
tatyanin
Модератор
#
Re: Вывод списка пользователей сайта
Новый контроллер, войдет в 6.8.6
<?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;
   }
}


Код настроек ТДС
$oSite = Core_Entity::factory('Site', 1);

$Siteuser_List_Controller_Show = new Siteuser_List_Controller_Show(
   $oSite
);

$Siteuser_List_Controller_Show
   ->limit(20)
   ->parseUrl();

Core_Page::instance()->object = $Siteuser_List_Controller_Show;


Код ТДС
$Siteuser_List_Controller_Show = Core_Page::instance()->object;

$Siteuser_List_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('СписокПользователейСайта')
   )
   ->show();
Авторизация