[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

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