+1.08
Рейтинг
2.87
Сила

Илья

Помогите с AddEventPreg()

Для страницы прописаны следующие AddEventPreg:
protected function RegisterEvent() {
	$this->AddEvent('index','EventShowAllBlog');
	$this->AddEventPreg('/^[\w\-\_]+$/i','/^u(\d+)$/i','/^t(\d+)$/i','/^page(\d+)$/i','EventShowBlog');
	$this->AddEventPreg('/^[\w\-\_]+$/i','/^u(\d+)$/i','/^t(\d+)$/i','EventShowBlog');
	$this->AddEventPreg('/^[\w\-\_]+$/i','/^t(\d+)$/i','/^f(\d+)$/i','/^page(\d+)$/i','EventShowBlog');
	$this->AddEventPreg('/^[\w\-\_]+$/i','/^t(\d+)$/i','/^f(\d+)$/i','EventShowBlog');
	$this->AddEventPreg('/^[\w\-\_]+$/i','/^t(\d+)$/i','/^page(\d+)$/i','EventShowBlog');
	$this->AddEventPreg('/^[\w\-\_]+$/i','/^t(\d+)$/i','EventShowBlog');
	$this->AddEventPreg('/^[\w\-\_]+$/i','/^page(\d+)$/i','EventShowBlog');
	$this->AddEventPreg('/^[\w\-\_]+$/i','EventShowBlog');
}


А после я параметры уже разбираю в цикле вида:
foreach($this->aParamsEventMatch['params'] as $aParam) { /* действия */ }


Подскажите как-то можно сделать чтобы не было столько строк $this->AddEventPreg, если количество и порядок параметров абсолютно не важен? Дело в том, что нужно добавить еще параметры, а количество строк при этом растет в прогрессии.

Что значит wrapper в подключении к БД

Строка кода из Database.class.php:
$sDSN=$aConfig['type'].'wrapper://'.$aConfig['user'].':'.$aConfig['pass'].'@'.$aConfig['host'].':'.$aConfig['port'].'/'.$aConfig['dbname'];


Очень интересно, зачем нужен «wrapper». На официальном сайте DbSimple не нашел информации по данному вопросу.

Почему DBSimple?

Интересует вопрос, почему для движка был выбран модуль DBSimple? Есть ли какая-то причина помимо удобности составления SQL-шаблонов запросов? Может быть какая-то система встроена в него кеширования? Я просто думаю над перелопачиванием движка на PDO, вот и думаю, что потеряю при переходе на PDO?

Статусы дружбы

Хотелось бы узнать почему статусы в числовом представлении раскиданы именно в таком порядке:
const USER_FRIEND_OFFER  = 1;
	const USER_FRIEND_ACCEPT = 2;
	const USER_FRIEND_DELETE = 4;
	const USER_FRIEND_REJECT = 8;
	const USER_FRIEND_NULL   = 16;

Если кто-то вникал в систему, почему числа находятся в последовательности геометрической прогрессии, и что будет если поменять порядок к примеру на обратный.

Время "запоминания" пользователя

Предлагаю способ как можно изменить время, на которое запоминается авторизация пользователя.
Версия: LiveStreet 0.4.2

1. Запишем в конфиг необходимое время авторизации.
Открываем config/config.php
На 54 строке находим:
$config['sys']['cookie']['path'] = '/';  // путь для установки куков

После неё вставляем строку:
$config['sys']['cookie']['time'] = 60*60*24*3; // время установки куков (в секундах)

Где вместо 3 можете написать нужное количество дней.

2. Исправим функцию авторизации пользователя.
Открываем classes/modules/user/User.class.php
На 441 строке находим:
setcookie('key',$sKey,time()+60*60*24*3,Config::Get('sys.cookie.path'),Config::Get('sys.cookie.host'));

Меняем на:
setcookie('key',$sKey,time()+Config::Get('sys.cookie.time'),Config::Get('sys.cookie.path'),Config::Get('sys.cookie.host'));


Всё готово.

Как определить что это текущий пользователь

Вот имеется стандартно в движке User.entity.class.php, вот кусок кода:
class ModuleUser_EntityUser extends Entity {
	
	public function getId() {
        return $this->_aData['user_id'];
    }       
    public function getLogin() {
        return $this->_aData['user_login'];
    }


Читать дальше →

Где разместить глобальную переменную?

Где можно объявить пользователя подобным образом:
$this->oUserProfile=$this->User_GetUserCurrent();
$this->Viewer_Assign('oUserProfile',$this->oUserProfile);

Только главное условие, чтобы эти данные были доступны как в Smarty шаблонах(обязательно) так и во всех плагинах(если это возможно).

Чистка кеша blog_relation

Подскажите как очистить кеш всех соотношений пользователя с блогами.
У меня каждый пользователь может участвовать более чем в 300 блогах. И мне нужно чистить кеш соотношений его с блогами. Так скажем кеш таблицы blog_user.
Я попробовал чистить так:
$this->foreach($arr as $id=>$yes)
{
$this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array("blog_relation_change_{$user_id}", "blog_relation_change_blog_{$id}"));		
$this->Cache_Delete("blog_relation_user_{$id}_{$user_id}");
}

Где $arr — массив с идентификаторами блогов.
Но данный код при количестве блогов 300+ штук очень долго срабатывает.