Commit Graph

101 Commits

Author SHA1 Message Date
Alexandre Alapetite
cd4e6e152d Delete Error.php 2013-12-15 11:19:53 +01:00
Alexandre Alapetite
d0c855ffc2 Delete Dispatcher.php 2013-12-15 11:19:38 +01:00
Alexandre Alapetite
651d2a74f3 Delete Configuration.php 2013-12-15 11:19:30 +01:00
Alexandre Alapetite
803d69bc4f Delete ActionController.php 2013-12-15 11:19:19 +01:00
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
97a7d7b0b2 Microtime : récupération de toutes les microsecondes
Microtime(true) dépend de la précision de PHP définie dans php.ini, et
par défaut, nous perdons les deux dernières décimales des microsecondes.
Du coup, sur une machine très rapide, cela aurait pu poser des problèmes
d'identifiants dupliqués.
Patch utilisant gettimeofday() à la place.
Au passage, reste en string tout le long et plus besoin de faire la
conversion CAST(? * 1000000 AS SIGNED INTEGER) côté base de données.
https://github.com/marienfressinaud/FreshRSS/issues/202
2013-12-12 19:30:19 +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
be3b07a374 Permet les protocoles relatifs pour HTTP/HTTPS automatique
Une vidéo telle <iframe
src="//www.youtube.com/embed/Q5okb9Vc8SY"></iframe> fonctionne
maintenant sur un FreshRSS hébergé en HTTPS.
Cela pourrait sûrement être écrit de manière plus propre quelque part
dans SimplePie_IRI::absolutize.
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/188
2013-12-04 21:20:15 +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
c1da0f731e OPML : typo 2013-12-02 21:01:10 +01:00
Alexandre Alapetite
986c7297e7 OPML import plus tolérant
Plus correction bug checkUrl()
2013-12-02 20:57:51 +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
ee6a1bdde3 PHP : Alertes fonction date()
En attendant https://github.com/marienfressinaud/FreshRSS/issues/310 la
fonction date() générait des alertes sur les systèmes n'ayant pas
personnalisé PHP
Voir http://us3.php.net/manual/en/function.date-default-timezone-set.php
2013-12-02 19:53:36 +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
b40783e888 Affiche la taille de la base de données 2013-12-02 18:27:03 +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
97227a067b OPML : Import instantané
Clôture https://github.com/marienfressinaud/FreshRSS/issues/228
Nous perdons le champ description des flux, mais celui-ci pourrait par
exemple être récupéré au premier rafraîchissement du flux si nécessaire
2013-12-02 00:06:52 +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
c9c068115d Bug JSON alternative
Suite https://github.com/marienfressinaud/FreshRSS/issues/306
2013-12-01 17:33:07 +01:00
Alexandre Alapetite
0c6142dad2 PHP : JSON alternative
Utilise http://pear.php.net/package/Services_JSON si les fonctions
json_* native de PHP ne sont pas disponibles
Pour https://github.com/marienfressinaud/FreshRSS/issues/306
2013-12-01 16:55:41 +01:00
Alexandre Alapetite
85e7ac96a1 Charge lib_phpQuery uniquement au besoin
Évite de charger lib_phpQuery (170ko de code tout de même) jusqu'au
moment où la librairie est éventuellement nécessaire (c'est-à-dire pour
le téléchargement du contenu des articles tronqués, si cette
fonctionnalité est utilisée)
2013-12-01 16:23:35 +01:00
Marien Fressinaud
234d1a9dca Add stripslashes when displaying the title
Fix issue #299
2013-11-29 11:26:23 +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
Alexandre Alapetite
7cdc477c45 touch en microsecondes
Passage en microsecondes pour le touch (gestion du cache) pour éviter
les problèmes en particulier dans le cas de requêtes de moins d'une
seconde.
Nouvelle fonction invalidateHttpCache() pour plus facilement changer de
méthode de contrôle de fraîcheur de cache.
Devrait résoudre https://github.com/marienfressinaud/FreshRSS/issues/296
2013-11-28 20:59:31 +01:00
Marien Fressinaud
6a9ce0cbad Merge branch 'mergePrintCSS' into print 2013-11-28 20:29:01 +01:00
Marien Fressinaud
b703099c19 Corrige bug Minz_Log
Les logs de niveau ERROR n'étaient plus loggués en production (alors que
c'est quand même leur but ;))
2013-11-26 23:25:43 +01:00
Alexandre Alapetite
c8a7913f79 Page Speed : bouge le style 'print' dans la CSS principale
Bouge le petit style dédié à l'impression dans la CSS principale, pour
de meilleures performances, et aussi pour permettre aux thèmes de
changer le rendu à l'impression.
Au passage, ajout de `@charset "UTF-8";` en tête de CSS
2013-11-25 21:31:00 +01:00
Alexandre Alapetite
d85e6c5b83 Refactorise icon() dans RSSThemes::icon
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/284
2013-11-24 20:42:55 +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
632423d97c Améliorations suite à icon()
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/284
2013-11-23 23:47:20 +01:00
Alexandre Alapetite
29137c0b04 Nouvelle fonction icon() pour générer le code HTML des icônes
Centralisation de la génération du code des icônes pour pouvoir plus
facilement le changer, en particulier en préparation d'améliorations
futures :
* ajouter des alternatives lorsque l'image n'est pas affichée ;
* améliorer l'accessibilité ;
* permettre de changer les icônes selon le thème graphique choisi ;
* simplifier les CSS.

