################################################################################
changelog-rev16.8 [ révision : 59 - jpb /8-11-2025 ]
(non exhaustif...) : pour des informations complètes et détaillées visitez la page de comparaison entre cette version et la précédente : https://github.com/npds/npds_dune/compare/v.16.4...v.16.8
Cette version est la première compatible avec php8 et mysql8 ce qui a nécessité de nombreuses corrections. Elle embarque de nouvelles fonctionnalités, corrige des bugs anciens améliore l'homogénéité des interfaces, et renforce la documentation et les traductions. L'implémentation d'un déployeur et de son système de mise à jour de la bd rendra désormais la tâche plus facile pour effectuer les mises à jour des portails npds et les installations neuves...

- support PHP5 non maintenu ...
- abandon support de l'extension mysql de PHP (now only mysqli)

- php8++ mysql8 :
   modification de REGEXP dans les requêtes
   champs trop courts dans la base table session champ `uri` et `agent` : suite utf8
   modification de l'ordre des arguments requis/optionnel dans les fonctions
   typage argument dans mktime()
   optymysql.php : correction de l'envoi d'une valeur (vide) pour un type decimal non null dans la table
   remplacement de nombreux settype() incorrects ...
   remplacement de la fonction formatTimestamp() dans le mainfile.php par la fonction formatTimes() et donc des ses appels dans de nombreux fichiers et métamot. Cette fonction est soutenue par une deuxième fonction de traitement des dates getPartOfTime() (dans le mainfile.php) qui va permettre de manipuler encore plus finement les dates. Ces modifications ont été nécessaires à cause de l'évolution des fonctions de date de PHP. Elles permettent aussi la suppression de plusieurs fonctions : formatTimestampShort() dans modules/links/links.php ,.
   abandon utf8_decode (auth.inc.php user.php)
- update dépendances :
   version (licence du core) GNU 2 ==> 3
   bootstrap 5.3.7
   openlayers 10.6
   geocoder 4.3.4
   prism 1.30

