aboutsummaryrefslogtreecommitdiff
path: root/bridges/ZDNetBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/ZDNetBridge.php')
-rw-r--r--bridges/ZDNetBridge.php395
1 files changed, 200 insertions, 195 deletions
diff --git a/bridges/ZDNetBridge.php b/bridges/ZDNetBridge.php
index 927e37ae..09bde8e3 100644
--- a/bridges/ZDNetBridge.php
+++ b/bridges/ZDNetBridge.php
@@ -1,204 +1,209 @@
<?php
-class ZDNetBridge extends FeedExpander {
- const MAINTAINER = 'ORelio';
- const NAME = 'ZDNet Bridge';
- const URI = 'https://www.zdnet.com/';
- const DESCRIPTION = 'Technology News, Analysis, Comments and Product Reviews for IT Professionals.';
+class ZDNetBridge extends FeedExpander
+{
+ const MAINTAINER = 'ORelio';
+ const NAME = 'ZDNet Bridge';
+ const URI = 'https://www.zdnet.com/';
+ const DESCRIPTION = 'Technology News, Analysis, Comments and Product Reviews for IT Professionals.';
- //http://www.zdnet.com/zdnet.opml
- const PARAMETERS = array( array(
- 'feed' => array(
- 'name' => 'Feed',
- 'type' => 'list',
- 'values' => array(
- 'Subscribe to ZDNet RSS Feeds' => array(
- 'All Blogs' => 'blog',
- 'Just News' => 'news',
- 'All Reviews' => 'topic/reviews',
- 'Latest Downloads' => 'downloads!recent',
- 'Latest Articles' => '/',
- 'Latest Australia Articles' => 'au',
- 'Latest UK Articles' => 'uk',
- 'Latest US Articles' => 'us',
- 'Latest Asia Articles' => 'as'
- ),
- 'Keep up with ZDNet Blogs RSS:' => array(
- 'Transforming the Datacenter' => 'blog/transforming-datacenter',
- 'SMB India' => 'blog/smb-india',
- 'Indonesia BizTech' => 'blog/indonesia-biztech',
- 'Hong Kong Techie' => 'blog/hong-kong-techie',
- 'Tech Taiwan' => 'blog/tech-taiwan',
- 'Startup India' => 'blog/startup-india',
- 'Starting Up Asia' => 'blog/starting-up-asia',
- 'Next-Gen Partner' => 'blog/partner',
- 'Post-PC Developments' => 'blog/post-pc',
- 'Benelux' => 'blog/benelux',
- 'Heat Sink' => 'blog/heat-sink',
- 'Italy\'s got tech' => 'blog/italy',
- 'African Enterprise' => 'blog/african-enterprise',
- 'New Tech for Old India' => 'blog/new-india',
- 'Estonia Uncovered' => 'blog/estonia',
- 'IT Iberia' => 'blog/iberia',
- 'Brazil Tech' => 'blog/brazil',
- '500 words into the future' => 'blog/500-words-into-the-future',
- 'ÜberTech' => 'blog/ubertech',
- 'All About Microsoft' => 'blog/microsoft',
- 'Back office' => 'blog/back-office',
- 'Barker Bites Back' => 'blog/barker-bites-back',
- 'Between the Lines' => 'blog/btl',
- 'Big on Data' => 'blog/big-data',
- 'bootstrappr' => 'blog/bootstrappr',
- 'By The Way' => 'blog/by-the-way',
- 'Central European Processing' => 'blog/central-europe',
- 'Cloud Builders' => 'blog/cloud-builders',
- 'Communication Breakdown' => 'blog/communication-breakdown',
- 'Collaboration 2.0' => 'blog/collaboration',
- 'Constellation Research' => 'blog/constellation',
- 'Consumerization: BYOD' => 'blog/consumerization',
- 'DIY-IT' => 'blog/diy-it',
- 'Enterprise Web 2.0' => 'blog/hinchcliffe',
- 'Five Nines: The Next Gen Datacenter' => 'blog/datacenter',
- 'Forrester Research' => 'blog/forrester',
- 'Full Duplex' => 'blog/full-duplex',
- 'Gen Why?' => 'blog/gen-why',
- 'Hardware 2.0' => 'blog/hardware',
- 'Identity Matters' => 'blog/identity',
- 'iGeneration' => 'blog/igeneration',
- 'Internet of Everything' => 'blog/cisco',
- 'Beyond IT Failure' => 'blog/projectfailures',
- 'Jamie\'s Mostly Linux Stuff' => 'blog/jamies-mostly-linux-stuff',
- 'Jack\'s Blog' => 'blog/jacks-blog',
- 'Laptops & Desktops' => 'blog/computers',
- 'Linux and Open Source' => 'blog/open-source',
- 'London Calling' => 'blog/london',
- 'Mapping Babel' => 'blog/mapping-babel',
- 'Mixed Signals' => 'blog/mixed-signals',
- 'Mobile India' => 'blog/mobile-india',
- 'Mobile News' => 'blog/mobile-news',
- 'Networking' => 'blog/networking',
- 'Norse Code' => 'blog/norse-code',
- 'Null Pointer' => 'blog/null-pointer',
- 'The Full Tilt' => 'blog/the-full-tilt',
- 'Pinoy Post' => 'blog/pinoy-post',
- 'Practically Tech' => 'blog/practically-tech',
- 'Product Central' => 'blog/product-central',
- 'Pulp Tech' => 'blog/violetblue',
- 'Qubits and Pieces' => 'blog/qubits-and-pieces',
- 'Securify This!' => 'blog/securify-this',
- 'Service Oriented' => 'blog/service-oriented',
- 'Small Talk' => 'blog/small-talk',
- 'Small Business Matters' => 'blog/small-business-matters',
- 'Smartphones and Cell Phones' => 'blog/cell-phones',
- 'Social Business' => 'blog/feeds',
- 'Social CRM: The Conversation' => 'blog/crm',
- 'Software & Services Safari' => 'blog/sommer',
- 'Storage Bits' => 'blog/storage',
- 'Stacking up Open Clouds' => 'blog/apac-redhat',
- 'Techie Isles' => 'blog/techie-isles',
- 'Technolatte' => 'blog/technolatte',
- 'Tech Podium' => 'blog/tech-podium',
- 'Tel Aviv Tech' => 'blog/tel-aviv',
- 'Tech Broiler' => 'blog/perlow',
- 'The SANMAN' => 'blog/the-sanman',
- 'The open source revolution' => 'blog/the-open-source-revolution',
- 'The German View' => 'blog/german',
- 'The Ed Bott Report' => 'blog/bott',
- 'The Mobile Gadgeteer' => 'blog/mobile-gadgeteer',
- 'The Apple Core' => 'blog/apple',
- 'Tom Foremski: IMHO' => 'blog/foremski',
- 'Twisted Wire' => 'blog/twisted-wire',
- 'Vive la tech' => 'blog/france',
- 'Virtually Speaking' => 'blog/virtualization',
- 'View from China' => 'blog/china',
- 'Web design & Free Software' => 'blog/web-design-and-free-software',
- 'ZDNet Government' => 'blog/government',
- 'ZDNet UK Book Reviews' => 'blog/zdnet-uk-book-reviews',
- 'ZDNet UK First Take' => 'blog/zdnet-uk-first-take',
- 'Zero Day' => 'blog/security'
- ),
- 'ZDNet Hot Topics RSS:' => array(
- 'Apple' => 'topic/apple',
- 'Collaboration' => 'topic/collaboration',
- 'Enterprise Software' => 'topic/enterprise-software',
- 'Google' => 'topic/google',
- 'Great debate' => 'topic/great-debate',
- 'Hardware' => 'topic/hardware',
- 'IBM' => 'topic/ibm',
- 'iOS' => 'topic/ios',
- 'iPhone' => 'topic/iphone',
- 'iPad' => 'topic/ipad',
- 'IT Priorities' => 'topic/it-priorities',
- 'Laptops' => 'topic/laptops',
- 'Legal' => 'topic/legal',
- 'Linux' => 'topic/linux',
- 'Microsoft' => 'topic/microsoft',
- 'Mobile OS' => 'topic/mobile-os',
- 'Mobility' => 'topic/mobility',
- 'Networking' => 'topic/networking',
- 'Oracle' => 'topic/oracle',
- 'Processors' => 'topic/processors',
- 'Samsung' => 'topic/samsung',
- 'Security' => 'topic/security',
- 'Small business: going big on mobility' => 'topic/small-business-going-big-on-mobility'
- ),
- 'Product Blogs:' => array(
- 'Digital Cameras & Camcorders' => 'blog/digitalcameras',
- 'Home Theater' => 'blog/home-theater',
- 'Laptops and Desktops' => 'blog/computers',
- 'The Mobile Gadgeteer' => 'blog/mobile-gadgeteer',
- 'Smartphones and Cell Phones' => 'blog/cell-phones',
- 'The ToyBox' => 'blog/gadgetreviews'
- ),
- 'Vertical Blogs:' => array(
- 'ZDNet Education' => 'blog/education',
- 'ZDNet Healthcare' => 'blog/healthcare',
- 'ZDNet Government' => 'blog/government'
- )
- )
- ),
- 'limit' => self::LIMIT,
- ));
+ //http://www.zdnet.com/zdnet.opml
+ const PARAMETERS = [ [
+ 'feed' => [
+ 'name' => 'Feed',
+ 'type' => 'list',
+ 'values' => [
+ 'Subscribe to ZDNet RSS Feeds' => [
+ 'All Blogs' => 'blog',
+ 'Just News' => 'news',
+ 'All Reviews' => 'topic/reviews',
+ 'Latest Downloads' => 'downloads!recent',
+ 'Latest Articles' => '/',
+ 'Latest Australia Articles' => 'au',
+ 'Latest UK Articles' => 'uk',
+ 'Latest US Articles' => 'us',
+ 'Latest Asia Articles' => 'as'
+ ],
+ 'Keep up with ZDNet Blogs RSS:' => [
+ 'Transforming the Datacenter' => 'blog/transforming-datacenter',
+ 'SMB India' => 'blog/smb-india',
+ 'Indonesia BizTech' => 'blog/indonesia-biztech',
+ 'Hong Kong Techie' => 'blog/hong-kong-techie',
+ 'Tech Taiwan' => 'blog/tech-taiwan',
+ 'Startup India' => 'blog/startup-india',
+ 'Starting Up Asia' => 'blog/starting-up-asia',
+ 'Next-Gen Partner' => 'blog/partner',
+ 'Post-PC Developments' => 'blog/post-pc',
+ 'Benelux' => 'blog/benelux',
+ 'Heat Sink' => 'blog/heat-sink',
+ 'Italy\'s got tech' => 'blog/italy',
+ 'African Enterprise' => 'blog/african-enterprise',
+ 'New Tech for Old India' => 'blog/new-india',
+ 'Estonia Uncovered' => 'blog/estonia',
+ 'IT Iberia' => 'blog/iberia',
+ 'Brazil Tech' => 'blog/brazil',
+ '500 words into the future' => 'blog/500-words-into-the-future',
+ 'ÜberTech' => 'blog/ubertech',
+ 'All About Microsoft' => 'blog/microsoft',
+ 'Back office' => 'blog/back-office',
+ 'Barker Bites Back' => 'blog/barker-bites-back',
+ 'Between the Lines' => 'blog/btl',
+ 'Big on Data' => 'blog/big-data',
+ 'bootstrappr' => 'blog/bootstrappr',
+ 'By The Way' => 'blog/by-the-way',
+ 'Central European Processing' => 'blog/central-europe',
+ 'Cloud Builders' => 'blog/cloud-builders',
+ 'Communication Breakdown' => 'blog/communication-breakdown',
+ 'Collaboration 2.0' => 'blog/collaboration',
+ 'Constellation Research' => 'blog/constellation',
+ 'Consumerization: BYOD' => 'blog/consumerization',
+ 'DIY-IT' => 'blog/diy-it',
+ 'Enterprise Web 2.0' => 'blog/hinchcliffe',
+ 'Five Nines: The Next Gen Datacenter' => 'blog/datacenter',
+ 'Forrester Research' => 'blog/forrester',
+ 'Full Duplex' => 'blog/full-duplex',
+ 'Gen Why?' => 'blog/gen-why',
+ 'Hardware 2.0' => 'blog/hardware',
+ 'Identity Matters' => 'blog/identity',
+ 'iGeneration' => 'blog/igeneration',
+ 'Internet of Everything' => 'blog/cisco',
+ 'Beyond IT Failure' => 'blog/projectfailures',
+ 'Jamie\'s Mostly Linux Stuff' => 'blog/jamies-mostly-linux-stuff',
+ 'Jack\'s Blog' => 'blog/jacks-blog',
+ 'Laptops & Desktops' => 'blog/computers',
+ 'Linux and Open Source' => 'blog/open-source',
+ 'London Calling' => 'blog/london',
+ 'Mapping Babel' => 'blog/mapping-babel',
+ 'Mixed Signals' => 'blog/mixed-signals',
+ 'Mobile India' => 'blog/mobile-india',
+ 'Mobile News' => 'blog/mobile-news',
+ 'Networking' => 'blog/networking',
+ 'Norse Code' => 'blog/norse-code',
+ 'Null Pointer' => 'blog/null-pointer',
+ 'The Full Tilt' => 'blog/the-full-tilt',
+ 'Pinoy Post' => 'blog/pinoy-post',
+ 'Practically Tech' => 'blog/practically-tech',
+ 'Product Central' => 'blog/product-central',
+ 'Pulp Tech' => 'blog/violetblue',
+ 'Qubits and Pieces' => 'blog/qubits-and-pieces',
+ 'Securify This!' => 'blog/securify-this',
+ 'Service Oriented' => 'blog/service-oriented',
+ 'Small Talk' => 'blog/small-talk',
+ 'Small Business Matters' => 'blog/small-business-matters',
+ 'Smartphones and Cell Phones' => 'blog/cell-phones',
+ 'Social Business' => 'blog/feeds',
+ 'Social CRM: The Conversation' => 'blog/crm',
+ 'Software & Services Safari' => 'blog/sommer',
+ 'Storage Bits' => 'blog/storage',
+ 'Stacking up Open Clouds' => 'blog/apac-redhat',
+ 'Techie Isles' => 'blog/techie-isles',
+ 'Technolatte' => 'blog/technolatte',
+ 'Tech Podium' => 'blog/tech-podium',
+ 'Tel Aviv Tech' => 'blog/tel-aviv',
+ 'Tech Broiler' => 'blog/perlow',
+ 'The SANMAN' => 'blog/the-sanman',
+ 'The open source revolution' => 'blog/the-open-source-revolution',
+ 'The German View' => 'blog/german',
+ 'The Ed Bott Report' => 'blog/bott',
+ 'The Mobile Gadgeteer' => 'blog/mobile-gadgeteer',
+ 'The Apple Core' => 'blog/apple',
+ 'Tom Foremski: IMHO' => 'blog/foremski',
+ 'Twisted Wire' => 'blog/twisted-wire',
+ 'Vive la tech' => 'blog/france',
+ 'Virtually Speaking' => 'blog/virtualization',
+ 'View from China' => 'blog/china',
+ 'Web design & Free Software' => 'blog/web-design-and-free-software',
+ 'ZDNet Government' => 'blog/government',
+ 'ZDNet UK Book Reviews' => 'blog/zdnet-uk-book-reviews',
+ 'ZDNet UK First Take' => 'blog/zdnet-uk-first-take',
+ 'Zero Day' => 'blog/security'
+ ],
+ 'ZDNet Hot Topics RSS:' => [
+ 'Apple' => 'topic/apple',
+ 'Collaboration' => 'topic/collaboration',
+ 'Enterprise Software' => 'topic/enterprise-software',
+ 'Google' => 'topic/google',
+ 'Great debate' => 'topic/great-debate',
+ 'Hardware' => 'topic/hardware',
+ 'IBM' => 'topic/ibm',
+ 'iOS' => 'topic/ios',
+ 'iPhone' => 'topic/iphone',
+ 'iPad' => 'topic/ipad',
+ 'IT Priorities' => 'topic/it-priorities',
+ 'Laptops' => 'topic/laptops',
+ 'Legal' => 'topic/legal',
+ 'Linux' => 'topic/linux',
+ 'Microsoft' => 'topic/microsoft',
+ 'Mobile OS' => 'topic/mobile-os',
+ 'Mobility' => 'topic/mobility',
+ 'Networking' => 'topic/networking',
+ 'Oracle' => 'topic/oracle',
+ 'Processors' => 'topic/processors',
+ 'Samsung' => 'topic/samsung',
+ 'Security' => 'topic/security',
+ 'Small business: going big on mobility' => 'topic/small-business-going-big-on-mobility'
+ ],
+ 'Product Blogs:' => [
+ 'Digital Cameras & Camcorders' => 'blog/digitalcameras',
+ 'Home Theater' => 'blog/home-theater',
+ 'Laptops and Desktops' => 'blog/computers',
+ 'The Mobile Gadgeteer' => 'blog/mobile-gadgeteer',
+ 'Smartphones and Cell Phones' => 'blog/cell-phones',
+ 'The ToyBox' => 'blog/gadgetreviews'
+ ],
+ 'Vertical Blogs:' => [
+ 'ZDNet Education' => 'blog/education',
+ 'ZDNet Healthcare' => 'blog/healthcare',
+ 'ZDNet Government' => 'blog/government'
+ ]
+ ]
+ ],
+ 'limit' => self::LIMIT,
+ ]];
- public function collectData(){
- $baseUri = static::URI;
- $feed = $this->getInput('feed');
- if(strpos($feed, 'downloads!') !== false) {
- $feed = str_replace('downloads!', '', $feed);
- $baseUri = str_replace('www.', 'downloads.', $baseUri);
- }
- $url = $baseUri . trim($feed, '/') . '/rss.xml';
- $limit = $this->getInput('limit') ?? 10;
- $this->collectExpandableDatas($url, $limit);
- }
+ public function collectData()
+ {
+ $baseUri = static::URI;
+ $feed = $this->getInput('feed');
+ if (strpos($feed, 'downloads!') !== false) {
+ $feed = str_replace('downloads!', '', $feed);
+ $baseUri = str_replace('www.', 'downloads.', $baseUri);
+ }
+ $url = $baseUri . trim($feed, '/') . '/rss.xml';
+ $limit = $this->getInput('limit') ?? 10;
+ $this->collectExpandableDatas($url, $limit);
+ }
- protected function parseItem($item){
- $item = parent::parseItem($item);
+ protected function parseItem($item)
+ {
+ $item = parent::parseItem($item);
- $article = getSimpleHTMLDOMCached($item['uri']);
- if(!$article)
- returnServerError('Could not request ZDNet: ' . $url);
+ $article = getSimpleHTMLDOMCached($item['uri']);
+ if (!$article) {
+ returnServerError('Could not request ZDNet: ' . $url);
+ }
- $contents = $article->find('article', 0)->innertext;
- foreach(array(
- '<div class="shareBar"',
- '<div class="shortcodeGalleryWrapper"',
- '<div class="relatedContent',
- '<div class="downloadNow',
- '<div data-shortcode',
- '<div id="sharethrough',
- '<div id="inpage-video',
- '<div class="share-bar-wrapper"',
- ) as $div_start) {
- $contents = stripRecursiveHtmlSection($contents, 'div', $div_start);
- }
- $contents = stripWithDelimiters($contents, '<script', '</script>');
- $contents = stripWithDelimiters($contents, '<meta itemprop="image"', '>');
- $contents = stripWithDelimiters($contents, '<svg class="svg-symbol', '</svg>');
- $contents = trim(stripWithDelimiters($contents, '<section class="sharethrough-top', '</section>'));
- $item['content'] = $contents;
+ $contents = $article->find('article', 0)->innertext;
+ foreach (
+ [
+ '<div class="shareBar"',
+ '<div class="shortcodeGalleryWrapper"',
+ '<div class="relatedContent',
+ '<div class="downloadNow',
+ '<div data-shortcode',
+ '<div id="sharethrough',
+ '<div id="inpage-video',
+ '<div class="share-bar-wrapper"',
+ ] as $div_start
+ ) {
+ $contents = stripRecursiveHtmlSection($contents, 'div', $div_start);
+ }
+ $contents = stripWithDelimiters($contents, '<script', '</script>');
+ $contents = stripWithDelimiters($contents, '<meta itemprop="image"', '>');
+ $contents = stripWithDelimiters($contents, '<svg class="svg-symbol', '</svg>');
+ $contents = trim(stripWithDelimiters($contents, '<section class="sharethrough-top', '</section>'));
+ $item['content'] = $contents;
- return $item;
-
- }
+ return $item;
+ }
}