Exemplo n.º 1
0
     unset($newcache->server_etags[$fname]);
 }
 // Push locally updated events to the remote server
 foreach ($push_urls as $href => $etag) {
     $new_etag = $caldav->DoPUTRequest($args->url . $href, $push_events[$href], $etag);
     printf("\nPUT:\n%s\nResponse:\n%s\n", $caldav->GetHttpRequest(), $caldav->GetResponseHeaders());
     if (!isset($new_etag) || $new_etag == '') {
         if (preg_match('{^Location:\\s+.*/([^/]+)$}im', $caldav->GetResponseHeaders(), $matches)) {
             /** How annoying.  It seems the other server renamed the event on PUT so we move the local copy to match their name */
             $new_href = preg_replace('{\\r?\\n.*$}s', '', $matches[1]);
             $qry = new AwlQuery('UPDATE caldav_data SET dav_name = :new_dav_name WHERE dav_name = :old_dav_name', array(':new_dav_name' => $args->local_collection_path . $new_href, ':old_dav_name' => $args->local_collection_path . $href));
             $qry->Exec('sync_pull', __LINE__, __FILE__);
             $new_cache->local_etags[$new_href] = $new_cache->local_etags[$href];
             unset($new_cache->local_etags[$href]);
             $href = $new_href;
             $caldav->DoHEADRequest($args->url . $href);
             if (preg_match('{^Etag:\\s+"([^"]*)"\\s*$}im', $caldav->httpResponseHeaders, $matches)) {
                 $new_etag = $matches[1];
             }
             printf("\nHEAD:\n%s\nResponse:\n%s\n", $caldav->GetHttpRequest(), $caldav->GetResponseHeaders());
         }
         if (!isset($new_etag) || $new_etag == '') {
             printf("Unable to retrieve ETag for new event on remote server. Forcing bad ctag.");
             $force_ctag = 'Naughty server!';
         }
     }
     $newcache->server_etags[$href] = $new_etag;
 }
 $calendar = $caldav->GetCalendarDetails();
 if (isset($force_ctag)) {
     $newcache->server_ctag = $force_ctag;