Commit Graph

74 Commits

Author SHA1 Message Date
Alexandre Alapetite
e177b288f5 Corrige bug marquage favoris pour f.priority = 0
https://github.com/marienfressinaud/FreshRSS/issues/270
2013-12-03 23:15:20 +01:00
Alexandre Alapetite
018273e272 Corrige bug marquer tous les favoris comme lus
Corrige https://github.com/marienfressinaud/FreshRSS/issues/270
2013-12-03 22:53: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
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
1e077160fc Optimisation recherche et pagination
* Optimisation recherche SQL avec utilisation de HAVING plutôt que WHERE
* Simplification et amélioration des performances en supprimant de
RSSPaginator qui n'aidait plus vraiment et nécessitait plus de code et
des copies de données.
* Correction d'un bug dans le titre de la page introduit récemment, et
simplification
2013-11-30 22:47:48 +01:00
Alexandre Alapetite
37ce14c093 Recherche côté SQL avec LIKE
Premier essai de recherche côté base de données (à améliorer)
https://github.com/marienfressinaud/FreshRSS/issues/204

Pour l'instant fait avec du LIKE et pas d'indexation texte complet.

* Suppression de EntriesGetter car le code est devenu plus simple grâce
au filtrage côté SQL
* Uniformisation de get_c à une lettre ('all' devient 'a','favoris'
devient 's' - pour "starred") pour simplifier le code
* low_to_high par DESC, high_to_low par ASC
* Réduction du nombre de créations de *DAO dans indexController
* Refactorisation de checkAndProcessType()

Pas encore trop testé...
2013-11-30 17:21:26 +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
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
dcd6f3ef16 e.id utilise la date déclarée pour les nouveaux flux
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/202
2013-11-28 10:05:58 +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
4355d8447f SQL : Passe e.id en bigint plutôt que char(6)
Contribue à https://github.com/marienfressinaud/FreshRSS/issues/202
e.id est généré à l'insertion par microtime(true).
2013-11-27 22:50:00 +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
d2d26bf69c SQL : UNIQUE(e.id_feed, e.guid)
Préparation de GUID en prévision de
https://github.com/marienfressinaud/FreshRSS/issues/202
2013-11-19 22:19:36 +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
86bede2770 Corrections install.php
Première version fonctionnelle
https://github.com/marienfressinaud/FreshRSS/issues/273
2013-11-17 18:12:15 +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
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
d654b34fa7 Affichage du nombre total d'article sur la page de configuration
https://github.com/marienfressinaud/FreshRSS/issues/263
Style à améliorer éventuellement
2013-11-13 21:32:50 +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
3f93866f38 SQL : Optimisation vitesse
Optimisation de la vitesse de quelques requêtes, surtout après les
essais d'INDEX.
Suite de https://github.com/marienfressinaud/FreshRSS/issues/254
Note pour plus tard : il faudra supprimer les INDEX inutilisés.
2013-11-12 18:49:18 +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
396fefeae1 MySQL : Longueurs maximum des champs texte
Ajout de sécurités pour ne pas dépasser les longueurs de texte déclarées
dans MySQL (varchar ou text selon les champs)
2013-11-11 20:56:47 +01:00
Alexandre Alapetite
bdb69080f8 Affichage dynamique des favoris non lus
Corrige https://github.com/marienfressinaud/FreshRSS/issues/222
Il reste toujours une situation curieuse lorsqu'on a fini de lire tous
les favoris non-lus, mais à voir une autre fois
2013-11-09 00:46:43 +01:00
Alexandre Alapetite
fdb2b7588e Actualize : évite d'ajouter les articles déjà connus
Dans la plupart des cas, évite d'ajouter les articles déjà présents dans
la base de données, en faisant une pré-requête (une par flux, pas une
par article).
Par exemple, si un flux RSS fournit 20 articles, alors la pré-requête
charge une liste d'exclusion de 20+2 identifiants d'articles.
Ce patch réduit considérablement le nombre de requêtes et la charge de
la base de données durant les mises à jour, et en particulier le trafic
réseau entre PHP et la base de données.
Les mises à jour sont du coup aussi plus rapides.
2013-11-05 18:37:41 +01:00
Alexandre Alapetite
2906d8dd2e Hack temporaire en attendant la recherche côté base-de-données
Limite la recherche aux 20000 plus récents articles, en attendant https://github.com/marienfressinaud/FreshRSS/issues/204
2013-10-30 21:23:45 +01:00
Marien Fressinaud
35dcb5e39a Issue #155 : correction bug prefix table SQL
Le préfixe freshrss_ était rentré en dur dans une des requêtes
2013-09-15 11:29:31 +02:00
Marien Fressinaud
d9975d86a2 Issue #155 : suppression fonctions commentées 2013-09-14 21:59:54 +02: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
73fe0eabbe Fix issue #151 : marquer lus les articles du futur
On peut désormais marquer comme lu les articles parus dans le futur
2013-09-14 19:26:01 +02:00
Alexandre Alapetite
cf62bcd3d3 Handle paging for entries with identical date
Paging now works even when many entries have the same date.
SQL speed could probably be improved by testing first on date, and then
on CONCAT.
Also, having an index on date would probably help too.
2013-09-04 09:28:27 +02:00
Alexandre Alapetite
040e72fe4f Work around
In the current SQL request with LIMIT, if many dates are identical, the
pagination may not work properly. Added a little more tolerance, but
will have to be solved better.
2013-09-04 02:20:02 +02:00
Alexandre Alapetite
f55ae730e6 Disable SQL LIMIT optimisation during search
This patch is to make search work again after the new SQL optimisations,
by removing some of the optimisations when searching is used.
Optimisation of search is left for some future work.
The whole base is indeed transfered from MySQL to PHP, which is not
good.
2013-09-03 23:35:33 +02:00
Alexandre Alapetite
f855dbdca6 SQL and model optimisation
Big effect (on speed and memory), but few changes :-)
Drastically reduced the number of SQL requests needed (from 233 down to
8 to load the home page with my own data set = 140 feeds in 15
categories).
Drastically reduced the amount of data transferred from MySQL to PHP.
2013-09-02 22:06:51 +02:00
Alexandre Alapetite
de6e1b0a86 Change filter of expected SQL errors
Filter out "SQLSTATE Class code 23: Constraint Violation" because of
expected duplicate entries.
Consider adding a Minz_Log::DEBUG level
2013-08-26 23:47:59 +02:00
Marien Fressinaud
9642fbb221 Fix issue #118 : option pour garder historique
*** ATTENTION, MODIFICATION DE LA BDD ***

