diff options
Diffstat (limited to 'bridges/PirateCommunityBridge.php')
-rw-r--r-- | bridges/PirateCommunityBridge.php | 186 |
1 files changed, 100 insertions, 86 deletions
diff --git a/bridges/PirateCommunityBridge.php b/bridges/PirateCommunityBridge.php index ce861015..a1a9d8f5 100644 --- a/bridges/PirateCommunityBridge.php +++ b/bridges/PirateCommunityBridge.php @@ -1,88 +1,102 @@ <?php -class PirateCommunityBridge extends BridgeAbstract { - const NAME = 'Pirate-Community Bridge'; - const URI = 'https://raymanpc.com/'; - const CACHE_TIMEOUT = 300; // 5min - const DESCRIPTION = 'Returns replies to topics'; - const MAINTAINER = 'Roliga'; - const PARAMETERS = array( array( - 't' => array( - 'name' => 'Topic ID', - 'type' => 'number', - 'exampleValue' => '12651', - 'title' => 'Topic ID from topic URL. If the URL contains t=12 the ID is 12.', - 'required' => true - ))); - - private $feedName = ''; - - public function detectParameters($url){ - $parsed_url = parse_url($url); - - if($parsed_url['host'] !== 'raymanpc.com') - return null; - - parse_str($parsed_url['query'], $parsed_query); - - if($parsed_url['path'] === '/forum/viewtopic.php' - && array_key_exists('t', $parsed_query)) { - return array('t' => $parsed_query['t']); - } - - return null; - } - - public function getName() { - if(!empty($this->feedName)) - return $this->feedName; - - return parent::getName(); - } - - public function getURI(){ - if(!is_null($this->getInput('t'))) { - return self::URI - . 'forum/viewtopic.php?t=' - . $this->getInput('t') - . '&sd=d'; // sort posts decending by ate so first page has latest posts - } - - return parent::getURI(); - } - - public function collectData(){ - $html = getSimpleHTMLDOM($this->getURI()); - - $this->feedName = $html->find('head title', 0)->plaintext; - - foreach($html->find('.post') as $reply) { - $item = array(); - - $item['uri'] = $this->getURI() - . $reply->find('h3 a', 0)->getAttribute('href'); - - $item['title'] = $reply->find('h3 a', 0)->plaintext; - - $author_html = $reply->find('.author', 0); - // author_html contains the timestamp as text directly inside it, - // so delete all other child elements - foreach($author_html->children as $child) - $child->outertext = ''; - // Timestamps are always in UTC+1 - $item['timestamp'] = trim($author_html->innertext) . ' +01:00'; - - $item['author'] = $reply - ->find('.username, .username-coloured', 0) - ->plaintext; - - $item['content'] = defaultLinkTo($reply->find('.content', 0)->innertext, - $this->getURI()); - - $item['enclosures'] = array(); - foreach($reply->find('.attachbox img.postimage') as $img) - $item['enclosures'][] = urljoin($this->getURI(), $img->src); - - $this->items[] = $item; - } - } + +class PirateCommunityBridge extends BridgeAbstract +{ + const NAME = 'Pirate-Community Bridge'; + const URI = 'https://raymanpc.com/'; + const CACHE_TIMEOUT = 300; // 5min + const DESCRIPTION = 'Returns replies to topics'; + const MAINTAINER = 'Roliga'; + const PARAMETERS = [ [ + 't' => [ + 'name' => 'Topic ID', + 'type' => 'number', + 'exampleValue' => '12651', + 'title' => 'Topic ID from topic URL. If the URL contains t=12 the ID is 12.', + 'required' => true + ]]]; + + private $feedName = ''; + + public function detectParameters($url) + { + $parsed_url = parse_url($url); + + if ($parsed_url['host'] !== 'raymanpc.com') { + return null; + } + + parse_str($parsed_url['query'], $parsed_query); + + if ( + $parsed_url['path'] === '/forum/viewtopic.php' + && array_key_exists('t', $parsed_query) + ) { + return ['t' => $parsed_query['t']]; + } + + return null; + } + + public function getName() + { + if (!empty($this->feedName)) { + return $this->feedName; + } + + return parent::getName(); + } + + public function getURI() + { + if (!is_null($this->getInput('t'))) { + return self::URI + . 'forum/viewtopic.php?t=' + . $this->getInput('t') + . '&sd=d'; // sort posts decending by ate so first page has latest posts + } + + return parent::getURI(); + } + + public function collectData() + { + $html = getSimpleHTMLDOM($this->getURI()); + + $this->feedName = $html->find('head title', 0)->plaintext; + + foreach ($html->find('.post') as $reply) { + $item = []; + + $item['uri'] = $this->getURI() + . $reply->find('h3 a', 0)->getAttribute('href'); + + $item['title'] = $reply->find('h3 a', 0)->plaintext; + + $author_html = $reply->find('.author', 0); + // author_html contains the timestamp as text directly inside it, + // so delete all other child elements + foreach ($author_html->children as $child) { + $child->outertext = ''; + } + // Timestamps are always in UTC+1 + $item['timestamp'] = trim($author_html->innertext) . ' +01:00'; + + $item['author'] = $reply + ->find('.username, .username-coloured', 0) + ->plaintext; + + $item['content'] = defaultLinkTo( + $reply->find('.content', 0)->innertext, + $this->getURI() + ); + + $item['enclosures'] = []; + foreach ($reply->find('.attachbox img.postimage') as $img) { + $item['enclosures'][] = urljoin($this->getURI(), $img->src); + } + + $this->items[] = $item; + } + } } |