From 24ea1596fe936d20d9a1d53dadf3fc39fd9db7f2 Mon Sep 17 00:00:00 2001 From: Mikalai Daronin Date: Tue, 30 Nov 2021 13:45:55 +0300 Subject: [PATCH 1/3] [AlfaBankByBridge] new bridge for alfabank.by --- bridges/AlfaBankByBridge.php | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 bridges/AlfaBankByBridge.php diff --git a/bridges/AlfaBankByBridge.php b/bridges/AlfaBankByBridge.php new file mode 100644 index 00000000000..244bbef282d --- /dev/null +++ b/bridges/AlfaBankByBridge.php @@ -0,0 +1,80 @@ + array( + 'business' => array( + 'name' => 'Альфа Бизнес', + 'type' => 'list', + 'title' => 'В зависимости от выбора, возращает уведомления для клиентов физ. лиц либо для клиентов-юридических лиц и ИП', + 'values' => array( + 'Новости' => 'news', + 'Новости бизнеса' => 'newsBusiness' + ), + 'defaultValue' => 'news' + ), + 'fullContent' => array( + 'name' => 'Включать содержимое', + 'type' => 'checkbox', + 'title' => 'Если выбрано, содержимое уведомлений вставляется в поток (работает медленно)' + ) + ) + ); + + public function collectData() { + $business = $this->getInput('business') == 'newsBusiness'; + $fullContent = $this->getInput('fullContent') == 'on'; + + $mainPageUrl = self::URI . '/about/articles/uvedomleniya/'; + if($business) { + $mainPageUrl .= '?business=true'; + } + $html = getSimpleHTMLDOM($mainPageUrl) + or returnServerError('Could not request AlfaBank.'); + + $limit = 0; + + foreach($html->find('a.notifications__item') as $element) { + if($limit < 10) { + $item = array(); + $item['uid'] = 'urn:sha1:' . hash('sha1', $element->getAttribute('data-notification-id')); + $item['title'] = $element->find('div.item-title', 0)->innertext; + $item['timestamp'] = DateTime::createFromFormat( + 'd M Y', + $this->ruMonthsToEn($element->find('div.item-date', 0)->innertext) + )->getTimestamp(); + + $itemUrl = self::URI . $element->href; + if($business) { + $itemUrl = str_replace('?business=true', '', $itemUrl); + } + $item['uri'] = $itemUrl; + + if($fullContent) { + $itemHtml = getSimpleHTMLDOM($itemUrl); + if($itemHtml){ + $item['content'] = $itemHtml->find('div.now-p__content-text', 0)->innertext; + } + } + + $this->items[] = $item; + $limit++; + } + } + } + + public function getIcon() { + return static::URI . '/local/images/favicon.ico'; + } + + function ruMonthsToEn($date) { + $ruMonths = array( 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря' ); + $enMonths = array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ); + return str_replace($ruMonths, $enMonths, $date); + } +} From ad80f8c4c8b9bec1291793043b3e33b286d55955 Mon Sep 17 00:00:00 2001 From: Mikalai Daronin Date: Sun, 19 Dec 2021 14:47:31 +0300 Subject: [PATCH 2/3] [AlfaBankByBridge] fix codestyle and lint issues --- bridges/AlfaBankByBridge.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/bridges/AlfaBankByBridge.php b/bridges/AlfaBankByBridge.php index 244bbef282d..fc4351ddfb6 100644 --- a/bridges/AlfaBankByBridge.php +++ b/bridges/AlfaBankByBridge.php @@ -11,7 +11,8 @@ class AlfaBankByBridge extends BridgeAbstract { 'business' => array( 'name' => 'Альфа Бизнес', 'type' => 'list', - 'title' => 'В зависимости от выбора, возращает уведомления для клиентов физ. лиц либо для клиентов-юридических лиц и ИП', + 'title' => 'В зависимости от выбора, возращает уведомления для" . + " клиентов физ. лиц либо для клиентов-юридических лиц и ИП', 'values' => array( 'Новости' => 'news', 'Новости бизнеса' => 'newsBusiness' @@ -34,9 +35,7 @@ public function collectData() { if($business) { $mainPageUrl .= '?business=true'; } - $html = getSimpleHTMLDOM($mainPageUrl) - or returnServerError('Could not request AlfaBank.'); - + $html = getSimpleHTMLDOM($mainPageUrl); $limit = 0; foreach($html->find('a.notifications__item') as $element) { @@ -57,7 +56,7 @@ public function collectData() { if($fullContent) { $itemHtml = getSimpleHTMLDOM($itemUrl); - if($itemHtml){ + if($itemHtml) { $item['content'] = $itemHtml->find('div.now-p__content-text', 0)->innertext; } } @@ -72,9 +71,13 @@ public function getIcon() { return static::URI . '/local/images/favicon.ico'; } - function ruMonthsToEn($date) { - $ruMonths = array( 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря' ); - $enMonths = array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ); + private function ruMonthsToEn($date) { + $ruMonths = array( + 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', + 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря' ); + $enMonths = array( + 'January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December' ); return str_replace($ruMonths, $enMonths, $date); } } From 0d61b97b34973733768d1f3f4dcdea721ca64ef3 Mon Sep 17 00:00:00 2001 From: Mikalai Daronin Date: Sun, 19 Dec 2021 14:54:05 +0300 Subject: [PATCH 3/3] [AlfaBankByBridge] set cache timeout to 1 hour --- bridges/AlfaBankByBridge.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridges/AlfaBankByBridge.php b/bridges/AlfaBankByBridge.php index fc4351ddfb6..4b1ed48e38e 100644 --- a/bridges/AlfaBankByBridge.php +++ b/bridges/AlfaBankByBridge.php @@ -5,7 +5,7 @@ class AlfaBankByBridge extends BridgeAbstract { const NAME = 'AlfaBank.by Новости'; const URI = 'https://www.alfabank.by'; const DESCRIPTION = 'Уведомления Alfa-Now — новости от Альфа-Банка'; - const CACHE_TIMEOUT = 0; + const CACHE_TIMEOUT = 3600; // 1 hour const PARAMETERS = array( 'News' => array( 'business' => array(