Changeset 73528 in spip-zone


Ignore:
Timestamp:
Jun 11, 2013, 9:17:37 PM (6 years ago)
Author:
amaury.adon@…
Message:

Ca commence à ressembler à ce que je veux :

  • affichage des événements de l'agenda distant avant enregistrement
  • importation des événements dans la base de spip

Reste que :

  • si je met en dur "url"=>"http://www.latp.univ-mrs.fr/spip.php?page=seminaire_ical&id_article=351, ça marche alors que si je met "url"=>$u ça ne marche pas (comme dans le plugin icalendar en fait), il coupe au niveau du point d'interrogation. Spip aurait-il une phobie particulière pour les ? ?
  • les événements que j'incorpore ne sont pas modifiables
  • il faut encore lier les événements et les almanachs à la création de l'almanach (post_insertion peut-être)
  • il faut permettre d'affecter un mots clé aux événements qui sont importés (modification du formulaire)
  • Il faut supprimer les événements liés à un almanach à la suppression de celui-ci
  • il faut vérifier les autorisations pour la création et la suppression des almanachs (et des événements)
  • il faut faire des vérifications pour l'url de l'agenda distant
  • et comme on rentre des choses en bdd, il faut assurer la sécurité (histoire de ne pas avoir de vilaine faille de sécu)

Et comme je ne sais pas faire la moitié de ce qu'il y a à faire, je vais encore passer des bons moments à rtfm...

Location:
_plugins_/import_ics
Files:
2 edited

