<?php class AwwwardsBridge extends BridgeAbstract { const NAME = 'Awwwards'; const URI = 'https://www.awwwards.com/'; const DESCRIPTION = 'Fetches the latest ten sites of the day from Awwwards'; const MAINTAINER = 'Paroleen'; const CACHE_TIMEOUT = 3600; const SITESURI = 'https://www.awwwards.com/websites/sites_of_the_day/'; const SITEURI = 'https://www.awwwards.com/sites/'; const ASSETSURI = 'https://assets.awwwards.com/awards/media/cache/thumb_417_299/'; private $sites = array(); public function getIcon() { return 'https://www.awwwards.com/favicon.ico'; } private function fetchSites() { Debug::log('Fetching all sites'); $sites = getSimpleHTMLDOM(self::SITESURI) or returnServerError('Could not fetch JSON for sites.'); Debug::log('Parsing all JSON data'); foreach($sites->find('li[data-model]') as $site) { $decode = html_entity_decode($site->attr['data-model'], ENT_QUOTES, 'utf-8'); $decode = json_decode($decode, true); $this->sites[] = $decode; } } public function collectData() { $this->fetchSites(); Debug::log('Building RSS feed'); foreach($this->sites as $site) { $item = array(); $item['title'] = $site['title']; $item['timestamp'] = $site['createdAt']; $item['categories'] = $site['tags']; $item['content'] = '<img src="' . self::ASSETSURI . $site['images']['thumbnail'] . '">'; $item['uri'] = self::SITEURI . $site['slug']; $this->items[] = $item; if(count($this->items) >= 10) break; } } }