for online

This commit is contained in:
Visman 2017-02-14 22:39:24 +07:00
parent 75288400c6
commit 52f0b53e5c
10 changed files with 67 additions and 22 deletions

View file

@ -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);

View file

@ -12,6 +12,12 @@ class Auth extends Page
*/
protected $nameTpl = 'auth';
/**
* Позиция для таблицы онлайн текущего пользователя
* @var null|string
*/
protected $onlinePos = 'login';
/**
* Указатель на активный пункт навигации
* @var string

View file

@ -10,6 +10,12 @@ class Ban extends Page
*/
protected $nameTpl = 'ban';
/**
* Позиция для таблицы онлайн текущего пользователя
* @var null|string
*/
protected $onlinePos = 'ban';
/**
* HTTP статус ответа для данной страницы
* @var int

View file

@ -10,6 +10,12 @@ class Debug extends Page
*/
protected $nameTpl = 'layouts/debug';
/**
* Позиция для таблицы онлайн текущего пользователя
* @var null|string
*/
protected $onlinePos = null;
/**
* Подготавливает данные для шаблона
* @return Page

View file

@ -12,7 +12,7 @@ class Index extends Page
/**
* Позиция для таблицы онлайн текущего пользователя
* @var string
* @var null|string
*/
protected $onlinePos = 'index';

View file

@ -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 [];
}

View file

@ -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];
}
/**

View file

@ -10,6 +10,12 @@ class Redirect extends Page
*/
protected $nameTpl = null;
/**
* Позиция для таблицы онлайн текущего пользователя
* @var null|string
*/
protected $onlinePos = null;
/**
* Адрес перехода
* @var string

View file

@ -10,6 +10,12 @@ class Rules extends Page
*/
protected $nameTpl = 'rules';
/**
* Позиция для таблицы онлайн текущего пользователя
* @var null|string
*/
protected $onlinePos = 'rules';
/**
* Указатель на активный пункт навигации
* @var string

View file

@ -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();