[dev] Littles questions for using API's methods

Gerard Breiner gerard.breiner at ias.u-psud.fr
Wed Jun 6 15:08:23 UTC 2012


Many thanks Jan, Mike….

I picked up a few pieces of code and now I might expect  to get an export of all the calendar but I'm facing an error when I run 'calendar/exportCalendars' method :
It seems this error occurs for calendars whose owners has never create an event.

Fatal Error:
DateTime::__construct(): Failed to parse time string (-001-11-01) at position 7 (-): Double timezone specification

It seems this error is raised at :
DateTime->__construct() /www/horde4/pear/php/Horde/Date/Utils.php:58

At this time my code is :

[CODE]
#!/usr/bin/env php
<?php
set_include_path('/www/horde4/pear/php' . PATH_SEPARATOR . get_include_path());
if (file_exists(dirname(__FILE__) . '/../../kronolith/lib/Application.php')) {
    $baseDir = dirname(__FILE__) . '/../';
} else {
    require_once 'PEAR/Config.php';
    $baseDir = PEAR_Config::singleton()
        ->get('horde_dir', null, 'pear.horde.org') . '/kronolith/';
}

require_once dirname(__FILE__) . '/../lib/Application.php';
Horde_Registry::appInit('kronolith', array(
    'cli' => true
));
// Call a Registry method.
// Retrieve a list of users associated with each calendar, and
    // thus a list of users who have used kronolith and
    // potentially have an agenda preference set.
    $calendars = $GLOBALS['kronolith_shares']->listAllShares();
    $users = array();
    foreach (array_keys($calendars) as $calendarId) {
        try {
            $calendar = $GLOBALS['kronolith_shares']->getShare($calendarId);
        } catch (Exception $e) {
            continue;
        }
        $users = array_merge($users, $calendar->listUsers(Horde_Perms::READ));
    }
 // Remove duplicates.
    $users = array_unique($users);

// Tell the registry that we are doing authentication ourselves.
define('AUTH_HANDLER', true);

$contentType = 'text/calendar';
foreach ($users as $user) {
   $registry->setAuth($user, array('password' => ''));
   $cals[$user] = $registry->call('calendar/listCalendars', array('true', 'HORDE_PERMS::READ'));
   if ($cals[$user]['0'] != '') {
       $export[$user] = $registry->call('calendar/exportCalendar', array($cals[$user]['0'], $contentType, 'Horde_Perms::READ'));
       $file = '/home/webadm/exportCalendars/' . $user . '.ics';
       $hdl = fopen($file, a);
       fwrite($hdl, $export[$user]);
   }

} 
fclose($hdl);
[/CODE]

Best regards.

Gérard


Le 4 juin 2012 à 17:20, Michael J Rubinsky a écrit :


> 
> Quoting Gerard Breiner <gerard.breiner at ias.u-psud.fr>:
> 
>> Hello Mike,
>> 
>> Thanks for these precisions? It make me understand what Jan meant?
>> I will try soon to reduce registry.local.php and kept only what is necessary.
>> 
>> I have another question about calendar permissions and listCalendars.
>> In the admin interface admin/perms I have assigned the permissions 'show' and 'read' to allow the user webadm access to all agendas.
>> I dont understand why with the below code I do not list all the calendars but only the others users shares with "webadm" user? It is like the perms I setup has not been validated.
> 
> Permissions for calendars are set by the owner of the calendar, from within Kronolith - not from the administrative interface. Look on the calendar's property view.
> 
> 
> -- 
> mike
> 
> The Horde Project (www.horde.org)
> mrubinsk at horde.org



More information about the dev mailing list