Changeset 122372 in spip-zone


Ignore:
Timestamp:
Feb 11, 2020, 5:13:05 PM (11 days ago)
Author:
Cerdic
Message:

Les evenements sur une journée sont fixés à 12h00 et non 0h00, toujours avec heure identique pour debut et fin (12h dans la timezone cible, donc potentiellement decale en base, mais du coup peu de chance que le jour shift, ce qui simplifie la lecture de la base

Location:
_plugins_/agenda/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/agenda/trunk

    • Property subgit:lock:dc6021fb0ce281dd8a17a4c6a16ae3f940eada43 deleted
    • Property subgit:lock:131d2341cf41b2d419f6534ec054201697434db3 set to 2020-02-11T18:13:10.587
  • _plugins_/agenda/trunk/agenda_administrations.php

    r122360 r122372  
    9494                array('sql_alter', 'TABLE spip_evenements ADD timezone_affiche varchar(255) NOT NULL DEFAULT \'\''),
    9595        );
     96        $maj['1.0.1'] = array(
     97                array('agenda_corrige_heure_evenements_journee'),
     98        );
    9699
    97100        include_spip('base/upgrade');
    98101        maj_plugin($nom_meta_base_version, $version_cible, $maj);
     102}
     103
     104function agenda_corrige_heure_evenements_journee() {
     105
     106        $res = sql_select('*', 'spip_evenements', 'horaire='.sql_quote('non').' AND date_debut LIKE '.sql_quote('% 00:00:00'));
     107        $nb = sql_count($res);
     108        spip_log("agenda_corrige_heure_evenements_journee: $nb restants", "maj");
     109        while ($row = sql_fetch($res)) {
     110
     111                $date_debut = date('Y-m-d 12:00:00', strtotime($row['date_debut']));
     112                $date_fin = date('Y-m-d 12:00:00', strtotime($row['date_fin']));
     113                $set = array(
     114                        'date_debut' => $date_debut,
     115                        'date_fin' => $date_fin,
     116                );
     117                sql_updateq('spip_evenements', $set, "id_evenement=".intval($row['id_evenement']));
     118
     119                if (time() > _TIME_OUT) {
     120                        return;
     121                }
     122        }
     123
    99124}
    100125
  • _plugins_/agenda/trunk/formulaires/editer_evenement.php

    r122361 r122372  
    4040        }
    4141
     42        $now = date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);
    4243        if ($valeurs['_saisie_timezone']) {
    4344                $valeurs['date_debut'] = agenda_tz_date_local_to_tz($valeurs['date_debut'], $valeurs['timezone_affiche']);
    4445                $valeurs['date_fin'] = agenda_tz_date_local_to_tz($valeurs['date_fin'], $valeurs['timezone_affiche']);
     46                $now = agenda_tz_date_local_to_tz($now, $valeurs['timezone_affiche']);
    4547        }
    4648
     
    6264        list($valeurs['date_fin'], $valeurs['heure_fin']) = explode(' ', date('d/m/Y H:i', strtotime($valeurs['date_fin'])));
    6365
     66        // si ce sont des evenements a la journee, on mets une heure par defaut calee sur l'heure actuelle (dans la timezone cible),
     67        // si jamais l'utilisateur veut passer l'evenement en mode horaire
     68        if ($valeurs['horaire'] === 'non') {
     69                $valeurs['heure_debut'] = date('H:00', strtotime($now) + 1800);
     70                $valeurs['heure_fin'] = date('H:00', strtotime($now) +1800 + 3600);
     71        }
     72
    6473        // traiter specifiquement l'horaire qui est une checkbox
    6574        if (_request('date_debut') and !_request('horaire')) {
     
    140149        $date_fin = verifier_corriger_date_saisie('fin', _request('horaire') == 'oui', $erreurs);
    141150
    142         $date_debut = date('Y-m-d H:i:s', $date_debut);
    143         $date_fin = date('Y-m-d H:i:s', $date_fin);
     151        $date_debut = date(_request('horaire') == 'oui' ? 'Y-m-d H:i:s' : 'Y-m-d 12:00:00', $date_debut);
     152        $date_fin = date(_request('horaire') == 'oui' ? 'Y-m-d H:i:s' : 'Y-m-d 12:00:00', $date_fin);
    144153
    145154        $offset_repetition = '';
  • _plugins_/agenda/trunk/inc/agenda_timezone.php

    r122361 r122372  
    2929        $tz_string = '';
    3030        $h = ($horaire === 'oui' or $horaire === true);
    31         if ($h and $timezone and $config_timezone) {
     31        if ($timezone and $config_timezone) {
    3232                $date_debut = agenda_tz_date_local_to_tz($date_debut, $timezone);
    3333                $date_fin = agenda_tz_date_local_to_tz($date_fin, $timezone);
    34                 $tz_string = " <i class='tz'>(".agenda_tz_to_string($date_debut, $timezone, $forme).")</i>";
     34                if ($h) {
     35                        $tz_string = " <i class='tz'>(".agenda_tz_to_string($date_debut, $timezone, $forme).")</i>";
     36                }
    3537        }
    3638
  • _plugins_/agenda/trunk/paquet.xml

    r122361 r122372  
    22        prefix="agenda"
    33        categorie="date"
    4         version="4.0.0"
     4        version="4.0.1"
    55        etat="test"
    66        compatibilite="[3.2.0;3.3.*]"
    77        logo="prive/themes/spip/images/evenement-32.png"
    8         schema="1.0.0"
     8        schema="1.0.1"
    99        documentation="https://contrib.spip.net/article2858"
    1010>
Note: See TracChangeset for help on using the changeset viewer.