Commit Graph

97 Commits

Author SHA1 Message Date
Alexandre Alapetite
878e96202e Grosse refactorisation pour permettre le chargement automatique des classes
C'est parti de changements pour
https://github.com/marienfressinaud/FreshRSS/issues/255 et finalement
j'ai continué la refactorisation...

Ajout de préfixes FreshRSS_ et Minz_ sur le modèle de SimplePie_.
Toutes les classes sont maintenant en chargement automatique (devrait
améliorer les performances en évitant de charger plein de classes
inutilisées, et faciliter la maintenance).
Suppression de set_include_path().
Si souhaité, certaines classes de Minz pourraient être déplacées dans un
sous-répertoire, par exemple les exceptions.

Tests et relecture nécessaires.
2013-12-15 03:30:24 +01:00
Alexandre Alapetite
4af233e1f7 Nettoyage des flux plus intelligent
Implémente https://github.com/marienfressinaud/FreshRSS/issues/323
Garde au moins n+10 articles, où n est le nombre d'articles toujours
présent dans le flux RSS.
2013-12-14 16:22:38 +01:00
Alexandre Alapetite
0e4274fc00 Permet de supprimer les articles d'un flux
Implémente https://github.com/marienfressinaud/FreshRSS/issues/311
2013-12-05 22:12:08 +01:00
Alexandre Alapetite
25fa654529 Resource-priorities
Prépare http://www.w3.org/TR/resource-priorities/
https://github.com/marienfressinaud/FreshRSS/issues/316
https://github.com/marienfressinaud/FreshRSS/issues/313
Continue https://github.com/marienfressinaud/FreshRSS/issues/188
e45357a91b
2013-12-05 19:18:28 +01:00
Alexandre Alapetite
e45357a91b Support contrôlé de iframe, audio, video
Et filtrage de object, embed
https://github.com/marienfressinaud/FreshRSS/issues/188

On ajoute un paramètre preload="none" à audio et video, ainsi qu'un
paramètre sandbox="allow-scripts allow-same-origin" aux iframe.

On interdit les paramètres autoplay et seamless de audio et video.

Ré-écriture des URLS de l'attribut poster de video, ainsi que de
l'attribut src de iframe.
Suite de https://github.com/marienfressinaud/FreshRSS/issues/267

Au passage, filtrage du vieil élément PLAINTEXT.

Modifications dans SimplePie.
2013-12-04 20:48:53 +01:00
Alexandre Alapetite
56b269cef6 PHP : suppression autres alertes
Voir https://github.com/marienfressinaud/FreshRSS/issues/310
2013-12-02 20:12:55 +01:00
Alexandre Alapetite
65c972873b OPML : améliorations
Charge et sauve la description des flux.
Redirige vers la page d'accueil après une importation OPML (maintenant
rapide, et pour mieux permettre le rafraîchissement des flux avec moins
de risques que l'utilisateur quitte la page)

Suite de https://github.com/marienfressinaud/FreshRSS/issues/228
2013-12-02 18:31:40 +01:00
Alexandre Alapetite
1a270309a5 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
2013-12-02 18:23:57 +01:00
Alexandre Alapetite
b0cbc6fe5d Favicons en parallèle
Nouvelle méthode pour afficher les favicons à la demande et en
parallèle.
Déplacement du dossier des favicons sous /data/favicons/
Devrait permettre de fermer le problème d'import OPML
https://github.com/marienfressinaud/FreshRSS/issues/228
Voir aussi https://github.com/marienfressinaud/FreshRSS/issues/290
2013-12-01 22:58:15 +01:00
Alexandre Alapetite
baa8d21341 PHP ctype_digit
Utilisation d'une fonction plus appropriée pour tester si une chaîne
représente un nombre entier
Corrige un bug de date
2013-12-01 21:38:20 +01:00
Alexandre Alapetite
e98b7ab13e SQL : compression côté base de données (attention, perte de compatibilité)
Ça y est, j'ai tout cassé...
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/204
Compatible MySQL 5.0.
Commentaires souhaités avant l'implémentation de la recherche côté base
de données.
Pour l'instant, je n'ai pas fait de script de mise à jour, car la
manière précédente `base64_encode(gzdeflate(serialize($content)))` est
difficile à traiter côté MySQL et nécessite une boucle en PHP.
Avec la nouvelle approche de ce patch, nous pourrons plus facilement
changer d'avis sans perte de compatibilité.
2013-11-30 13:15:54 +01:00
Marien Fressinaud
dd61248d31 Correction download_favicon
En fait renvoyer l'url ne servait à rien puisque c'était la même
De plus il y avait une faute de typo dans le nom de la fonction

