<?php class GatesNotesBridge extends FeedExpander { const MAINTAINER = 'corenting'; const NAME = 'Gates Notes'; const URI = 'https://www.gatesnotes.com'; const DESCRIPTION = 'Returns the newest articles.'; const CACHE_TIMEOUT = 21600; // 6h protected function parseItem($item) { $item = parent::parseItem($item); $article_html = getSimpleHTMLDOMCached($item['uri']); if (!$article_html) { $item['content'] .= '<p><em>Could not request ' . $this->getName() . ': ' . $item['uri'] . '</em></p>'; return $item; } $article_html = defaultLinkTo($article_html, $this->getURI()); $top_description = '<p>' . $article_html->find('div.article_top_description', 0)->innertext . '</p>'; $hero_image = '<img src=' . $article_html->find('img.article_top_DMT_Image', 0)->getAttribute('data-src') . '>'; $article_body = $article_html->find('div.TGN_Article_ReadTimeSection', 0); // Convert iframe of Youtube videos to link foreach ($article_body->find('iframe') as $found) { $iframeUrl = $found->getAttribute('src'); if ($iframeUrl) { $text = 'Embedded Youtube video, click here to watch on Youtube.com'; $found->outertext = '<p><a href="' . $iframeUrl . '">' . $text . '</a></p>'; } } // Remove <link> CSS ressources foreach ($article_body->find('link') as $found) { $linkedRessourceUrl = $found->getAttribute('href'); if (str_ends_with($linkedRessourceUrl, '.css')) { $found->outertext = ''; } } $article_body = sanitize($article_body->innertext); $item['content'] = $top_description . $hero_image . $article_body; return $item; } public function collectData() { $feed = static::URI . '/rss'; $this->collectExpandableDatas($feed); } }