diff --git a/bridges/CaschyBridge.php b/bridges/CaschyBridge.php new file mode 100644 index 00000000..44ce407c --- /dev/null +++ b/bridges/CaschyBridge.php @@ -0,0 +1,74 @@ + [ + 'name' => 'Category', + 'type' => 'list', + 'values' => [ + 'Alle News' + => 'https://stadt-bremerhaven.de/feed/' + ] + ], + 'limit' => [ + 'name' => 'Limit', + 'type' => 'number', + 'required' => false, + 'title' => 'Specify number of full articles to return', + 'defaultValue' => 5 + ] + ]]; + const LIMIT = 5; + + public function collectData() + { + $this->collectExpandableDatas( + $this->getInput('category'), + $this->getInput('limit') ?: static::LIMIT + ); + } + + protected function parseItem($feedItem) + { + $item = parent::parseItem($feedItem); + + if (strpos($item['uri'], 'https://stadt-bremerhaven.de/') !== 0) { + return $item; + } + + $article = getSimpleHTMLDOMCached($item['uri']); + + if ($article) { + $article = defaultLinkTo($article, $item['uri']); + $item = $this->addArticleToItem($item, $article); + } + + return $item; + } + + private function addArticleToItem($item, $article) + { + // remove unwanted stuff + foreach ($article->find('div.video-container, div.aawp, p.aawp-disclaimer, iframe.wp-embedded-content, div.wp-embed, p.wp-caption-text') as $element) { + $element->remove(); + } + // reload html, as remove() is buggy + $article = str_get_html($article->outertext); + + $content = $article->find('.entry-inner', 0); + if ($content) { + $contentElements = $content->find( + 'div, p, h3, ul, table, pre' + ); + $item['content'] = implode('', $contentElements); + } + + return $item; + } +}