예제 #1
0
 static function importCollection($url, $calendar)
 {
     ob_start();
     require_once ROOTPATH . '/plugins/davicalCliente/caldav-client-v2.php';
     $cal = new CalDAVClient(Config::service('CalDAV', 'url') . '/', Config::me('uid'), Config::me('password'));
     $events = $cal->GetCollectionETags($url);
     $args = array();
     foreach ($events as $ie => $ve) {
         $cal->DoGETRequest($ie);
         $sync = Controller::parse(array('service' => 'iCal'), $cal->GetResponseBody(), array('calendar' => $calendar, 'owner' => Config::me('uidNumber')));
         if (is_array($sync)) {
             $args = array_merge($args, $sync);
         }
     }
     include ROOTPATH . '/Sync.php';
     ob_end_clean();
 }
예제 #2
0
$server_delete_urls = array();
$push_urls = array();
$push_events = array();
$newcache = (object) array('server_ctag' => $calendar->getctag, 'local_ctag' => isset($local_calendar->getctag) ? $local_calendar->getctag : null, 'server_etags' => array(), 'local_etags' => array());
if (isset($cache)) {
    if (!$sync_in && isset($cache->server_etags)) {
        $newcache->server_etags = $cache->server_etags;
    }
    if (!$sync_out && isset($cache->local_etags)) {
        $newcache->local_etags = $cache->local_etags;
    }
}
if ($sync_in) {
    // So it seems we do need to sync.  We now need to check each individual event
    // which might have changed, so we pull a list of event etags from the server.
    $server_etags = $caldav->GetCollectionETags();
    // printf( "\nGetCollectionEtags Response:\n%s\n", $caldav->GetXmlResponse() );
    // print_r( $server_etags );
    if ($sync_all) {
        // The easy case.  Sync them all, delete nothing
        $insert_urls = $server_etags;
        foreach ($server_etags as $href => $etag) {
            $fname = preg_replace('{^.*/}', '', $href);
            $newcache->server_etags[$fname] = $etag;
            printf('Need to pull "%s"' . "\n", $href);
        }
    } else {
        // Only sync the ones where the etag has changed.  Delete any that are no
        // longer present at the remote end.
        foreach ($server_etags as $href => $etag) {
            $fname = preg_replace('{^.*/}', '', $href);