From b4aea21f7185acc81b64f82b92a1c2b2feb19668 Mon Sep 17 00:00:00 2001 From: logmanoriginal Date: Sat, 22 Sep 2018 20:44:54 +0200 Subject: [PATCH] [DesoutterBridge] Add new bridge --- bridges/DesoutterBridge.php | 240 ++++++++++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 bridges/DesoutterBridge.php diff --git a/bridges/DesoutterBridge.php b/bridges/DesoutterBridge.php new file mode 100644 index 00000000..94059f63 --- /dev/null +++ b/bridges/DesoutterBridge.php @@ -0,0 +1,240 @@ + array( + 'news_lang' => array( + 'name' => 'Language', + 'type' => 'list', + 'required' => true, + 'title' => 'Select your language', + 'defaultValue' => 'Corporate', + 'values' => array( + 'Corporate' + => 'https://www.desouttertools.com/about-desoutter/news-events', + 'Česko' + => 'https://www.desouttertools.cz/o-desoutter/aktuality-udalsoti', + 'Deutschland' + => 'https://www.desoutter.de/ueber-desoutter/news-events', + 'España' + => 'https://www.desouttertools.es/sobre-desoutter/noticias-eventos', + 'México' + => 'https://www.desouttertools.mx/acerca-desoutter/noticias-eventos', + 'France' + => 'https://www.desouttertools.fr/a-propos-de-desoutter/actualites-evenements', + 'Magyarország' + => 'https://www.desouttertools.hu/a-desoutter-vallalatrol/hirek-esemenyek', + 'Italia' + => 'https://www.desouttertools.it/su-desoutter/news-eventi', + '日本' + => 'https://www.desouttertools.jp/desotanituite/niyusu-ibento', + '대한민국' + => 'https://www.desouttertools.co.kr/desoteoe-daehaeseo/nyuseu-mic-ibenteu', + 'Polska' + => 'https://www.desouttertools.pl/o-desoutter/aktualnosci-wydarzenia', + 'Brasil' + => 'https://www.desouttertools.com.br/sobre-desoutter/noti%C2%ADcias-eventos', + 'Portugal' + => 'https://www.desouttertools.pt/sobre-desoutter/notIcias-eventos', + 'România' + => 'https://www.desouttertools.ro/despre-desoutter/noutati-evenimente', + 'Российская Федерация' + => 'https://www.desouttertools.com.ru/o-desoutter/novosti-mieropriiatiia', + 'Slovensko' + => 'https://www.desouttertools.sk/o-spolocnosti-desoutter/novinky-udalosti', + 'Slovenija' + => 'https://www.desouttertools.si/o-druzbi-desoutter/novice-dogodki', + 'Sverige' + => 'https://www.desouttertools.se/om-desoutter/nyheter-evenemang', + 'Türkiye' + => 'https://www.desoutter.com.tr/desoutter-hakkinda/haberler-etkinlikler', + '中国' + => 'https://www.desouttertools.com.cn/guan-yu-ma-tou/xin-wen-he-huo-dong', + ) + ), + ), + self::CATEGORY_INDUSTRY => array( + 'industry_lang' => array( + 'name' => 'Language', + 'type' => 'list', + 'required' => true, + 'title' => 'Select your language', + 'defaultValue' => 'Corporate', + 'values' => array( + 'Corporate' + => 'https://www.desouttertools.com/industry-4-0/news', + 'Česko' + => 'https://www.desouttertools.cz/prumysl-4-0/novinky', + 'Deutschland' + => 'https://www.desoutter.de/industrie-4-0/news', + 'España' + => 'https://www.desouttertools.es/industria-4-0/noticias', + 'México' + => 'https://www.desouttertools.mx/industria-4-0/noticias', + 'France' + => 'https://www.desouttertools.fr/industrie-4-0/actualites', + 'Magyarország' + => 'https://www.desouttertools.hu/industry-4-0/hirek', + 'Italia' + => 'https://www.desouttertools.it/industry-4-0/news', + '日本' + => 'https://www.desouttertools.jp/industry-4-0/news', + '대한민국' + => 'https://www.desouttertools.co.kr/industry-4-0/news', + 'Polska' + => 'https://www.desouttertools.pl/przemysl-4-0/wiadomosci', + 'Brasil' + => 'https://www.desouttertools.com.br/industria-4-0/noticias', + 'Portugal' + => 'https://www.desouttertools.pt/industria-4-0/noticias', + 'România' + => 'https://www.desouttertools.ro/industry-4-0/noutati', + 'Российская Федерация' + => 'https://www.desouttertools.com.ru/industry-4-0/news', + 'Slovensko' + => 'https://www.desouttertools.sk/priemysel-4-0/novinky', + 'Slovenija' + => 'https://www.desouttertools.si/industrija-4-0/novice', + 'Sverige' + => 'https://www.desouttertools.se/industri-4-0/nyheter', + 'Türkiye' + => 'https://www.desoutter.com.tr/endustri-4-0/haberler', + '中国' + => 'https://www.desouttertools.com.cn/industry-4-0/news', + ) + ), + ), + 'global' => array( + 'full' => array( + 'name' => 'Load full articles', + 'type' => 'checkbox', + 'required' => false, + 'title' => 'Enable to load the full article for each item' + ) + ) + ); + + private $title; + + public function getURI() { + switch($this->queriedContext) { + case self::CATEGORY_NEWS: + return $this->getInput('news_lang') ?: parent::getURI(); + case self::CATEGORY_INDUSTRY: + return $this->getInput('industry_lang') ?: parent::getURI(); + } + + return parent::getURI(); + } + + public function getName() { + return isset($this->title) ? $this->title . ' - ' . parent::getName() : parent::getName(); + } + + public function collectData() { + + // Uncomment to generate list of languages automtically (dev mode) + /* + switch($this->queriedContext) { + case self::CATEGORY_NEWS: + $this->extractNewsLanguages(); die; + case self::CATEGORY_INDUSTRY: + $this->extractIndustryLanguages(); die; + } + */ + + $html = getSimpleHTMLDOM($this->getURI()) + or returnServerError('Could not request ' . $this->getURI()); + + $html = defaultLinkTo($html, $this->getURI()); + + $this->title = html_entity_decode($html->find('title', 0)->plaintext, ENT_QUOTES); + + foreach($html->find('article') as $article) { + $item = array(); + + $item['uri'] = $article->find('[itemprop="name"]', 0)->href; + $item['title'] = $article->find('[itemprop="name"]', 0)->title; + + if($this->getInput('full')) { + $item['content'] = $this->getFullNewsArticle($item['uri']); + } else { + $item['content'] = $article->find('[itemprop="description"]', 0)->plaintext; + } + + $this->items[] = $item; + } + + } + + private function getFullNewsArticle($uri) { + $html = getSimpleHTMLDOMCached($uri) + or returnServerError('Unable to load full article!'); + + $html = defaultLinkTo($html, $this->getURI()); + + return $html->find('section.article', 0); + } + + /** + * Generates a HTML page with a PHP formatted array of languages, + * pointing to the corresponding news pages. Implementation is based + * on the 'Corporate' site. + * @return void + */ + private function extractNewsLanguages() { + $html = getSimpleHTMLDOMCached('https://www.desouttertools.com/about-desoutter/news-events') + or returnServerError('Error loading news!'); + + $html = defaultLinkTo($html, static::URI); + + $items = $html->find('ul[class="dropdown-menu"] li'); + + $list = "\t'Corporate'\n\t=> 'https://www.desouttertools.com/about-desoutter/news-events',\n"; + + foreach($items as $item) { + $lang = trim($item->plaintext); + $uri = $item->find('a', 0)->href; + + $list .= "\t'{$lang}'\n\t=> '{$uri}',\n"; + } + + echo $list; + } + + /** + * Generates a HTML page with a PHP formatted array of languages, + * pointing to the corresponding news pages. Implementation is based + * on the 'Corporate' site. + * @return void + */ + private function extractIndustryLanguages() { + $html = getSimpleHTMLDOMCached('https://www.desouttertools.com/industry-4-0/news') + or returnServerError('Error loading news!'); + + $html = defaultLinkTo($html, static::URI); + + $items = $html->find('ul[class="dropdown-menu"] li'); + + $list = "\t'Corporate'\n\t=> 'https://www.desouttertools.com/industry-4-0/news',\n"; + + foreach($items as $item) { + $lang = trim($item->plaintext); + $uri = $item->find('a', 0)->href; + + $list .= "\t'{$lang}'\n\t=> '{$uri}',\n"; + } + + echo $list; + } + +}