- évolutions :
   Implémentation d'un déployeur (pour le déploiement et la mise à jour des portails) complété par un migrateur de la base de données (doc : voir manuels maj.html)
   pour les groupes : création d'un bloc des groupes actifs (avec membres) et possibilité aux utilisateur de faire une demande d'adhésion. Et de la gestion de ces demandes par les admins (avec une nouvelle fonction d'alerte).
   envoi d'email : intégrations de la librairie PHPmailer pour la gestion d'envoi des mails ce qui permet entre autres d'utiliser le protocole SMTP(S), envois avec authentification ... et côté code beaucoup de possibilité d'améliorations et de simplification
   suppression de l'option d'envoi des mails avec la fonction email() devenue obsolète
   envoi d'email au superadmin lors de la soumission d'un nouveau commentaire (dépendant du choix dans les préférences "Notifier les nouvelles contributions par E-mail" ($notify))
   ajout avatar dans le chat ...
   metatags : suppression du support charset iso-8859-1 dans les metatags, mise à jour automatique de l'attribut lang en fonction de la langue choisie...
   metamots : suppression MM_np_twi_Us()
   modification de la fonction userpopover() qui permet dorénavant d'avoir un avatar seul ou un avatar et son popover et suppression du "selfcall" de la fonction ...
   geoloc : transfert du georeferencement des ip dans un fichier dédié (geoloc_refip.php) en lieu et place du code qui se trouvait dans le mainfile
     ajout d'une clef pour le provider extreme-ip-lookup
     remplacement des provider de fond de carte : stamen > stadia Maps ; bing > azure maps
     doc et traductions 
   administration des logs et sessions (admin/sessionlog.php) : ajout de deux commandes (+ doc et traduction)
      une pour bannir l'ip à partir de la liste des sessions.
      l'autre pour déconnecter toutes les ip (en vidant la table des session)
   searchbb.php amélioration interface avatar dans tableau, ajout des critères (et non des valeurs par défaut) dans le formulaire après sa soumission
   reviews.php : rajout d'un tri par ID ...
   mainfile.php : prototype de blocage des robots irrespectueux .. limitant à 5 connexions simultanées par robots ...
   administration LNL : amélioration interface (select au lieu d'input) et contrôle des entrées, ajout tooltips explicatifs 
   administration préférences : ajout de l'activation des logs mysql. (documenté dans manuels config.html)
   ajout du support pour le format d'image .webp
   ajout support audio et video mp4 et svg dans forum upload
- bug track :
   nombreuses corrections : var $NPDS-PREFIX manquante, non globalisée ou globalisée inutilement. Ces erreurs impactaient surtout les sites à tables préfixée (requêtes sql défaillantes) 
   missing globalisation var $NPDS-PREFIX dans réseaux sociaux.
   implémentation dataimagetofileurl() dans les minisite
   création du répertoire utilisateur (si n'existe pas) à partir de l'édition du journal utilisateur ...
   tarteaucitron NO gtag @ start (minisite et core)
   deux each oubliés dans filemanager.php et class.navigator.php
   suppression du fichier kernel dans le dossier _module_template
   terme de recherche requis dans le bloc de recherche
   amélioration de l'implementation de la construction de link rel canonical ...
   admin download : interface et contrôle formulaire
   bloc de choix langue dispo que si multilangue est activé
   correction metamot login (pas d'affichage du formulaire quand on est déjà connecté en user)
   correction metamot member : ajout condition sur existence de $cookie[1] pour la définition de $username
   correction bug à l'installation du bloc note quand la table a déjà été créé par un blocnote groupe ...
   correction bug Requete sql insert des options défaillante quand sondages avec noms identiques 
   correction typo on loading attributs values "lazy" with only one z !....
   correction il n'y avait pas d'appel de la css du framework quand thème unskinable par défaut
   correction du contrôle sur la variable $submiS dans newtopic.php qui générait une erreur ...
   correction typo sur la variable $time dans modules/links/links.php
   correction lors de la recherche dans utilisateurs la variable $t présente dans les url de pagination non défini et non nécessaire  : rectification des deux urls (search.php)...
   correction (searchbb.php) fonctionnement chaotique entrainant des constructions de requêtes sql non conformes
   correction (mainfile.php) fonction req_stat() surincrémentation du compteur + libération mysqli après les requêtes
   correction (reply.php, replyH.php, viewtopicH.php) erreur quand $userdata non défini (user non connecté...)
   correction lnl bug sur le "each déguisé" (php8) et remplisage d'un tableau non défini.. qui affectait l'envoi vers groupe
   protection variable : \$ dans le commentaire/doc (overload.php)
   correction clef de tableau inexistante dans cache.class.php on line 73
   correction admin/die.php double inclusion mainfile
   correction bug lors de l'installation automatique d'un module sans table mais avec une interface admin
   correction bugs quand article non publié en index avec catégorie autre que article ...
- thèmes
   ajout d'un attribut data-bs-theme à la balise body (themes-dynamic/header.php)
   ajout d'une variable dans le thème (/themes/montheme/theme.php) permettant le choix de l'apparence du thème ("light" "dark" "auto") si "auto" le theme sera affiché avec la version dark ou light de la css de bootstrap (default ou skin xxx) ...
   ajout d'un script js (npds_adapt.js) pilotant les modes sombre/clair des thèmes.
   ajout d'un switcher pour la visualisation sombre/clair dans /themes/_skins/default/ et dans le block Skin viewer ...
   Ceci permet donc un passage automatique du mode clair au mode sombre de votre thème en fonction du paramétrage de votre média (système/navigateur)...
- Documentation : manuels administration : mise à jour et restabilisation (suite à l'implémentation de navigation transversale entre les manuels), interface, traduction. (encore en travaux ...)
   intégration de doc admin de module core dans la navigation transversale des manuels (geoloc)
- inside code :
   suppression/nettoyage (global, paramètre, config) de la variable $site_font
   condition simple en écriture ternaire
   corrections, suppressions ou ajouts de sql_free_result() quand nécessaire ...
   désimplémentation de la constante cur_charset ...
   renforcement et correction de la lib mysqli.php
   réécriture de js en jquery vers js pur ...(en cours)
   meilleure indentation finale du code source (autant que faire se peut vu la multitude des contextes ...)
   synchronisation des timezone de php et mysql ...
- inside archive
   suppression de fichiers images non utilisés

################################################################################
changelog-rev16.4 [ révision : 53 - jpb /05-10-2022 ]
(non exhaustif...)
pour des informations complètes et détaillées visitez la page de comparaison entre cette version et la précédente : https://github.com/npds/npds_dune/compare/v.16.3...v.16.4

Cette version entraine de nombreuses modifications (plus de 1135 fichiers) dûes en grande partie à la mise à jour du framework bootstrap, des autres dépendances et des corrections et amélioration de la version précédente. La base de données n'est que très peu impactée, principalement sur des données (... quelques métamots). Elle fixe aussi un certain nombre de problèmes de sécurité en renforçant la protection d'accès fichiers et le filtrage des urls.
Cette version est la dernière compatible avec php5.

- update dépendances :
   bootstrap 5.2.2
   bootstrap-icons 1.9.1
   formvalidation v.1.9.0 (lié à maj BS)
   colorpicker v.3.4 (non maintenu) ==> puis remplacé par jscolor
   bootstrap table 1.19.1
   openlayers 6.15.1
   geocoder 4.1.2
- mise à jour skin et thème : + 1 theme et 3 nouveaux skins
- validation des formulaire : formvalidation ajout rowselector (pour bon fonctionnement des icônes de validation de formulaire) .. (probablement à affiner encore) 
bug track :
- correction du chemin d'accès au fichier langue pour l'aide de l'admin d'upload (typo variable)
- pic manager : correction d'une condition, celle-ci générait une erreur php dans certain cas (plus d'affichage du pic manager)
- pic manager, file manager : erreur 429 lors du traitement de dossier avec de nombreuses images (résolu partiellement le cas peut encore exister ...)
- geoloc correction : contruction des listes de choix des fonds de carte, remplissage du viewport en fonction de l'extension de la couche, openlayers updates...
- affichage correct des IPV6 dans session log
- correction de l'affichage du titre de la fenêtre du chat (affichage des entités html (renvoyées par la traduction) au lieu d'un format text ...) @phrev

améliorations :
- pic manager, file manager : mise en page et changement d'iconographie (bs webfont au lieu de font awesome)
- mise en page de formulaires
- menu utilisateur (externalisation ...)

- thèmisation (code) : possibilité d'ajouter à partir du thème une classe à "l'élément html primaire" d'un bloc
- thèmisation : simplification des dossiers thèmes ajout explicatif sur les templates html des themes dynamique
- metatag : 
-- ajout de création automatique de balise meta de type og et twitter la combinaison de ces balise permet la création automatique de "card" pour différents réseau sociaux ...(à documenter)
-- ajout de l'attribut lang dans balise html

sécurité :
suite audit thanks @Nosp, renforcement de url_protect, des accès aux fichiers, et xss sur chat ... 


################################################################################
changelog-rev16.3 [ révision : 46 - jpb /20-12-2021 ]
(non exhaustif...)
pour des informations complètes et détaillées visitez la page de comparaison entre cette version et la précédente : https://github.com/npds/npds_dune/compare/v.16.2.1...v.16.3

- Corrections et améliorations
   - travaux sur les traductions :
      ipban, npds_twi, /admin, contact, manuels admin
   - [bug] création et modification groupe
   - compatibilité mysql>5 : lnl
   - compatibilité mysql8 : (mot réservé rank) comment/reply.php
   - compatibilité php>7.4 :
      ordre des arguments implode() (savemysql.php, upload.func.forum.php)
      deprecated/removed get_magic_quotes_runtime() set_magic_quotes_runtime() (grab_globals.php)
   - lib mysql : arguments
   - notice(s) et fonctionnement sur les affichages des contributions des anciens membres
   - cohérence ancre et urls last-post => lastpost
   - oubli de tin class pour tinymce dans filemanager.php
   - effacement chat box seulement pour les superadmins...
   - ajout quickbars dans la conf npds de tiny...

- Evolutions
   - Nouveau système de cryptage des mots de passes :
   Suite au(x) notice(s) dues à l'évolution de la fonction crypt() voici donc la ré-implémentation du système de cryptage et par conséquence des différents login. 
   Cette ré-implémentation délicate a de plus corrigé d'autres problèmes sporadiques liés au contenu des mots de passe. Elle a été orientée pour que ce soit totalement transparent pour le webmaster et les utilisateurs donc sans campagne de remise à jour des mots de passe. En cas de nouveau site recevant des anciennes données avec donc les mdp en clair ou cryptés avec l'ancien système les mdp seront donc analysés et cryptés avec le nouveau système systématiquement au fur et à mesure des connections des utilisateurs ou des administrateurs. 
   Les obscures options de cryptage des mots de pass ($system et $system_md5) ont été désimplémentées.

   - alertes et message provenant de npds
   Finalisation de l'implémentation des fonctions d'envoi de message et alerte (version, sécurité, note) provenant de npds dans les portails et de la gestion de leur lecture par les superadministrateurs.

   - traitement des images data:image en base64
   les media portables ainsi que tinymce (qui les transforme en blob js) utilise cette technique ce qui posait de nombreux problèmes (fonctionnement (données non acceptées et donc justement modifié par removehack()), stockage, manipulation ...etc)... Nous avons donc créé une fonction (dans mainfile.php) qui retransforme tout "data:image en base64" en une url et donc un fichier (contrôlant au passage la sécurité et la taille de l'image - réduction si nécessaire). Celle-ci a été implémentée dans les 2 systèmes de publications principaux (articles et sections) et dans d'autres pages ou ce type de données peut être entrée (en clair dans tout les formulaires utilisant tinymce (ou pas)) (nous en avons profiter pour implémenter un système de nettoyage des images inutilisées => encore en cours d'amélioration) ...
   Pour résumer cette amélioration résoud les problèmes de publication d'image depuis un media portable, et améliore le nettoyage de ressources non utilisées...
   
   - be lazy ... utilisation de l'attribut loading pour les images et iframe qui permet simplement (pas de js car maintenant interprété/executé par tous les navigateurs modernes...) un gain de rapidité considérable ... les images ne sont chargées que quand elles sont visible dans le viewport ...
   
   - sections.php
      ajout d'une alerte pour les publications en attente de validation

- Documentation
   - manuels admin (encore en travaux)

- Dépendances
   - fontawesome update to 5.15.2
   - tinymce update to 5.8.1
   - openlayers update to 6.9.0

################################################################################

changelog-rev16.2.1 [ révision : 45 - jpb /06-03-2021 ]

- Corrections
   patch sécurité ghostform
   notices sur view topics
   Evolution
   icone d'alerte admin pour modules (implémentation)

################################################################################

changelog-rev16.2 [ révision : 44 - jpb /28-02-2021 ]
(non exhaustif...)
pour des informations complètes et détaillées visitez : https://github.com/npds/npds_dune/compare/v16.1...master

- Evolutions
   - full utf8 support (utf8mb4)
   - passage du core en français
   - consolidation support IP V4 V6
   - file and pic manager skinable
   - emojipopover (utilisation des emoji dans forums, chat, comment and more)
   - mysqli par defaut dans config.php

- Corrections et améliorations : suite au retour dans forums et tests (ou pas)
   - iconographie : correction classes suite maj fontawesome 5
   - geoloc : meilleur support fullscreen
   - support IPV6 : consolidation implémentation ipban, chat
   - notice php : filemanager, header.php, banner.php, index.php
   - edito : date trop ancienne ...
   - upload admin image oubliée ...
   - responsive image dans impression des articles des sections
   - carnet.php mise en page ...
   - RGPD consolidation dans critique
   - fusion des tables mainblock et adminblock dans la base
   - correction raccourcissement de certaine clef primaire (char) devenu trop longue avec le nouvel encodage utf8mb4

- Mises à jour des libs externes :
   - bootstrap 4.5 + skins
   - tinymce 5.4
   - openlayers 6.5.0
   - tarteaucitron 1.8.1

################################################################################

changelog-rev16.1 [ révision : 40 - jpb /14-5-2020 ]
(non exhaustif...)
pour des informations complètes et détaillées visitez : https://github.com/npds/npds_dune/compare/v16.0...master

- Corrections suite au retour dans forums et tests
   - dysfonctionnement  de la mise à jour des réseaux sociaux en admin
   - dysfonctionnement  de la mise à jour des groupes en admin
   - boutons non fonctionnels dans l'édition des fichiers de configuration en admin
   - type de valeur incompatible avec mysql > 5 dans newsletter en admin
   - contrôles dans la gestion des sections en admin
   - attribution des droits sur les blocs défaillant en admin
   - absence d'affichage des sujet dans submit.php
   - calcul de la taille des fichiers dans download.php
   - ajout de possibilité d' url locale dans contrôle formulaire dans installation auto #493 


-  Evolutions
   - interface admin pour configuration upload
   - ajout d'extension de  types de fichier
   - bannissement de plage d'adresse ip en V4 (dans ipban) admin ...
   - RGPD ajout fichier politique confidentialité  liens  et case à cocher d'acceptation dans formulaires ...
   - revisite du process de choix et de contrôle des avatar perso
   - augmentation de la longueur des champs url du module link dans les formulaires et dans la base 

- Doc
  - mise à jour des manuels admins ...(en cours)

- Mises à jour des libs externes :
  -  fontawesome 5
  -  tinymce 5
  -  bootbox 5.4
  -  formvalidation 1.5.0
  -  tarteaucitron
  -  openlayers
  -  jquery 3.5
  -  bootstrap 4.5

################################################################################

changelog-rev16.0  [ révision : 39 - jpb /13-12-2019 ]

Depuis une version 13 voici les principaux changements.

Implémentations majeures impactant sur tout le portail :
- intégration en backend d'un framework : Bootsrap 4 #requis
   ayant pour conséquence :
      intégration de Jquery 3.x (implémentation)  #requis
      abandon de la librairie YUI (désimplémentation)
 
- intégration des webfont fontawesome version courante (free) :
   (soutien et remplacement de l'iconographie du cms) #requis
- abandon de la librairie toggle-div (désimplémentation)
- responsive design
   réécriture de presque TOUS les fichiers du portail (suppression des mise en pages tabulaires) et implémentation de classes (pour grilles/grid) ces classes sont celles de bootstrap4 MAIS elle peuvent très bien se comporter comme des classes génériques à cloner ou modifier en cas de changement de framework..) 
 
## ==> ADMINISTRATION

- passage en full utf-8
   tous les fichiers (script et langue) sont en utf-8 : la sortie des fichiers langues est donc en utf-8 transformé si nécessaire en entités html
- nouveaux système de droits appliqué au fonctions
   stockage des fonctions et des droits dans 2 nouvelles tables de la bd
   abandon du mécanisme géré par extend-modules.txt 
   administration des modules recentralisé pour profiter de la puissance du nouveau système de droits aux fonctions 
      modification des entêtes des fichiers admin des modules (inclusion de la fonction qui gère les droits)
      modification des fichiers install_conf des modules avec install auto et admin qui doivent envoyer une requête d'identification à la table fonctions
- système d'alerte/notification de tache d'administration :
   centralisé et disponible dans le bloc admin
- contrôle des serveurs mails :
   lors des entrées d'adresse email dans le portail
   en admin possibilité de contrôler toutes les adresses mails des utilisateurs déjà stockées. En cas de défaut l'utilisateur sera prévenu (MP) toutes les ressources envoyant des emails vers cette adresse seront suspendues.

## <== ADMINISTRATION
 
Corrections :
- lib mysqli
   ajout de la connection persistante et globalisation de $dblink dans la fonction sql_connect() car variable non disponible dans certain contexte (install auto)
   correction fonction sql_num_fields (utilisée dans savemysql)
- lib mysql
   # ajout des fonctions clones de (mysql || mysqli_select_db)

- bug (Rev13) état de l'icône témoin de connection ne fonctionnait pas dans les blocs groupes
- bug (Rev13)  headlines  (la lib feed creator avait changé mais pas la construction du bloc headline) 
  lib/feedcreator.class.php (corrections conformité dans la lib ATOM) 
 dans backend.php 
 dans admin/headlines.php (remove la suppression des espace avant entrée dans bd) 
 dans mainfile.php (fonction headline) 
 rajout de la possibilité d'avoir un titre de bloc human readable ...) par la modification du système de création de nom des fichier.cache qui était basée sur un nom compatible de fichier (...sans espace) 


Evolutions 

Installation automatique de modules :
- install auto en v.1.2
   - utilisation des lib (mysql ou mysqli) pour support php7
   - ajout support langue espagnol
   - compatibilité php7 (ereg=>preg)
   - option d'installation rapide
   - interface
   - désinstallation automatique (prototype)

- intégration côté client d'un contrôle des form
   utilisation de formValidation

- suppression des commentaires relatifs à un sondage quand on supprime le sondage. 
- chargement de footer_after.inc à partir du thème
modification du fichier footer.php pour pouvoir charger (comme pour les modules) si il existe le fichier footer_after.inc ceci permet de placer ici les js (...de second niveau) nécessaires ==> chargement plus rapide de la page 

## ==> THEMES
- 8 themes disponibles dont 3 "skinable" (22 skins)
   ce qui donne donc 74 visualisations différentes du portail possible 

- Implémentation des skins de Thème pour l'utilisateur et l'administrateur
   un theme skinable doit avoir le suffixe _sk
   les feuilles de style doivent se trouver dans le dossier themes/_skins/'monskin'/bootstrap.min.css
   un theme et toute son infrastructure peut donc supporter les skins

modules/include/header_head.inc ==> [chargement du framework en backend avec CSS par defaut]
===>
si l'utilisateur choisit un skin dans header.php on remodifie le(s) lien(s) CSS relatif au Framework en lui appliquant deux css du framework customisé (bootstrap.min.css, extra.css)

- note :
   on peut maintenant avoir des dossiers thèmes non visible par les utilisateurs (pour travaux et désactivation) pour désactiver il suffit de faire précéder le nom du dossier theme par _

- ajout d'une landing page : 
   offre la possibilité d'avoir un header.html alternatif sur la page d'accueil (défini pour le site), par l'ajout d'un fichier themes/montheme/html/header_landing.html , si ce fichier existe alors il sera chargé pour la page d'accueil en lieu et place du header.html.
## <== THEMES

## ==> SUPPORT DES LANGUAGES
- Support compatibilité PHP 7.x
   chasse au notice php (undefined variable, undefined offset, ...)
   correction des fichiers où le nom d'une classe est identique à celui d'une fonction de cette classe
   correction des preg utlisant le flag '##'e remplacement par callback
   correction de new topic.php (encadrement des codes d'erreur forum par des simple quote) 
   correction de la lib file.class.php (incompatible avec PHP7 objet incompatible?...)
   correction de toutes les utilisation de each (big work)
   correction des argument de définition des constantes
   correction admin/banners.php
      lignes 387 et 431 de admin/banners.php (REV 13) 
      la variable $extrainfo est doublée dans les liste d'arguments de la fonction BannerClientChange() === page blanche !!!! 
   correction modules/links/links-1.php 
      ligne 101 (REV 13) 
      la variable $name deux fois dans les arguments de fonction Add() 
      === page blanche 
    correction modules/links/links.php 
      ligne 544 (REV 13) 
      la variable $name deux fois dans les arguments de fonction Add() 

- Support compatibilité MYSQL 5.7 +
   modification de certaine valeur par default dans la bd
   modification dans les fichiers de requêtes où le type de valeur ne correspond pas à celui attendu dans la base ... 
   typage precis des entrées dans la bd en fonctions des types définis dans la bd : (on manque encore de test ...)

- Support IPV6
   pour session log anti spam banIP etc ... 
   (reste à traiter le cas des adresse IPV4 encapsulé dans une IPV6)
## <== SUPPORT DES LANGUAGES

- Tinymce 
   version courante
   adaptation de l'implémentation
   ajout de commande pour les métamots
   modification des templates (responsives)

## ==> DIVERS
- Remplacement des licences GNU GPL de version 2 par la version 3
## <== DIVERS

## ==> RGPD
- intégration d'un outil de consentement des services utilisés et des cookies déposés par ces services (tarteaucitron)
## <== RGPD

## ==> GEOLOC
inclusion dans le core du module de géolocalisation
## <== GEOLOC

## ==> INSIDE CODE
   mise en majuscule des instruction mySQL
   écriture à double indentation (3 espaces) PHP / html / js
   généralisation des simple quotes (le plus souvent)
   augmentation de la longueur des chaines de sorties réduction des concaténations courtes.
   ecriture des js avec le support de jquery ou en js pur
## <== INSIDE CODE
