Ejemplo n.º 1
0
 public function __construct($data, $boxname = "")
 {
     $this->TopData['templatename'] = "topthreads";
     $this->getBoxStatus($data);
     $this->TopData['boxID'] = $data['boxID'];
     if (!defined('TOPTHREADS_COUNT')) {
         define('TOPTHREADS_COUNT', 10);
     }
     if (!defined('TOPTHREADS_TITLELENGTH')) {
         define('TOPTHREADS_TITLELENGTH', 25);
     }
     if (!defined('TOPTHREADS_SBCOLOR_ACP')) {
         define('TOPTHREADS_SBCOLOR_ACP', 2);
     }
     require_once WBB_DIR . 'lib/data/board/Board.class.php';
     $boardIDs = Board::getAccessibleBoards();
     if (!empty($boardIDs)) {
         $sql = "SELECT thread.*" . "\n  FROM wbb" . WBB_N . "_thread thread" . "\n WHERE thread.boardID IN (0" . $boardIDs . ")" . "\n ORDER BY thread.replies DESC" . "\n LIMIT 0, " . TOPTHREADS_COUNT;
         $result = WBBCore::getDB()->sendQuery($sql);
         while ($row = WBBCore::getDB()->fetchArray($result)) {
             $row['replies'] = StringUtil::formatInteger($row['replies']);
             $row['title'] = StringUtil::encodeHTML($row['topic']) . ' - ' . $row['replies'];
             if (TOPTHREADS_TITLELENGTH != 0 && strlen($row['topic']) > TOPTHREADS_TITLELENGTH) {
                 $row['topic'] = StringUtil::substring($row['topic'], 0, TOPTHREADS_TITLELENGTH - 3) . '...';
             }
             $row['topic'] = StringUtil::encodeHTML($row['topic']);
             $this->TopData['threads'][] = $row;
         }
     }
 }
 /**
  * @see EventListener::execute()
  */
 public function execute($eventObj, $className, $eventName)
 {
     if (empty(URLParser::$text)) {
         return;
     }
     // reset data
     $this->postIDToThreadID = $this->threads = array();
     $threadIDs = $postIDs = array();
     // get page urls
     $pageURLs = URLBBCode::getPageURLs();
     $pageURLs = '(?:' . implode('|', array_map(create_function('$a', 'return preg_quote($a, \'~\');'), $pageURLs)) . ')';
     // build search pattern
     $threadIDPattern = "~\\[url\\](" . $pageURLs . "/?" . $this->threadURLPattern . ".*?)\\[/url\\]~i";
     $postIDPattern = "~\\[url\\](" . $pageURLs . "/?" . $this->postURLPattern . ".*?)\\[/url\\]~i";
     // find thread ids
     if (preg_match_all($threadIDPattern, URLParser::$text, $matches)) {
         $threadIDs = $matches[2];
     }
     // find post ids
     if (preg_match_all($postIDPattern, URLParser::$text, $matches)) {
         $postIDs = $matches[2];
     }
     if (count($threadIDs) > 0 || count($postIDs) > 0) {
         // get thread ids
         if (count($postIDs)) {
             $sql = "SELECT\tpostID, threadID\n\t\t\t\t\tFROM \twbb" . WBB_N . "_post\n\t\t\t\t\tWHERE \tpostID IN (" . implode(",", $postIDs) . ")";
             $result = WCF::getDB()->sendQuery($sql);
             while ($row = WCF::getDB()->fetchArray($result)) {
                 $this->postIDToThreadID[$row['postID']] = $row['threadID'];
                 $threadIDs[] = $row['threadID'];
             }
         }
         // get accessible boards
         require_once WBB_DIR . 'lib/data/board/Board.class.php';
         $boardIDs = Board::getAccessibleBoards();
         if (empty($boardIDs)) {
             return;
         }
         // get topics and prefixes :)
         if (count($threadIDs)) {
             // remove duplicates
             $threadIDs = array_unique($threadIDs);
             $sql = "SELECT\tthreadID, prefix, topic\n\t\t\t\t\tFROM \twbb" . WBB_N . "_thread\n\t\t\t\t\tWHERE \tthreadID IN (" . implode(",", $threadIDs) . ")\n\t\t\t\t \t\tAND boardid IN (0" . $boardIDs . ")";
             $result = WCF::getDB()->sendQuery($sql);
             while ($row = WCF::getDB()->fetchArray($result)) {
                 $this->threads[$row['threadID']] = $row;
             }
         }
         if (count($this->threads) > 0) {
             // insert topics
             URLParser::$text = preg_replace_callback($threadIDPattern, array($this, 'buildThreadURLCallback'), URLParser::$text);
             URLParser::$text = preg_replace_callback($postIDPattern, array($this, 'buildPostURLCallback'), URLParser::$text);
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * Gets threads.
  */
 protected function readThreads()
 {
     $this->threads = array();
     if (!count($this->cachedThreadIDs)) {
         return;
     }
     // get accessible boards
     $boardIDs = Board::getAccessibleBoards();
     if (empty($boardIDs)) {
         return;
     }
     $sql = "SELECT\tthreadID, topic\r\n\t\t\tFROM\twbb" . WBB_N . "_thread\r\n\t\t\tWHERE\tthreadID IN (" . implode(',', $this->cachedThreadIDs) . ")\r\n\t\t\t\tAND boardID IN (" . $boardIDs . ")\r\n\t\t\t\tAND isDeleted = 0\r\n\t\t\t\tAND isDisabled = 0";
     $result = WCF::getDB()->sendQuery($sql);
     while ($row = WCF::getDB()->fetchArray($result)) {
         $this->threads[$row['threadID']] = $row['topic'];
     }
 }
 /**
  * Gets threads.
  */
 protected function readThreads()
 {
     $this->threads = array();
     if (!count($this->cachedPostIDs)) {
         return;
     }
     // get accessible boards
     $boardIDs = Board::getAccessibleBoards();
     if (empty($boardIDs)) {
         return;
     }
     $sql = "SELECT\t\tpost.postID, thread.topic, thread.prefix\n\t\t\tFROM\t\twbb" . WBB_N . "_post post\n\t\t\tLEFT JOIN\twbb" . WBB_N . "_thread thread\n\t\t\tON\t\t(thread.threadID = post.threadID)\n\t\t\tWHERE\t\tpost.postID IN (" . implode(',', $this->cachedPostIDs) . ")\n\t\t\t\t\tAND post.isDeleted = 0\n\t\t\t\t\tAND post.isDisabled = 0\n\t\t\t\t\tAND thread.boardID IN (" . $boardIDs . ")\n\t\t\t\t\tAND thread.isDeleted = 0\n\t\t\t\t\tAND thread.isDisabled = 0";
     $result = WCF::getDB()->sendQuery($sql);
     while ($row = WCF::getDB()->fetchArray($result)) {
         $this->threads[$row['postID']] = $row;
     }
 }
Ejemplo n.º 5
0
 /**
  * @see StandardPortalBox::readData()
  */
 public function readData()
 {
     $this->data['topics'] = array();
     $boardIDs = Board::getAccessibleBoards();
     if (!empty($boardIDs)) {
         $boardIDs = explode(',', $boardIDs);
         foreach ($this->cacheData as $key => $item) {
             if (isset($item['boardID']) && in_array($item['boardID'], $boardIDs)) {
                 $this->data['topics'][] = $item;
             }
         }
     }
     // save memory
     $this->cacheData = array();
     unset($boardIDs);
     if (!count($this->data['topics'])) {
         $this->empty = true;
     }
 }
 public function __construct($data, $boxname = "")
 {
     $this->threadLastPostsBoxData['templatename'] = "threadlastpostsbox";
     $this->getBoxStatus($data);
     $this->threadLastPostsBoxData['boxID'] = $data['boxID'];
     $cntPosts = 0;
     if (!defined('THREADLASTPOSTSBOX_THREADID')) {
         define('THREADLASTPOSTSBOX_THREADID', 0);
     }
     if (!defined('THREADLASTPOSTSBOX_LIMIT')) {
         define('THREADLASTPOSTSBOX_LIMIT', 10);
     }
     if (!defined('THREADLASTPOSTSBOX_TITLELENGTH')) {
         define('THREADLASTPOSTSBOX_TITLELENGTH', 28);
     }
     if (!defined('THREADLASTPOSTSBOX_SBCOLOR')) {
         define('THREADLASTPOSTSBOX_SBCOLOR', 2);
     }
     require_once WBB_DIR . 'lib/data/board/Board.class.php';
     $boardIDs = Board::getAccessibleBoards();
     if (!empty($boardIDs) && THREADLASTPOSTSBOX_THREADID) {
         $sql = "SELECT wp.postID, wp.threadID, wp.userID, wp.subject, wp.message, wp.time" . "\n  FROM wbb1_1_post wp" . "\n  JOIN wbb1_1_thread wt ON (wt.threadID = wp.threadID)" . "\n WHERE wp.threadID = " . THREADLASTPOSTSBOX_THREADID . "\n   AND wp.isDeleted = 0" . "\n   AND wp.isDisabled = 0" . "\n   AND wt.isDeleted = 0" . "\n   AND wt.isDisabled = 0" . "\n   AND wt.boardID IN (" . $boardIDs . ")" . "\n ORDER BY wp.postID DESC" . "\n  LIMIT 0, " . THREADLASTPOSTSBOX_LIMIT;
         $result = WBBCore::getDB()->sendQuery($sql);
         while ($row = WBBCore::getDB()->fetchArray($result)) {
             if (!empty($row['subject'])) {
                 $title = $row['subject'];
             } else {
                 $title = preg_replace('/\\[/', '<', $row['message']);
                 $title = preg_replace('/\\]/', '>', $title);
                 $title = strip_tags($title);
                 //StringUtil::stripHTML($title);
             }
             if (THREADLASTPOSTSBOX_TITLELENGTH != 0 && StringUtil::length($title) > THREADLASTPOSTSBOX_TITLELENGTH) {
                 $title = StringUtil::substring($title, 0, THREADLASTPOSTSBOX_TITLELENGTH - 3) . '...';
             }
             $row['title'] = StringUtil::encodeHTML($title);
             $this->threadLastPostsBoxData['box'][] = $row;
             $cntPosts++;
         }
     }
     WCF::getTPL()->assign(array('THREADLASTPOSTSBOX_SBCOLOR' => intval(THREADLASTPOSTSBOX_SBCOLOR), 'threadLastPostBoxCnt' => $cntPosts));
 }
 /**
  * @see CacheBuilder::getData()
  */
 public function getData($cacheResource)
 {
     $data = array();
     $boardIDs = STICKYTOPICSBOX_BOARDIDS;
     $limit = STICKYTOPICSBOX_NUMOFENTRIES;
     $showClosed = STICKYTOPICSBOX_SHOWCLOSED;
     $sortField = STICKYTOPICSBOX_SORTFIELD;
     $permBoardIDs = Board::getAccessibleBoards();
     if (empty($boardIDs) || empty($permBoardIDs)) {
         return $data;
     }
     $sql = "SELECT *" . "\n  FROM wbb" . WBB_N . "_thread" . "\n WHERE isSticky = 1" . "\n   AND boardID IN(" . $boardIDs . ")" . "\n   AND boardID IN(" . $permBoardIDs . ")" . "\n   AND isDeleted = 0" . "\n   AND isDisabled = 0" . "\n   AND movedThreadID = 0";
     if (empty($showClosed)) {
         $sql .= "\n   AND isClosed = 0";
     }
     $sql .= " ORDER BY " . $sortField . " DESC" . "\n LIMIT " . $limit;
     $result = WBBCore::getDB()->sendQuery($sql);
     while ($row = WBBCore::getDB()->fetchArray($result)) {
         $data[] = $row;
     }
     return $data;
 }
 public function __construct($data, $boxname = "")
 {
     $this->TopData['templatename'] = "topthanksgivingposts";
     $this->getBoxStatus($data);
     $this->TopData['boxID'] = $data['boxID'];
     if (!defined('TOPTHANKSGIVING_COUNT_ACP')) {
         define('TOPTHANKSGIVING_COUNT_ACP', 10);
     }
     if (!defined('TOPTHANKSGIVING_TITLELENGTH_ACP')) {
         define('TOPTHANKSGIVING_TITLELENGTH_ACP', 28);
     }
     if (!defined('TOPTHANKSGIVING_SBCOLOR_ACP')) {
         define('TOPTHANKSGIVING_SBCOLOR_ACP', 2);
     }
     if (!defined('TOPTHANKSGIVING_HITS_ACP')) {
         define('TOPTHANKSGIVING_HITS_ACP', true);
     }
     require_once WBB_DIR . 'lib/data/board/Board.class.php';
     $boardIDs = Board::getAccessibleBoards();
     if (!empty($boardIDs)) {
         $sql = "SELECT thread.topic AS subject, MIN(post.postID) AS postID, COUNT(*) AS cnt" . "\n  FROM wbb" . WBB_N . "_thread thread" . "\n  LEFT JOIN (wbb" . WBB_N . "_post post, wbb" . WBB_N . "_thank_guests tg, wbb" . WBB_N . "_thank_user tu)" . "\n  ON (post.threadID = thread.threadID AND (post.postID = tu.postID OR post.postID = tg.postID))" . "\n  WHERE thread.isDisabled = 0" . "\n  AND thread.isDeleted = 0" . "\n  AND thread.boardID IN (" . $boardIDs . ")" . "\n  AND post.isDeleted = 0" . "\n  AND post.isDisabled = 0" . "\n  GROUP BY thread.threadID" . "\n  ORDER BY cnt DESC" . "\n  LIMIT 0, " . TOPTHANKSGIVING_COUNT_ACP;
         $result = WBBCore::getDB()->sendQuery($sql);
         while ($row = WBBCore::getDB()->fetchArray($result)) {
             $plainSubject = $row['subject'];
             $row['thanks'] = StringUtil::formatInteger($row['cnt']);
             $row['title'] = StringUtil::encodeHTML($plainSubject) . ' - ' . $row['thanks'];
             if (TOPTHANKSGIVING_TITLELENGTH_ACP != 0 && strlen($plainSubject) > TOPTHANKSGIVING_TITLELENGTH_ACP) {
                 $row['subject'] = StringUtil::substring($plainSubject, 0, TOPTHANKSGIVING_TITLELENGTH_ACP - 3) . '...';
             }
             $row['subject'] = StringUtil::encodeHTML($row['subject']);
             $this->TopData['thanksgiving'][] = $row;
         }
     }
     WCF::getTPL()->assign('TOPTHANKSGIVING_SBCOLOR_ACP', intval(TOPTHANKSGIVING_SBCOLOR_ACP));
     WCF::getTPL()->assign('TOPTHANKSGIVING_HITS_ACP', TOPTHANKSGIVING_HITS_ACP);
 }
Ejemplo n.º 9
0
 public function __construct($data, $boxname = "")
 {
     $this->BoxData['templatename'] = "personalbox";
     $this->getBoxStatus($data);
     $this->BoxData['boxID'] = $data['boxID'];
     // Instant Messenger by Tatzelwurm
     if (!defined('INSTANTMESSENGER_AKTIV')) {
         define('INSTANTMESSENGER_AKTIV', false);
     }
     $imcount = 0;
     $pbShowIM = false;
     if (!empty($_REQUEST['page'])) {
         $boxCurPage = $_REQUEST['page'];
     } else {
         $boxCurPage = 'Portal';
     }
     // DEFAULTS
     $pbCatVertOffset = 4;
     $pbLargeRankImages = false;
     $pbRepeatRankImage = true;
     $pbRankImage = '<img src="' . RELATIVE_WCF_DIR . 'icon/userRank1S.png" alt="" title="' . WCF::getLanguage()->get('wcf.user.rank') . '" />';
     $pbLineFeedRank = false;
     $pbFBColor = 1;
     $pbSBColor = 2;
     $pbShowUserMarking = true;
     $pbStyleWidth = 140;
     $pbShowProfileLink = false;
     $pbShowDisplayLink = false;
     $pbFirstColWidth = 20;
     $pbTableWidth = '99%';
     $pbCellPadding = 0;
     $pbWeatherZipCode = '60329';
     $pbWeatherComZipCode = 'DEPLZ,60329';
     $pbWeatherStyle = 1;
     $pbWeatherComStyle = 4;
     $pbWeatherWidth = 140;
     $pbWeatherComDay = 'C';
     $pbMaxHeight = 0;
     $pbShowAvatar = true;
     $pbAvatarMaxWidth = 150;
     $pbAvatarMaxHeight = 150;
     $pbShowPersonal = false;
     $pbShowSearch = true;
     $pbSearchDays = 0;
     $pbShowPM = true;
     $pbShowUserCP = true;
     $pbShowStyles = false;
     $pbShowMisc = false;
     $pbShowWeather = false;
     $pbShowWeatherCom = false;
     $pbShowProfileHits = false;
     // ACP Konstanten...
     if (!defined('PERSONALBOX_CATSPACER_ACP')) {
         define('PERSONALBOX_CATSPACER_ACP', $pbCatVertOffset);
     }
     if (!defined('PERSONALBOX_LARGERANKIMAGES_ACP')) {
         define('PERSONALBOX_LARGERANKIMAGES_ACP', $pbLargeRankImages);
     }
     if (!defined('PERSONALBOX_REPEATRANKIMAGE_ACP')) {
         define('PERSONALBOX_REPEATRANKIMAGE_ACP', $pbRepeatRankImage);
     }
     if (!defined('PERSONALBOX_STYLEBOXWIDTH_ACP')) {
         define('PERSONALBOX_STYLEBOXWIDTH_ACP', $pbStyleWidth);
     }
     if (!defined('PERSONALBOX_WEATHER_ZIPCODE_ACP')) {
         define('PERSONALBOX_WEATHER_ZIPCODE_ACP', $pbWeatherZipCode);
     }
     if (!defined('PERSONALBOX_WEATHERCOM_ZIPCODE_ACP')) {
         define('PERSONALBOX_WEATHERCOM_ZIPCODE_ACP', $pbWeatherComZipCode);
     }
     if (!defined('PERSONALBOX_WEATHER_STYLE_ACP')) {
         define('PERSONALBOX_WEATHER_STYLE_ACP', $pbWeatherStyle);
     }
     if (!defined('PERSONALBOX_WEATHERCOM_STYLE_ACP')) {
         define('PERSONALBOX_WEATHERCOM_STYLE_ACP', $pbWeatherComStyle);
     }
     if (!defined('PERSONALBOX_WEATHERCOM_DAY_ACP')) {
         define('PERSONALBOX_WEATHERCOM_DAY_ACP', $pbWeatherComDay);
     }
     if (!defined('PERSONALBOX_WEATHER_WIDTH_ACP')) {
         define('PERSONALBOX_WEATHER_WIDTH_ACP', $pbWeatherWidth);
     }
     if (!defined('PERSONALBOX_LINEFEEDRANK_ACP')) {
         define('PERSONALBOX_LINEFEEDRANK_ACP', $pbLineFeedRank);
     }
     if (!defined('PERSONALBOX_FBCOLOR_ACP')) {
         define('PERSONALBOX_FBCOLOR_ACP', $pbFBColor);
     }
     if (!defined('PERSONALBOX_SBCOLOR_ACP')) {
         define('PERSONALBOX_SBCOLOR_ACP', $pbSBColor);
     }
     if (!defined('PERSONALBOX_SHOWUSERMARKING_ACP')) {
         define('PERSONALBOX_SHOWUSERMARKING_ACP', $pbShowUserMarking);
     }
     if (!defined('PERSONALBOX_SHOWPROFILELINK_ACP')) {
         define('PERSONALBOX_SHOWPROFILELINK_ACP', $pbShowProfileLink);
     }
     if (!defined('PERSONALBOX_SHOWDISPLAYLINK_ACP')) {
         define('PERSONALBOX_SHOWDISPLAYLINK_ACP', $pbShowDisplayLink);
     }
     if (!defined('PERSONALBOX_FIRSTCOLWIDTH_ACP')) {
         define('PERSONALBOX_FIRSTCOLWIDTH_ACP', $pbFirstColWidth);
     }
     if (!defined('PERSONALBOX_TABLEWIDTH_ACP')) {
         define('PERSONALBOX_TABLEWIDTH_ACP', $pbTableWidth);
     }
     if (!defined('PERSONALBOX_CELLPADDING_ACP')) {
         define('PERSONALBOX_CELLPADDING_ACP', $pbCellPadding);
     }
     if (!defined('PERSONALBOX_MAXHEIGHT_ACP')) {
         define('PERSONALBOX_MAXHEIGHT_ACP', $pbMaxHeight);
     }
     if (!defined('PERSONALBOX_SHOW_AVATAR_ACP')) {
         define('PERSONALBOX_SHOW_AVATAR_ACP', $pbShowAvatar);
     }
     if (!defined('PERSONALBOX_AVATARMAXWIDTH_ACP')) {
         define('PERSONALBOX_AVATARMAXWIDTH_ACP', $pbAvatarMaxWidth);
     }
     if (!defined('PERSONALBOX_AVATARMAXHEIGHT_ACP')) {
         define('PERSONALBOX_AVATARMAXHEIGHT_ACP', $pbAvatarMaxHeight);
     }
     if (!defined('PERSONALBOX_SHOW_PERSONAL_ACP')) {
         define('PERSONALBOX_SHOW_PERSONAL_ACP', $pbShowPersonal);
     }
     if (!defined('PERSONALBOX_SHOW_SEARCH_ACP')) {
         define('PERSONALBOX_SHOW_SEARCH_ACP', $pbShowSearch);
     }
     if (!defined('PERSONALBOX_SEARCH_DAYS_ACP')) {
         define('PERSONALBOX_SEARCH_DAYS_ACP', $pbSearchDays);
     }
     if (!defined('PERSONALBOX_SHOW_PM_ACP')) {
         define('PERSONALBOX_SHOW_PM_ACP', $pbShowPM);
     }
     if (!defined('PERSONALBOX_SHOW_USERCP_ACP')) {
         define('PERSONALBOX_SHOW_USERCP_ACP', $pbShowUserCP);
     }
     if (!defined('PERSONALBOX_SHOW_STYLES_ACP')) {
         define('PERSONALBOX_SHOW_STYLES_ACP', $pbShowStyles);
     }
     if (!defined('PERSONALBOX_SHOW_MISC_ACP')) {
         define('PERSONALBOX_SHOW_MISC_ACP', $pbShowMisc);
     }
     if (!defined('PERSONALBOX_WEATHER_SHOW_ACP')) {
         define('PERSONALBOX_WEATHER_SHOW_ACP', $pbShowWeather);
     }
     if (!defined('PERSONALBOX_WEATHERCOM_SHOW_ACP')) {
         define('PERSONALBOX_WEATHERCOM_SHOW_ACP', $pbShowWeatherCom);
     }
     if (!defined('PERSONALBOX_SHOW_IM_ACP')) {
         define('PERSONALBOX_SHOW_IM_ACP', false);
     }
     if (!defined('PERSONALBOX_SHOW_PROFILEHITS_ACP')) {
         define('PERSONALBOX_SHOW_PROFILEHITS_ACP', $pbShowProfileHits);
     }
     if (WCF::getUser()->userID != 0) {
         // Include libraries...
         require_once WBB_DIR . 'lib/data/board/Board.class.php';
         require_once WCF_DIR . 'lib/data/user/UserProfile.class.php';
         // Boxen Hoehe
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetMaxheight') && (WCF::getUser()->personalbox_maxheight >= 100 || WCF::getUser()->personalbox_maxheight == 0 || WCF::getUser()->personalbox_maxheight == 1)) {
             $pbMaxHeight = intval(WCF::getUser()->personalbox_maxheight);
         } else {
             if (PERSONALBOX_MAXHEIGHT_ACP >= 100) {
                 $pbMaxHeight = PERSONALBOX_MAXHEIGHT_ACP;
             }
         }
         // Avatar
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetAvatar') && WCF::getUser()->personalbox_show_avatar == 'enabled') {
             $pbShowAvatar = true;
         } else {
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetAvatar') && WCF::getUser()->personalbox_show_avatar == 'disabled') {
                 $pbShowAvatar = false;
             } else {
                 $pbShowAvatar = PERSONALBOX_SHOW_AVATAR_ACP;
             }
         }
         // Persoenliches
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetPersonal') && WCF::getUser()->personalbox_show_personal == 'enabled') {
             $pbShowPersonal = true;
         } else {
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetPersonal') && WCF::getUser()->personalbox_show_personal == 'disabled') {
                 $pbShowPersonal = false;
             } else {
                 $pbShowPersonal = PERSONALBOX_SHOW_PERSONAL_ACP;
             }
         }
         // Beitraege
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetCurPosts') && WCF::getUser()->personalbox_show_search == 'enabled') {
             $pbShowSearch = true;
         } else {
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetCurPosts') && WCF::getUser()->personalbox_show_search == 'disabled') {
                 $pbShowSearch = false;
             } else {
                 $pbShowSearch = PERSONALBOX_SHOW_SEARCH_ACP;
             }
         }
         // Private Nachrichten
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetPM') && WCF::getUser()->personalbox_show_pm == 'enabled') {
             $pbShowPM = true;
         } else {
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetPM') && WCF::getUser()->personalbox_show_pm == 'disabled') {
                 $pbShowPM = false;
             } else {
                 $pbShowPM = PERSONALBOX_SHOW_PM_ACP;
             }
         }
         // Verwaltung
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetUserCP') && WCF::getUser()->personalbox_show_usercp == 'enabled') {
             $pbShowUserCP = true;
         } else {
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetUserCP') && WCF::getUser()->personalbox_show_usercp == 'disabled') {
                 $pbShowUserCP = false;
             } else {
                 $pbShowUserCP = PERSONALBOX_SHOW_USERCP_ACP;
             }
         }
         // Style
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetStyle') && WCF::getUser()->personalbox_show_styles == 'enabled') {
             $pbShowStyles = true;
         } else {
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetStyle') && WCF::getUser()->personalbox_show_styles == 'disabled') {
                 $pbShowStyles = false;
             } else {
                 $pbShowStyles = PERSONALBOX_SHOW_STYLES_ACP;
             }
         }
         $pbStyles = array();
         if ($pbShowStyles && defined('PERSONALBOX_CNTSTYLES_ACP') && PERSONALBOX_CNTSTYLES_ACP == true) {
             $i = $isDefaultIdx = $cntDisabled = 0;
             $sql = "SELECT s.styleID, s.styleName, s.isDefault, s.disabled, COUNT(u.userID) AS CNT" . "\n  FROM wcf" . WCF_N . "_style s" . "\n  LEFT JOIN wcf" . WCF_N . "_user u ON (u.styleID = s.styleID OR (u.styleID = 0 AND isDefault = 1))" . "\n GROUP BY styleID, styleName, isDefault, disabled" . "\n ORDER BY styleName";
             $result = WBBCore::getDB()->sendQuery($sql);
             while ($row = WBBCore::getDB()->fetchArray($result)) {
                 $pbStyles[$i]['ID'] = $row['styleID'];
                 $pbStyles[$i]['NAME'] = $row['styleName'];
                 $pbStyles[$i]['DEFAULT'] = $row['isDefault'];
                 $pbStyles[$i]['DISABLED'] = $row['disabled'];
                 $pbStyles[$i]['CNT'] = $row['CNT'];
                 if (!empty($row['isDefault'])) {
                     $isDefaultIdx = $i;
                 }
                 if (!empty($row['disabled'])) {
                     $cntDisabled += $row['CNT'];
                 }
                 $i++;
             }
             if ($cntDisabled > 0 && isset($pbStyles[$isDefaultIdx])) {
                 $pbStyles[$isDefaultIdx]['CNT'] += $cntDisabled;
             }
         }
         // Sonstiges
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetMisc') && WCF::getUser()->personalbox_show_misc == 'enabled') {
             $pbShowMisc = true;
         } else {
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetMisc') && WCF::getUser()->personalbox_show_misc == 'disabled') {
                 $pbShowMisc = false;
             } else {
                 $pbShowMisc = PERSONALBOX_SHOW_MISC_ACP;
             }
         }
         $pbLinks = array();
         if ($pbShowMisc && defined('PERSONALBOX_LINKLIST_ACP') && PERSONALBOX_LINKLIST_ACP != '' && preg_match('/\\|/', PERSONALBOX_LINKLIST_ACP)) {
             $linkList = preg_split("/\r?\n/", PERSONALBOX_LINKLIST_ACP);
             $i = 0;
             foreach ($linkList as $line) {
                 $line = trim($line);
                 if (preg_match("/\\{SPACER\\}/", $line)) {
                     $pbLinks[$i]['TYPE'] = 'SPACER';
                     $pbLinks[$i]['SPACER'] = preg_replace("/\\{SPACER\\}(.*)\\{\\/SPACER\\}/i", "\$1", $line);
                     $i++;
                 } else {
                     if (preg_match("/\\|/", $line)) {
                         list($img, $url, $title, $target, $perm) = preg_split("/\\|/", $line, 5);
                         $img = trim($img);
                         $url = trim($url);
                         $title = trim($title);
                         $target = trim($target);
                         $perm = trim($perm);
                         if (!empty($url) && !empty($title)) {
                             if (preg_match("/\\{\\@?RELATIVE_WBB_DIR\\}/", $img) && defined('RELATIVE_WBB_DIR')) {
                                 $img = preg_replace("/{\\@?RELATIVE_WBB_DIR\\}/", RELATIVE_WBB_DIR, $img);
                             }
                             if (preg_match("/\\{\\@?RELATIVE_WCF_DIR\\}/", $img) && defined('RELATIVE_WCF_DIR')) {
                                 $img = preg_replace("/{\\@?RELATIVE_WCF_DIR\\}/", RELATIVE_WCF_DIR, $img);
                             }
                             if (preg_match("/\\{\\@?RELATIVE_WBB_DIR\\}/", $url) && defined('RELATIVE_WBB_DIR')) {
                                 $url = preg_replace("/{\\@?RELATIVE_WBB_DIR\\}/", RELATIVE_WBB_DIR, $url);
                             }
                             if (preg_match("/\\{\\@?RELATIVE_WCF_DIR\\}/", $url) && defined('RELATIVE_WCF_DIR')) {
                                 $url = preg_replace("/{\\@?RELATIVE_WCF_DIR\\}/", RELATIVE_WCF_DIR, $url);
                             }
                             if (preg_match("/\\{\\@?SECURITY_TOKEN\\}/", $url) && defined('SECURITY_TOKEN')) {
                                 $url = preg_replace("/{\\@?SECURITY_TOKEN\\}/", SECURITY_TOKEN, $url);
                             }
                             if (preg_match("/\\{\\@?PACKAGE_ID\\}/", $url) && defined('PACKAGE_ID')) {
                                 $url = preg_replace("/{\\@?PACKAGE_ID\\}/", PACKAGE_ID, $url);
                             }
                             if (preg_match("/\\{\\@?SID_ARG_2ND\\}/", $url) && defined('SID_ARG_2ND')) {
                                 $url = preg_replace("/{\\@?SID_ARG_2ND\\}/", SID_ARG_2ND, $url);
                             }
                             if (preg_match("/\\{\\@?USER_ID\\}/", $url)) {
                                 $url = preg_replace("/{\\@?USER_ID\\}/", WCF::getUser()->userID, $url);
                             }
                             $pbLinks[$i]['TYPE'] = 'LINK';
                             $pbLinks[$i]['IMG'] = $img;
                             $pbLinks[$i]['URL'] = $url;
                             $pbLinks[$i]['TITLE'] = $title;
                             $pbLinks[$i]['TARGET'] = $target;
                             $pbLinks[$i]['PERM'] = $perm;
                             $i++;
                         }
                     }
                 }
             }
         }
         // Wetter
         if (WCF::getUser()->getPermission('user.profile.personalbox.enableWeather')) {
             // Donnerwetter
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeather') && WCF::getUser()->personalbox_weather_enabled == 'enabled') {
                 $pbShowWeather = true;
             } else {
                 if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeather') && WCF::getUser()->personalbox_weather_enabled == 'disabled') {
                     $pbShowWeather = false;
                 } else {
                     $pbShowWeather = PERSONALBOX_WEATHER_SHOW_ACP;
                 }
             }
             // PLZ fuer Donnerwetter
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeatherZip') && preg_match("/^[0-9]{4,5}\$/", WCF::getUser()->personalbox_weather_zipcode)) {
                 $pbWeatherZipCode = WCF::getUser()->personalbox_weather_zipcode;
             } else {
                 if (preg_match("/^[0-9]{4,5}\$/", PERSONALBOX_WEATHER_ZIPCODE_ACP)) {
                     $pbWeatherZipCode = PERSONALBOX_WEATHER_ZIPCODE_ACP;
                 }
             }
             // Style fuer Donnerwetter...
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeatherStyle') && preg_match("/^1|2\$/", WCF::getUser()->personalbox_weather_style)) {
                 $pbWeatherStyle = WCF::getUser()->personalbox_weather_style;
             } else {
                 if (preg_match("/^1|2\$/", PERSONALBOX_WEATHER_STYLE_ACP)) {
                     $pbWeatherStyle = PERSONALBOX_WEATHER_STYLE_ACP;
                 }
             }
             // wetter.com
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeather') && WCF::getUser()->personalbox_weathercom_enabled == 'enabled') {
                 $pbShowWeatherCom = true;
             } else {
                 if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeather') && WCF::getUser()->personalbox_weathercom_enabled == 'disabled') {
                     $pbShowWeatherCom = false;
                 } else {
                     $pbShowWeatherCom = PERSONALBOX_WEATHERCOM_SHOW_ACP;
                 }
             }
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeatherZip') && preg_match("/^.*\\,.*\$/", WCF::getUser()->personalbox_weathercom_zipcode)) {
                 $pbWeatherComZipCode = WCF::getUser()->personalbox_weathercom_zipcode;
             } else {
                 if (preg_match("/^.*\\,.*\$/", PERSONALBOX_WEATHERCOM_ZIPCODE_ACP)) {
                     $pbWeatherComZipCode = PERSONALBOX_WEATHERCOM_ZIPCODE_ACP;
                 }
             }
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeatherStyle') && preg_match("/^[1-5]\$/", WCF::getUser()->personalbox_weathercom_style)) {
                 $pbWeatherComStyle = WCF::getUser()->personalbox_weathercom_style;
             } else {
                 if (preg_match("/^[1-5]\$/", PERSONALBOX_WEATHERCOM_STYLE_ACP)) {
                     $pbWeatherComStyle = PERSONALBOX_WEATHERCOM_STYLE_ACP;
                 }
             }
             if (WCF::getUser()->getPermission('user.profile.personalbox.canSetWeatherStyle') && preg_match("/^Z|C|F\$/", WCF::getUser()->personalbox_weathercom_day)) {
                 $pbWeatherComDay = WCF::getUser()->personalbox_weathercom_day;
             } else {
                 if (preg_match("/^Z|C|F\$/", PERSONALBOX_WEATHERCOM_DAY_ACP)) {
                     $pbWeatherComDay = PERSONALBOX_WEATHERCOM_DAY_ACP;
                 }
             }
         }
         // setze Timestamp genau auf 0.00 Uhr...
         if (WCF::getUser()->getPermission('user.profile.personalbox.canSetCurPosts') && WCF::getUser()->personalbox_search_days != 'default') {
             $pbSearchDays = intval(WCF::getUser()->personalbox_search_days);
         } else {
             $pbSearchDays = PERSONALBOX_SEARCH_DAYS_ACP;
         }
         if ($pbSearchDays == 0) {
             $itstamp = time();
         } else {
             $itstamp = time() - $pbSearchDays * 86400;
         }
         $searchTime = mktime(0, 0, 0, (int) date("m", $itstamp), (int) date("d", $itstamp), (int) date("Y", $itstamp));
         // Hintergrundfarbe fuer Donnerwetter...
         if (preg_match("/^[a-f0-9]{6}\$/i", PERSONALBOX_WEATHER_BGCOLOR_ACP)) {
             $bgColor = strtoupper(PERSONALBOX_WEATHER_BGCOLOR_ACP);
         } else {
             $bgColor = strtoupper(WBBCore::getStyle()->getVariable('container1.background.color'));
             $bgColor = preg_replace("/\\#/", "", $bgColor);
             if (strlen($bgColor) < 6 && strlen($bgColor) > 0) {
                 $bgColor = str_pad($bgColor, 6, substr($bgColor, -1, 1));
             }
         }
         // Rahmenfarbe fuer Donnerwetter...
         if (preg_match("/^[a-f0-9]{6}\$/i", PERSONALBOX_WEATHER_BOCOLOR_ACP)) {
             $boColor = strtoupper(PERSONALBOX_WEATHER_BOCOLOR_ACP);
         } else {
             $boColor = $bgColor;
         }
         // Textfarbe fuer Donnerwetter...
         if (preg_match("/^[a-f0-9]{6}\$/i", PERSONALBOX_WEATHER_TEXTCOLOR_ACP)) {
             $textColor = strtoupper(PERSONALBOX_WEATHER_TEXTCOLOR_ACP);
         } else {
             $textColor = strtoupper(WBBCore::getStyle()->getVariable('container1.font.color'));
             $textColor = preg_replace("/\\#/", "", $textColor);
             if (strlen($textColor) < 6 && strlen($textColor) > 0) {
                 $textColor = str_pad($textColor, 6, substr($textColor, -1, 1));
             }
         }
         // Standardfarben, falls bis hierhin keine zugeordnet...
         if (empty($bgColor)) {
             $bgColor = 'FFFFFF';
         }
         if (empty($boColor)) {
             $boColor = 'FFFFFF';
         }
         if (empty($textColor)) {
             $textColor = '000000';
         }
         $boardIDs = Board::getAccessibleBoards();
         $user = new UserProfile(WCF::getUser()->userID);
         // RANK
         if ($user->rankImage) {
             if (PERSONALBOX_REPEATRANKIMAGE_ACP && $user->repeatImage) {
                 $pbRankImage = '';
                 for ($i = 0; $i < $user->repeatImage; $i++) {
                     $pbRankImage .= '<img src="' . RELATIVE_WCF_DIR . $user->rankImage . '" alt="" title="' . WCF::getLanguage()->get($user->rankTitle) . '" />';
                 }
             } else {
                 $pbRankImage = '<img src="' . RELATIVE_WCF_DIR . $user->rankImage . '" alt="" title="' . WCF::getLanguage()->get($user->rankTitle) . '" />';
             }
         }
         $user->username = StringUtil::encodeHTML(WCF::getUser()->username);
         $user->searchTime = $searchTime;
         $user->bgColor = $bgColor;
         $user->boColor = $boColor;
         $user->textColor = $textColor;
         $user->posts = 0;
         $user->cntNewPosts = 0;
         $user->cntLastPosts = 0;
         $user->cntReported = 0;
         $user->cntSub = 0;
         if (WCF::getUser()->getPermission('user.profile.personalbox.cntOwnPosts')) {
             // Anzahl Postings...
             $sql = "SELECT wbu.posts" . "\n  FROM wbb" . WBB_N . "_user wbu" . "\n WHERE wbu.userid = " . WCF::getUser()->userID;
             $result = WBBCore::getDB()->getFirstRow($sql);
             $user->posts = StringUtil::formatInteger($result['posts']);
         }
         // Instant Messenger by Tatzelwurm
         if (INSTANTMESSENGER_AKTIV && (WCF::getUser()->getPermission('user.board.instantmessenger.canUseInstantMessenger') || WCF::getUser()->getPermission('user.instantmessenger.canUseInstantMessenger'))) {
             if (@(require_once WCF_DIR . 'lib/data/InstantMessage/IM.class.php')) {
                 if (WCF::getUser()->getPermission('user.profile.personalbox.canSetIM') && WCF::getUser()->personalbox_show_im == 'enabled') {
                     $pbShowIM = true;
                 } else {
                     if (WCF::getUser()->getPermission('user.profile.personalbox.canSetIM') && WCF::getUser()->personalbox_show_im == 'disabled') {
                         $pbShowIM = false;
                     } else {
                         $pbShowIM = PERSONALBOX_SHOW_IM_ACP;
                     }
                 }
                 $imcount = IM::countNewIM();
             }
         }
         // userOnlineMarking...
         if (PERSONALBOX_SHOWUSERMARKING_ACP) {
             $sql = "SELECT wcg.userOnlineMarking" . "\n  FROM wcf" . WCF_N . "_group wcg" . "\n  JOIN wcf" . WCF_N . "_user wcu ON (wcu.userOnlineGroupID = wcg.groupID)" . "\n WHERE wcu.userID = " . WCF::getUser()->userID;
             $result = WBBCore::getDB()->getFirstRow($sql);
             $userOnlineMarking = $result['userOnlineMarking'];
             if ($userOnlineMarking && $userOnlineMarking != '%s') {
                 $user->username = sprintf($userOnlineMarking, StringUtil::encodeHTML(WCF::getUser()->username));
             }
         }
         // neue Beitraege seit letztem Besuch und n Tagen, Abonnements...
         if ($pbShowSearch) {
             if (WCF::getUser()->getPermission('user.profile.personalbox.cntCurPosts')) {
                 $sql = "SELECT COUNT(*) cntNewPosts" . "\n  FROM wbb" . WBB_N . "_thread wbt" . "\n WHERE wbt.boardID IN (0" . $boardIDs . ")" . "\n   AND wbt.lastPostTime >= " . WCF::getUser()->boardLastActivityTime;
                 $result = WBBCore::getDB()->getFirstRow($sql);
                 $user->cntNewPosts = $result['cntNewPosts'];
             }
             if (WCF::getUser()->getPermission('user.profile.personalbox.cntLastPosts')) {
                 $sql = "SELECT COUNT(*) cntLastPosts" . "\n  FROM wbb" . WBB_N . "_thread wbt" . "\n WHERE wbt.boardID IN (0" . $boardIDs . ")" . "\n   AND wbt.lastPostTime >= " . $searchTime;
                 $result = WBBCore::getDB()->getFirstRow($sql);
                 $user->cntLastPosts = $result['cntLastPosts'];
             }
             if (WCF::getUser()->getPermission('user.profile.personalbox.cntSubscriptions')) {
                 $sql = "SELECT COUNT(*) AS newSubscriptions" . "\n  FROM wbb" . WBB_N . "_thread_subscription subscription" . "\n  JOIN wbb" . WBB_N . "_thread thread ON (thread.threadID = subscription.threadID)" . "\n  JOIN\twbb" . WBB_N . "_thread_visit thread_visit ON (thread_visit.threadID = subscription.threadID AND subscription.userID = thread_visit.userID)" . "\n  JOIN\twbb" . WBB_N . "_board_visit board_visit ON (board_visit.boardID = thread.boardID AND subscription.userID = board_visit.userID)" . "\n WHERE subscription.userID = " . WCF::getUser()->userID . "\n   AND thread_visit.lastVisitTime < thread.lastPostTime" . "\n   AND (thread_visit.lastVisitTime > board_visit.lastVisitTime" . "\n    OR board_visit.lastVisitTime < thread.lastPostTime" . "\n    OR board_visit.lastVisitTime IS NULL)" . "\n GROUP BY subscription.userID";
                 $result = WBBCore::getDB()->getFirstRow($sql);
                 $user->cntSub = intval($result['newSubscriptions']);
             }
         }
         // Moderation...
         if ($pbShowUserCP && (WCF::getUser()->getPermission('admin.general.canUseAcp') || WCF::getUser()->getPermission('mod.board.canDeleteThreadCompletely') || WCF::getUser()->getPermission('mod.board.canDeletePostCompletely') || WCF::getUser()->getPermission('mod.board.canEnablePost') || WCF::getUser()->getPermission('mod.board.canEnableThread'))) {
             if (WCF::getUser()->getPermission('admin.general.canUseAcp') || WCF::getUser()->getPermission('mod.board.canEnablePost') || WCF::getUser()->getPermission('mod.board.canEnableThread')) {
                 $sql = "SELECT COUNT(*) cntReported" . "\n  FROM wbb" . WBB_N . "_post_report wbr";
                 $result = WBBCore::getDB()->getFirstRow($sql);
                 $user->cntReported = $result['cntReported'];
             }
             if (WCF::getUser()->getPermission('admin.general.canUseAcp') || WCF::getUser()->getPermission('mod.board.canDeleteThreadCompletely') || WCF::getUser()->getPermission('mod.board.canDeletePostCompletely')) {
                 $sql = "SELECT COUNT(*) cntTrash" . "\n  FROM wbb" . WBB_N . "_post wbp" . "\n  JOIN wbb" . WBB_N . "_thread wbt ON (wbt.threadID = wbp.threadID)" . "\n WHERE wbt.boardID IN (0" . $boardIDs . ")" . "\n   AND (wbp.isDeleted > 0 OR wbt.isDeleted > 0)";
                 $result = WBBCore::getDB()->getFirstRow($sql);
                 $user->cntTrash = $result['cntTrash'];
             }
         }
         // Guestbook
         $user->cntGB = 0;
         if (WCF::getUser()->getPermission('user.guestbook.canUseOwn')) {
             $sql = "SELECT entries, userLastVisit, lastEntry" . "\n  FROM wcf" . WCF_N . "_user_guestbook_header" . "\n WHERE userID = " . WCF::getUser()->userID;
             $result = WBBCore::getDB()->getFirstRow($sql);
             $user->cntGB = empty($result['entries']) ? 0 : $result['entries'];
             if (!empty($result['lastEntry']) && $result['lastEntry'] > $result['userLastVisit']) {
                 $user->newGB = true;
             } else {
                 $user->newGB = false;
             }
         }
         $this->BoxData['user'] = $user;
     }
     // Template Variablen zuordnen...
     WCF::getTPL()->assign(array('pbCatVertOffset' => intval(PERSONALBOX_CATSPACER_ACP), 'pbFirstBoxColor' => intval(PERSONALBOX_FBCOLOR_ACP), 'pbSecondBoxColor' => intval(PERSONALBOX_SBCOLOR_ACP), 'pbFirstColWidth' => intval(PERSONALBOX_FIRSTCOLWIDTH_ACP), 'pbTableWidth' => PERSONALBOX_TABLEWIDTH_ACP, 'pbCellPadding' => intval(PERSONALBOX_CELLPADDING_ACP), 'pbLargeImages' => PERSONALBOX_LARGERANKIMAGES_ACP, 'pbShowIP' => WCF::getUser()->getPermission('user.profile.personalbox.showIP') && WBBCore::getSession()->ipAddress ? WBBCore::getSession()->ipAddress : 0, 'pbStyleWidth' => PERSONALBOX_STYLEBOXWIDTH_ACP, 'pbLineFeedRank' => PERSONALBOX_LINEFEEDRANK_ACP, 'pbShowProfileLink' => PERSONALBOX_SHOWPROFILELINK_ACP, 'pbShowDisplayLink' => PERSONALBOX_SHOWDISPLAYLINK_ACP, 'pbRankImage' => $pbRankImage, 'pbMaxHeight' => $pbMaxHeight, 'pbShowAvatar' => $pbShowAvatar, 'pbAvatarMaxWidth' => PERSONALBOX_AVATARMAXWIDTH_ACP, 'pbAvatarMaxHeight' => PERSONALBOX_AVATARMAXHEIGHT_ACP, 'pbShowPersonal' => $pbShowPersonal, 'pbShowSearch' => $pbShowSearch, 'pbShowPM' => $pbShowPM, 'pbShowUserCP' => $pbShowUserCP, 'pbShowStyles' => $pbShowStyles, 'pbShowMisc' => $pbShowMisc, 'pbShowWeather' => $pbShowWeather, 'pbWeatherZipCode' => $pbWeatherZipCode, 'pbWeatherComZipCode' => $pbWeatherComZipCode, 'pbWeatherStyle' => $pbWeatherStyle, 'pbWeatherComStyle' => $pbWeatherComStyle, 'pbWeatherWidth' => $pbWeatherWidth, 'pbShowWeatherCom' => $pbShowWeatherCom, 'pbWeatherComDay' => $pbWeatherComDay, 'pbLinks' => isset($pbLinks) ? $pbLinks : array(), 'pbStyles' => isset($pbStyles) ? $pbStyles : array(), 'imcount' => $imcount, 'pbShowIM' => $pbShowIM, 'pbShowProfileHits' => PERSONALBOX_SHOW_PROFILEHITS_ACP, 'boxCurPage' => $boxCurPage));
 }
 /**
  * Removes inaccessible boards and threads from user subscriptions.
  */
 public static function clearSubscriptions()
 {
     $boardIDs = Board::getAccessibleBoards();
     // clear board subscriptions
     $sql = "DELETE FROM\twbb" . WBB_N . "_board_subscription\n\t\t\tWHERE\t\tuserID = " . WCF::getUser()->userID . "\n\t\t\t\t\t" . (!empty($boardIDs) ? "AND boardID NOT IN (" . $boardIDs . ")" : "");
     WCF::getDB()->sendQuery($sql);
     // clear thread subscriptions
     $sql = "DELETE FROM\twbb" . WBB_N . "_thread_subscription\n\t\t\tWHERE\t\tuserID = " . WCF::getUser()->userID . "\n\t\t\t\t\t" . (!empty($boardIDs) ? "AND threadID IN (\n\t\t\t\t\t\tSELECT\tthreadID\n\t\t\t\t\t\tFROM\twbb" . WBB_N . "_thread\n\t\t\t\t\t\tWHERE\tboardID NOT IN (" . $boardIDs . ")\n\t\t\t\t\t)" : "");
     WCF::getDB()->sendQuery($sql);
 }
 public function __construct($data, $boxname = "")
 {
     $this->spnrbData['templatename'] = "simplePieNewsreaderBox";
     $this->getBoxStatus($data);
     $this->spnrbData['boxID'] = $data['boxID'];
     if (SPNRBOX_BOXOPENED == true) {
         $this->spnrbData['Status'] = 1;
     }
     if (WBBCore::getUser()->getPermission('user.board.canViewSimplePieNewsreaderBox')) {
         require_once WBB_DIR . 'lib/data/boxes/SimplePieNewsReader/simplepie.inc';
         require_once WBB_DIR . 'lib/data/boxes/SimplePieNewsReader/idna_convert.class.php';
         // FILTER?
         if (SPNRBOX_FILTER && strlen(SPNRBOX_FILTERWORDS) >= 3) {
             require_once WBB_DIR . 'lib/data/boxes/SimplePieNewsReader/simplepie_filter.php';
             $feed = new SimplePie_Filter();
             if (!defined('SPNRBOX_FILTERCLASS')) {
                 define('SPNRBOX_FILTERCLASS', 'hightlight');
             }
             define('SPNRBOX_FILTERON', 1);
         } else {
             $feed = new SimplePie();
             define('SPNRBOX_FILTERON', 0);
         }
         // CACHE
         if (SPNRBOX_CACHEMAX != 0 && SPNRBOX_CACHEMIN != 0) {
             $feed->set_autodiscovery_cache_duration(SPNRBOX_CACHEMAX);
             $feed->set_cache_duration(SPNRBOX_CACHEMIN);
         } else {
             $feed->set_autodiscovery_cache_duration(9999999999);
             $feed->set_cache_duration(9999999999);
         }
         // CHARSET
         if (!defined('CHARSET')) {
             define('CHARSET', 'UTF-8');
         }
         if (!defined('SPNRBOX_CHARSET')) {
             define('SPNRBOX_CHARSET', 'UTF-8');
         }
         if (SPNRBOX_CHARSET == 'default') {
             $charset = CHARSET;
         } else {
             $charset = SPNRBOX_CHARSET;
         }
         $feed->set_cache_location(WBB_DIR . 'lib/data/boxes/SimplePieNewsReader/cache');
         $feed->set_favicon_handler(RELATIVE_WBB_DIR . 'lib/data/boxes/SimplePieNewsReader/handler_image.php');
         $feed->set_image_handler(RELATIVE_WBB_DIR . 'lib/data/boxes/SimplePieNewsReader/handler_image.php');
         $feed->set_output_encoding($charset);
         // BOOKMARKS
         $bookmarks = array();
         if (SPNRBOX_SHOWSOCIALBOOKMARKS) {
             $socialBookmarks = preg_split("/\r?\n/", SPNRBOX_SOCIALBOOKMARKS);
             $cntBookmark = 0;
             foreach ($socialBookmarks as $row) {
                 $row = trim($row);
                 if (preg_match("/\\|/", $row)) {
                     list($bookmarkTitle, $bookmarkUrl, $bookmarkImg, $bookmarkEncodeTitle, $bookmarkEncodeUrl) = preg_split("/\\|/", $row, 5);
                     $bookmarkTitle = trim($bookmarkTitle);
                     $bookmarkUrl = trim($bookmarkUrl);
                     $bookmarkImg = trim($bookmarkImg);
                     $bookmarkEncodeTitle = trim($bookmarkEncodeTitle);
                     $bookmarkEncodeUrl = trim($bookmarkEncodeUrl);
                     if (!empty($bookmarkTitle) && !empty($bookmarkUrl) && !empty($bookmarkImg) && isset($bookmarkEncodeTitle) && isset($bookmarkEncodeUrl)) {
                         $bookmarks[$cntBookmark]['bookmarkTitle'] = $bookmarkTitle;
                         $bookmarks[$cntBookmark]['bookmarkUrl'] = $bookmarkUrl;
                         $bookmarks[$cntBookmark]['bookmarkImg'] = $bookmarkImg;
                         $bookmarks[$cntBookmark]['bookmarkEncodeTitle'] = $bookmarkEncodeTitle == 1 ? 1 : 0;
                         $bookmarks[$cntBookmark]['bookmarkEncodeUrl'] = $bookmarkEncodeUrl == 1 ? 1 : 0;
                         $cntBookmark++;
                     }
                 }
             }
         }
         // THEMA ZUM FEED
         if (WCF::getUser()->getPermission('user.board.canViewThreadToFeed') && SPNRBOX_FEEDTOTHREAD) {
             require_once WBB_DIR . 'lib/data/board/Board.class.php';
             $accessibleBoards = explode(',', Board::getAccessibleBoards());
             $selectiveBoards = explode(',', SPNRBOX_FEEDTOTHREADBOARDID);
             $boardStructur = WCF::getCache()->get('board', 'boardStructure');
             if (count($selectiveBoards) != 0) {
                 $this->spnrbData['boardsForm'] = count($selectiveBoards) == 1 ? 'button' : 'list';
                 $cntBoards = 0;
                 $prefix = '';
                 foreach ($selectiveBoards as $k => $v) {
                     $tmp = Board::getBoard($v);
                     if ($tmp->boardType < 2 && in_array($v, $accessibleBoards)) {
                         $this->spnrbData['boards'][$cntBoards]['id'] = $tmp->boardID;
                         $this->spnrbData['boards'][$cntBoards]['type'] = $tmp->boardType;
                         $prefix = '';
                         foreach ($boardStructur as $boardDepth => $boardKey) {
                             if (in_array($this->spnrbData['boards'][$cntBoards]['id'], $boardKey)) {
                                 $prefix = str_repeat('--', $boardDepth);
                                 break;
                             }
                         }
                         $this->spnrbData['boards'][$cntBoards]['title'] = ($prefix != '' ? $prefix : '') . ' ' . $tmp->title;
                         $cntBoards++;
                     }
                 }
             } else {
                 $this->spnrbData['boardsForm'] = '';
             }
         }
         $feedUrls = preg_split('/\\r?\\n/', SPNRBOX_FEEDS);
         $cntFeedUrl = 0;
         foreach ($feedUrls as $k => $feedurl) {
             $feedurl = trim($feedurl);
             if (empty($feedurl)) {
                 continue;
             }
             $feed->set_feed_url($feedurl);
             $feed->init();
             $feed->handle_content_type();
             if (SPNRBOX_FILTERON) {
                 $feed->set_filter(SPNRBOX_FILTERWORDS, SPNRBOX_FILTERMODE);
             }
             if (!($favicon = $feed->get_favicon())) {
                 $favicon = RELATIVE_WBB_DIR . 'icon/alternate_favicon.png';
             }
             $this->spnrbData['spnrFeeds'][$cntFeedUrl]['id'] = $cntFeedUrl;
             $this->spnrbData['spnrFeeds'][$cntFeedUrl]['link'] = $feed->get_permalink();
             $this->spnrbData['spnrFeeds'][$cntFeedUrl]['title'] = $feed->get_title();
             $this->spnrbData['spnrFeeds'][$cntFeedUrl]['favicon'] = $favicon;
             $this->spnrbData['spnrFeeds'][$cntFeedUrl]['xml'] = $feedurl;
             $items = $feed->get_items();
             if (SPNRBOX_FILTERON) {
                 $items = $feed->filter($items);
             }
             $i = 0;
             foreach ($items as $item) {
                 if ($i >= SPNRBOX_NUMOFFEEDS) {
                     break;
                 }
                 $iFeed = $item->get_feed();
                 $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['id'] = $i;
                 $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['link'] = $item->get_permalink();
                 $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['title'] = html_entity_decode($item->get_title(), ENT_QUOTES, $charset);
                 $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['content'] = SPNRBOX_FILTERON ? $this->highlight(SPNRBOX_FILTERWORDS, $item->get_content(), SPNRBOX_FILTERCLASS) : $item->get_content();
                 $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['date'] = $item->get_date('d.m.Y - H:i:s');
                 $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['bookmarks'] = array();
                 if (count($bookmarks)) {
                     $x = 0;
                     foreach ($bookmarks as $bookmark) {
                         $search[0] = "/\\{TITLE\\}/";
                         $search[1] = "/\\{URL\\}/";
                         $replace[0] = $bookmark['bookmarkEncodeTitle'] == 1 ? rawurlencode(html_entity_decode($item->get_title(), ENT_QUOTES, $charset)) : html_entity_decode($item->get_title());
                         $replace[1] = $bookmark['bookmarkEncodeUrl'] == 1 ? rawurlencode(html_entity_decode($item->get_permalink(), ENT_QUOTES, $charset)) : html_entity_decode($item->get_permalink());
                         $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['bookmarks'][$x]['bookmarkTitle'] = htmlspecialchars($bookmark['bookmarkTitle']);
                         $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['bookmarks'][$x]['bookmarkUrl'] = preg_replace($search, $replace, html_entity_decode($bookmark['bookmarkUrl']));
                         $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['bookmarks'][$x]['bookmarkImg'] = RELATIVE_WBB_DIR . "icon/" . $bookmark['bookmarkImg'];
                         $x++;
                     }
                 }
                 if ($enclosure = $item->get_enclosure()) {
                     $this->spnrbData['spnrFeeds'][$cntFeedUrl]['iFeed'][$i]['enclosure'] = '<p>' . $enclosure->native_embed(array('audio' => RELATIVE_WBB_DIR . 'icon/place_audio.png', 'video' => RELATIVE_WBB_DIR . 'icon/place_video.png', 'mediaplayer' => RELATIVE_WBB_DIR . 'icon/mediaplayer.swf', 'alt' => '<img src="' . RELATIVE_WBB_DIR . 'icon/mini_podcast.png" class="download" border="0" title="Download Podcast (' . $enclosure->get_extension() . '; ' . $enclosure->get_size() . ' MB)" />', 'altclass' => 'download')) . '</p>';
                 }
                 $i++;
             }
             $cntFeedUrl++;
         }
     }
 }
