Changeset 81626 in spip-zone


Ignore:
Timestamp:
Mar 25, 2014, 6:17:31 PM (5 years ago)
Author:
amaury.adon@…
Message:

Début de la prise en compte des réservations auto

Location:
_plugins_/import_ics/formulaires
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/import_ics/formulaires/editer_almanach.html

    r81453 r81626  
     1<script language="JavaScript">
     2$( document ).ready(function() {
     3  $('.editer_id_ressource').hide();
     4});
     5function toggle(className, obj) {
     6    var $input = $(obj);
     7    if ($input.prop('checked')) $(className).show();
     8    else $(className).hide();
     9}
     10</script>
     11
    112<div class="ajax">
    213<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_almanach,nouveau}'>
     
    5667                        })]
    5768
    58                 [(#PLUGIN{orr}|non)
    59                         [(#SAISIE{selection, id_orr_ressource, obligatoire=non,
    60                                 afficher_si='@resa_auto@=="on"',
    61                                 label=<:almanach:reservation:>,
     69                        [(#PLUGIN{orr}|oui)
     70                        <li class="editer_resa_auto">
     71                                <div class="choix">
     72                                        <input type='checkbox' onclick="toggle('.editer_id_ressource', this)" class="checkbox" name='resa_auto' value='oui' id='resa_auto_oui'[ (#ENV{resa_auto}oui{non}|oui)checked="checked"] />
     73                                        <label for='resa_auto_oui'>Activer les réservations automatiques</label>
     74                                </div>
     75                        </li>
     76
     77                        [(#SAISIE{selection, id_ressource, obligatoire=non,
     78                                label=<:almanach:resa_auto:>,
    6279                                explication=<:almanach:choix_salle:>,
    63                                 datas=#GET{tableau_ressources} 
     80                                datas=#GET{tableau_ressources}
    6481                        })]
    65                 ]
     82                        ]
    6683                </ul>
    6784                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
  • _plugins_/import_ics/formulaires/editer_almanach.php

    r81261 r81626  
    55 * @plugin     Import_ics
    66 * @copyright  2013
    7  * @author     Amaury
     7 * @author     Amaury Adon
    88 * @licence    GNU/GPL
    99 * @package    SPIP\Import_ics\Formulaires
     
    5353**/
    5454function importation_evenement($objet_evenement,$id_almanach){
    55         //on recupere les infos de l'evenement dans des variables
     55        #on recupere les infos de l'evenement dans des variables
    5656            $attendee = $objet_evenement->getProperty( "attendee" ); #nom de l'attendee
    5757            $lieu = $objet_evenement->getProperty("location");#récupération du lieu
    5858            $summary_array = $objet_evenement->getProperty("summary", 1, TRUE); #summary est un array on recupere la valeur dans l'insertion attention, summary c'est pour le titre !
     59                $titre_evt=str_replace('SUMMARY:', '', $summary_array["value"]);
    5960                $url = $objet_evenement->getProperty( "URL");#on récupère l'url de l'événement pour la mettre dans les notes histoire de pouvoir relier à l'événement original
    6061            $descriptif_array = $objet_evenement->getProperty("DESCRIPTION", 1,TRUE);
    6162            $organizer = $objet_evenement->getProperty("ORGANIZER");#organisateur de l'evenement
    62         //données de localisation de l'évenement
     63        #données de localisation de l'évenement
    6364            $localisation = $objet_evenement->getProperty( "GEO" );#c'est un array array( "latitude"  => <latitude>, "longitude" => <longitude>))
    6465            $latitude = $localisation['latitude'];
     
    8687                #on fait une variable qui contient le résultat des deux précédentes actions
    8788                $date_fin = $endDate.$endTime;
    88     //On gère la date de création
    89                 $created_array = $objet_evenement->getProperty("created", 1, TRUE);
    90                         $created = $created_array["value"];
    91                 $createdDate = "{$created["year"]}-{$created["month"]}-{$created["day"]}";
    92                 $createdTime = '';#on initialise le temps de fin
    93                 if (!in_array("DATE", $created_array["params"])) {
    94                         $createdTime = " {$created["hour"]}:{$created["min"]}:{$created["sec"]}";
    95                         }
    96                 #on fait une variable qui contient le résultat des deux précédentes actions
    97                 $date_creation = $createdDate.$createdTime;     
    9889        #on insere les infos des événements dans la base
    9990        # ca ce sera pour quand j'arriverai à faire fonctionner le selecteur d'articles $id_article = preg_replace('(article\|)','',_request('id_article')); #le selecteur d'article fournit un tableau, on se débarasse du mot article dedans et on appellera ensuite la première valeur (il pourrait y avoir des saisies multiples même si ici on ne les autorise pas)
    10091        $id_mot = _request('id_mot');
    10192        $id_article = _request('id_article');
    102         $id_evenement= sql_insertq('spip_evenements',array('id_article' =>$id_article,'date_debut'=>$date_debut,'date_fin'=>$date_fin,'titre'=>str_replace('SUMMARY:', '', $summary_array["value"]),'descriptif'=>'<math>'.$descriptif_array["value"].'</math>','lieu'=>$lieu,'adresse'=>'','inscription'=>'0','places'=>'0','horaire'=>'oui','statut'=>'publie','date_creation'=>$date_creation,'attendee'=>str_replace('MAILTO:', '', $attendee),'id_evenement_source'=>'0','uid'=>$uid_distante,'sequence'=>$sequence_distante,'notes'=>$url));
     93        $id_evenement= sql_insertq('spip_evenements',array('id_article' =>$id_article,'date_debut'=>$date_debut,'date_fin'=>$date_fin,'titre'=>$titre_evt,'descriptif'=>'<math>'.$descriptif_array["value"].'</math>','lieu'=>$lieu,'adresse'=>'','inscription'=>'0','places'=>'0','horaire'=>'oui','statut'=>'publie','attendee'=>str_replace('MAILTO:', '', $attendee),'id_evenement_source'=>'0','uid'=>$uid_distante,'sequence'=>$sequence_distante,'notes'=>$url));
    10394       
    10495        #on associe l'évéenement à l'almanach
     
    10798        #on associe l'événement à son mot
    10899        sql_insertq("spip_mots_liens",array('id_mot'=>$id_mot,'id_objet'=>$id_evenement,'objet'=>'evenement'));
     100        #on ajoute la resa si on le doit
     101        // if (is_numeric(_request("id_orr_ressource"))) {
     102        //      $id_ressource=_request("id_orr_ressource");
     103        //      echo $id_ressource;
     104        //      ajout_resa($titre_evt,$id_ressource,$date_debut,$date_fin)
     105        // }
    109106}
    110107
    111108
     109/**
     110*ajout d'une reservation à l'événeemnt si c'est coché
     111**/
     112
     113function ajout_resa($titre_evt,$id_ressource,$date_debut,$date_fin){
     114        sql_insertq("spip_orr_reservations_liens",array('id_objet'=>$id_ressource,'objet'=>'orr_ressource','vu'=>'non'));
     115
     116
     117}
    112118/**
    113119 * Traitement du formulaire d'édition de almanach
     
    120126        #on recupère l'id de l'almanach dont on aura besoin plus tard
    121127        $id_almanach = $chargement['id_almanach'];
    122 
    123128        #on associe le mot à l'almanach
    124129        $id_mot = _request('id_mot');
    125130        sql_insertq("spip_mots_liens",array('id_mot'=>$id_mot,'id_objet'=>$id_almanach,'objet'=>'almanach'));
    126131        #configuration nécessaire à la récupération
    127         //on vérifie si c'est un agenda google, si c'est le cas, il faut un traitement particulier
    128         $hote = parse_url(_request("url"));
    129         if ($hote[host]=="www.google.com")
    130                 {# on passe par un fichier temp car notre librairie fonctionne comme ca
    131                 $u = file_get_contents(_request("url"));//on récupère le contenu du fichier distant
    132                         if (!$u) {
    133                                 echo "Impossible de lire le calendrier distant.";//au cas ou ça ne voudrait pas marcher
    134                                 exit;
    135                         }
    136                 $tmp = _DIR_TMP . 'ics-'.md5($u);//on écrit le ficier tmp
    137                 ecrire_fichier($tmp, str_replace("\r\n", "\n", $u));
    138 
    139                 //initialisaiton de l'agenda avec le fichier tmp
    140                 $cal = new vcalendar();
    141                 $cal->setConfig( 'filename', $tmp );
    142                 $cal->parse();
    143 
    144                 supprimer_fichier($tmp);//suppression du fichier tmp
    145         }
    146         else{
    147                 $config = array("unique_id"=>"","url"=>_request("url"));
    148                 $cal = new vcalendar($config);
    149                 $cal->parse();
    150         }
     132        $config = array("unique_id"=>"","url"=>_request("url"));
     133        $cal = new vcalendar($config);
     134        $cal->parse();
    151135        //ON fait un appel dans la base de spip pour vpouvoir vérifier si un événement y est déjà (ça ne se fait pas en une ligne...)
    152136        $liens = sql_allfetsel('id_evenement, uid, sequence', 'spip_evenements');
     
    158142 while ($comp = $cal->getComponent())
    159143 {
    160 //les variables qui vont servir à vérifier l'existence et l'unicité
     144#les variables qui vont servir à vérifier l'existence et l'unicité
    161145                $sequence_distante = $comp->getProperty( "SEQUENCE" );#sequence d l'evenement http://kigkonsult.se/iCalcreator/docs/using.html#SEQUENCE
    162146            $uid_distante = $comp->getProperty("UID");#uid de l'evenement
    163147                if (!is_int($sequence_distante)){$sequence_distante="0";}//au cas où le flux ics ne fournirait pas le champ sequence, on initialise la valeur à 0 comme lors d'un import
     148//est-ce que c'est un googlecal ? Dans ce cas, on a un traitement un peu particulier
     149
    164150//On commence à vérifier l'existence et l'unicité  maintenant et on met à jour ou on importe selon le cas
    165151        if (in_array($uid_distante, $uid)){//si l'uid_distante est présente dans la bdd
Note: See TracChangeset for help on using the changeset viewer.