Changeset 111399 in spip-zone


Ignore:
Timestamp:
Aug 22, 2018, 2:26:03 PM (12 months ago)
Author:
real3t@…
Message:

gérer les événements ayant une durée (duration) à la plac d'une date de fin

Une correction dans une condition (tester 2× 'ete' sans tester 'hiver', ça semble être une erreur de copié/collé)

Location:
_plugins_/import_ics/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/import_ics/trunk/import_ics_fonctions.php

    r102454 r111399  
    3838        if (!$all_day and is_array($decalage)
    3939                and isset($decalage['ete'])
    40                 and isset($decalage['ete'])){
     40                and isset($decalage['hiver'])){
    4141                        if ($date_ete){
    4242                                $decalage = $decalage['ete'];
  • _plugins_/import_ics/trunk/inc/import_ics.php

    r110018 r111399  
    113113**/
    114114function importer_evenement($objet_evenement,$id_almanach,$id_article,$decalage,$statut,$mots){
    115   $champs_sql = array_merge(
     115        $champs_sql = array_merge(
    116116                evenement_ical_to_sql($objet_evenement,$decalage),
    117117                array(
     
    120120                )
    121121        );
     122
    122123        # création de l'evt
    123124        autoriser_exception('creer','evenement','');
     
    168169                # récupérer la date de début et la formater correctement
    169170                        $dtstart_array = $objet_evenement->getProperty("dtstart", 1, TRUE);
    170                                 list ($date_debut,$start_all_day) = date_ical_to_sql($dtstart_array,$decalage);
     171                        list ($date_debut,$start_all_day) = date_ical_to_sql($dtstart_array,$decalage);
    171172                #les 3 lignes suivantes servent à récupérer la date de fin et à la mettre dans le bon format
    172                                 $dtend_array = $objet_evenement->getProperty("dtend", 1, TRUE);
    173                                 if (is_array($dtend_array)){
    174                                         list ($date_fin,$end_all_day) = date_ical_to_sql($dtend_array,$decalage);
     173                        $dtend_array = $objet_evenement->getProperty("dtend", 1, TRUE);
     174                        if (is_array($dtend_array)) {
     175                                list ($date_fin,$end_all_day) = date_ical_to_sql($dtend_array,$decalage);
     176                        } else {
     177                                $duration_array = $objet_evenement->getProperty("duration", 1, TRUE);
     178                                if ($duration_array["value"]<>''){
     179                                        $date_deb = date_ical_to_sql($dtstart_array,'', TRUE);
     180                                        $date_ete = intval(affdate($date_deb,'I'));//Est-on en heure d'été?
     181                                        if (!$all_day AND is_array($decalage) AND isset($decalage['ete']) AND isset($decalage['hiver'])) {
     182                                                if ($date_ete) {
     183                                                        $decalageheure = $decalage['ete'];
     184                                                } else {
     185                                                        $decalageheure = $decalage['hiver'];
     186                                                }
     187                                        }
     188                                        $duree_seconde=($duration_array["value"]["hour"]+$decalageheure)*60*60+$duration_array["value"]["min"]*60+$duration_array["value"]["sec"] ;
     189                                        $date_fin = "DATE_ADD('$date_deb', INTERVAL $duree_seconde SECOND)";
    175190                                } else {
    176191                                        $date_fin = $date_debut;
    177192                                        $end_all_day = $debut_all_day;
    178193                                }
     194                        }
     195
    179196                        // Est-ce que l'evt dure toute la journée?
    180197                        if ($end_all_day and $start_all_day){
  • _plugins_/import_ics/trunk/paquet.xml

    r110018 r111399  
    22        prefix="import_ics"
    33        categorie="date"
    4         version="4.4.2"
     4        version="4.4.3"
    55        etat="stable"
    66        compatibilite="[3.0.7;3.2.*]"
  • _plugins_/import_ics/trunk/todo.txt

    r101487 r111399  
    1 - gérer correctement la suppression des almanachs, puisqu'il ne suffit pas d'avoir un statut poubelle pour que cela soit effacé régulièrement (prendre aussi en compte le cas où on aurait le plugin corbeille
    2 - gérer les répetitions d'evt. C'est complexe. cf http://www.kanzaki.com/docs/ical/recur.html
    3 
     1[ ] gérer correctement la suppression des almanachs, puisqu'il ne suffit pas d'avoir un statut poubelle pour que cela soit effacé régulièrement (prendre aussi en compte le cas où on aurait le plugin corbeille
     2[ ] gérer les répetitions d'evt. C'est complexe. cf http://www.kanzaki.com/docs/ical/recur.html
     3[x] gérer les événements ayant une durée (duration) à la plac d'une date de fin
Note: See TracChangeset for help on using the changeset viewer.