Contribue à https://github.com/marienfressinaud/FreshRSS/issues/284
2013-11-23 23:18:18 +01:00
Marien Fressinaud
cebf1d9fd9 Message d'erreur si fichier conf innaccessible
Voir #282
2013-11-19 13:17:08 +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
4a2b17d54a Minz : nouveau Minz_Log::DEBUG
Nouveau niveau Minz_Log::DEBUG pour plus de finesse dans les messages
2013-11-16 22:41:03 +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
190e724aee Suppression référence lib_text et optimisation lazyimg
Optimisation du regex de lazyimg.
Et une référence à lib_text avait été oubliée dans
5dfe281d60
2013-11-15 17:42:15 +01:00
Marien Fressinaud
6b72063fc1 Supprime le fichier lib_text
Seule la fonction lazyimg était utilisée, je l'ai déplacée dans lib_rss
2013-11-15 17:12:25 +01:00
Alexandre Alapetite
4c5e9d0dd8 Cohérence htmlspecialchars
Le texte dans la base de données est en htmlspecialchars(UTF-8)
(c'est-à-dire avec `<>&'"` encodés) mais maintenant sans autre entité
HTML depuis
a4fc7becb8
Ce patch supprime les htmlspecialchars qui faisaient du double-encodage,
et en modifie d'autres en entrée.
2013-11-12 22:37:25 +01:00
Alexandre Alapetite
76a027c9bb Amélioration des performances de small_hash 2013-11-10 22:45:58 +01:00
Marien Fressinaud
a1fa4a445a Ajout de messages en cas de mauvaise configuration
Si fichier de conf inaccessible / mal configuré ou fichier de log
inaccessible, on affiche des messages plus explicites qu'une page
blanche
2013-11-09 21:33:43 +01:00
Alexandre Alapetite
3a097f8e0c Renomme fichiers selon leur classe
Corrige https://github.com/marienfressinaud/FreshRSS/issues/191
2013-11-07 19:44:36 +01:00
Alexandre Alapetite
316778ef47 Un morceau de tolérance XML oublié 2013-11-07 19:27:52 +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
5e11093120 Détails : blancs
Suppression des blancs en fin de ligne
2013-11-04 23:34:07 +01:00
Alexandre Alapetite
4a999fb628 Améliorations chargement JS async
En particulier pour global_view.js.
Suppression d'une requête avortée dans Chrome.
2013-11-04 23:33:52 +01:00
Alexandre Alapetite
665d22be76 Mise à jour de la librairie http-conditional
Ajout d'un entête Expires qui ne devrait pas être nécessaire d'après la
spécification mais qui semble aider certains navigateurs
2013-11-04 23:33:04 +01:00
Alexandre Alapetite
adc9a958af Préchargement et requêtes conditionnelles HTTP/1.1
Grosse amélioration des performances en utilisant le cache HTTP :
- Implémentation de HTTP/1.1, c.a.d. If-Modified-Since, If-None-Match,
If-Unmodified-Since, If-Match... avec la librairie
http://alexandre.alapetite.fr/doc-alex/php-http-304/
- Support de HEAD (HTTP /1.0).
- Préchargement de la page suivante (avec link next prefetch) dans le
cas de pagination.
- Et nouvelle possibilité de navigation pour les navigateurs qui
supportent "next".
- La date de dernier changement est pour l'instant primitive et
correspond au dernier changement de la session PHP ou
Configuration.array.php ou application.log ou touch.txt.
- touch.txt est modifié a chaque requête UPDATE ou INSERT ou DELETE.
2013-11-04 23:32:22 +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