Ejemplo n.º 12
0
 /**
  * Reads the similar threads of this thread.
  */
 protected function readSimilarThreads()
 {
     if (!THREAD_ENABLE_SIMILAR_THREADS) {
         return;
     }
     // get accessible boards
     $boardIDs = Board::getAccessibleBoards(array('canViewBoard', 'canEnterBoard', 'canReadThread'));
     if (empty($boardIDs)) {
         return;
     }
     // get similar threads
     $sql = "SELECT \t\tthread.*, board.title\n\t\t\tFROM \t\twbb" . WBB_N . "_thread_similar similar\n\t\t\tLEFT JOIN\twbb" . WBB_N . "_thread thread\n\t\t\tON\t\t(thread.threadID = similar.similarThreadID)\n\t\t\tLEFT JOIN \twbb" . WBB_N . "_board board\n\t\t\tON \t\t(board.boardID = thread.boardID)\n\t\t\tWHERE \t\tsimilar.threadID = " . $this->threadID . "\n\t\t\t\t\tAND thread.isDeleted = 0\n\t\t\t\t\tAND thread.isDisabled = 0\n\t\t\t\t\tAND thread.boardID IN (" . $boardIDs . ")\n\t\t\tORDER BY \tthread.lastPostTime DESC";
     $result = WCF::getDB()->sendQuery($sql);
     while ($row = WCF::getDB()->fetchArray($result)) {
         $this->similarThreads[] = new ViewableThread(null, $row);
     }
 }