MyBB.support, le portail francophone de MyBB

Version complète : modifier "Temps passé en ligne" du profil [ RESOLU ]
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour je veux modifier:
"Temps passé en ligne : 17 Heures, 37 Minutes, 19 Secondes " , c'est-à-dire la dernière virgule.
Je veux le remplacer par "et" mais je ne sais pas où le modifier.

merci d'avance.
Salut,

Ce n'est pas facilement modifiable !
Ce n'est pas déterminé par un "masque" dans un fichier langue.

Il faut intervenir dans le code PHP. Si tu t'en sens l'envie et le courage...

Le texte est créé par la fonction nice_time() de /inc/functions.php (ligne 3154), plus exactement dans cette portion du code (ligne 3286) qu'il faudra modifier :

Code PHP :
if(is_array($nicetime))
    {
        return 
implode(", "$nicetime);
    } 

La fonction implode(", ", $nicetime) retourne une chaîne contenant la représentation en chaîne de caractères de tous les éléments du tableau $nicetime, séparés par une virgule suivie d'un espace.

Il faudrait donc avant le 'return', récupérer le résultat du 'implode' et remplacer la dernière virgule par un ' et' (espace avant, l'espace après existe déjà...)

Par exemple :
1. récupérer la chaîne avec les virgules :
$result = implode(", ", $nicetime);
2. Rechercher la dernière occurrence de ',' :
$last = strrchr($result, "," );
3. On a dans $last par ex. : ", 35 Secondes".
4. On remplace la virgule par ' et' (avec un espace avant
$last_new = str_replace(',', ' et', $last);
$last_new contient donc : " et 35 Secondes".
5. et on remet ce nouveau "tronçon" à sa place dans $result :
$result = str_replace ($last, $replace, $result);
6. Et on retourne cette chaîne.

Ce qui donnerait :
Code PHP :
if(is_array($nicetime))
    {
        
$result implode(", "$nicetime);
        
$last strrchr($result"," );
        
$replace str_replace(','' et'$last);
        
$result str_replace ($last$replace$result);
        return 
$result;
    } 

Il y a sans doute plus simple !
C'est du bricolage, non testé ! Livré sans aucune garantie.

AimeSiKey te fera un truc plus simple et plus "catholique".

Est-ce que ça vaut le coup de faire toutes ces modifs juste pour une virgule ????

EDIT: Je me suis planté
(corrigé ci-dessus):
c'est pas
$last_new = str_replace(',', ' et', $last);
mais
$replace = str_replace(',', ' et', $last);
Réessaie...
Merci beaucoup spyto pour le temps passé... pour me répondre.
J'ai changé avec ce que tu m'as donné, et il ne m'a plus affiché les secondes, mais c'est pas grave, ça ne vaut pas la peine.
Je pensais que ça aurait été plus simple.
Oui huhu ! C'est rigolo comme demande.
On peut faire un implode "customisé" à l'ancienne sinon.

Changer
Code PHP :
    if(is_array($nicetime))
    {
        return 
implode(", "$nicetime);
    } 

En
Code PHP :
    if(is_array($nicetime))
    {
        return 
$nicetime[0].", ".$nicetime[1]." et ".$nicetime[2];
    } 

Ca semble plus simple et ca demande moins de calcul ^^
Je n'ai pas tester.
AimeSiKey a écrit :
Code PHP :
    if(is_array($nicetime))
    {
        return 
$nicetime[0].", ".$nicetime[1]." et ".$nicetime[2];
    } 

Ca semble plus simple et ca demande moins de calcul ^^
Je n'ai pas tester.

OK MC, mais tu supposes que le tableau n'a que trois index...

Or pour moi, le temps passé se mesure en semaines et bientôt en mois !!! Wink

Je n'ai pas trouvé de fonction simple permettant de remplacer la dernière occurrence de ',' par ' et' dans la chaîne résultante.
Ou sinon, il faudrait remplacer dans le dernier index du tableau, avant l'implode(), à condition que ce soit toujours les secondes ?
Ah oui !
Mea culpa, une petite boucle sur la taille du tableau ca serait mieux.
Là ça m'affiche:
" , et "

plus de chiffres... merci quand même AimeSiKey.
abc13 a écrit :Là ça m'affiche:
" , et "

plus de chiffres... merci quand même AimeSiKey.

Regarde mon post ci-dessus, je m'étais planté, j'ai édité...
spyto a écrit :Regarde mon post ci-dessus, je m'étais planté, j'ai édité...

Là ça marche! bravo....
Merci beaucoup Spyto Big Grin
 Utilitaire de traduction fourni par Regentronique