Voir #278
2013-11-28 22:50:34 +01:00
Marien Fressinaud
4ddcc3bd41 Merge branch 'dev' of github.com:marienfressinaud/FreshRSS into dev 2013-11-28 22:46:18 +01:00
Marien Fressinaud
a3f6bf966a Corrige bug URL favicons
Corrige #278
2013-11-28 22:45:36 +01:00
Alexandre Alapetite
e8f170f5e3 Protection des requêtes SQL
Corrige https://github.com/marienfressinaud/FreshRSS/issues/294
2013-11-28 22:05:20 +01:00
Alexandre Alapetite
ee2c1a8c78 Classement par date d'ajout e.id (expérimentation)
Expérimentation : classement par date d'ajout dans la base plutôt que
selon la date déclarée par le flux (qui est parfois fausse dans le
passé, dans le futur, ou absente).
Quelques conséquences :
* Les flux avec des dates erronées ne sont plus un problème
* Lorsqu'on fait "marquer tout comme lu", les articles arrivés pendant
la lecture ne sont plus indûment marqués comme lus
* Les articles ont tendance à être plus regroupés par flux lorsqu'on les
affiche par catégorie
* Si un utilisateur n'utilise pas de cron et n'utilise pas FreshRSS
pendant plusieurs jours, lors du rafraîchissement, les nouveaux articles
seront dans "Aujourd'hui" (à interpréter donc comme les articles reçus
aujourd'hui, et non comme déclarés comme étant publiés aujourd'hui)
* La pagination est plus efficace

