+51.00
Рейтинг
75.55
Сила

Лариса

Создай в Topic.class.php функцию
public function GetTopicsDiscussion($iPage,$iPerPage,$bAddAccessible=true) {
        $aFilter=array(
            'blog_type' => array(
                'personal',
                'open'
            ),
            'topic_publish' => 1,
            'order' => 'topic_last_comment desc',
        );    
        /**
         * Если пользователь авторизирован, то добавляем в выдачу
         * закрытые блоги в которых он состоит
         */
        if($this->oUserCurrent && $bAddAccessible) {
            $aOpenBlogs = $this->Blog_GetAccessibleBlogsByUser($this->oUserCurrent);
            if(count($aOpenBlogs)) $aFilter['blog_type']['close'] = $aOpenBlogs;            
        }
        
        return $this->GetTopicsByFilter($aFilter,$iPage,$iPerPage);
    }


И вызывай в нужном экшене.
Так же делается для коллективных, персональных блогов.
  • avatar kks
  • 2
В принципе эта задача одним запросом решается, если вам это разово сделать нужно, то вот запросы переноса из vBulletin в LS 0.3.1 (под php-nuke переделать, думаю, не сложно будет):

1. Перенос пользователей (ls — база с LS (предполагается свежеустановленный LS без пользователей), vb — база с vBulletin):
INSERT INTO ls.prefix_user (user_login, user_password, user_mail, user_date_register, user_ip_register, user_profile_icq) SELECT username, password, email, passworddate, ipaddress, icq FROM vb.user;

2. Создание персональных блогов новых пользователей:
INSERT INTO ls.prefix_blog (user_owner_id, blog_title, blog_description) SELECT user_id, CONCAT('Блог им. ', user_login), '' FROM ls.prefix_user

Суть такова — делаем insert, указываем нужные поля для переноса, и в качестве данных для insert подставляем результат select запроса из переносимой базы, соответственно поля выборки должны совпадать со вставляемыми в LS.

Возникает проблема с паролями — если принцип хранения разный (например, в исходном движке используется соль, а в LS — нет), то придется пользователей известить о смене пароля. Тут ситуации бывают разные.