== 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