diff options
| author | 2013-12-02 18:23:57 +0100 | |
|---|---|---|
| committer | 2013-12-02 18:23:57 +0100 | |
| commit | 1a270309a53cca0124758b026512d781a595ec70 (patch) | |
| tree | d5a409b82a0fc43442f7a6c36af840eeb968015c /app/models/Feed.php | |
| parent | 97227a067ba055dd1652505ec8e4817105932d15 (diff) | |
Favicons : amélioration
* Évite de faire un accès disque systématique pour vérifier si le .ico
est présent, et ne le fait plus que lors d'un ajout ou rafraîchissement
de flux
* Corrige un bug pour les flux qui n'ont pas de site Web déclaré
* Efface le favicon lorsqu'un flux est supprimé (seulement
individuellement pour l'instant)
Voir aussi https://github.com/marienfressinaud/FreshRSS/issues/290
Diffstat (limited to 'app/models/Feed.php')
| -rw-r--r-- | app/models/Feed.php | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/app/models/Feed.php b/app/models/Feed.php index 41eb3df23..14366c5b3 100644 --- a/app/models/Feed.php +++ b/app/models/Feed.php @@ -95,32 +95,36 @@ class Feed extends Model { return $this->nbNotRead; } - public function favicon () { + public function faviconPrepare() { $file = DATA_PATH . '/favicons/' . $this->id () . '.txt'; if (!file_exists ($file)) { - file_put_contents($file, $this->website ()); + $t = $this->website; + if (empty($t)) { + $t = $this->url; + } + file_put_contents($file, $t); } + } + public static function faviconDelete($id) { + $path = DATA_PATH . '/favicons/' . $id; + @unlink($path . '.ico'); + @unlink($path . '.txt'); + } + public function favicon () { return Url::display ('/f.php?' . $this->id ()); } public function _id ($value) { $this->id = $value; } - public function _url ($value) { - if (empty ($value)) { - throw new BadUrlException ($value); - } - if (!preg_match ('#^https?://#i', $value)) { - $value = 'http://' . $value; + public function _url ($value, $validate=true) { + if ($validate) { + $value = checkUrl($value); } - - if (filter_var ($value, FILTER_VALIDATE_URL)) { - $this->url = $value; - } elseif (version_compare(PHP_VERSION, '5.3.3', '<') && (strpos($value, '-') > 0) && ($value === filter_var($value, FILTER_SANITIZE_URL))) { //PHP bug #51192 - $this->url = $value; - } else { + if (empty ($value)) { throw new BadUrlException ($value); } + $this->url = $value; } public function _category ($value) { $this->category = $value; @@ -131,8 +135,11 @@ class Feed extends Model { } $this->name = $value; } - public function _website ($value) { - if (is_null ($value)) { + public function _website ($value, $validate=true) { + if ($validate) { + $value = checkUrl($value); + } + if (empty ($value)) { $value = ''; } $this->website = $value; |