Termine l'implémentation de
https://github.com/marienfressinaud/FreshRSS/issues/202
2013-11-28 01:42:39 +01:00
Alexandre Alapetite
7f6eb66405 Suite de e.id en bigint
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/202
2013-11-27 23:49:51 +01:00
Alexandre Alapetite
6130ba6157 SQL : utilisation de (id_feed, guid) pour l'unicité
Préparation avant
https://github.com/marienfressinaud/FreshRSS/issues/202
2013-11-26 23:53:22 +01:00
Alexandre Alapetite
08ff116f04 OPML : corrections import/export
À tester plus.
En particulier, ne supporte pas bien les fichiers OPML qui sont à la
fois avec des entités HTML et pas en UTF-8.
Devrait corriger https://github.com/marienfressinaud/FreshRSS/issues/287
2013-11-24 17:08:48 +01:00
Alexandre Alapetite
e2d4f1a721 SQL : identifiant entier automatique pour les catégories et les flux
Implémentation de
https://github.com/marienfressinaud/FreshRSS/issues/262
La catégorie par défaut à le numéro 1.
Les numéros de catégories et de flux sont automatiques (1, 2, 3...)
L'installeur semble marcher.
2013-11-18 23:04:43 +01:00
Alexandre Alapetite
9ec13c6c32 Début de multi-utilisateurs
Préparation de https://github.com/marienfressinaud/FreshRSS/issues/126
Suite de https://github.com/marienfressinaud/FreshRSS/issues/248
Nécessite un script de mise à jour
https://github.com/marienfressinaud/FreshRSS/issues/255
Install.php n'est pas encore testé
https://github.com/marienfressinaud/FreshRSS/issues/273
2013-11-17 15:24:30 +01:00
Alexandre Alapetite
9c5c023e36 Réorganisation des fichiers utilisateur
Implémente https://github.com/marienfressinaud/FreshRSS/issues/248
2013-11-17 02:56:30 +01:00
Alexandre Alapetite
b8c4afadf4 Nouveau fichier constants.php
En particulier pour stocker le numéro de version de FreshRSS utilisé
entre autres par https://github.com/marienfressinaud/FreshRSS/issues/174
et centraliser les constantes de chemins
Implémente https://github.com/marienfressinaud/FreshRSS/issues/271
2013-11-17 01:35:06 +01:00
Alexandre Alapetite
a532a02363 Useragent
Exemple : `FreshRSS/0.7 (Linux;
http://marienfressinaud.github.io/FreshRSS/) SimplePie/1.3.1`
Voir https://github.com/marienfressinaud/FreshRSS/issues/271 pour le
numéro de version
2013-11-17 01:11:32 +01:00
Alexandre Alapetite
ac857ca743 Correction html_only_entity_decode author 2013-11-17 00:40:49 +01:00
Alexandre Alapetite
32306a78d2 SQL : grosse mise à jour avec mise en cache du nombre d'articles lus/non-lus
* Mise en cache du nombre d'articles lus et non-lus par flux, via
`f.cache_nbEntries, f.cache_nbUnreads` pour de biens meilleures
performances
* Implémente https://github.com/marienfressinaud/FreshRSS/issues/268
* Révision de la plupart des requêtes de modification en conséquence
* En cas d'affichage `not_read`, évite de faire une requête si on sait
déjà qu'il n'y a pas d'article non lu et fait directement un affichage
`all`.
* Appelle `cleanOldEntries` seulement une fois de temps en temps
aléatoirement (1 fois sur 30 actuellement) pour économiser les
ressources, et avant les insertions pour plus de robustesse.
* Utilisation des transactions lors de mises à jour multiples et liées
* Lors de requêtes de modifications, retourne le nombre de lignes
impactées plutôt qu'un booléen en cas de succès
* Suppression de code oublié relatif à is_public qui n'est plus utilisé
2013-11-16 21:03:25 +01:00
Alexandre Alapetite
3744df6866 Url absolues pour les balises video, audio, source, track
Corrige https://github.com/marienfressinaud/FreshRSS/issues/267
2013-11-15 19:00:02 +01:00
Alexandre Alapetite
14342603a0 Suppression de requêtes de catégorie et de flux
* Suppression de requêtes inutiles en utilisant mieux les données déjà
reçues.
* Change la signature de `CategoryDAO->listCategories ($prePopulateFeeds
= true, $details = false)` pour ne pas charger de détails inutiles pour
la vue principale (comme feed.description, feed.url...).
* C'est la requête la plus importante.
Suite de https://github.com/marienfressinaud/FreshRSS/pull/180
2013-11-12 18:41:31 +01:00
Alexandre Alapetite
5af7c472ed MySQL : changements mineurs de types
D'autres changements de types, toujours sans modification de
comportement, mais plus efficace.
En particulier char(6) plutôt que varchar(6) pour les identifiants en
attendant un entier, et varchar plutôt que text dans des champs
généralement courts et souvent retournés par les requêtes les plus
importantes
2013-11-11 22:19:37 +01:00
Alexandre Alapetite
a4fc7becb8 Décode les entités HTML en conservant les entités XML
N'ayant pas trouvé comment régler SimplePie pour ne pas avoir d'entités
HTML comme `é`, voici un patch qui les décode en sortie de
SimplePie tout en conservant les entités XML comme `&`.
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/247
2013-11-11 17:40:28 +01:00
Alexandre Alapetite
f1ae155a3c Réduction durée cache SimplePie
Réduction de la durée du cache SimplePie pour pouvoir plus facilement
choisir la fréquence de rafraîchissement par Cron.
Serait peut-être mieux ailleurs.
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/250
2013-11-09 15:20:27 +01:00
Alexandre Alapetite
6464666075 Plus de tolérance pour les flux
Utilise une méthode moins stricte qui tolère des erreurs XML dans les
flux.
Le choix de l'encodage en entrée a dû être légèrement changé car
SimplePie a une stratégie d'essayer plusieurs encodages jusqu'à en
trouver un qui marche.
En étant moins strict sur les erreurs, ça marche plus souvent, et du
coup les encodages n'étaient plus bon.
À essayer avec plein de flux.
Tous mes flux passent (~150).
Devrait permettre de fermer
https://github.com/marienfressinaud/FreshRSS/issues/233
Fonctionne aussi avec des flux à encodage invalide comme
http://travaux.ovh.net/rss.php qui se déclare en "text/xml" (du coup
ASCII) mais dans le flux avec un entête XML déclarant de l'UTF-8
2013-11-07 19:18:52 +01:00
Alexandre Alapetite
ec052432c0 Contournement bug PHP 5.3.3-
Bug #51192  FILTER_VALIDATE_URL will invalidate a hostname that includes
'-'
https://bugs.php.net/bug.php?id=51192
Corrige https://github.com/marienfressinaud/FreshRSS/issues/221

