/** * @see wcf\action\IAction::readParameters() */ public function readParameters() { //parent::readParameters(); //!!! //if (isset($_REQUEST['mode'])) $this->mode = $_REQUEST['mode']; $this->mode = 'unreadPosts'; /* if (!in_array($this->mode, static::$validModes)) { throw new IllegalLinkException(); } */ // get accessible board ids $this->boardIDs = Board::getAccessibleBoardIDs(array('canViewBoard', 'canEnterBoard', 'canReadThread')); foreach ($this->boardIDs as $key => $boardID) { $board = BoardCache::getInstance()->getBoard($boardID); if ($board->isIgnored() || !$board->searchable) { unset($this->boardIDs[$key]); } } if (!count($this->boardIDs)) { //throw new PermissionDeniedException(); MbqError::alert('', "Can not found allowed forums.", '', MBQ_ERR_APP); } }
/** * Exports threads. */ public function exportThreads($offset, $limit) { $boardIDs = array_keys(BoardCache::getInstance()->getBoards()); $sql = "SELECT\t\t*\n\t\t\tFROM\t\t" . $this->databasePrefix . "topics\n\t\t\tWHERE\t\ttopic_id BETWEEN ? AND ?\n\t\t\tORDER BY\ttopic_id"; $statement = $this->database->prepareStatement($sql); $statement->execute(array($offset + 1, $offset + $limit)); while ($row = $statement->fetchArray()) { $data = array('boardID' => $row['forum_id'] ?: $boardIDs[0], 'topic' => StringUtil::decodeHTML($row['topic_title']), 'time' => $row['topic_time'], 'userID' => $row['topic_poster'], 'username' => $row['topic_first_poster_name'], 'views' => $row['topic_views'], 'isAnnouncement' => $row['topic_type'] == self::TOPIC_TYPE_ANNOUCEMENT || $row['topic_type'] == self::TOPIC_TYPE_GLOBAL ? 1 : 0, 'isSticky' => $row['topic_type'] == self::TOPIC_TYPE_STICKY ? 1 : 0, 'isDisabled' => 0, 'isClosed' => $row['topic_status'] == self::TOPIC_STATUS_CLOSED ? 1 : 0, 'movedThreadID' => $row['topic_status'] == self::TOPIC_STATUS_LINK && $row['topic_moved_id'] ? $row['topic_moved_id'] : null, 'movedTime' => 0); $additionalData = array(); if ($row['topic_type'] == self::TOPIC_TYPE_GLOBAL) { $additionalData['assignedBoards'] = $boardIDs; } if ($row['topic_type'] == self::TOPIC_TYPE_ANNOUCEMENT) { $additionalData['assignedBoards'] = array($row['forum_id']); } ImportHandler::getInstance()->getImporter('com.woltlab.wbb.thread')->import($row['topic_id'], $data, $additionalData); } }
/** * Exports labels. */ public function exportLabels($offset, $limit) { $prefixMap = array(); $boardIDs = array_keys(BoardCache::getInstance()->getBoards()); $sql = "SELECT\t*\n\t\t\tFROM\t" . $this->databasePrefix . "threadprefixes"; $statement = $this->database->prepareStatement($sql); $statement->execute(array(0)); while ($row = $statement->fetchArray()) { $forums = array_unique(ArrayUtil::toIntegerArray(explode(',', $row['forums']))); foreach ($forums as $key => $forum) { if ($forum == -1) { continue; } $forums[$key] = ImportHandler::getInstance()->getNewID('com.woltlab.wbb.board', $forum); } // -1 = global if (in_array('-1', $forums)) { $forums = $boardIDs; } foreach ($forums as $forum) { if (!isset($prefixMap[$forum])) { $prefixMap[$forum] = array(); } $prefixMap[$forum][$row['pid']] = $row['prefix']; } } // save prefixes if (!empty($prefixMap)) { $objectType = ObjectTypeCache::getInstance()->getObjectTypeByName('com.woltlab.wcf.label.objectType', 'com.woltlab.wbb.board'); foreach ($prefixMap as $forumID => $data) { // import label group ImportHandler::getInstance()->getImporter('com.woltlab.wcf.label.group')->import($forumID, array('groupName' => 'labelgroup' . $forumID), array('objects' => array($objectType->objectTypeID => array($forumID)))); // import labels foreach ($data as $prefixID => $prefix) { ImportHandler::getInstance()->getImporter('com.woltlab.wcf.label')->import($forumID . '-' . $prefixID, array('groupID' => $forumID, 'label' => $prefix)); } } } }
/** * Exports labels. */ public function exportLabels($offset, $limit) { if (!$offset) { $boardIDs = array_keys(BoardCache::getInstance()->getBoards()); $objectType = ObjectTypeCache::getInstance()->getObjectTypeByName('com.woltlab.wcf.label.objectType', 'com.woltlab.wbb.board'); $sql = "SELECT\t\t*\n\t\t\t\tFROM\t\t" . $this->databasePrefix . "prefixset\n\t\t\t\tORDER BY\tprefixsetid"; $statement = $this->database->prepareStatement($sql); $statement->execute(); while ($row = $statement->fetchArray()) { ImportHandler::getInstance()->getImporter('com.woltlab.wcf.label.group')->import($row['prefixsetid'], array('groupName' => $row['prefixsetid']), array('objects' => array($objectType->objectTypeID => $boardIDs))); } } $sql = "SELECT\t\t*\n\t\t\tFROM\t\t" . $this->databasePrefix . "prefix\n\t\t\tORDER BY\tprefixid"; $statement = $this->database->prepareStatement($sql, $limit, $offset); $statement->execute(); while ($row = $statement->fetchArray()) { ImportHandler::getInstance()->getImporter('com.woltlab.wcf.label')->import($row['prefixid'], array('groupID' => $row['prefixsetid'], 'label' => mb_substr($row['prefixid'], 0, 80))); } }