_forumHome = $forumHome; $this->_topics = array(); $this->update(); } /** * ... * @param int $start ... * @param int $end ... * @return array ... */ public function getTopics($start = 0, $end = 0) { if ($end == 0) { return array_slice($this->_topics, $start); } else { return array_slice($this->_topics, $start, $end); } //return $this->_topics; } /** * ... * @param int $days ... */ public function update($days = 30) { $this->_topics = array(); $html = file_get_contents($this->_forumHome . 'search.php?st=' . $days . '&search_id=active_topics'); $html = strip_tags($html, '
'); $html = preg_replace(array('#\t#', '#&sid=[a-z0-9]+#'), '', $html); if (preg_match_all('#(.*?)#im', $html, $matches)) { $lastPostUsers = array(); if (preg_match_all('#
\nby (.*?)#i', $html, $lastPosts)) { $lastPostUserLinks = $lastPosts[1]; $lastPostUserNames = $lastPosts[2]; for ($i = 0; $i < count($lastPostUserLinks); $i++) { //for all users... $link = $this->_forumHome . $lastPostUserLinks[$i]; $name = $lastPostUserNames[$i]; $lastPostUsers[] = new Forum_User($link, $name); } } $links = $matches[1]; $titles = $matches[2]; for ($i = 0; $i < count($links); $i++) { //for all topics... $link = $this->_forumHome . $links[$i]; $title = $titles[$i]; $lastPostUser = $lastPostUsers[$i]; $this->_topics[] = new Forum_Topic($link, $title, $lastPostUser); } } } } class Forum_Topic { /** * ... * @var string ... */ private $_link; /** * ... * @var string ... */ private $_title; /** * ... * @var Forum_User ... */ private $_lastPostUser; /** * ... * @param string $link ... * @param string $title ... * @param Forum_User $lastPostUser ... */ public function __construct($link, $title, $lastPostUser = null) { $this->_link = $link; $this->_title = $title; $this->_lastPostUser = $lastPostUser; } /** * ... * @return string ... */ public function getLink() { return $this->_link; } /** * ... * @return string ... */ public function getTitle() { return $this->_title; } /** * ... * @return Forum_User ... */ public function getLastPostUser() { return $this->_lastPostUser; } } class Forum_User { /** * ... * @var string ... */ private $_link; /** * ... * @var string ... */ private $_name; /** * ... * @param string $link ... * @param string $name ... */ public function __construct($link, $name) { $this->_link = $link; $this->_name = $name; } /** * ... * @return string ... */ public function getLink() { return $this->_link; } /** * ... * @return string ... */ public function getName() { return $this->_name; } /** * ... */ public function __toString() { return $this->_name; } } ?>