[Apache, php, Icalendar] Exporter un agenda?

Résolu/Fermé
Moeb Messages postés 102 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 5 août 2008 - 5 août 2008 à 15:11
 Moeb - 25 août 2008 à 14:14
Bonjour,

pour bien poser le contexte, je développe actuellement une application de gestion des ressources humaines pour la boîte dans laquelle je bosse. Entre autres choses plus ou moins kawaii, cette application permet aux employés de saisir leurs emplois du temps.
Dans un souci d'adaptabilité, il a été prévu de pouvoir gérer ces mêmes emplois du temps avec Lightning (Agenda dépendant de thunderbird, contrairement à Sunbird, mais c'est pareil). Dans le sens "mon appli > Lightning", c'est simplissime, je n'ai eu qu'à traduire les données de ma base au format .ics, et d'importer l'agenda iCalendar ainsi créé dans Lightning. Simplissime, comme je disais.
L'idée est donc ensuite de considérer ce fichier iCalendar comme la base de dialogue entre mon appli et Lightning, à savoir que quelle que soit la source de la mise à jour, il faut que ça actualise l'autre source. En clair, si j'ajoute un évènement dans mon calendrier sur Lightning, il faut que cet évènement soit enregistré dans mon appli et donc dans ma BD.

C'est là que survient le problème. Lorsque je crée mon évènement dans Lightning, une pop up me prévient qu'il y eu une erreur. A la première fois que je le fais, j'ai le message suivant :

"Une erreur est survenue lors de la lecture des données de l'agenda : act_18_test. Celui-ci a été mis en mode lecture seule, car des changements dans cet agenda provoqueraient vraisemblablement une perte de données. Vous pouvez changer ce paramètre en sélectionnant "Modifier l'agenda".
Détails:
Numéro d'erreur : 0x0
Description : Publishing the calendar file failed.
Status code: 400 : Bad Request"

Comme vous pouvez le voir, Lightning semble donc m'empêcher de faire la modification pour protéger le fichier act_18.ics, qui est mon fichier partagé d'emploi du temps. Il est à noter qu'à la première fois que j'ai tenté le coup, j'avais eu un 405 : Method not allowed. Cela venait du fait que visiblement, le PUT n'est plus géré correctement, ou plus géré du tout (Corrigez moi si je me trompe, mais je pense qu'il n'est plus géré comme avant). J'ai donc placé un "script PUT put.php" dans mon fichier httpd.conf pour dire à apache que les put doivent être traités par le script put.php. C'est depuis que j'ai fait cette manip que j'obtiens un Bad request.

Quand je réessaye d'ajouter un évènement après avoir forcé mon calendrier à ne pas être en lecture seule, voici l'erreur que Lightning me sort :

"Une erreur est survenue lors de la lecture de données de l'agenda : act_18_test
Détails
Numéro d'erreur 0x0
Description : Publishing the calendar file failed
Status code: 400: Bad request"

Toujours un bad request, donc, et je n'arrive pas à m'en dépetrer. J'ai pu lire sur des forums que des gens y arrivaient, mais ils ne semblent pas évoquer précisément mon problème, et du coup je n'en ai toujours pas la solution. J'ai lu quelques trucs à propos de l'utilisation de Webdav, mais mon chef n'est pas super chaud pour l'utiliser, il est convaincu qu'on peut le faire sans l'aide de WebDav.
Si vous avez des idées, je suis giga-preneur.
A voir également:

2 réponses

Moeb Messages postés 102 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 5 août 2008 12
5 août 2008 à 16:47
Pour ceux que ça intéresse, j'ai réussi (yahooo)
J'avais le bon raisonnement de départ, fallait modifier le fichier put.php, et mettre ça dedans

Code:

<?php

if ($_SERVER['REQUEST_METHOD'] == "PUT")
{
$f = fopen(basename($_SERVER['REQUEST_URI']), "w");
$s = fopen("php://input", "r");

while($kb = fread($s, 1024))
{
fwrite($f, $kb, 1024);
}

fclose($f);
fclose($s);

Header("HTTP/1.1 201 Created");
}
elseif ($_SERVER['REQUEST_METHOD'] == "GET")
{
readfile(basename($_SERVER['REQUEST_URI']));
}

?>


Petit bout de code trouvé sur le net, à deux dessus à écumer des forums tous plus sombres les uns que les autres =D

Un grand merci aux gens qui ont regardé le topic, j'me suis senti moins seul XD
1
Ouaw, t'es trop fort Moeb ;)

T'as juste oublié d'indiquer un truc, c'est que pour que le PUT marche, il faut mettre

Options +ExecCGI

avant le Script PUT /put.php dans le fichier de conf d'apache...

Tout ça, pour qu'apache appelle correctement le fichier put.php :)
0
C'est drôle, je retombe sur mon sujet, et je crois que je reconnais le v de mickael_v dont je n'avais pas vu le message...
Merci pour la précision, chef !
0