== Version 1.5 - Modernisation code et bugfix : 2016 (peut-être ?) == Compatibilité PHP 5.4 à PHP 5.6. Quelques fonctionnalités et refonte technique profonde pour préparer aux dix prochaines années ! === MySQL == * Migrer vers utf8mb4 https://mathiasbynens.be/notes/mysql-utf8mb4 * Changement format stockage des dates des écrits : de timestamp à DATETIME * Abandon des identifiants texte pour les journaux (mysql) : utilisation d'identifiants numériques * Passer les tables en InnoDB, sauf celles qui nécessitent recherche full-text (contenu des écrits) - Activer la compression: http://dev.mysql.com/doc/refman/5.5/en/innodb-compression.html - Utiliser contraintes de clés / triggers etc. (meilleure intégrité des données, suppressions en chaîne gérées dans la DB et non au niveau du PHP) - triggers pour suppression contenu écrit quand suppression écrit, etc. - Ne pas utiliser de COUNT(*) sans WHERE du coup === PHP === * Passage aux namespaces * Abandonner la lib DB:: pour PDO via KD2fw [important] - Utiliser transactions ! Fait pour sûr : - Journal.php - Ecrit.php * Meilleur chiffrement des mots de passe stockés : passage à bcrypt - Migration progressive === Fonctionnalités === * Utiliser SkrivML pour le formatage des textes ? (nouvelle table à créer ?) * Refonte du stockage des fichiers et images : - tout stocker les méta-données en DB - stocker les fichiers dans une architecture shardée - plus de stockage local par journal des fichiers - tous les fichiers sont publics, on ne vérifie pas qui a accès à quoi - plus de répertoires / albums pour les images, mais images associés par article - URLs dynamiques: - blabla.journalintime.com/img/[ID]/nom_fichier.jpg - blabla.journalintime.com/pub/[ID]/nom_fichier.html (type template) - (comme ça on peut utiliser des URLs relatives dans les CSS et les squelettes) - utiliser X-SendFile (Apache) pour renvoyer les fichiers - rediriger les anciennes URLs type public.journalintime.com/datas/documents/XXXX/ - script d'import/migration à faire ! * insertion d'image lors de l'édition : refaire en js/ajax pour ne pas charger un iframe (lent) * ajout d'image simplifié dans l'article (upload au cours de l'écriture de l'article + insertion d'image externe sans iframe pour aller plus vite) -> intégration de lib upload de KD2fw -> 3 onglets : ajout d'image externe, sélection d'une image dans l'album, upload d'une image et insertion de celle-ci avec choix du répertoire -> présentation par défaut de l'ajout d'image externe * vérifier syntaxe emails un peu partout * Corriger l'édition de squelette (auto-indentation HS?!) * Nouveau thème basé sur http://www.peppercarrot.com/ * Support HTTPS : si page déjà en https, n'utiliser que https pour les autres sous-domaines: DONE! == Version 1.6 - Nouvelles fonctionnalités == * Queue de génération pour les exports avec notification par mail. * Possibilité d'avoir une URL personnalisée pour son journal - Création table associant journal à URL - Possibilité d'associer n'importe quelle URL à un journal (pour pouvoir avoir son journal sur son propre domaine) - Gestion virtual hosts apache ? Et les DNS ? Ou à externaliser dans un script ? * API XMLRPC blogger/metaweblog (en cours) * (en cours) Envoi d'écrit par e-mail : adresse genre ecrire-[code_secret]@journalintime.com, où [code_secret] est un code unique différent pour chaque journal, permettant d'identifier le journal correspondant (utiliser user_secret_keys ?), voir http://www.crazyguyonabike.com/website/help/#emailing_updates pour une inspiration -> possibilité de joindre des images : utiliser une syntaxe genre Image : [nom du fichier.jpg] ou Photo : [1] -> décodage du html ? -> formattage du text/plain automatiquement : ligne vide = nouveau paragraphe, mais retour à la ligne ignoré sauf si la ligne suivante commence par un tiret, une étoile, etc. -> options au début du message, genre : date = [date au format libre, parsé par strtotime()] [poesie] / [poetry] = tous les retours à la ligne sont conservés [draft] / [brouillon] = enregistrer en brouillon * Support timezones: - possibilité de choisir sa timezone par journal - on enregistre ensuite les dates en format local (DATETIME) et elles seront affichées telles quelles = les dates existantes ne changent pas quand on change de timezone - utilisation du format de date indiqué dans les derniers écrits sur la page d'accueil == Version 1.7 == Compatibilité PHP 7.0. Des nouvelles fonctionnalités. * Participation à un journal collectif via formulaire public * Enregistrement automatique du texte en cours d'édition (dans le local storage JS ou (et ?) requête HTTP ?) * API pour données stats et derniers écrits etc. page d'accueil * API annuaire (JSON/RPC ?) * API REST! - GET https://user:password@journal.domain.tld/This-is-a-post -> Récupère le texte au format HTML - DELETE https://user:password@journal.domain.tld/This-is-a-post -> supprime le post --> Refuse la suppression si query string ?confirm=yes n'est pas passée ! - PUT/POST https://user:password@journal.domain.tld/This-is-a-post -> sauve le texte au format HTML - PUT/POST https://user:password@journal.domain.tld/New-post -> crée un nouveau post à cette adresse - PUT/POST https://user:password@journal.domain.tld/.new -> crée un nouveau post à une nouvelle URI --> PUT/POST permettent de choisir des options en query string: ?draft=1&date=YYYY-MM-DD+HH:II&title=My+post --> Le titre est extrait de si non fourni en query string - PUT/POST https://user:password@journal.domain.tld/images/.new -> crée une nouvelle image (renvoie l'URL créée) - DELETE https://user:password@journal.domain.tld/images/album/Image.jpg -> supprime l'image - PUT/POST https://user:password@journal.domain.tld/images/album/Image.jpg -> création/suppression de l'image * RSS du forum * Possibilité de corriger les fautes/commenter des écrits et envoyer ça à l'auteur * Mettre les écrits supprimés dans une corbeille, les supprimer effectivement après qq jours/semaines * Possibilité de protéger un écrit par mot de passe ? * Export images uniquement pour récupérer une archive de ses photos * widgets : vidéos (youtube etc.), cartes, etc. * Nouveau thème repompé sur http://www.csszengarden.com/214/ == Version 2.0 == Vers les blogs et au-delà ! * InnoDB + full text index ? (mysql 5.6+ seulement) pour la table ecrits_content * Internationalisation en anglais ! (code en premier, interface ensuite) * Implémentation antispam b8 * Cache optionnel avec memcache * config. langue journal + traduction des messages du forum Idée : commentaires : * Pour pouvoir faire un weblog * + tags par article ? * Stockage dans les forums avec une colonne en plus qui donne l'ID de l'article * Sélecteur dans la config : - afficher les commentaires en bas des articles + laisser la possibilité de commenter - afficher les commentaires en bas des articles sans possibilité de commenter - ne pas afficher les commentaires en bas des articles * Case à cocher "afficher les commentaires dans le forum"