本文整理汇总了PHP中Board::getAccessibleBoardIDArray方法的典型用法代码示例。如果您正苦于以下问题:PHP Board::getAccessibleBoardIDArray方法的具体用法?PHP Board::getAccessibleBoardIDArray怎么用?PHP Board::getAccessibleBoardIDArray使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Board
的用法示例。
在下文中一共展示了Board::getAccessibleBoardIDArray方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getObjectsByTagID
/**
* @see Taggable::getObjectsByTagID()
*/
public function getObjectsByTagID($tagID, $limit = 0, $offset = 0)
{
$accessibleBoardIDArray = Board::getAccessibleBoardIDArray();
if (count($accessibleBoardIDArray) == 0) {
return array();
}
$sqlThreadVisitSelect = $sqlThreadVisitJoin = $sqlSubscriptionSelect = $sqlSubscriptionJoin = $sqlOwnPostsSelect = $sqlOwnPostsJoin = '';
if (WCF::getUser()->userID != 0) {
$sqlThreadVisitSelect = ', thread_visit.lastVisitTime';
$sqlThreadVisitJoin = " LEFT JOIN \twbb" . WBB_N . "_thread_visit thread_visit \n\t\t\t\t\t\tON \t\t(thread_visit.threadID = thread.threadID\n\t\t\t\t\t\t\t\tAND thread_visit.userID = " . WCF::getUser()->userID . ")";
$sqlSubscriptionSelect = ', IF(thread_subscription.userID IS NOT NULL, 1, 0) AS subscribed';
$sqlSubscriptionJoin = " LEFT JOIN \twbb" . WBB_N . "_thread_subscription thread_subscription \n\t\t\t\t\t\tON \t\t(thread_subscription.userID = " . WCF::getUser()->userID . "\n\t\t\t\t\t\t\t\tAND thread_subscription.threadID = thread.threadID)";
if (BOARD_THREADS_ENABLE_OWN_POSTS) {
$sqlOwnPostsSelect = "DISTINCT post.userID AS ownPosts,";
$sqlOwnPostsJoin = "\tLEFT JOIN\twbb" . WBB_N . "_post post\n\t\t\t\t\t\t\tON \t\t(post.threadID = thread.threadID\n\t\t\t\t\t\t\t\t\tAND post.userID = " . WCF::getUser()->userID . ")";
}
}
$threads = array();
$sql = "SELECT\t\t" . $sqlOwnPostsSelect . "\n\t\t\t\t\tthread.*,\n\t\t\t\t\tboard.boardID, board.title\n\t\t\t\t\t" . $sqlThreadVisitSelect . "\n\t\t\t\t\t" . $sqlSubscriptionSelect . "\n\t\t\tFROM\t\twcf" . WCF_N . "_tag_to_object tag_to_object\n\t\t\tLEFT JOIN\twbb" . WBB_N . "_thread thread\n\t\t\tON\t\t(thread.threadID = tag_to_object.objectID)\n\t\t\tLEFT JOIN \twbb" . WBB_N . "_board board\n\t\t\tON \t\t(board.boardID = thread.boardID)\n\t\t\t" . $sqlOwnPostsJoin . "\n\t\t\t" . $sqlThreadVisitJoin . "\n\t\t\t" . $sqlSubscriptionJoin . "\n\t\t\tWHERE\t\ttag_to_object.tagID = " . $tagID . "\n\t\t\t\t\tAND tag_to_object.taggableID = " . $this->getTaggableID() . "\n\t\t\t\t\tAND thread.boardID IN (" . implode(',', $accessibleBoardIDArray) . ")\n\t\t\t\t\tAND thread.isDeleted = 0\n\t\t\t\t\tAND thread.isDisabled = 0\n\t\t\tORDER BY\tthread.lastPostTime DESC";
$result = WCF::getDB()->sendQuery($sql, $limit, $offset);
while ($row = WCF::getDB()->fetchArray($result)) {
$row['taggable'] = $this;
$threads[] = new TaggedThread(null, $row);
}
return $threads;
}
示例2: execute
/**
* @see EventListener::execute()
*/
public function execute($eventObj, $className, $eventName)
{
if ($eventName == 'init') {
$eventObj->sqlSelects .= 'wbb_user.posts,';
$eventObj->sqlJoins .= ' LEFT JOIN wbb' . WBB_N . '_user wbb_user
ON (wbb_user.userID = user.userID) ';
} else {
if ($eventName == 'assignVariables') {
$user = $eventObj->frame->getUser();
$eventObj->generalInformation[] = array('icon' => StyleManager::getStyle()->getIconPath('postM.png'), 'title' => WCF::getLanguage()->get('wcf.user.posts'), 'value' => '<a href="index.php?form=Search&types[]=post&userID=' . $user->userID . SID_ARG_2ND . '" title="' . WCF::getLanguage()->get('wcf.user.profile.search', array('$username' => StringUtil::encodeHTML($user->username))) . '">' . StringUtil::formatInteger(intval($user->posts)) . ($user->getProfileAge() > 1 ? ' ' . WCF::getLanguage()->get('wcf.user.postsPerDay', array('$posts' => StringUtil::formatDouble($user->posts / $user->getProfileAge()))) : '') . '</a>');
// show last 5 posts
if (PROFILE_SHOW_LAST_POSTS) {
require_once WBB_DIR . 'lib/data/post/ViewablePost.class.php';
require_once WBB_DIR . 'lib/data/board/Board.class.php';
$boardIDArray = Board::getAccessibleBoardIDArray(array('canViewBoard', 'canEnterBoard', 'canReadThread'));
if (count($boardIDArray)) {
$posts = array();
$sql = "SELECT\t\tpost.postID, post.time,\n\t\t\t\t\t\t\t\tCASE WHEN post.subject <> '' THEN post.subject ELSE thread.topic END AS subject\n\t\t\t\t\t\tFROM\t\twbb" . WBB_N . "_user_last_post user_last_post\n\t\t\t\t\t\tLEFT JOIN\twbb" . WBB_N . "_post post\n\t\t\t\t\t\tON\t\t(post.postID = user_last_post.postID)\n\t\t\t\t\t\tLEFT JOIN\twbb" . WBB_N . "_thread thread\n\t\t\t\t\t\tON\t\t(thread.threadID = post.threadID)\n\t\t\t\t\t\tWHERE\t\tuser_last_post.userID = " . $user->userID . "\n\t\t\t\t\t\t\t\tAND post.isDeleted = 0\n\t\t\t\t\t\t\t\tAND post.isDisabled = 0\n\t\t\t\t\t\t\t\tAND thread.boardID IN (" . implode(',', $boardIDArray) . ")\n\t\t\t\t\t\t\t\t" . (count(WCF::getSession()->getVisibleLanguageIDArray()) ? "AND thread.languageID IN (" . implode(',', WCF::getSession()->getVisibleLanguageIDArray()) . ")" : "") . "\n\t\t\t\t\t\tORDER BY\tuser_last_post.time DESC";
$result = WCF::getDB()->sendQuery($sql, 5);
while ($row = WCF::getDB()->fetchArray($result)) {
$posts[] = new ViewablePost(null, $row);
}
if (count($posts)) {
WCF::getTPL()->assign(array('posts' => $posts, 'user' => $user));
WCF::getTPL()->append('additionalContent2', WCF::getTPL()->fetch('userProfileLastPosts'));
}
}
}
}
}
}
示例3: readPosts
/**
* Gets the posts for the feed.
*/
protected function readPosts()
{
// accessible boards
$accessibleBoardIDArray = Board::getAccessibleBoardIDArray(array('canViewBoard', 'canEnterBoard', 'canReadThread'));
if (!count($accessibleBoardIDArray)) {
throw new PermissionDeniedException();
}
// get posts
$attachmentPostIDArray = array();
$sql = "SELECT\t\tpost.*\n\t\t\tFROM\t\twbb" . WBB_N . "_post post\n\t\t\tWHERE\t\tpost.threadID IN (" . implode(',', $this->threadIDArray) . ")\n\t\t\t\t\tAND post.threadID IN (SELECT threadID FROM wbb" . WBB_N . "_thread WHERE boardID IN (" . implode(',', $accessibleBoardIDArray) . "))\n\t\t\t\t\tAND post.isDeleted = 0\n\t\t\t\t\tAND post.isDisabled = 0\n\t\t\t\t\t" . ($this->hours ? "AND post.time > " . (TIME_NOW - $this->hours * 3600) : '') . "\n\t\t\tORDER BY\tpost.time DESC";
$result = WCF::getDB()->sendQuery($sql, $this->limit);
while ($row = WCF::getDB()->fetchArray($result)) {
$this->posts[] = new FeedPost(null, $row);
// attachments
if ($row['attachments'] != 0) {
$attachmentPostIDArray[] = $row['postID'];
}
}
// read attachments
if (MODULE_ATTACHMENT == 1 && count($attachmentPostIDArray) > 0 && (WCF::getUser()->getPermission('user.board.canViewAttachmentPreview') || WCF::getUser()->getPermission('user.board.canDownloadAttachment'))) {
require_once WCF_DIR . 'lib/data/attachment/MessageAttachmentList.class.php';
$attachmentList = new MessageAttachmentList($attachmentPostIDArray, 'post');
$attachmentList->readObjects();
$attachments = $attachmentList->getSortedAttachments();
// set embedded attachments
require_once WCF_DIR . 'lib/data/message/bbcode/AttachmentBBCode.class.php';
AttachmentBBCode::setAttachments($attachments);
}
}
示例4: readThreads
/**
* Gets the threads for the feed.
*/
protected function readThreads()
{
// accessible boards
$accessibleBoardIDArray = Board::getAccessibleBoardIDArray(array('canViewBoard', 'canEnterBoard', 'canReadThread'));
// get threads
if (count($accessibleBoardIDArray)) {
$sql = "SELECT\t\tpost.*, thread.*\n\t\t\t\tFROM\t\twbb" . WBB_N . "_thread_subscription subscription\n\t\t\t\tLEFT JOIN\twbb" . WBB_N . "_thread thread\n\t\t\t\tON\t\t(thread.threadID = subscription.threadID)\n\t\t\t\tLEFT JOIN\twbb" . WBB_N . "_post post\n\t\t\t\tON\t\t(post.postID = thread.firstPostID)\n\t\t\t\tWHERE\t\tsubscription.userID = " . WCF::getUser()->userID . "\n\t\t\t\t\t\tAND thread.boardID IN (" . implode(',', $accessibleBoardIDArray) . ")\n\t\t\t\t\t\tAND thread.isDeleted = 0\n\t\t\t\t\t\tAND thread.isDisabled = 0\n\t\t\t\t\t\tAND thread.movedThreadID = 0\n\t\t\t\t\t\tAND thread.time > " . ($this->hours ? TIME_NOW - $this->hours * 3600 : TIME_NOW - 30 * 86400) . "\n\t\t\t\tORDER BY\tthread.time DESC";
$result = WCF::getDB()->sendQuery($sql, $this->limit);
while ($row = WCF::getDB()->fetchArray($result)) {
$this->threads[] = new FeedThread($row);
}
}
}
示例5: readThreads
/**
* Gets the threads for the feed.
*/
protected function readThreads()
{
$boardIDArray = $this->boardIDArray;
// include subboards
if (count($boardIDArray)) {
$boardIDArray = array_merge($boardIDArray, Board::getSubBoardIDArray($boardIDArray));
}
// accessible boards
$accessibleBoardIDArray = Board::getAccessibleBoardIDArray(array('canViewBoard', 'canEnterBoard', 'canReadThread'));
if (count($boardIDArray)) {
$boardIDArray = array_intersect($boardIDArray, $accessibleBoardIDArray);
} else {
$boardIDArray = $accessibleBoardIDArray;
foreach ($boardIDArray as $key => $boardID) {
if (WCF::getUser()->isIgnoredBoard($boardID)) {
unset($boardIDArray[$key]);
}
}
}
// get threads
$attachmentPostIDArray = array();
if (count($boardIDArray)) {
$sql = "SELECT\t\tpost.*, thread.*, post.attachments\n\t\t\t\tFROM\t\twbb" . WBB_N . "_thread thread\n\t\t\t\tLEFT JOIN\twbb" . WBB_N . "_post post\n\t\t\t\tON\t\t(post.postID = thread.firstPostID)\n\t\t\t\tWHERE\t\tthread.boardID IN (" . implode(',', $boardIDArray) . ")\n\t\t\t\t\t\tAND thread.isDeleted = 0\n\t\t\t\t\t\tAND thread.isDisabled = 0\n\t\t\t\t\t\tAND thread.movedThreadID = 0\n\t\t\t\t\t\tAND thread.time > " . ($this->hours ? TIME_NOW - $this->hours * 3600 : TIME_NOW - 30 * 86400) . "\n\t\t\t\tORDER BY\tthread.time DESC";
$result = WCF::getDB()->sendQuery($sql, $this->limit);
while ($row = WCF::getDB()->fetchArray($result)) {
$this->threads[] = new FeedThread($row);
// attachments
if ($row['attachments'] != 0) {
$attachmentPostIDArray[] = $row['postID'];
}
}
}
// read attachments
if (MODULE_ATTACHMENT == 1 && count($attachmentPostIDArray) > 0 && (WCF::getUser()->getPermission('user.board.canViewAttachmentPreview') || WCF::getUser()->getPermission('user.board.canDownloadAttachment'))) {
require_once WCF_DIR . 'lib/data/attachment/MessageAttachmentList.class.php';
$attachmentList = new MessageAttachmentList($attachmentPostIDArray, 'post');
$attachmentList->readObjects();
$attachments = $attachmentList->getSortedAttachments();
// set embedded attachments
require_once WCF_DIR . 'lib/data/message/bbcode/AttachmentBBCode.class.php';
AttachmentBBCode::setAttachments($attachments);
}
}
示例6: execute
/**
* @see EventListener::execute()
*/
public function execute($eventObj, $className, $eventName)
{
if ($eventName == 'readParameters') {
// handle special search options here
$action = '';
if (isset($_REQUEST['action'])) {
$action = $_REQUEST['action'];
}
if (empty($action)) {
return;
}
// get accessible board ids
require_once WBB_DIR . 'lib/data/board/Board.class.php';
$boardIDArray = Board::getAccessibleBoardIDArray(array('canViewBoard', 'canEnterBoard', 'canReadThread'));
foreach ($boardIDArray as $key => $boardID) {
if (WCF::getUser()->isIgnoredBoard($boardID)) {
unset($boardIDArray[$key]);
} else {
if (!Board::getBoard($boardID)->searchable) {
unset($boardIDArray[$key]);
}
}
}
if (!count($boardIDArray)) {
return;
}
switch ($action) {
case 'unread':
$sql = "SELECT\t\tthread.threadID\n\t\t\t\t\t\tFROM\t\twbb" . WBB_N . "_thread thread\n\t\t\t\t\t\tWHERE\t\tthread.boardID IN (" . implode(',', $boardIDArray) . ")\n\t\t\t\t\t\t\t\tAND thread.lastPostTime > " . WCF::getUser()->getLastMarkAllAsReadTime() . "\n\t\t\t\t\t\t\t\t" . (WCF::getUser()->userID ? "\n\t\t\t\t\t\t\t\tAND thread.lastPostTime > IFNULL((\n\t\t\t\t\t\t\t\t\tSELECT\tlastVisitTime\n\t\t\t\t\t\t\t\t\tFROM \twbb" . WBB_N . "_thread_visit\n\t\t\t\t\t\t\t\t\tWHERE \tthreadID = thread.threadID\n\t\t\t\t\t\t\t\t\t\tAND userID = " . WCF::getUser()->userID . "\n\t\t\t\t\t\t\t\t), 0)\n\t\t\t\t\t\t\t\tAND thread.lastPostTime > IFNULL((\n\t\t\t\t\t\t\t\t\tSELECT\tlastVisitTime\n\t\t\t\t\t\t\t\t\tFROM \twbb" . WBB_N . "_board_visit\n\t\t\t\t\t\t\t\t\tWHERE \tboardID = thread.boardID\n\t\t\t\t\t\t\t\t\t\tAND userID = " . WCF::getUser()->userID . "\n\t\t\t\t\t\t\t\t), 0)\n\t\t\t\t\t\t\t\t" : '') . "\n\t\t\t\t\t\t\t\tAND thread.isDeleted = 0\n\t\t\t\t\t\t\t\tAND thread.isDisabled = 0\n\t\t\t\t\t\t\t\t" . (count(WCF::getSession()->getVisibleLanguageIDArray()) ? " AND languageID IN (" . implode(',', WCF::getSession()->getVisibleLanguageIDArray()) . ")" : "") . "\n\t\t\t\t\t\t\t\tAND thread.movedThreadID = 0\n\t\t\t\t\t\tORDER BY\tthread.lastPostTime DESC";
break;
case 'newPostsSince':
$since = TIME_NOW;
if (isset($_REQUEST['since'])) {
$since = intval($_REQUEST['since']);
}
$sql = "SELECT\t\tthread.threadID\n\t\t\t\t\t\tFROM\t\twbb" . WBB_N . "_thread thread\n\t\t\t\t\t\tWHERE\t\tthread.boardID IN (" . implode(',', $boardIDArray) . ")\n\t\t\t\t\t\t\t\tAND thread.lastPostTime > " . $since . "\n\t\t\t\t\t\t\t\tAND thread.isDeleted = 0\n\t\t\t\t\t\t\t\tAND thread.isDisabled = 0\n\t\t\t\t\t\t\t\t" . (count(WCF::getSession()->getVisibleLanguageIDArray()) ? " AND languageID IN (" . implode(',', WCF::getSession()->getVisibleLanguageIDArray()) . ")" : "") . "\n\t\t\t\t\t\t\t\tAND thread.movedThreadID = 0\n\t\t\t\t\t\tORDER BY\tthread.lastPostTime DESC";
break;
case 'unreplied':
$sql = "SELECT\t\tthreadID\n\t\t\t\t\t\tFROM\t\twbb" . WBB_N . "_thread\n\t\t\t\t\t\tWHERE\t\tboardID IN (" . implode(',', $boardIDArray) . ")\n\t\t\t\t\t\t\t\tAND isDeleted = 0\n\t\t\t\t\t\t\t\tAND isDisabled = 0\n\t\t\t\t\t\t\t\tAND movedThreadID = 0\n\t\t\t\t\t\t\t\t" . (count(WCF::getSession()->getVisibleLanguageIDArray()) ? " AND languageID IN (" . implode(',', WCF::getSession()->getVisibleLanguageIDArray()) . ")" : "") . "\n\t\t\t\t\t\t\t\tAND replies = 0\n\t\t\t\t\t\tORDER BY\tlastPostTime DESC";
break;
case '24h':
$sql = "SELECT\t\tthreadID\n\t\t\t\t\t\tFROM\t\twbb" . WBB_N . "_thread\n\t\t\t\t\t\tWHERE\t\tboardID IN (" . implode(',', $boardIDArray) . ")\n\t\t\t\t\t\t\t\tAND lastPostTime > " . (TIME_NOW - 86400) . "\n\t\t\t\t\t\t\t\tAND isDeleted = 0\n\t\t\t\t\t\t\t\tAND isDisabled = 0\n\t\t\t\t\t\t\t\t" . (count(WCF::getSession()->getVisibleLanguageIDArray()) ? " AND languageID IN (" . implode(',', WCF::getSession()->getVisibleLanguageIDArray()) . ")" : "") . "\n\t\t\t\t\t\t\t\tAND movedThreadID = 0\n\t\t\t\t\t\tORDER BY\tlastPostTime DESC";
break;
default:
return;
}
// build search hash
$searchHash = StringUtil::getHash($sql);
// execute query
$matches = array();
$result = WCF::getDB()->sendQuery($sql, 1000);
while ($row = WCF::getDB()->fetchArray($result)) {
$matches[] = array('messageID' => $row['threadID'], 'messageType' => 'post');
}
// result is empty
if (count($matches) == 0) {
throw new NamedUserException(WCF::getLanguage()->get('wbb.search.error.noMatches'));
}
// save result in database
$searchData = array('packageID' => PACKAGE_ID, 'query' => '', 'result' => $matches, 'additionalData' => array('post' => array('findThreads' => 1)), 'sortOrder' => 'DESC', 'sortField' => 'time', 'types' => array('post'));
$searchData = serialize($searchData);
$sql = "INSERT INTO\twcf" . WCF_N . "_search\n\t\t\t\t\t\t(userID, searchData, searchDate, searchType, searchHash)\n\t\t\t\tVALUES\t\t(" . WCF::getUser()->userID . ",\n\t\t\t\t\t\t'" . escapeString($searchData) . "',\n\t\t\t\t\t\t" . TIME_NOW . ",\n\t\t\t\t\t\t'messages',\n\t\t\t\t\t\t'" . $searchHash . "')";
WCF::getDB()->sendQuery($sql);
$searchID = WCF::getDB()->getInsertID();
// forward to result page
HeaderUtil::redirect('index.php?form=Search&searchID=' . $searchID . SID_ARG_2ND_NOT_ENCODED);
exit;
} else {
if ($eventName == 'readFormParameters') {
if (isset($_POST['findThreads'])) {
$this->findThreads = intval($_POST['findThreads']);
}
if (isset($_REQUEST['findUserThreads'])) {
$this->findUserThreads = intval($_REQUEST['findUserThreads']);
}
if ($this->findUserThreads == 1) {
$this->findThreads = 1;
}
// handle findThreads option
if ($this->findThreads == 1 && (!count($eventObj->types) || in_array('post', $eventObj->types))) {
// remove all other searchable message types
// findThreads only supports post search
$eventObj->types = array('post');
} else {
$this->findThreads = 0;
}
} else {
if ($eventName == 'assignVariables') {
if ($eventObj instanceof SearchResultPage) {
$html = '<div class="floatedElement">
<label for="findThreads">' . WCF::getLanguage()->get('wbb.search.results.display') . '</label>
<select name="findThreads" id="findThreads">
<option value="0">' . WCF::getLanguage()->get('wbb.search.results.display.post') . '</option>
<option value="1"' . ($eventObj->additionalData['post']['findThreads'] == 1 ? ' selected="selected"' : '') . '>' . WCF::getLanguage()->get('wbb.search.results.display.thread') . '</option>
</select>
</div>';
WCF::getTPL()->append('additionalDisplayOptions', $html);
//.........这里部分代码省略.........