vBulletin 4 Получить права доступа к потоку внешним php-приложением

Я пишу аддон для отображения последних тем / сообщений форума vBulletin 4 в приложении extern. Обе системы работают в одном домене, поэтому я могу получить сеанс vB пользователя во внешнем приложении. Поскольку на форуме vB есть некоторые форумы со специальным разрешением (например, внутренние для персонала), я хочу показывать только темы, которые пользователь, по крайней мере, может читать.

Я узнал, что это можно сделать следующим образом:

$notAccessableForums = array();
foreach($vbulletin->forumcache as $forumId => $forumInfo) {
// User need at least view-access
$userCanViewForum = $vbulletin->userinfo['forumpermissions'][$forumId] & $vbulletin->bf_ugp_forumpermissions['canview'];
if(!$userCanViewForum) {
$notAccessableForums[] = $forumInfo['forumid'];
}
}

$notAccessableForums будет массивом всех идентификаторов форума, к которым текущий пользователь не сможет получить доступ. Это можно использовать easilly, чтобы исключить их в операторе SELECT для таких потоков, как

$query = 'SELECT title [...]
FROM thread
WHERE forumid NOT IN(' . implode(',', $notAccessableForums) . ');';

Проблема с этими решениями заключается в том, что ядро ​​vB необходимо для списка форумов и для пользователей с правами доступа. Я не хочу включать ядро ​​по следующим причинам:

  1. Это делает мой плагин негибким, потому что ему нужен доступ к файлам платы vB
  2. Когда я включаю vB-Core в свой сайт, он будет тормозить, потому что на нем уже есть CMS, а vBulletin-Core действительно большой, что может привести к плохой производительности.
  3. Я хочу, чтобы мой плагин был независимым (насколько это возможно)

Я взглянул на исходный код vB и выяснил, что права доступа хранятся в datastore table (который также является очень большим массивом, потому что там также хранится много другой информации, которая мне не нужна, например, статистика, отношения и т. д.). Но я не мог понять, как я могу получить пользовательские разрешения на форуме.

Другими словами: мне нужно битовое поле, которое хранится в VB Var $vbulletin->userinfo['forumpermissions'][$forumId] так что я могу определить $vbulletin->bf_ugp_forumpermissions['canview'] как постоянный в моем классе и получить список всех форумов из базы данных, чтобы проверить, какой из них не виден текущему пользователю.

0

Решение

вот полная статья для последней статьи vbulletin4 и VB5 и комментарии для сайтов html и php

http://thearfan.com/vbulletin-latest-post-for-htmlphp-sites/

-1

Другие решения

Других решений пока нет …