getProperty( "attendee" ); #nom de l'attendee $lieu = $objet_evenement->getProperty("location");#récupération du lieu $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 ! $titre_evt=str_replace('SUMMARY:', '', $summary_array["value"]); $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 $descriptif_array = $objet_evenement->getProperty("DESCRIPTION", 1,TRUE); $organizer = $objet_evenement->getProperty("ORGANIZER");#organisateur de l'evenement #données de localisation de l'évenement $localisation = $objet_evenement->getProperty( "GEO" );#c'est un array array( "latitude" => , "longitude" => )) $latitude = $localisation['latitude']; $longitude = $localisation['longitude']; //un petit coup avec l'uid $uid_distante = $objet_evenement->getProperty("UID");#uid de l'evenement #les 3 lignes suivantes servent à récupérer la date de début et à la mettre dans le bon format $dtstart_array = $objet_evenement->getProperty("dtstart", 1, TRUE); $dtstart = $dtstart_array["value"]; $startDate = "{$dtstart["year"]}-{$dtstart["month"]}-{$dtstart["day"]}"; $startTime = '';#on initialise le temps de début if (!in_array("DATE", $dtstart_array["params"])) { $startTime = " {$dtstart["hour"]}:{$dtstart["min"]}:{$dtstart["sec"]}"; } #on fait une variable qui contient le résultat des deux précédentes actions $date_debut = $startDate.$startTime; #les 3 lignes suivantes servent à récupérer la date de fin et à la mettre dans le bon format $dtend_array = $objet_evenement->getProperty("dtend", 1, TRUE); $dtend = $dtend_array["value"]; $endDate = "{$dtend["year"]}-{$dtend["month"]}-{$dtend["day"]}"; $endTime = '';#on initialise le temps de fin if (!in_array("DATE", $dtend_array["params"])) { $endTime = " {$dtend["hour"]}:{$dtend["min"]}:{$dtend["sec"]}"; } #on fait une variable qui contient le résultat des deux précédentes actions $date_fin = $endDate.$endTime; #on insere les infos des événements dans la base # 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) $id_mot = _request('id_mot'); $id_article = _request('id_article'); $id_evenement= sql_insertq('spip_evenements',array('id_article' =>$id_article,'date_debut'=>$date_debut,'date_fin'=>$date_fin,'titre'=>$titre_evt,'descriptif'=>''.$descriptif_array["value"].'','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)); #on associe l'évéenement à l'almanach #objet_associer(array('almanach'=>$id_almanach),array('evenement'=>$id_evenement),array('vu'=>'oui')); sql_insertq("spip_almanachs_liens",array('id_almanach'=>$id_almanach,'id_objet'=>$id_evenement,'objet'=>'evenement','vu'=>'oui')); #on associe l'événement à son mot sql_insertq("spip_mots_liens",array('id_mot'=>$id_mot,'id_objet'=>$id_evenement,'objet'=>'evenement')); #on ajoute la resa si on le doit if ((_request("id_ressource"))>0) { $id_ressource=_request("id_ressource"); ajout_resa($titre_evt,$id_ressource,$date_debut,$date_fin); } } /** *ajout d'une reservation à l'événeemnt si c'est coché **/ function ajout_resa($titre_evt,$id_ressource,$date_debut,$date_fin){ $id_orr_reservation = sql_insertq("spip_orr_reservations",array('orr_reservation_nom'=>$titre_evt,'orr_date_debut'=>$date_debut,'orr_date_fin'=>$date_fin)); sql_insertq("spip_orr_reservations_liens",array('id_orr_reservation'=>$id_orr_reservation,'id_objet'=>$id_ressource,'objet'=>'orr_ressource','vu'=>'non')); echo "ajout résa"; } /** * Traitement du formulaire d'édition de almanach * * Traiter les champs postés * */ function formulaires_editer_almanach_traiter_dist($id_almanach='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){ $chargement = formulaires_editer_objet_traiter('almanach',$id_almanach,'',$lier_trad,$retour,$config_fonc,$row,$hidden); #on recupère l'id de l'almanach dont on aura besoin plus tard $id_almanach = $chargement['id_almanach']; #on associe le mot à l'almanach $id_mot = _request('id_mot'); if (_request('resa_auto')=='oui') $resa_auto=1; sql_insertq("spip_mots_liens",array('id_mot'=>$id_mot,'id_objet'=>$id_almanach,'objet'=>'almanach')); sql_insertq("spip_almanachs",array('resa_auto'=>$resa_auto)); echo $resa_auto; #configuration nécessaire à la récupération $config = array("unique_id"=>"","url"=>_request("url")); $cal = new vcalendar($config); $cal->parse(); //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...) $liens = sql_allfetsel('id_evenement, uid, sequence', 'spip_evenements'); // on definit un tableau des uid présentes dans la base $uid =""; foreach ($liens as $u ) { $uid[] = $u['uid']; }; while ($comp = $cal->getComponent()) { #les variables qui vont servir à vérifier l'existence et l'unicité $sequence_distante = $comp->getProperty( "SEQUENCE" );#sequence d l'evenement http://kigkonsult.se/iCalcreator/docs/using.html#SEQUENCE $uid_distante = $comp->getProperty("UID");#uid de l'evenement 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 //est-ce que c'est un googlecal ? Dans ce cas, on a un traitement un peu particulier //On commence à vérifier l'existence et l'unicité maintenant et on met à jour ou on importe selon le cas if (in_array($uid_distante, $uid)){//si l'uid_distante est présente dans la bdd $cle = array_search($uid_distante, $uid); // on utilise le fait que les deux tableaux ont le même index pour le récupérer $sequence = $liens[$cle]['sequence'];//sequence presente dans la base ayant le meme index if ($sequence < $sequence_distante ){//si la sequecne de la bdd est plus petite, il y a eu mise à jour et il faut intervenir echo "c'est pas pareil, il faut mettre à jour l'événement ".$liens[$cle]['id_evenement']."
"; } } else {importation_evenement($comp,$id_almanach);};//l'evenement n'est pas dans la bdd, on va l'y mettre } return $chargement; } ?>