[Résolu] Une (trop) ancienne date des commentaires impossible ?

AndreaAndrea Member
3 févr. modifié dans Bogues

Bonsoir... après avoir changé la date (an 2000) d'un commentaire celui-ci a disparu de l'administration !

NB: le fichier .txt est bien là toujours sur le serveur

Ca porrait être un soucis avec le timestamp de 9 ou 10 chiffres non ?

PluXml 5.8.22 - PHP 8

Mots clés:

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Bonjour,
    Le nom du fichier d'un commentaire est composé des 4 chiffres du numéro de l'article, d'un point, de la date au format Unix du commentaire , d'un tiret, d'un numéro d'ordre dans la liste des commentaires de l'article, et de l'extension du fichier.
    Volontairement la date du commentaire est stockée sur 10 chiffres.
    Tous les commentaires antérieurs au 09/09/2001 - 01:46 ne sont donc pas visibles.

    <?php
    echo date('Y/m/d-H:i', 1000000000);
    # résultat : 2001/09/09-01:46
    ?>
    

    Pour afficher les commentaires antérieurs à cette date, il faut modifier PluXml à une dizaine d'endroits

    # sous Linux
    grep -nE '\{10\}' core/{admin,lib}/*.php
    

    Si la date de l'an 2000 n'est pas impérative, renomme les fichiers de commentaires dans le dossier data/commentaires comme ceci :

    aaaa.1000000000-n.xml
    

    aaaa : numero sur 4 chiffres de l'article inchangé
    1000000000 : date au 09/09/2001 - 01:46
    n : n° du commentaire sur au moins 1 chiffre

  • AndreaAndrea Member

    Merci @bazooka07 pour ces quekques précisions

    En fait ça tombe mal à pas grand chose ;) c'est pour des commentaires entre l'an 2000 et 2001

    J'avais pensé masquer la date des commentaires mais si en modifiant quelques fichiers c'est possible ;) c'est tentant

    J'ai trouvé {10} dans les fichiers suivants mais en remplaçant d{10} par d les commentaires en question ne s'affichent toujours pas

    • core/admin/comment.php
    • core/lib/class.plx.admin.php, class.plx.feed.php, class.plx.motor.php, class.plx.show.php

    J'ai alors du mal comprendre cette commande Linux grep -nE non ?

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    En complément du code PHP précèdent :

    <?php
    echo date('Y/m/d-H:i', 1000000000); # Nombre sur 10 chiffres
    # résultat : 2001/09/09-01:46
    
    echo date('Y/m/d-H:i', 9999999999); # Nombre sur 10 chiffres
    # résultat : 2286/11/20-17:46
    
    echo date('Y/m/d-H:i', 100000000); # Nombre sur 9 chiffres
    # résultat : 1973/03/03-09:46
    
    echo date('Y/m/d-H:i', 1000); # Nombre sur 4 chiffres
    # résultat : 1970/01/01-00:16
    ?>
    

    Si tu supprimes {10}, la date du commentaire doit tenir sur un chiffre.
    Il faut remplacer \d{10} par \d{9,10}
    Les dates de commentaires seront comprises entre le 03 mars 1973 à 9h46 et le 20 novembre 2286 à 17h46

    Pour trouver les lignes à modifier, il faut employer grep :

    grep -nE '\\d\{10\}' core/{admin,lib}/*.php
    

    Ce qui donne :

    core/admin/comment.php:38:  if(!preg_match('/[[:punct:]]?\d{4}.\d{10}-\d+$/', $_POST['comId'])) {
    core/lib/class.plx.admin.php:1256:      if(preg_match('/([[:punct:]]?)\d{4}.\d{10}-\d+$/',$id,$capture)) {
    core/lib/class.plx.feed.php:158:                $regex = '/^'.$this->cible.'.\d{10}-\d+.xml$/';
    core/lib/class.plx.feed.php:164:            $regex = '#^\d{4}.\d{10}-\d+.xml$#';
    core/lib/class.plx.feed.php:175:            $this->getCommentaires('#^'.$this->cible.'\d{4}.\d{10}-\d+.xml$#','rsort',0,$this->bypage,'all');
    core/lib/class.plx.motor.php:340:           $this->getCommentaires('#^'.$this->cible.'.\d{10}-\d+.xml$#',$this->tri_coms);
    core/lib/class.plx.motor.php:771:                'nb_com'           => $this->getNbCommentaires('#^' . $tmp['artId'] . '.\d{10}.\d+.xml$#'),
    core/lib/class.plx.motor.php:818:       if(preg_match('#([[:punct:]]?)(\d{4}).(\d{10})-(\d+).xml$#',$filename,$capture)) {
    core/lib/class.plx.show.php:1382:            $motif = '/^\d{4}.\d{10}-\d+.xml$/';
    core/lib/class.plx.show.php:1384:            $motif = '/^' . str_pad($art_id, 4, '0', STR_PAD_LEFT) . '.\d{10}-\d+.xml$/';
    

    grep permet de rechercher une expression dans des fichiers. On peut utiliser des caractères génériques
    -n affiche le numéro de ligne dans le fichier qui matche
    -E on emploie les expressions régulières étendues
    {admin,lib} on parcourt les dossiers admin et lib

  • AndreaAndrea Member

    Je ne sais pas quoi dire @bazooka07 ça peut difficilement être plus clair ;) merci mais ça ne "marche" pas (côté admin ou public ces commentaires ne s'affichent pas sans pour autant voir d'erreur!)

    Je vais recommencer avec une installation "fraiche" défois qu'une autre de mes modifications posent un problème même si je ne vois pas trop en quoi ça pourrait...

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Oups, j'ai donné à grep un motif de recherche un peu trop strict :

    grep -nE '\\d\{10' *.php core/{admin,lib}/*.php update/*.php
    

    Ce qui donne les modifs à faire suivantes :

    core/admin/comment.php:38:  if(!preg_match('/[[:punct:]]?\d{4}.\d{10}-\d+$/', $_POST['comId'])) {
    core/lib/class.plx.admin.php:1525:      if(preg_match('/([[:punct:]]?)\d{4}.\d{10}-\d+$/',$id,$capture)) {
    core/lib/class.plx.feed.php:158:                $regex = '/^'.$this->cible.'.\d{10}-\d+.xml$/';
    core/lib/class.plx.feed.php:164:            $regex = '#^\d{4}.\d{10}-\d+.xml$#';
    core/lib/class.plx.feed.php:175:            $this->getCommentaires('#^'.$this->cible.'\d{4}.\d{10}-\d+.xml$#','rsort',0,$this->bypage,'all');
    core/lib/class.plx.glob.php:14:     'commentaires'  => '#^_?\d{4,}\.(?:\d{10,})(?:-\d+)?.*#'
    core/lib/class.plx.motor.php:340:           $this->getCommentaires('#^'.$this->cible.'.\d{10}-\d+.xml$#',$this->tri_coms);
    core/lib/class.plx.motor.php:771:                'nb_com'           => $this->getNbCommentaires('#^' . $tmp['artId'] . '.\d{10}.\d+.xml$#'),
    core/lib/class.plx.motor.php:818:       if(preg_match('#([[:punct:]]?)(\d{4}).(\d{10})-(\d+).xml$#',$filename,$capture)) {
    core/lib/class.plx.motor.php:940:           $pattern = '#^_?' . $idArt . '\.\d{10,}-(\d+)$#';
    core/lib/class.plx.show.php:1382:            $motif = '/^\d{4}.\d{10}-\d+.xml$/';
    core/lib/class.plx.show.php:1384:            $motif = '/^' . str_pad($art_id, 4, '0', STR_PAD_LEFT) . '.\d{10}-\d+.xml$/';
    update/update_5.5.php:28:               if(preg_match('/([[:punct:]]?)(\d{4}).(\d{10})-(\d+).xml$/',$file,$capture)) {
    

    dans class.plx.glob.php et class.plx.motor.php ligne 940, remplacer {10,} par {9,10}

  • AndreaAndrea Member

    Bien vu @bazooka07 le cas particulier dans les fichiers class.plx.glob.php et class.plx.motor.php m'avait aussi échappé

    Merci d'avoir pris le temps de chercher... et ;) trouver

  • AndreaAndrea Member

    Peut-être déplacer cette discssion dans une catégorie plus appropriée ;) n'étant pas un bug mais une décision des dévelopeurs

  • Peut-être déplacer cette discussion dans une catégorie plus appropriée ;) n'étant pas un bug mais une décision des développeurs

    Pas sur, PluXml existe depuis début 2006 (février-avril?) et la fonction des commentaires est arrivée avec la bêta 2 en février 2007. Il n'y avait à priori pas lieu de gérer des dates antérieures au 15/02/2007 pour les commentaires.


    Cordialement,
    gcyrillus , simple membre du forum et utilisateur de PluXml

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Je me demandais à quelle date avait démarré le projet PluXml.
    Donc PluXml va avoir 20 ans. Le bel âge !
    Merci pour l'info.

    Normalement la date d'un commentaire est générée automatiquement.
    Sauf dans le cas où l'administrateur édite le commentaire et modifie la date. Il faut valider l'envoi du formulaire :
    $newtimestamp dans plxAdmin::editCommentaire().
    Mais c'est clair qu'on ne va pas remonter jusqu'au 01/01/1970.
    J'ai déjà modifié les expressions régulières pour "matcher" les commentaires qui vont bien dans la prochaine version de PluXml.

  • AndreaAndrea Member

    Yep merci de s'être penché sur le "problème" c'était vraiment pour un projet bien particulier à propos d'évènements du début des années 2000's

    Les commentaires sont utilisés pour lister diverses ressources connexes plus que des messages de visiteurs

  • AndreaAndrea Member

    En fait tout "marche" bien dans l'administration mais côté public les "vieux" commentaires n'apparaissent pas!
    Je pensais avoir vérifié l'autre jour mais même avec une nouvelle installation (sans aucun plugin) rien du tout (ni commentaire ni erreur... php 8)

  • AndreaAndrea Member

    En fait je n'avais pas complètement révé ;) c'est bien ok avec php 5.6 (free.fr) mais pas php 8.3 ou 8.4 (alwaysdata.net)

Connectez-vous ou Inscrivez-vous pour répondre.