Cette option permet de garder les vieux articles d'un flux en même s'ils
sont plus vieux que la limite des X mois d'historique (3 par défaut)

Les modifications de la base de données :
- ajout du champ "keep_history int(1) DEFAULT 0" à la table feed
- suppression des champs "is_public" et "lastUpdate" de la table entry
  (n'étaient plus utilisés de toute façon)
2013-08-22 11:11:22 +02:00
Marien Fressinaud
37b641966f Issue #100 : base pour utilisation SQLite
Ajout de la structure pour l'utilisation de SQLite. Tout n'est pas
fonctionnel, loin de là, certaines requêtes SQL ne passent pas.

Pour essayer tout de même, décommenter le bloc TODO dans le fichier
public/install.php
2013-08-18 14:59:03 +02:00
Marien Fressinaud
7fd7727096 Amélioration de l'installateur + préfixe BDD
Fix issue #96 : on peut désormais choisir un préfixe aux tables de la
BDD lors de l'installation
Fix issue #115 : échappement des guillemets pendant la phase
d'installation
Fix issue #116 : le thème de l'installateur est désormais accessible
FIx issue #117 : rajout du test de la présence DOMDocument lors de
l'installation. Si non présent, on peut pas accéder aux flux RSS.
Normalement fourni sur un système RedHat-like par le paquet php-xml
2013-08-18 01:22:26 +02:00
Marien Fressinaud
f6d730f9d1 Fix issue #106 : modif nom classes Cache et Log
Passage en Minz_Cache et Minz_Log
Permet d'éviter les redondances quand ces classes sont déjà définies
Je n'utilise pas d'espace de nom parce que beaucoup de boulot et
nécessite obligatoirement php 5.3
Si d'autres classes nécessitent cette modification je le ferai au fur et
à mesure qu'on me remontera les soucis
La version de Minz pour FreshRSS n'est plus compatible avec la version
distribuée à part
2013-07-27 17:07:44 +02:00
Marien Fressinaud
5b313ecdcb Fix issue #111 : index httpAuth ajouté (OPML)
Il manquait cet index lors de l'ajout d'un flux par import OPML, c'est
ok maintenant
2013-07-26 19:08:09 +02:00
Marien Fressinaud
8cf9ee7650 Fix issue #69 : ajout d'une option pour optimiser la BDD + correction bug script actualisation lorsque connexion paramétrée 2013-06-15 17:36:42 +02:00
Marien Fressinaud
9e0af957d4 Fix issue #85 : la récupération des flux tronqués vérifie d'abord si l'article n'est pas déjà en BDD pour éviter énormément de requêtes inutiles 2013-06-15 13:02:36 +02:00
Marien Fressinaud
746ae4b33a Fix issue #79 : possibilité de changer le nom d'un flux 2013-06-14 20:09:47 +02:00
Marien Fressinaud
22e9fb02f8 Correction bug lors de la recherche d'un article (EntryDAO->searchById()) 2013-05-02 23:28:04 +02:00
Marien Fressinaud
9820345eec Revue de code pour la récupération des articles : ATTENTION GROS CHANGEMENTS, aucune garantie de stabilité et possibles régressions. La recherche dans le contenu des articles fonctionnent et possibilité de rechercher des tags 2013-04-29 00:57:08 +02:00
Marien Fressinaud
a698221625 Fix issue #55 : affichage des tags associés aux articles 2013-04-24 22:14:49 +02:00
Marien Fressinaud
c2bf3ead8a Export des flux au format RSS pleinement supporté (voir issue #34) - possibilité de les filtrer comme pour la vue principale 2013-04-13 13:02:21 +02:00
Marien Fressinaud
d5b761b512 Correction bug listage des articles 2013-04-11 22:13:34 +02:00
Marien Fressinaud
e2171de4e6 Fix issue #37 : possibilité de sortir un site du flux principal (utile pour les sites qui publient beaucoup) 2013-04-11 21:27:29 +02:00