Changeset 81261 in spip-zone


Ignore:
Timestamp:
Mar 7, 2014, 5:23:40 PM (5 years ago)
Author:
amaury.adon@…
Message:

on peut maintenant importer des google calendar
gestion de la date de création de l'événement
incrément léger de version

Location:
_plugins_/import_ics
Files:
2 edited

Legend:

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

    r76536 r81261  
    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
     
    6060            $descriptif_array = $objet_evenement->getProperty("DESCRIPTION", 1,TRUE);
    6161            $organizer = $objet_evenement->getProperty("ORGANIZER");#organisateur de l'evenement
    62         #données de localisation de l'évenement
     62        //données de localisation de l'évenement
    6363            $localisation = $objet_evenement->getProperty( "GEO" );#c'est un array array( "latitude"  => <latitude>, "longitude" => <longitude>))
    6464            $latitude = $localisation['latitude'];
     
    8686                #on fait une variable qui contient le résultat des deux précédentes actions
    8787                $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;     
    8898        #on insere les infos des événements dans la base
    8999        # 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)
    90100        $id_mot = _request('id_mot');
    91101        $id_article = _request('id_article');
    92         $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','attendee'=>str_replace('MAILTO:', '', $attendee),'id_evenement_source'=>'0','uid'=>$uid_distante,'sequence'=>$sequence_distante,'notes'=>$url));
     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));
    93103       
    94104        #on associe l'évéenement à l'almanach
     
    110120        #on recupère l'id de l'almanach dont on aura besoin plus tard
    111121        $id_almanach = $chargement['id_almanach'];
     122
    112123        #on associe le mot à l'almanach
    113124        $id_mot = _request('id_mot');
    114125        sql_insertq("spip_mots_liens",array('id_mot'=>$id_mot,'id_objet'=>$id_almanach,'objet'=>'almanach'));
    115126        #configuration nécessaire à la récupération
    116         $config = array("unique_id"=>"","url"=>_request("url"));
    117         $cal = new vcalendar($config);
    118         $cal->parse();
     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        }
    119151        //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...)
    120152        $liens = sql_allfetsel('id_evenement, uid, sequence', 'spip_evenements');
     
    126158 while ($comp = $cal->getComponent())
    127159 {
    128 #les variables qui vont servir à vérifier l'existence et l'unicité
     160//les variables qui vont servir à vérifier l'existence et l'unicité
    129161                $sequence_distante = $comp->getProperty( "SEQUENCE" );#sequence d l'evenement http://kigkonsult.se/iCalcreator/docs/using.html#SEQUENCE
    130162            $uid_distante = $comp->getProperty("UID");#uid de l'evenement
  • _plugins_/import_ics/paquet.xml

    r76460 r81261  
    22        prefix="import_ics"
    33        categorie="date"
    4         version="1.1.0"
    5         etat="dev"
     4        version="1.1.1"
     5        etat="test"
    66        compatibilite="[3.0.7;3.0.*]"
    77        logo="prive/themes/spip/images/import_ics-64.png"
Note: See TracChangeset for help on using the changeset viewer.