/** * judge can reply_conversation * * @param Object $oMbqEtPcMsg * @param Obejct $oMbqEtPc * @return Boolean */ public function canAclReplyConversation($oMbqEtPcMsg, $oMbqEtPc) { if (MbqMain::hasLogin() && strlen(trim($oMbqEtPcMsg->msgContent->oriValue)) > 0 && $oMbqEtPcMsg->convId->oriValue == $oMbqEtPc->convId->oriValue && !$oMbqEtPc->mbqBind['oViewableConversation']->getDecoratedObject()->isClosed && $oMbqEtPc->mbqBind['oViewableConversation']->getDecoratedObject()->canRead()) { return true; } return false; }
/** * calculate the final config of $this->cfg through $this->cfg default value and MbqMain::$customConfig and MbqMain::$oMbqAppEnv and the plugin support degree */ public function calCfg() { $url = WCF::getPath(); MbqMain::$oMbqAppEnv->siteRootUrl = substr($url, 0, strlen($url) - 4); //init user $oUser = DefaultUserAuthentication::getInstance()->loginAutomatically(true); if ($oUser && $oUser->userID) { MbqMain::$oMbqAppEnv->oCurrentUser = $oUser; $oMbqRdEtUser = MbqMain::$oClk->newObj('MbqRdEtUser'); $oMbqRdEtUser->initOCurMbqEtUser(); } if (MbqMain::hasLogin()) { //!!! header('Mobiquo_is_login: true'); } else { header('Mobiquo_is_login: false'); } $oMbqRdEtForum = MbqMain::$oClk->newObj('MbqRdEtForum'); MbqMain::$oMbqAppEnv->exttForumTree = $oMbqRdEtForum->getForumTree(); //!!! parent::calCfg(); /* calculate the final config */ $this->cfg['base']['sys_version']->setOriValue(PACKAGE_VERSION); if (OFFLINE) { $this->cfg['base']['is_open']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.base.is_open.range.no')); } else { $this->cfg['base']['is_open']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.base.is_open.range.yes')); } if (!MODULE_CONVERSATION || !WCF::getSession()->getPermission('user.conversation.canUseConversation')) { $this->cfg['pc']['module_enable']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.pc.module_enable.range.disable')); $this->cfg['pc']['conversation']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.pc.conversation.range.notSupport')); } }
/** * get unread private conversations number * * @return Integer */ public function getUnreadPcNum() { if (MbqMain::hasLogin()) { //ref __userPanelConversationDropdown.tpl,wcf\system\WCF return WCF::getConversationHandler()->getUnreadConversationCount(); } else { MbqError::alert('', __METHOD__ . ',line:' . __LINE__ . '.' . 'Need login!'); } }
/** * judge can get online users * * @return Boolean */ public function canAclGetOnlineUsers() { if (MbqMain::hasLogin()) { return true; } else { if (MbqMain::$oMbqConfig->getCfg('user.guest_whosonline')->oriValue == MbqBaseFdt::getFdt('MbqFdtConfig.user.guest_whosonline.range.support')) { return true; } } return false; }
/** * calculate the final config of $this->cfg through $this->cfg default value and MbqMain::$customConfig and MbqMain::$oMbqAppEnv and the plugin support degree */ public function calCfg() { $url = WCF::getPath(); MbqMain::$oMbqAppEnv->siteRootUrl = substr($url, 0, strlen($url) - 4); //init current user //$oUser = DefaultUserAuthentication::getInstance()->loginAutomatically(true); //$oUser = WCF::getSession()->getUser(); $oUser = WCF::getUser(); if ($oUser && $oUser->userID) { MbqMain::$oMbqAppEnv->oCurrentUser = $oUser; $oMbqRdEtUser = MbqMain::$oClk->newObj('MbqRdEtUser'); $oMbqRdEtUser->initOCurMbqEtUser($oUser->userID); } if (MbqMain::hasLogin()) { //!!! header('Mobiquo_is_login: true'); } else { header('Mobiquo_is_login: false'); } $oMbqRdEtForum = MbqMain::$oClk->newObj('MbqRdEtForum'); MbqMain::$oMbqAppEnv->exttForumTree = $oMbqRdEtForum->getForumTree(); //!!! MbqMain::$oMbqAppEnv->accessibleBoardIds = Board::getAccessibleBoardIDs(array('canViewBoard', 'canEnterBoard', 'canReadThread')); parent::calCfg(); /* calculate the final config */ $this->cfg['base']['sys_version']->setOriValue(PACKAGE_VERSION); if (OFFLINE) { $this->cfg['base']['is_open']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.base.is_open.range.no')); } else { $this->cfg['base']['is_open']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.base.is_open.range.yes')); } //if (!MODULE_CONVERSATION || !WCF::getSession()->getPermission('user.conversation.canUseConversation')) { if (!MODULE_CONVERSATION) { $this->cfg['pc']['module_enable']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.pc.module_enable.range.disable')); $this->cfg['pc']['conversation']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.pc.conversation.range.notSupport')); } if (!MbqMain::$oMbqAppEnv->accessibleBoardIds) { $this->cfg['user']['guest_okay']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.user.guest_okay.range.notSupport')); $this->cfg['forum']['guest_search']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.forum.guest_search.range.notSupport')); } if ($this->getCfg('base.push')->oriValue == MbqBaseFdt::getFdt('MbqFdtConfig.base.push.range.support') && !OFFLINE && (@ini_get('allow_url_fopen') || function_exists('curl_init'))) { $this->cfg['base']['push']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.base.push.range.support')); } else { $this->cfg['base']['push']->setOriValue(MbqBaseFdt::getFdt('MbqFdtConfig.base.push.range.notSupport')); } }
/** * judge can unsubscribe_topic * * @param Object $oMbqEtForumTopic * @return Boolean */ public function canAclUnsubscribeTopic($oMbqEtForumTopic = null) { if (MbqMain::hasLogin() && $oMbqEtForumTopic->isSubscribed->oriValue) { return true; } return false; }
/** * judge can save_raw_post * * @param Object $oMbqEtForumPost * @return Boolean */ public function canAclSaveRawPost($oMbqEtForumPost) { //ref threadPostList.tpl,wbb\form\PostEditForm if (MbqMain::hasLogin() && $oMbqEtForumPost->oMbqEtForumTopic && $oMbqEtForumPost->mbqBind['oViewablePost'] && $oMbqEtForumPost->oMbqEtForumTopic->mbqBind['oViewableThread']) { $oThread = $oMbqEtForumPost->oMbqEtForumTopic->mbqBind['oViewableThread']->getDecoratedObject(); $oPost = $oMbqEtForumPost->mbqBind['oViewablePost']->getDecoratedObject(); if ($oThread->canEditPost($oPost)) { return true; } } return false; }
/** * judge can report post * * @param Object $oMbqEtForumPost * @return Mixed */ public function canAclReportPost($oMbqEtForumPost = null) { if (empty($oMbqEtForumPost) || !MbqMain::hasLogin()) { return false; } try { $reportAction = new ModerationQueueReportAction(array(), 'prepareReport', array('objectID' => $oMbqEtForumPost->postId->oriValue, 'objectType' => 'com.woltlab.wbb.post')); $reportAction->validateAction(); $reportAction->executeAction(); $returnValues = $reportAction->getReturnValues(); } catch (\Exception $e) { return $e->getMessage(); } if ($returnValues['returnValues']['alreadyReported'] == 1) { return WCF::getLanguage()->get('wcf.moderation.report.alreadyReported'); } return true; }
/** * judge can delete_conversation * * @param Object $oMbqEtPc * @param Integer $mode * @return Boolean */ public function canAclDeleteConversation($oMbqEtPc, $mode) { if (MbqMain::hasLogin() && ($mode == 1 || $mode == 2)) { //ref wcf\data\conversation\ConversationAction::validateHideConversation() // validate participation if (Conversation::isParticipant(array($oMbqEtPc->convId->oriValue))) { return true; } } return false; }
/** * init one forum topic by condition * * @param Mixed $var * @param Array $mbqOpt * $mbqOpt['case'] = 'oViewableThread' means init forum topic by oViewableThread * $mbqOpt['case'] = 'byTopicId' means init forum topic by topic id * @return Mixed */ public function initOMbqEtForumTopic($var = null, $mbqOpt = array()) { if ($mbqOpt['case'] == 'oViewableThread') { $oThread = $var->getDecoratedObject(); $oMbqEtForumTopic = MbqMain::$oClk->newObj('MbqEtForumTopic'); $oMbqEtForumTopic->totalPostNum->setOriValue($oThread->replies + 1); $oMbqEtForumTopic->topicId->setOriValue($oThread->threadID); $oMbqEtForumTopic->forumId->setOriValue($oThread->boardID); $oMbqEtForumTopic->firstPostId->setOriValue($oThread->firstPostID); $oMbqEtForumTopic->topicTitle->setOriValue($oThread->getTitle()); $oMbqEtForumTopic->topicAuthorId->setOriValue($oThread->userID); $oMbqEtForumTopic->lastReplyAuthorId->setOriValue($oThread->lastPosterID); $oMbqEtForumTopic->postTime->setOriValue($oThread->lastPostTime); $oMbqEtForumTopic->lastReplyTime->setOriValue($oThread->lastPostTime); $oMbqEtForumTopic->replyNumber->setOriValue($oThread->replies); if (MbqMain::hasLogin()) { if ($var->isNew()) { //!!! $oMbqEtForumTopic->newPost->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.newPost.range.yes')); } else { $oMbqEtForumTopic->newPost->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.newPost.range.no')); } } else { $oMbqEtForumTopic->newPost->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.newPost.range.no')); } $oMbqEtForumTopic->viewNumber->setOriValue($oThread->views); if ($oThread->isDisabled) { $oMbqEtForumTopic->state->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.state.range.postOkNeedModeration')); } else { $oMbqEtForumTopic->state->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.state.range.postOk')); } if ($oThread->isSubscribed()) { $oMbqEtForumTopic->isSubscribed->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isSubscribed.range.yes')); } else { $oMbqEtForumTopic->isSubscribed->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isSubscribed.range.no')); } if (MbqMain::hasLogin()) { $oMbqEtForumTopic->canSubscribe->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.canSubscribe.range.yes')); } else { $oMbqEtForumTopic->canSubscribe->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.canSubscribe.range.no')); } if ($oThread->isSticky) { $oMbqEtForumTopic->isSticky->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isSticky.range.yes')); } else { $oMbqEtForumTopic->isSticky->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isSticky.range.no')); } if ($oThread->isClosed) { $oMbqEtForumTopic->isClosed->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isClosed.range.yes')); } else { $oMbqEtForumTopic->isClosed->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isClosed.range.no')); } if ($oThread->isDisabled) { $oMbqEtForumTopic->isApproved->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isApproved.range.no')); } else { $oMbqEtForumTopic->isApproved->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isApproved.range.yes')); } if ($oThread->movedThreadID) { $oMbqEtForumTopic->isMoved->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isMoved.range.yes')); $oMbqEtForumTopic->realTopicId->setOriValue($oThread->movedThreadID); } else { $oMbqEtForumTopic->isMoved->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isMoved.range.no')); } if (MbqMain::hasLogin()) { $objectList = new ThreadPostList($oThread); $conditionBuilder = clone $objectList->getConditionBuilder(); $conditionBuilder->add('time <= ?', array($var->getVisitTime())); $sql = "SELECT\t\tcount(post.threadID) AS position\r\n\t\t\t FROM\t\twbb" . WCF_N . "_post post\r\n\t\t\t " . $conditionBuilder . "\r\n GROUP BY post.threadID\r\n\t\t\t ORDER BY\ttime ASC"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute($conditionBuilder->getParameters()); $row = $statement->fetchArray(); if ($row !== false) { $oMbqEtForumTopic->firstUnreadPosition->setOriValue($row['position']); } else { $oMbqEtForumTopic->firstUnreadPosition->setOriValue($oThread->replies + 1); } } $oMbqEtForumTopic->mbqBind['oViewableThread'] = $var; return $oMbqEtForumTopic; } elseif ($mbqOpt['case'] == 'byTopicId') { $topicId = $var; if ($objsMbqEtForumTopic = $this->getObjsMbqEtForumTopic(array($topicId), array('case' => 'byTopicIds'))) { return $objsMbqEtForumTopic[0]; } return false; } MbqError::alert('', __METHOD__ . ',line:' . __LINE__ . '.' . MBQ_ERR_INFO_UNKNOWN_CASE); }
/** * init one forum topic by condition * * @param Mixed $var * @param Array $mbqOpt * $mbqOpt['case'] = 'oViewableThread' means init forum topic by oViewableThread * $mbqOpt['case'] = 'byTopicId' means init forum topic by topic id * @return Mixed */ public function initOMbqEtForumTopic($var, $mbqOpt) { if ($mbqOpt['case'] == 'oViewableThread') { $oThread = $var->getDecoratedObject(); $oMbqEtForumTopic = MbqMain::$oClk->newObj('MbqEtForumTopic'); $oMbqEtForumTopic->totalPostNum->setOriValue($oThread->replies + 1); $oMbqEtForumTopic->topicId->setOriValue($oThread->threadID); $oMbqEtForumTopic->forumId->setOriValue($oThread->boardID); $oMbqEtForumTopic->firstPostId->setOriValue($oThread->firstPostID); $oMbqEtForumTopic->topicTitle->setOriValue($oThread->getTitle()); $oMbqEtForumTopic->topicAuthorId->setOriValue($oThread->userID); $oMbqEtForumTopic->lastReplyAuthorId->setOriValue($oThread->lastPosterID); $oMbqEtForumTopic->postTime->setOriValue($oThread->lastPostTime); $oMbqEtForumTopic->lastReplyTime->setOriValue($oThread->lastPostTime); $oMbqEtForumTopic->replyNumber->setOriValue($oThread->replies); if (MbqMain::hasLogin()) { if ($var->isNew()) { //!!! $oMbqEtForumTopic->newPost->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.newPost.range.yes')); } else { $oMbqEtForumTopic->newPost->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.newPost.range.no')); } } else { $oMbqEtForumTopic->newPost->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.newPost.range.no')); } $oMbqEtForumTopic->viewNumber->setOriValue($oThread->views); if ($oThread->isDisabled) { $oMbqEtForumTopic->state->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.state.range.postOkNeedModeration')); } else { $oMbqEtForumTopic->state->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.state.range.postOk')); } if ($oThread->isSubscribed()) { $oMbqEtForumTopic->isSubscribed->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isSubscribed.range.yes')); } else { $oMbqEtForumTopic->isSubscribed->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.isSubscribed.range.no')); } if (MbqMain::hasLogin()) { $oMbqEtForumTopic->canSubscribe->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.canSubscribe.range.yes')); } else { $oMbqEtForumTopic->canSubscribe->setOriValue(MbqBaseFdt::getFdt('MbqFdtForum.MbqEtForumTopic.canSubscribe.range.no')); } $oMbqEtForumTopic->mbqBind['oViewableThread'] = $var; return $oMbqEtForumTopic; } elseif ($mbqOpt['case'] == 'byTopicId') { $topicId = $var; if ($objsMbqEtForumTopic = $this->getObjsMbqEtForumTopic(array($topicId), array('case' => 'byTopicIds'))) { return $objsMbqEtForumTopic[0]; } return false; } MbqError::alert('', __METHOD__ . ',line:' . __LINE__ . '.' . MBQ_ERR_INFO_UNKNOWN_CASE); }
/** * judge getalert * * @return Boolean */ public function canAclGetAlert() { if (MbqMain::hasLogin()) { return true; } }
/** * judge can delete_conversation * * @param Object $oMbqEtPc * @param Integer $mode * @return Boolean */ public function canAclDeleteConversation($oMbqEtPc = null, $mode = null) { if (!WCF::getSession()->getPermission('user.conversation.canUseConversation')) { return false; } if (MbqMain::hasLogin() && ($mode == 1 || $mode == 2)) { //ref wcf\data\conversation\ConversationAction::validateHideConversation() // validate participation if (Conversation::isParticipant(array($oMbqEtPc->convId->oriValue))) { return true; } } return false; }