File Manager

Current Directory: /home/astoriaah/www/administrator/components/com_widgetkit/plugins/content/rss/src
Viewing File: /home/astoriaah/www/administrator/components/com_widgetkit/plugins/content/rss/src/RSSApp.php
<?php namespace YOOtheme\Widgetkit\Content\rss; use YOOtheme\Framework\Application; use YOOtheme\Framework\ApplicationAware; class RSSApp extends ApplicationAware { /** * Constructor. * * @param Application $app */ public function __construct(Application $app) { $this->app = $app; } public function fetch($params, $content) { // Cache settings $now = time(); $expires = 5 * 60; // Cache invalid? if ( !isset($content['hash']) || // never cached $now - $content['hashed'] > $expires || // cached values too old md5(serialize($params)) != $content['hash'] ) { // content settings have changed $feed = simplexml_load_string($this->url_get_contents($params['source'])); $posts = []; if ($feed && isset($feed->channel->item)) { foreach ($feed->channel->item as $item) { $posts[] = [ 'title' => (string) $item->title, 'content' => (string) $item->description, 'date' => (string) $item->pubDate, 'link' => trim($item->link), ]; if ( ($params['limit'] && sizeof($posts) == $params['limit']) || sizeof($posts) == 60 ) { break; } } // write cache $content['prepared'] = json_encode($posts); $content['hash'] = md5(serialize($params)); $content['hashed'] = $now; $this->app['content']->save($content->toArray()); return $posts; } if (!isset($content['prepared']) && md5(serialize($params)) != $content['hash']) { return $posts; } } // read from cache $posts = json_decode($content['prepared'], true); return $posts ?: []; } protected function url_get_contents($url) { $content = ''; if (function_exists('curl_exec') && ini_get('open_basedir') === '') { $conn = curl_init($url); curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($conn, CURLOPT_FRESH_CONNECT, true); curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1); curl_setopt( $conn, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17' ); curl_setopt($conn, CURLOPT_AUTOREFERER, true); curl_setopt($conn, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($conn, CURLOPT_VERBOSE, 0); $content = curl_exec($conn); curl_close($conn); } if (!$content && function_exists('file_get_contents')) { $content = @file_get_contents($url); } if (!$content && function_exists('fopen') && function_exists('stream_get_contents')) { $handle = @fopen($url, 'r'); $content = @stream_get_contents($handle); } return $content; } /** * Hashes request parameters. * * @param $params * @return string */ protected function hash($params) { $fields = [$params]; return md5(serialize($fields)); } }