/** * @see \wcf\system\cache\builder\AbstractCacheBuilder::rebuild() */ public function rebuild(array $parameters) { $data = array('aliasToPage' => array(), 'pages' => array(), 'stylesheetsToPage' => array(), 'structure' => array()); // fetch pages $pageList = new PageList(); $pageList->sqlOrderBy = 'page.parentID ASC, page.showOrder ASC'; $pageList->readObjects(); $data['pages'] = $pageList->getObjects(); foreach ($pageList as $page) { // Handle aliase to page assignment. Notice that we // can't simply use '$page->getAlias()' here since the // function would require a builded cache! $alias = $page->alias; $tmp = $page; while ($tmp->parentID && ($tmp = $data['pages'][$tmp->parentID])) { $alias = $tmp->alias . '/' . $alias; } $data['aliasToPage'][$alias] = $page->pageID; // page structure $data['structure'][$page->parentID][] = $page->pageID; } // stylesheets $sql = "SELECT\t*\n\t\t\tFROM\tcms" . WCF_N . "_stylesheet_to_page"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute(); while ($row = $statement->fetchArray()) { $data['stylesheetsToPage'][$row['pageID']][] = $row['stylesheetID']; } return $data; }
/** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); // set dates if (isset($_POST['startDate'])) { $this->startDate = strtotime($_POST['startDate']); } if (isset($_POST['endDate'])) { $this->endDate = strtotime($_POST['endDate']); } if ($this->startDate == 0) { $this->startDate = TIME_NOW - 604800; } if ($this->endDate == 0) { $this->endDate = TIME_NOW; } // get stats $this->visits = VisitCountHandler::getInstance()->getVisitors($this->startDate, $this->endDate); foreach ($this->visits as $visit) { $browsers = @unserialize($visit['visitors']['browsers']); if (empty($browsers)) { $browsers = array(); } foreach ($browsers as $key => $value) { $this->browsers[$key] = array('visits' => isset($this->browsers[$key]['visits']) ? $this->browsers[$key]['visits'] + $value : $value); } $platforms = @unserialize($visit['visitors']['platforms']); if (empty($platforms)) { $platforms = array(); } foreach ($platforms as $key => $value) { $this->platforms[$key] = array('visits' => isset($this->platforms[$key]['visits']) ? $this->platforms[$key]['visits'] + $value : $value); } $devices = @unserialize($visit['visitors']['devices']); if (empty($devices)) { $devices = array(); } foreach ($devices as $key => $value) { $this->devices[$key] = array('visits' => isset($this->devices[$key]['visits']) ? $this->devices[$key]['visits'] + $value : $value); } } // read pages $list = new PageList(); $list->sqlOrderBy = 'page.clicks DESC'; $list->sqlLimit = '8'; $list->readObjects(); $this->pages = $list->getObjects(); // user online list $this->usersOnlineList = new UsersOnlineList(); $this->usersOnlineList->readStats(); $this->usersOnlineList->readObjects(); }
/** * Returns a list of children of this page * * @return array<\cms\data\page\Page> */ public function getChildren() { $pageList = new PageList(); $pageList->getConditionBuilder()->add('page.parentID = (?)', array($this->pageID)); $pageList->readObjects(); return $pageList->getObjects(); }