for online
This commit is contained in:
parent
75288400c6
commit
52f0b53e5c
10 changed files with 67 additions and 22 deletions
|
@ -15,6 +15,12 @@ class Online
|
|||
*/
|
||||
protected $c;
|
||||
|
||||
/**
|
||||
* Флаг выполнения
|
||||
* @var bool
|
||||
*/
|
||||
protected $done = false;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
|
@ -30,12 +36,6 @@ class Online
|
|||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Флаг выполнения
|
||||
* @var bool
|
||||
*/
|
||||
protected $flag = false;
|
||||
|
||||
/**
|
||||
* Контролер
|
||||
* @param array $config
|
||||
|
@ -60,13 +60,16 @@ class Online
|
|||
*/
|
||||
public function handle(Page $page)
|
||||
{
|
||||
if ($this->flag) {
|
||||
throw new RuntimeException('Repeated execution of actions over online data');
|
||||
if ($this->done) {
|
||||
return [[], [], []]; //????
|
||||
}
|
||||
$this->flag = true;
|
||||
$this->done = true;
|
||||
|
||||
// string bool bool
|
||||
// string|null bool bool
|
||||
list($position, $type, $filter) = $page->getDataForOnline(); //???? возможно стоит возвращать полное имя страницы для отображение
|
||||
if (null === $position) {
|
||||
return [[], [], []]; //????
|
||||
}
|
||||
|
||||
$this->updateUser($position);
|
||||
|
||||
|
|
|
@ -12,6 +12,12 @@ class Auth extends Page
|
|||
*/
|
||||
protected $nameTpl = 'auth';
|
||||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var null|string
|
||||
*/
|
||||
protected $onlinePos = 'login';
|
||||
|
||||
/**
|
||||
* Указатель на активный пункт навигации
|
||||
* @var string
|
||||
|
|
|
@ -10,6 +10,12 @@ class Ban extends Page
|
|||
*/
|
||||
protected $nameTpl = 'ban';
|
||||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var null|string
|
||||
*/
|
||||
protected $onlinePos = 'ban';
|
||||
|
||||
/**
|
||||
* HTTP статус ответа для данной страницы
|
||||
* @var int
|
||||
|
|
|
@ -10,6 +10,12 @@ class Debug extends Page
|
|||
*/
|
||||
protected $nameTpl = 'layouts/debug';
|
||||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var null|string
|
||||
*/
|
||||
protected $onlinePos = null;
|
||||
|
||||
/**
|
||||
* Подготавливает данные для шаблона
|
||||
* @return Page
|
||||
|
|
|
@ -12,7 +12,7 @@ class Index extends Page
|
|||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var string
|
||||
* @var null|string
|
||||
*/
|
||||
protected $onlinePos = 'index';
|
||||
|
||||
|
|
|
@ -12,6 +12,12 @@ class Maintenance extends Page
|
|||
*/
|
||||
protected $nameTpl = 'maintenance';
|
||||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var null|string
|
||||
*/
|
||||
protected $onlinePos = null;
|
||||
|
||||
/**
|
||||
* HTTP статус ответа для данной страницы
|
||||
* @var int
|
||||
|
@ -60,10 +66,10 @@ class Maintenance extends Page
|
|||
}
|
||||
|
||||
/**
|
||||
* Возврат предупреждений форума
|
||||
* Возврат info, success, warning, error, validation информации
|
||||
* @return array
|
||||
*/
|
||||
protected function fWarning()
|
||||
protected function getIswev()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
|
|
@ -55,18 +55,18 @@ abstract class Page
|
|||
*/
|
||||
protected $data;
|
||||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var string
|
||||
*/
|
||||
protected $onlinePos = '';
|
||||
|
||||
/**
|
||||
* Массив info, success, warning, error, validation информации
|
||||
* @var array
|
||||
*/
|
||||
protected $iswev = [];
|
||||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var null|string
|
||||
*/
|
||||
protected $onlinePos = '';
|
||||
|
||||
/**
|
||||
* Тип обработки пользователей онлайн
|
||||
* Если false, то идет обновление данных
|
||||
|
@ -319,11 +319,14 @@ abstract class Page
|
|||
|
||||
/**
|
||||
* Возращает данные для управления обработкой пользователей онлайн
|
||||
* @return array
|
||||
* @param bool $short
|
||||
* @return bool|array
|
||||
*/
|
||||
public function getDataForOnline()
|
||||
public function getDataForOnline($short = false)
|
||||
{
|
||||
return [$this->onlinePos, $this->onlineType, $this->onlineFilter];
|
||||
return $short
|
||||
? null !== $this->onlinePos
|
||||
: [$this->onlinePos, $this->onlineType, $this->onlineFilter];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -10,6 +10,12 @@ class Redirect extends Page
|
|||
*/
|
||||
protected $nameTpl = null;
|
||||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var null|string
|
||||
*/
|
||||
protected $onlinePos = null;
|
||||
|
||||
/**
|
||||
* Адрес перехода
|
||||
* @var string
|
||||
|
|
|
@ -10,6 +10,12 @@ class Rules extends Page
|
|||
*/
|
||||
protected $nameTpl = 'rules';
|
||||
|
||||
/**
|
||||
* Позиция для таблицы онлайн текущего пользователя
|
||||
* @var null|string
|
||||
*/
|
||||
protected $onlinePos = 'rules';
|
||||
|
||||
/**
|
||||
* Указатель на активный пункт навигации
|
||||
* @var string
|
||||
|
|
|
@ -65,6 +65,9 @@ while (! $page instanceof Page && $cur = array_pop($controllers)) {
|
|||
}
|
||||
|
||||
if ($page instanceof Page) { //????
|
||||
if ($page->getDataForOnline(true)) {
|
||||
$container->get('Online')->handle($page);
|
||||
}
|
||||
$tpl = $container->get('View')->setPage($page)->outputPage();
|
||||
if (defined('PUN_DEBUG')) {
|
||||
$debug = $container->get('Debug')->debug();
|
||||
|
|
Loading…
Reference in a new issue