Au passage, désactive la validation des URLS provenant de la base de
données et qui ont déjà été validées.
2013-11-06 23:21:14 +01:00
Alexandre Alapetite
fe78c7fff3 img alt
Quelques [img alt="✇" /] pour être valide, avec un caractère Unicode
représentant un film (assez proche d'un flux), mais peut-être qu'on
pourrait en trouver un mieux
2013-11-05 20:49:44 +01:00
Alexandre Alapetite
231516f523 Grosse optimisation JavaScript
* Fusion de endless_mode.js dans main.js car endless_mode.js est
toujours chargé et assez petit.
* Suppression des changements de style en JavaScript lors du chargement
(genre boucle de .hide(), ou d'ajout de classe ".stick") et
implémentation en PHP + CSS à la place.
* Chargement JavaScript asynchrone (defer + async) pour de meilleurs
performances.
* Utilisation préférable des événements globaux plutôt que des
événements pour chaque élément avec jQuery.on(events, selector) pour un
chargement plus rapide et moins de mémoire utilisée.
* Optimisation manuelle du JavaScript (sélecteurs CSS plus performants,
méthodes jQuery plus appropriées, etc.).
* Désactivation de init_img() qui était coûteux, lancé à un moment où
les images ne sont de toute manière pas encore chargées, et qui
n'apporte rien car il y a déjà un img {max-width:100%} en CSS.
* JavaScript en mode strict.
* Enfin, passage du code JavaScript dans JSLint et du coup nombreuses
corrections (syntaxe, variables, méthodes dépréciées...).
* Devrait permettre de fermer
https://github.com/marienfressinaud/FreshRSS/issues/121
* Au passage, quelques simplifications CSS pour de meilleures
performances.
2013-11-04 23:31:36 +01:00
Alexandre Alapetite
8f7d9e12a0 Filtrage des événements JavaScript
Corrige https://github.com/marienfressinaud/FreshRSS/issues/230
2013-11-03 11:40:17 +01:00
Marien Fressinaud
ce1101bf45 Merge branch 'patch-2' of https://github.com/Alkarex/FreshRSS into Alkarex-patch-2 2013-10-26 16:42:55 +02:00
Marien Fressinaud
94a887f321 Merge branch 'sqlOptimisation' of https://github.com/Alkarex/FreshRSS into Alkarex-sqlOptimisation 2013-10-26 16:37:02 +02:00
Alexandre Alapetite
e6a28cdee2 Ajoute URL dans message FeedException
Ajoute l'adresse du flux dans la description de l'erreur lorsqu'une exception est générée.
2013-10-22 22:23:29 +02:00
Alexandre Alapetite
051666d59b Correction erreur variable existante 2013-10-20 11:37:19 +02:00
Alexandre Alapetite
1b83f93670 Ajoute au contenu les images déclarées en tant que 'enclosure'
Corrige https://github.com/marienfressinaud/FreshRSS/issues/205.
Uniquement pour les images.

Pourrait par exemple faire des miniatures pour les vidéos 
http://simplepie.org/wiki/tutorial/how_do_i_get_a_thumbnail_from_a_youtube_feed
2013-10-19 21:22:04 +02:00
Alexandre Alapetite
410b47603a Optimisation SQL, deuxième vague
Réduction du nombre de requêtes et de connexions SQL
2013-10-13 00:17:12 +02:00
Marien Fressinaud
71282fb72f Fix issue #169: flux en jaune si 0 article 2013-10-07 11:06:01 +02:00
Marien Fressinaud
6f8b260ebf Merge branch 'Alkarex-SqlOptimisation' into sql-optimisation 2013-09-14 22:12:44 +02:00
Marien Fressinaud
e19695e14b Issue #155 : correction fonction _nbNotRead
intval renvoyant toujours un integer, le test is_int() passait toujours,
c'est corrigé maintenant
2013-09-14 22:10:35 +02:00
Marien Fressinaud
980b1ef26c Merge pull request #152 from Alkarex/AvoidPregReplace
Avoid preg_replace() for simple cases
2013-09-14 11:16:54 -07:00
Marien Fressinaud
008d6a7047 Merge branch 'SqlOptimisation' of https://github.com/Alkarex/FreshRSS into Alkarex-SqlOptimisation
Conflicts:
	app/controllers/feedController.php
2013-09-14 19:44:53 +02:00
Marien Fressinaud
ae2ad78d38 Issue #146 : coding style
Ajout de tabulation dans le if{}
2013-09-14 18:47:28 +02:00
Marien Fressinaud
ec448c53a3 Merge branch 'importOpmlTitles' of https://github.com/Alkarex/FreshRSS into Alkarex-importOpmlTitles 2013-09-14 18:44:41 +02:00
Marien Fressinaud
5072774f02 Merge branch 'htmlencoding' of https://github.com/Alkarex/FreshRSS into Alkarex-htmlencoding
Conflicts:
	app/models/Feed.php
2013-09-14 18:36:43 +02:00