/**
  * @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)));
     }
 }