aboutsummaryrefslogtreecommitdiff
path: root/app/models/Feed.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-02 18:23:57 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2013-12-02 18:23:57 +0100
commit1a270309a53cca0124758b026512d781a595ec70 (patch)
treed5a409b82a0fc43442f7a6c36af840eeb968015c /app/models/Feed.php
parent97227a067ba055dd1652505ec8e4817105932d15 (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.php39
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;