aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Models/Context.php2
-rw-r--r--app/Models/Feed.php24
-rwxr-xr-xapp/actualize_script.php1
3 files changed, 21 insertions, 6 deletions
diff --git a/app/Models/Context.php b/app/Models/Context.php
index a38b1e0f1..889ddab1e 100644
--- a/app/Models/Context.php
+++ b/app/Models/Context.php
@@ -37,6 +37,8 @@ class FreshRSS_Context {
public static $id_max = '';
public static $sinceHours = 0;
+ public static $isCron = false;
+
/**
* Initialize the context.
*
diff --git a/app/Models/Feed.php b/app/Models/Feed.php
index 21c1ef93d..b78f5f064 100644
--- a/app/Models/Feed.php
+++ b/app/Models/Feed.php
@@ -131,13 +131,25 @@ class FreshRSS_Feed extends Minz_Model {
return $this->nbNotRead;
}
public function faviconPrepare() {
- $file = DATA_PATH . '/favicons/' . $this->hash() . '.txt';
- if (!file_exists($file)) {
- $t = $this->website;
- if ($t == '') {
- $t = $this->url;
+ require_once(LIB_PATH . '/favicons.php');
+ $url = $this->website;
+ if ($url == '') {
+ $url = $this->url;
+ }
+ $txt = $favicons_dir . $this->hash() . '.txt';
+ if (!file_exists($txt)) {
+ file_put_contents($txt, $url);
+ }
+ if (FreshRSS_Context::$isCron) {
+ $ico = $favicons_dir . $this->hash() . '.ico';
+ $ico_mtime = @filemtime($ico);
+ $txt_mtime = @filemtime($txt);
+ if ($txt_mtime != false &&
+ ($ico_mtime == false || $ico_mtime < $txt_mtime || ($ico_mtime < 14 * 86400))) {
+ // no ico file or we should download a new one.
+ $url = file_get_contents($txt);
+ download_favicon($url, $ico) || touch($ico);
}
- file_put_contents($file, $t);
}
}
public static function faviconDelete($hash) {
diff --git a/app/actualize_script.php b/app/actualize_script.php
index fc4f9bfbb..78712d721 100755
--- a/app/actualize_script.php
+++ b/app/actualize_script.php
@@ -28,6 +28,7 @@ $app = new FreshRSS();
$system_conf = Minz_Configuration::get('system');
$system_conf->auth_type = 'none'; // avoid necessity to be logged in (not saved!)
+FreshRSS_Context::$isCron = true;
// Create the list of users to actualize.
// Users are processed in a random order but always start with admin