summaryrefslogtreecommitdiffstats
path: root/utility
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-13 22:48:31 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-13 22:48:31 +0200
commitce7cd121f42b093569d7a31fac3bcd5837429cff (patch)
tree5cbe7751eb4c53cffd0ea1cbd61be4104e212462 /utility
parent0fa0fb22c72653de35eb3ff8b9ffcf833a96e901 (diff)
fix import scoping issue that caused feeds not to be imported at times, set created folders to be opened by default
Diffstat (limited to 'utility')
-rw-r--r--utility/feedfetcher.php39
1 files changed, 17 insertions, 22 deletions
diff --git a/utility/feedfetcher.php b/utility/feedfetcher.php
index 27828336d..65d6b2683 100644
--- a/utility/feedfetcher.php
+++ b/utility/feedfetcher.php
@@ -62,10 +62,9 @@ class FeedFetcher implements IFeedFetcher {
// TODO: write unittests!
$simplePie = new \SimplePie_Core();
$simplePie->set_feed_url( $url );
- $simplePie->enable_cache( false );
+ $simplePie->enable_cache(true);
$simplePie->set_cache_location($this->cacheDirectory);
$simplePie->set_cache_duration($this->cacheDuration);
- $simplePie->enable_cache(true);
if (!$simplePie->init()) {
throw new FetcherException('Could not initialize simple pie');
@@ -115,18 +114,21 @@ class FeedFetcher implements IFeedFetcher {
$feed->setUrlHash(md5($url));
$feed->setAdded(time());
+ // get the favicon from the feed
$favicon = $simplePie->get_image_url();
-
- if ($favicon !== null && $this->checkFavicon($favicon)) {
+ if ($favicon) {
$feed->setFaviconLink($favicon);
+ // or the webpage
} else {
$webFavicon = $this->discoverFavicon($url);
if ($webFavicon !== null) {
$feed->setFaviconLink($webFavicon);
}
}
+
return array($feed, $items);
+
} catch(\Exception $ex){
throw new FetcherException($ex->getMessage());
}
@@ -134,21 +136,17 @@ class FeedFetcher implements IFeedFetcher {
}
- private function checkFavicon($favicon) {
- if ($favicon === null || $favicon == false)
+ private function isValidFavIcon($favicon) {
+ if (!$favicon){
return false;
+ }
$file = new \SimplePie_File($favicon);
- // size in bytes
- $filesize = strlen($file->body);
- if($file->success && $filesize > 0 && $filesize < 50000) { //bigger files are not considered favicons
+ if($file->success) {
$sniffer = new \SimplePie_Content_Type_Sniffer($file);
if(substr($sniffer->get_type(), 0, 6) === 'image/') {
- $imgsize = @getimagesize($favicon);
- if ($imgsize && $imgsize['0'] <= 32 && $imgsize['1'] <= 32) { //bigger images are not considered favicons
- return true;
- }
+ return true;
}
}
return false;
@@ -156,16 +154,9 @@ class FeedFetcher implements IFeedFetcher {
private function discoverFavicon($url) {
- //try webroot favicon
- $favicon = \SimplePie_Misc::absolutize_url('/favicon.ico', $url);
-
- if($this->checkFavicon($favicon))
- return $favicon;
//try to extract favicon from web page
- $absoluteUrl = \SimplePie_Misc::absolutize_url('/', $url);
- $page = $this->api->getUrlContent($absoluteUrl);
-
+ $page = $this->api->getUrlContent($url);
if ( FALSE !== $page ) {
$doc = @\DOMDocument::loadHTML($page);
@@ -175,14 +166,18 @@ class FeedFetcher implements IFeedFetcher {
if ( $elements->length > 0 ) {
if ( $favicon = $elements->item(0)->getAttribute('href') ) {
+
// the specified uri might be an url, an absolute or a relative path
// we have to turn it into a url to be able to display it out of context
if ( !parse_url($favicon, PHP_URL_SCHEME) ) {
+ $absoluteUrl = \SimplePie_Misc::absolutize_url('/', $url);
$favicon = \SimplePie_Misc::absolutize_url($favicon, $absoluteUrl);
}
- if($this->checkFavicon($favicon))
+ if($this->isValidFavIcon($favicon)){
return $favicon;
+ }
+
}
}
}