Legend:

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

    r73186 r73528  
    8989 */
    9090function formulaires_editer_almanach_verifier_1_dist($id_almanach='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    91         return formulaires_editer_objet_verifier('almanach',$id_almanach, array('titre', 'url', 'id_article'));
     91        //version de base de la fabrique
     92        //return formulaires_editer_objet_verifier('almanach',$id_almanach, array('titre', 'url', 'id_article'));
     93        $erreurs = formulaires_editer_objet_verifier('almanach',$id_almanach, array('titre', 'url', 'id_article'));
     94       
     95        //verification supplementaires
     96
     97        return $erreurs;
    9298}
    9399
     
    117123
    118124        # on passe par un fichier temp car notre librairie fonctionne comme ca
    119         $tmp = _DIR_TMP . 'ics-'.md5('url');
    120         ecrire_fichier($tmp, str_replace("\r\n", "\n", $u));
    121 
    122         $cal = new vcalendar();
    123         $cal->setConfig( 'filename', $tmp );
     125        //$tmp = _DIR_TMP . 'ics-'.md5('url');
     126        //ecrire_fichier($tmp, str_replace("\r\n", "\n", $u));
     127        $config = array("unique_id"=>"","url"=>"http://www.latp.univ-mrs.fr/spip.php?page=seminaire_ical&id_article=351");
     128        $cal = new vcalendar($config);
     129        //$cal->setConfig( 'filename', $tmp );
    124130        $cal->parse();
    125131
    126 sql_insertq('spip_almanachs_liens',array('id_almanach'=>$id_almanach,'id_objet'=>'1','objet'=>'evenement'));
     132 while ($comp = $cal->getComponent())
     133 {
     134        #on recupere les infos de l'evenement dans des variables
     135            $attendee = $comp->getProperty( "attendee" ); #nom de l'attendee
     136            $lieu = $comp->getProperty("location");#récupération du lieu
     137            $summary_array = $comp->getProperty("summary", 1, TRUE); #summary est un array on recupere la valeur dans l'insertion attention, summary c'est pour le titre !
     138            $descriptif_array = $comp->getProperty("description",1,TRUE);
     139        #les 3 lignes suivantes servent à récupérer la date de début et à la mettre dans le bon format
     140            $dtstart_array = $comp->getProperty("dtstart", 1, TRUE);
     141                $dtstart = $dtstart_array["value"];
     142                        $startDate = "{$dtstart["year"]}-{$dtstart["month"]}-{$dtstart["day"]}";
     143                        $startTime = '';#on initialise le temps de début
     144                if (!in_array("DATE", $dtstart_array["params"])) {
     145                         $startTime = " {$dtstart["hour"]}:{$dtstart["min"]}:{$dtstart["sec"]}";
     146                        }
     147                #on fait une variable qui contient le résultat des deux précédentes actions
     148                $date_debut = $startDate.$startTime;
     149        #les 3 lignes suivantes servent à récupérer la date de fin et à la mettre dans le bon format
     150                $dtend_array = $comp->getProperty("dtend", 1, TRUE);
     151                        $dtend = $dtend_array["value"];
     152                $endDate = "{$dtend["year"]}-{$dtend["month"]}-{$dtend["day"]}";
     153                $endTime = '';#on initialise le temps de fin
     154                if (!in_array("DATE", $dtend_array["params"])) {
     155                        $endTime = " {$dtend["hour"]}:{$dtend["min"]}:{$dtend["sec"]}";
     156                        }
     157                #on fait une variable qui contient le résultat des deux précédentes actions
     158                $date_fin = $endDate.$endTime;
     159        #on insere les infos des événements dans la base spip_evenements
     160        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'));
     161        //                                                                      'date_debut'=>'',
     162        //                                                                      'date_fin'=>'',
     163        //                                                                      'titre'=>'',
     164        //                                                                      'descriptif'=>str_replace('SUMMARY:', '', $summary_array["value"]),
     165        //                                                                      'lieu'=>'',
     166        //                                                                      'adresse'=>'',
     167        //                                                                      'inscription'=>'0',
     168        //                                                                      'places'=>'0',
     169        //                                                                      'horaire'=>'oui',
     170        //                                                                      'statut'=>'publie',
     171        //                                                                      'maj'=>'',
     172        //                                                                      'name'=>'',
     173        //                                                                      'origin'=>'',
     174        //                                                                      'notes'=>'',
     175        //                                                                      'attendee'=>$attendee );)
    127176
     177  sql_insertq('spip_almanachs_liens',array('id_almanach'=>'1','id_objet'=>'2','objet'=>'evenement'));
     178 }
    128179        return formulaires_editer_objet_traiter('almanach',$id_almanach,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
    129180}
  • _plugins_/import_ics/import_ics_fonctions.php

    r73186 r73528  
    22//require_once 'lib/iCalcreator.class.php';/*appeler la librairie qui se trouve dans le plugin icalendar*/
    33function mon_filtre($url){
    4 echo "<h1>Test pour la récupération </h1>";
    5 
    64$config = array("unique_id" => "latp",
    75    "url" => $url);
    8 
     6//var_dump($url);
    97$v = new vcalendar($config);
    108
     
    1614
    1715        /*date de début*/
    18    $summary_array = $comp->getProperty("summary", 1, TRUE);
    19     echo "summary: ", $summary_array["value"], "\n";
    20 
    2116   $dtstart_array = $comp->getProperty("dtstart", 1, TRUE);
    2217    $dtstart = $dtstart_array["value"];
     
    3934    }
    4035    echo "\n";
    41 
     36    /*attendee*/
     37    $attendee = $comp->getProperty( "attendee" );
     38    echo "<strong>attendee : ", str_replace('MAILTO:','',$attendee)."</strong><br/>";
     39    /*summary*/
     40    $summary_array = $comp->getProperty("summary", 1, TRUE);
     41    echo "summary : ", str_replace('SUMMARY:', '', $summary_array["value"]), "\n";
    4242    /*categorie*/
    4343    $categories = $comp->getProperty( "categories" );
    4444    echo "<strong>categories : ", $categories."</strong><br/>";
    4545
    46     /*attendee*/
    47     $attendee = $comp->getProperty( "attendee" );
    48         echo "<strong>attendee : ", $attendee."</strong><br/>";
    49 
    50 
    51 
    52 
    5346echo "</div>";
    5447}
    5548
    56 return $url;
     49//return $url;
    5750}
    5851
Note: See TracChangeset for help on using the changeset viewer.