Remplacement de strftime

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Remplacement de strftime

    Bonjour,

    Cette fonction étant obsolète, j'ai cherché comment la remplacer et j'ai trouvé un conseil simple, utiliser date().
    Je précise que je teste en version 4.2.3 et sous PHP 8.1 en local
    J'ai donc fait les remplacements sans d'abord vérifier le résultat, je me suis juste assuré que le message deprecated avait disparu, et je me retrouve avec des dates totalement incorrectes... ;(
    J'obtiens quelque chose comme %am %24-%b-%2022 mais la date passée au Javascript est bien 2022-10-24, c'est donc sa manipulation pour affichage qui est en cause
    Date(e) n'est donc pas la solution.

    Les lignes à corriger sont de ce type (pour un fonctionnement sous Windows ici)
    Code:
    echo sv_encode(iconv(getIconvCharset(), 'UTF-8//IGNORE',strftime($apptpro_config->gad_date_format,(DateAdd("d", $day, strtotime($grid_date))))))."|";
    Que me conseillez-vous ?
    Merci d'avance !

    J'oubliais : dans la configuration du composant, le format défini (normalement converti) est
    %a %d-%b-%Y
    Dernière édition par RobertG à 10/11/2022, 09h13
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Bonjour,

    Une précision, la fonction sv_encode a seulement pour rôle le remplacement de l'apostrophe
    function sv_encode($in){
    $in = (str_replace("'", "'", $in));
    return $in;
    }
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

    Commentaire


    • #3
      Si je remplace le paramétrage de date en "D d-m-Y" pour pouvoir utiliser "date()" à la place de "strftime", j'ai le jour abrégé en anglais, il n'est pas traduit dans la langue définie par setlocale().
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      Commentaire


      • #4
        J'ai trouvé une solution qui semble quand même bancale, avec "new Date" de Joomla!
        Code:
         $date = new Date(DateAdd("d", $day + 1, strtotime($grid_date)), new DateTimeZone('UTC'));
        echo sv_encode($date->format($apptpro_config->gad_date_format)) ; //,."|";
        Comme on le voit, en plus de changer dans les options de l'extension le paramétrage de la date par défaut ( %a %d-%b-%Y en D d-m-Y), j'ai dû ajouter 1 à la variable "$day" qui est incrémentée lors de la création de la grille d'affichage des offres de rendez-vous, mais c'est bancal car la plage de rendez-vous correspondante est celle du lendemain...
        Et il y a des tas de variables vides à gérer, tolérées en 8.1.
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • #5
          Bonjour Robert,

          Comme je rencontre le même problème que toi pour le passage en PHP8.1 et +, j'ai écrit cette fonction pour UP.
          Elle me permet de conserver les anciens paramètres (options du shortcode). Il me suffit de modifier la fonction appelée.
          Le tableau $fmt_old liste les tags que la fonction prend en compte.
          L'ajout de guillemets simples par la fonction permet la saisie de texte simple dans la chaine format.

          Je suis preneur de toutes remarques et améliorations

          J'ai testé cette fonction sous PHP 7.4.19 et 8.1.6

          Code PHP:
           /* === up_date_format (v2.9)
          * retourne une date formatée et localisée
          * $date : date au format AAAA-MM-JJ HH:MM:SS (celui stocké par Joomla)
          * $format : format sfrftime ou NULL pour %e %B %Y (ex: le %e %B %Y à %k:%M)
          * $locale : le code pays (en_US) ou vide=celui du site
          */
          function up_date_format($date$format=NULL$locale '')
          {
          // le format d'affichage (conversion)
          if (!is_null($format)){
            
          $fmt_old = array('%y','%Y''%m','%b''%B''%d','%e','%a''%A''%l','%I','%k','%H','%M','%P','%p');
            
          $fmt_new = array('yy','yyyy','MM','MMM','MMMM','dd','d''EEE','EEEE','h''hh','H''HH','mm','a''A');
            for( 
          $i=0$i<count($fmt_new); $i++) {
              
          $fmt_new[$i] = '\'' $fmt_new[$i] . '\'';
            }
            
          $format str_replace($fmt_old$fmt_new$format$nbtag);
            if (
          $nbtag) {
              
          $format '\'' $format .'\'';
              
          $format str_replace('\'\''''$format);
            }
          }
          // la locale de Joomla par defaut
          if (empty($locale)) {
            
          $locale JFactory::getLanguage()->getTag();
            
          $locale .= ',' str_replace('-''_'$locale);
          }
          // le formateur et retour
          $fmt datefmt_create($localeIntlDateFormatter::FULLIntlDateFormatter::FULLNULLIntlDateFormatter::GREGORIAN$format);
          return 
          datefmt_format($fmtstrtotime($date));

          UP, le plugin universel à découvrir sur https//up.lomart.fr
          bgMax
          , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

          Commentaire


          • #6
            Bonjour KLoïc,

            J'avais oublié cette discussion !
            En fait, j'ai fait toutes les modifications dans le code, et l'extension fonctionne sauf une ou deux fonctionnalités qui mériteraient une réécriture plus profonde, mais que je n'utilise pas dans mes tests. Et de toute façon, comme je ne serai pas capable d'en gérer l'entretien, cette extension de gestion de rendez-vous va hélas passer aux oubliettes.

            Je ne sais pas sur quoi je pourrais tester ton code, désolé.
            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
            MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

            Commentaire


            • #7
              Envoyé par RobertG Voir le message
              Je ne sais pas sur quoi je pourrais tester ton code, désolé.
              Ce n'est pas grave du tout
              Ce code pourra (peut-être) servir à quelqu'un.

              Bonne journée

              UP, le plugin universel à découvrir sur https//up.lomart.fr
              bgMax
              , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

              Commentaire

              Annonce

              Réduire
              1 sur 2 < >

              C'est [Réglé] et on n'en parle plus ?

              A quoi ça sert ?
              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
              Comment ajouter la mention [Réglé] à votre discussion ?
              1 - Aller sur votre discussion et éditer votre premier message :


              2 - Cliquer sur la liste déroulante Préfixe.

              3 - Choisir le préfixe [Réglé].


              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

              2 sur 2 < >

              Assistance au forum - Outil de publication d'infos de votre site

              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

              UTILISER À VOS PROPRES RISQUES :
              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

              Problèmes connus :
              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

              Installation :

              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

              Archive zip : https://github.com/AFUJ/FPA/zipball/master

              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
              et remplacer www. votresite .com par votre nom de domaine


              Exemples:
              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
              Télécharger le script fpa-fr.php dans: /public_html/
              Pour executer le script: http://www..com/fpa-fr.php

              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
              Télécharger le script fpa-fr.php dans: /public_html/cms/
              Pour executer le script: http://www..com/cms/fpa-fr.php

              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
              Voir plus
              Voir moins

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X