Fork me on GitHub

Rapport de message :*
 

Re: Problème avec le module xnews 1.71

Titre du sujet : Re: Problème avec le module xnews 1.71
par JJDai sur 12/12/2020 00:03:44

Citation :
JJDai a écrit :
Bonjour JJDai, voila jais fait ce que vous m’avez dis et cela a fonctionné mais après deux articles ça ne fonctionne plus il valide l’article mais il ne l’affiche pas.


Je pense avoir trouvé l'origine de tes soucis, car en fait j'avais le même mais cela ne m'avait jamais posé de problème, je m'explique.
C'est un problème d'arrondi.
Le composant qui affiche la date et l'heure, affiche une liste déroulante avec les minute arrondies à la dizaine supérieure, ce dernier mot est important.
du coup l'article que j'ai créé à 14h15 par exemple est enregistré avec 14h20. De plus la case a cocher qui permet de dire si on programme la date ou non n'est pas stockée dans la base, mais déduite de la valeur de la date.
Résultat l'article disparait puisqu'il a une date programmée supérieure à la date/heure courante.
Je n'ai jamais eu ce problème pour la bonne raison que je ne vérifiais pas que l'article était bien la avant 10 ou 15 minutes après l'avoir publié, puisque que ce n'est pas moi qui les écrivait, le temps que je m’aperçoive que l'article devait être approuvé les 10 minutes étaient déjà passées.

donc deux solutions :
- attendre l'heure avec les minutes à la dizaine suivante, par exemple pour 14h15 attendre 14h20
- ou ajouter une fonction qui arrondi a la dizaine inférieure pour afficher dans le formulaire 14h10 au lieu de 14h20 si il est 14h15.
La fonction que j'ai ajoutée dans la class "utility":
function news_getAroundTime($ts null){
    if (
is_null($ts) || $ts==0$ts time();
    
$minutes date("i"$ts);
    
$heures date("H"$ts);
    
$minutes intval($minutes/10) * 10;
    
$ret mktime($heures$minutes0);
    return 
$ret;
}

et ajouter cette ligne:
if($published == 0$published NewsUtility::news_getAroundTime($published);     //global $dateformat;     //echo formatTimestamp($published, $dateformat) . "<hr>";     //$published = time();     $option_tray->addElement(new XoopsFormDateTime(_AM_NEWS_SETDATETIME, 'publish_date', 15, $published));



ver la ligne 184du fichier storyform.inc.php
justa avant:
$option_tray->addElement(new XoopsFormDateTime(_AM_NEWS_SETDATETIME'publish_date'15$published));


et idem dans le fichier storyform.original.php

Je pourrais mettre ma version en ligne, mais je l'ai sérieusement modifiée, et il pourrait y avoir d'autres problèmes parce que je ne me suis pas encore occupé de l compatibilité ascendante, j'ai ajouter notamment un ou deux champs dans une des tables.
En tout cas je n'ai plus ce problème, et le formulaire pour un nouvel article s'ouvre bien avec les minutes arrondies à la dizaine inférieure et apparait bien une fois validé même approuvé directement.
JJDai

PS : Le problème ne se pose pas pour la date de fin car elle n'est pas tout à fait traité de la même manière. si la case est cochée c'est "0" qui est stocké alors que pour la date de début il y a toujours une date valide qui est au moins celle de la création de l'article.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

53 Personne(s) en ligne (44 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 53 | Plus ...