Calendar ICS : message d'erreur "This parser can only read from strings or streams"

Bonsoir

le message d’erreur « This parser can only read from strings or streams. » est de retour sur le plugin ICS

Je précise de suite, j’ai lu toutes les discussions sur le sujet, aucune ne m’a apporté de solution.

info additionnelles :

  • Jeedom 4.2.18 stable
  • derniere version stable de calendar ICS
  • meme probleme sur version beta de calendar ICS
  • erreur apparait avec les URL d’Outlook pointant vers un ICS
  • si l’ICS est downloade d’Outlook et uploade localement sur Jeedom, ca marche
  • pas de soucis avec google ICS en ligne

pas d’idee de solution ?

j’ ai pu régler le problème en adaptant le code : puisque l’utilisation d’un fichier ics local fonctionne bien, je copie le fichier .ics en ligne dans le répertoire local data, et puis je le traite comme un fichier local.
mais cela n’explique pas pourquoi les fichiers en ligne ne sont plus acceptés. modification d’un paramètre de sécurité de Jeedom ?

dans le fichier plugins/ics/core/class/ics.class.php remplacer les lignes 45 à 48

	if ($type == 'local' || $type == 'url') {
			$vcalendar = VObject\Reader::read(
				fopen($url,'r')
			);

par

        if ( $type == 'url') {  
           	$path = __DIR__ . '/../../data';
			if (!is_dir($path)) {
					com_shell::execute(system::getCmdSudo() . 'mkdir ' . __DIR__ . '/../../data' . ' > /dev/null 2>&1;');
			}
            $myFileName =  $path .  '/temp_' . $id . '_' . basename($url) ;
            log::add(__CLASS__, 'debug', 'storing ' . $url . ' to local temporary file ' . $myFileName);
            if (file_exists($myFileName)) {
				com_shell::execute(system::getCmdSudo() . 'rm ' . $myFileName . ' > /dev/null 2>&1;');
            }
			com_shell::execute(system::getCmdSudo() . 'wget -O ' . $myFileName . ' ' . '"' . $url . '"' . ' > /dev/null 2>&1;');
         }      
        else 
        {
        	$myFileName = $url;
            log::add(__CLASS__, 'debug', "using local uploaded  file " . $myFileName);
        }
          
         if ($type == 'local' || $type == 'url') {
            log::add(__CLASS__, 'debug', "using local file " . $myFileName);
			$vcalendar = VObject\Reader::read(
				fopen($myFileName,'r')
			);
1 « J'aime »

Salut, savez vous si on peut récupérer le calendrier Google famille avec ce plugin ?

bonjour
oui on peut aussi récupérer un calendrier Google
il faut aller dans les paramètres de l’agenda Google, choisir « intégrer l’agenda », copier l’URL secrète du fichier ical (« adresse secrète au format ical ») et coller cette url dans le champs url de l’objet calendar ics

dans le cas du calendrier famille de google on ne peut pas .

ah ok, je n’utilise pas l’agenda famille, je n’ai pas pu tester désolé.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.