From edc075a54a1769c11734c837dc4da8ca4e48be8b Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 11:27:32 +1300 Subject: [PATCH 01/21] Get rid of unnecessary decbin. --- inc/Principal.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/Principal.php b/inc/Principal.php index 5e44ee33..deff90e8 100644 --- a/inc/Principal.php +++ b/inc/Principal.php @@ -535,7 +535,7 @@ class Principal { $param_name = ':'.$k; $sql_params[$param_name] = (isset($field_values->{$k}) ? $field_values->{$k} : $this->{$k}); if ( $k == 'default_privileges' ) { - $sql_params[$param_name] = sprintf('%024s',decbin($sql_params[$param_name])); + $sql_params[$param_name] = sprintf('%024s',$sql_params[$param_name]); $param_name = 'cast('.$param_name.' as text)::BIT(24)'; } if ( $inserting ) { From fa4843d52113a765a2d2d7c36aa786ebf9d32446 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 11:28:44 +1300 Subject: [PATCH 02/21] This needs to be a vCalendar to do scheduling actions now. Viz.: dmz-sv-cal.physik.uni-muenchen.de-error_log-20120108:[Wed Jan 04 14:26:16 2012] [error] [client 10.153.220.88] PHP Catchable fatal error: Argument 1 passed to handle_schedule_reply() must be an instance of vCalendar, instance of vComponent given, called in /usr/share/davical/inc/caldav-POST.php on line 144 and defined in /usr/share/davical/inc/caldav-PUT-functions.php on line 270 --- inc/caldav-POST.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/caldav-POST.php b/inc/caldav-POST.php index c8d9947b..85936cad 100644 --- a/inc/caldav-POST.php +++ b/inc/caldav-POST.php @@ -122,7 +122,7 @@ function handle_cancel_request( $ic ) { $request->XMLResponse( 200, $response ); } -$ical = new vComponent( $request->raw_post ); +$ical = new vCalendar( $request->raw_post ); $method = $ical->GetPValue('METHOD'); $resources = $ical->GetComponents('VTIMEZONE',false); From 209ff04495b055b9b71ea3fd0dd9ddc5969a3329 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 17:33:39 +1300 Subject: [PATCH 03/21] Write UID and REV property if they are missing. Also allow for TYPE to be multiple for EMAIL/ADR/TEL when parsing. --- inc/caldav-PUT-vcard.php | 45 ++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/inc/caldav-PUT-vcard.php b/inc/caldav-PUT-vcard.php index f46e279e..7988cbc1 100644 --- a/inc/caldav-PUT-vcard.php +++ b/inc/caldav-PUT-vcard.php @@ -54,20 +54,50 @@ if ( isset($request->etag_if_match) && $request->etag_if_match != $dest->unique_ $collection_id = $container->GetProperty('collection_id'); +$original_etag = md5($request->raw_post); + +require_once('vcard.php'); +$vcard = new vCard( $request->raw_post ); + $qry = new AwlQuery(); $qry->Begin(); -$etag = md5($request->raw_post); +$uid = $vcard->GetPValue('UID'); +if ( empty($uid) ) { + $uid = uuid(); + $vcard->AddProperty('UID',$uid); +} + +$last_modified = $vcard->GetPValue('REV'); +if ( empty($last_modified) ) { + $last_modified = gmdate( 'Ymd\THis\Z' ); + $vcard->AddProperty('REV',$last_modified); +} +elseif ( stripos($last_modified, 'TZ') ) { + // At least one of my examples has this crap. + $last_modified = str_replace('TZ','T000000Z',$last_modified); + $vcard->ClearProperties('REV'); + $vcard->AddProperty('REV',$last_modified); +} +elseif( preg_match('{^(\d{8})(\d{6})Z?}', $last_modified, $matches) ) { + $last_modified = $matches[1] . 'T' . $matches[2] . 'Z'; + $vcard->ClearProperties('REV'); + $vcard->AddProperty('REV',$last_modified); +} + +$rendered_card = $vcard->Render(); +$etag = md5($rendered_card); $params = array( ':user_no' => $dest->GetProperty('user_no'), ':dav_name' => $dest->bound_from(), ':etag' => $etag, - ':dav_data' => $request->raw_post, - ':session_user' => $session->user_no + ':dav_data' => $rendered_card, + ':session_user' => $session->user_no, + ':modified' => $last_modified ); if ( $dest->Exists() ) { $sql = 'UPDATE caldav_data SET caldav_data=:dav_data, dav_etag=:etag, logged_user=:session_user, - modified=current_timestamp, user_no=:user_no, caldav_type=\'VCARD\' WHERE dav_name=:dav_name'; + modified=:modified, user_no=:user_no, caldav_type=\'VCARD\' WHERE dav_name=:dav_name'; $response_code = 200; $qry->QDo( $sql, $params ); @@ -75,7 +105,7 @@ if ( $dest->Exists() ) { } else { $sql = 'INSERT INTO caldav_data ( user_no, dav_name, dav_etag, caldav_data, caldav_type, logged_user, created, modified, collection_id ) - VALUES( :user_no, :dav_name, :etag, :dav_data, \'VCARD\', :session_user, current_timestamp, current_timestamp, :collection_id )'; + VALUES( :user_no, :dav_name, :etag, :dav_data, \'VCARD\', :session_user, current_timestamp, :modified, :collection_id )'; $params[':collection_id'] = $collection_id; $response_code = 201; $qry->QDo( $sql, $params ); @@ -84,9 +114,6 @@ else { } $row = $qry->Fetch(); -require_once('vcard.php'); - -$vcard = new vCard( $request->raw_post ); $vcard->Write( $row->dav_id, $dest->Exists() ); $qry->QDo("SELECT write_sync_change( $collection_id, $response_code, :dav_name)", array(':dav_name' => $dest->bound_from() ) ); @@ -100,6 +127,6 @@ if ( !$qry->Commit() ) { $cache = getCacheInstance(); $cache->delete( 'collection-'.$container->dav_name(), null ); -header('ETag: "'. $etag . '"' ); +if ( $etag == $original_etag ) header('ETag: "'. $etag . '"' ); // Only send the ETag if we didn't change what they gave us. if ( $response_code == 200 ) $response_code = 204; $request->DoResponse( $response_code ); From 2b26ca7d25b8f1ae6f08ec4029527d90bd0994ec Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 17:34:11 +1300 Subject: [PATCH 04/21] Enable the file upload for addressbook collections. --- inc/ui/collection-edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/ui/collection-edit.php b/inc/ui/collection-edit.php index 515e471a..9e672295 100644 --- a/inc/ui/collection-edit.php +++ b/inc/ui/collection-edit.php @@ -357,7 +357,7 @@ label.privilege { From e05253327fb5c7df08eff377635f2a57fc388134 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 17:34:40 +1300 Subject: [PATCH 05/21] Set the default URL to the default calendar name rather than /home/ --- inc/ui/principal-edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php index 5ee3438a..bbb71bbe 100644 --- a/inc/ui/principal-edit.php +++ b/inc/ui/principal-edit.php @@ -794,7 +794,7 @@ function access_ticket_browser() { $ticket_id = substr( str_replace('/', '', str_replace('+', '',base64_encode(sha1(date('r') .rand(0,2100000000) . microtime(true),true)))), 7, 8); $extra_row = array( 'ticket_id' => $ticket_id, 'expires' => date( 'Y-m-d', time() + (86400 * 31) ), - 'target' => '/'.$editor->Value('username').'/home/' + 'target' => '/'.$editor->Value('username').'/'.$c->home_calendar_name.'/' ); $browser->MatchedRow('ticket_id', $ticket_id, 'edit_ticket_row'); $browser->AddRow($extra_row); From 03844f7972b8ed4c5c701bfd6dc9ac8d130f222b Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 17:40:32 +1300 Subject: [PATCH 06/21] Allow adr/tel/email to have TYPEset multiply. --- inc/vcard.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/inc/vcard.php b/inc/vcard.php index f9a65826..bccf7874 100644 --- a/inc/vcard.php +++ b/inc/vcard.php @@ -90,7 +90,9 @@ CREATE TABLE addressbook_address_adr ( $params = array( ':dav_id' => $dav_id ); $qry->QDo('DELETE FROM addressbook_address_adr WHERE dav_id = :dav_id', $params ); foreach( $addresses AS $adr ) { - $params[':type'] = $adr->GetParameterValue('TYPE'); + $type = $adr->GetParameterValue('TYPE'); + if ( is_array($type) ) $type = implode('~|~',$type); + $params[':type'] = $type; $address = explode(';',$adr->Value()); // We use @ to suppress the warnings here, because the NULL in the database suits us well. @@ -128,7 +130,9 @@ CREATE TABLE addressbook_address_tel ( $params = array( ':dav_id' => $dav_id ); $qry->QDo('DELETE FROM addressbook_address_tel WHERE dav_id = :dav_id', $params ); foreach( $telephones AS $tel ) { - $params[':type'] = $tel->GetParameterValue('TYPE'); + $type = $tel->GetParameterValue('TYPE'); + if ( is_array($type) ) $type = implode('~|~',$type); + $params[':type'] = $type; if ( ! isset($params[':type']) ) $params[':type'] = 'voice'; $params[':tel'] = $tel->Value(); $params[':property'] = $tel->Render(); @@ -157,7 +161,9 @@ CREATE TABLE addressbook_address_email ( $params = array( ':dav_id' => $dav_id ); $qry->QDo('DELETE FROM addressbook_address_email WHERE dav_id = :dav_id', $params ); foreach( $emails AS $email ) { - $params[':type'] = $email->GetParameterValue('TYPE'); + $type = $email->GetParameterValue('TYPE'); + if ( is_array($type) ) $type = implode('~|~',$type); + $params[':type'] = $type; $params[':email'] = $email->Value(); $params[':property'] = $email->Render(); $qry->QDo( 'INSERT INTO addressbook_address_email (dav_id, type, email, property) VALUES( :dav_id, :type, :email, :property)', $params ); From 6b88c6b8b2be19891cee301c116537950e2e7726 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 17:41:09 +1300 Subject: [PATCH 07/21] CardDAV test & result changes for new processing. --- testing/tests/carddav/2006-PUT-vcard.result | 5 +- testing/tests/carddav/2006-PUT-vcard.test | 4 +- .../carddav/2010-REPORT-sync-initial.result | 8 +- .../carddav/2010-REPORT-sync-initial.test | 3 + testing/tests/carddav/2011-PROPFIND.result | 12 +- testing/tests/carddav/2011-PROPFIND.test | 4 +- .../2012-REPORT-addressbook-multiget.result | 16 +- .../2012-REPORT-addressbook-multiget.test | 4 + testing/tests/carddav/2013-PUT-vcard.result | 4 +- testing/tests/carddav/2014-PUT-vcard.result | 4 +- testing/tests/carddav/2015-PUT-vcard.result | 3 - testing/tests/carddav/2015-PUT-vcard.test | 4 +- testing/tests/carddav/2016-PUT-vcard.result | 7 +- testing/tests/carddav/2016-PUT-vcard.test | 4 +- testing/tests/carddav/2017-PUT-vcard.result | 11 +- testing/tests/carddav/2017-PUT-vcard.test | 4 +- testing/tests/carddav/2018-PUT-vcard.result | 6 +- testing/tests/carddav/2018-PUT-vcard.test | 2 +- testing/tests/carddav/2019-PUT-vcard.result | 3 - testing/tests/carddav/2019-PUT-vcard.test | 4 +- testing/tests/carddav/2020-PUT-vcard.result | 13 +- testing/tests/carddav/2020-PUT-vcard.test | 4 +- .../2031-REPORT-addressbook-multiget.result | 820 +++++++++--------- .../2031-REPORT-addressbook-multiget.test | 4 + .../carddav/2039-REPORT-sync-changed.result | 16 +- .../carddav/2039-REPORT-sync-changed.test | 2 + 26 files changed, 474 insertions(+), 497 deletions(-) diff --git a/testing/tests/carddav/2006-PUT-vcard.result b/testing/tests/carddav/2006-PUT-vcard.result index f03543a2..109b8400 100644 --- a/testing/tests/carddav/2006-PUT-vcard.result +++ b/testing/tests/carddav/2006-PUT-vcard.result @@ -2,22 +2,21 @@ HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "fada70a725708bce8521efb87acfa629" Content-Length: 0 Content-Type: text/plain; charset="utf-8" caladruri: >NULL< caluri: >NULL< - dav_etag: >fada70a725708bce8521efb87acfa629< dav_name: >/user1/addressbook/donald_kelly.vcf< + etag_not_null: >1< fburl: >NULL< fn: >Donald Kelly< n: >Kelly;Donald;;;< nickname: >NULL< note: >NULL< org: >Esposo Designs Ltd< - uid: >NULL< + uid_not_null: >1< url: >www.example.co.nz< version: >2.1< diff --git a/testing/tests/carddav/2006-PUT-vcard.test b/testing/tests/carddav/2006-PUT-vcard.test index f23da3f4..17add4fe 100644 --- a/testing/tests/carddav/2006-PUT-vcard.test +++ b/testing/tests/carddav/2006-PUT-vcard.test @@ -24,8 +24,8 @@ end:vcard ENDDATA QUERY -SELECT caldav_data.dav_name, caldav_data.dav_etag, - version, uid, nickname, fn, n, note, org, url, fburl, caladruri, caluri +SELECT caldav_data.dav_name, caldav_data.dav_etag IS NOT NULL AS "etag_not_null", + version, uid IS NOT NULL AS "uid_not_null", nickname, fn, n, note, org, url, fburl, caladruri, caluri FROM caldav_data LEFT JOIN addressbook_resource USING(dav_id) WHERE caldav_data.dav_name ~ '/user1/addressbook/donald_kelly.vcf' ENDQUERY diff --git a/testing/tests/carddav/2010-REPORT-sync-initial.result b/testing/tests/carddav/2010-REPORT-sync-initial.result index bbea6a16..45aef304 100644 --- a/testing/tests/carddav/2010-REPORT-sync-initial.result +++ b/testing/tests/carddav/2010-REPORT-sync-initial.result @@ -2,7 +2,7 @@ HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "e7de8b24ed85d9e45aaef081a5e527a6" +ETag: "a fine looking etag" Content-Length: 948 Content-Type: text/xml; charset="utf-8" @@ -12,7 +12,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/andrew_mcmillan.vcf - "24bae2a7f81c0a79413a656c06d8326b" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> text/vcard HTTP/1.1 200 OK @@ -22,7 +22,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/donald_kelly.vcf - "fada70a725708bce8521efb87acfa629" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> text/vcard HTTP/1.1 200 OK @@ -32,7 +32,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/PHRsMa4mvY.vcf - "70da8e376791d07c9fae3dbda0b40314" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> text/vcard HTTP/1.1 200 OK diff --git a/testing/tests/carddav/2010-REPORT-sync-initial.test b/testing/tests/carddav/2010-REPORT-sync-initial.test index 95b70392..b0ce22c8 100644 --- a/testing/tests/carddav/2010-REPORT-sync-initial.test +++ b/testing/tests/carddav/2010-REPORT-sync-initial.test @@ -18,3 +18,6 @@ BEGINDATA ENDDATA +REPLACE=/"[0-9a-f]{32}"<.get.tag>/"deadbeefcafef00ddeadbeefcafefeed"<.get?tag>/ +REPLACE=/^ETag: "[0-9a-f]+"\s$/ETag: "a fine looking etag"/ + diff --git a/testing/tests/carddav/2011-PROPFIND.result b/testing/tests/carddav/2011-PROPFIND.result index 1e55e8ba..54f8b348 100644 --- a/testing/tests/carddav/2011-PROPFIND.result +++ b/testing/tests/carddav/2011-PROPFIND.result @@ -19,7 +19,7 @@ /caldav.php/user1/addressbook/andrew_mcmillan.vcf - "24bae2a7f81c0a79413a656c06d8326b" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> Dow, 01 Jan 2000 00:00:00 GMT HTTP/1.1 200 OK @@ -29,7 +29,7 @@ /caldav.php/user1/addressbook/donald_kelly.vcf - "fada70a725708bce8521efb87acfa629" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> Dow, 01 Jan 2000 00:00:00 GMT HTTP/1.1 200 OK @@ -39,7 +39,7 @@ /caldav.php/user1/addressbook/PHRsMa4mvY.vcf - "70da8e376791d07c9fae3dbda0b40314" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> Dow, 01 Jan 2000 00:00:00 GMT HTTP/1.1 200 OK @@ -47,9 +47,5 @@ - dav_etag: >24bae2a7f81c0a79413a656c06d8326b< - - dav_etag: >fada70a725708bce8521efb87acfa629< - - dav_etag: >70da8e376791d07c9fae3dbda0b40314< + count: >3< diff --git a/testing/tests/carddav/2011-PROPFIND.test b/testing/tests/carddav/2011-PROPFIND.test index 8e10504b..a5f8f1f2 100644 --- a/testing/tests/carddav/2011-PROPFIND.test +++ b/testing/tests/carddav/2011-PROPFIND.test @@ -20,11 +20,11 @@ BEGINDATA ENDDATA +REPLACE=/"[0-9a-f]{32}"<.get.tag>/"deadbeefcafef00ddeadbeefcafefeed"<.get?tag>/ QUERY -SELECT caldav_data.dav_etag +SELECT count(1) FROM collection LEFT JOIN caldav_data USING(collection_id) WHERE collection.dav_name = '/user1/addressbook/' -ORDER BY caldav_data.dav_id ENDQUERY diff --git a/testing/tests/carddav/2012-REPORT-addressbook-multiget.result b/testing/tests/carddav/2012-REPORT-addressbook-multiget.result index fcfd913e..4cac3c72 100644 --- a/testing/tests/carddav/2012-REPORT-addressbook-multiget.result +++ b/testing/tests/carddav/2012-REPORT-addressbook-multiget.result @@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "87ab9b65008470d67893424808e1c0b4" -Content-Length: 2266 +ETag: "a fine looking etag" +Content-Length: 2330 Content-Type: text/xml; charset="utf-8" @@ -12,11 +12,11 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/andrew_mcmillan.vcf - "24bae2a7f81c0a79413a656c06d8326b" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:3.0 REV:2010-03-29T09:23:34Z -UID:pas-id-4BB0719600000000 +UID:excellent-looking-uid-string X-SKYPE;X-EVOLUTION-UI-SLOT=1;TYPE=HOME:karora__ X-JABBER;X-EVOLUTION-UI-SLOT=3;TYPE=HOME:karora@irc.oftc.net TEL;X-EVOLUTION-UI-SLOT=3;TYPE=CELL:+64 22 123 4567 @@ -57,8 +57,8 @@ END:VCARD /caldav.php/user1/addressbook/donald_kelly.vcf - "fada70a725708bce8521efb87acfa629" - begin:vcard + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> + BEGIN:VCARD fn:Donald Kelly n:Kelly;Donald;;; org:Esposo Designs Ltd @@ -70,7 +70,9 @@ tel;type=cell:+64 2 1234-4321 x-mozilla-html:TRUE url:www.example.co.nz version:2.1 -end:vcard +UID:excellent-looking-uid-string +REV:YYYYMMDDTHHMMSSZ +END:VCARD HTTP/1.1 200 OK diff --git a/testing/tests/carddav/2012-REPORT-addressbook-multiget.test b/testing/tests/carddav/2012-REPORT-addressbook-multiget.test index 88ad0ac2..91fc19f4 100644 --- a/testing/tests/carddav/2012-REPORT-addressbook-multiget.test +++ b/testing/tests/carddav/2012-REPORT-addressbook-multiget.test @@ -21,4 +21,8 @@ BEGINDATA ENDDATA +REPLACE=/"[0-9a-f]{32}"<.get.tag>/"deadbeefcafef00ddeadbeefcafefeed"<.get?tag>/ +REPLACE=/UID:.+/UID:excellent-looking-uid-string/ +REPLACE=/REV:\d{8}T\d{6}Z/REV:YYYYMMDDTHHMMSSZ/ +REPLACE=/^ETag: "[0-9a-f]+"\s$/ETag: "a fine looking etag"/ diff --git a/testing/tests/carddav/2013-PUT-vcard.result b/testing/tests/carddav/2013-PUT-vcard.result index d4bae00c..3085df58 100644 --- a/testing/tests/carddav/2013-PUT-vcard.result +++ b/testing/tests/carddav/2013-PUT-vcard.result @@ -32,8 +32,8 @@ Content-Type: text/plain; charset="utf-8" unit_no: >NULL< tel: >64272332426< - type: >pref< + type: >WORK~|~pref< email: >andrew+davical@morphoss.com< - type: >pref< + type: >INTERNET~|~WORK~|~pref< diff --git a/testing/tests/carddav/2014-PUT-vcard.result b/testing/tests/carddav/2014-PUT-vcard.result index 4a609cdd..fb4bf51c 100644 --- a/testing/tests/carddav/2014-PUT-vcard.result +++ b/testing/tests/carddav/2014-PUT-vcard.result @@ -34,8 +34,8 @@ Content-Type: text/plain; charset="utf-8" unit_no: >NULL< tel: >64272332426< - type: >pref< + type: >WORK~|~pref< email: >andrew+davical@morphoss.com< - type: >pref< + type: >INTERNET~|~WORK~|~pref< diff --git a/testing/tests/carddav/2015-PUT-vcard.result b/testing/tests/carddav/2015-PUT-vcard.result index 52e628d7..afa1522b 100644 --- a/testing/tests/carddav/2015-PUT-vcard.result +++ b/testing/tests/carddav/2015-PUT-vcard.result @@ -2,14 +2,12 @@ HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "d43780719361367f2d690f1f966e3da1" Content-Length: 0 Content-Type: text/plain; charset="utf-8" caladruri: >NULL< caluri: >NULL< - dav_etag: >d43780719361367f2d690f1f966e3da1< dav_name: >/user1/addressbook/van_houtte.vcf< fburl: >NULL< fn: >Vincent VAN HOUTTE< @@ -17,7 +15,6 @@ Content-Type: text/plain; charset="utf-8" nickname: >NULL< note: >NULL< org: >Advocatenkantoor Suy, Van Baeveghem & Van Houtte;;< - uid: >NULL< url: >NULL< version: >3.0< diff --git a/testing/tests/carddav/2015-PUT-vcard.test b/testing/tests/carddav/2015-PUT-vcard.test index 33372b3b..c6d73efc 100644 --- a/testing/tests/carddav/2015-PUT-vcard.test +++ b/testing/tests/carddav/2015-PUT-vcard.test @@ -34,8 +34,8 @@ END:VCARD ENDDATA QUERY -SELECT caldav_data.dav_name, caldav_data.dav_etag, - version, uid, nickname, fn, n, note, org, url, fburl, caladruri, caluri +SELECT caldav_data.dav_name, + version, nickname, fn, n, note, org, url, fburl, caladruri, caluri FROM caldav_data LEFT JOIN addressbook_resource USING(dav_id) WHERE caldav_data.dav_name ~ '/user1/addressbook/van_houtte.vcf' ENDQUERY diff --git a/testing/tests/carddav/2016-PUT-vcard.result b/testing/tests/carddav/2016-PUT-vcard.result index 05fd4796..f5500e85 100644 --- a/testing/tests/carddav/2016-PUT-vcard.result +++ b/testing/tests/carddav/2016-PUT-vcard.result @@ -4,14 +4,12 @@ HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "e67537e9d473e93911eccd6e63e9ac3a" Content-Length: 0 Content-Type: text/plain; charset="utf-8" caladruri: >NULL< caluri: >NULL< - dav_etag: >e67537e9d473e93911eccd6e63e9ac3a< dav_name: >/user1/addressbook/mustrmahn.vcf< fburl: >NULL< fn: >Überwerbung GmbH< @@ -19,7 +17,6 @@ Content-Type: text/plain; charset="utf-8" nickname: >Boss< note: >Test vCard< org: >Überwerbung GmbH;Marketing< - uid: >NULL< url: >NULL< version: >3.0< @@ -37,8 +34,8 @@ Content-Type: text/plain; charset="utf-8" type: >CELL< tel: >+49 30 1234567< - type: >pref< + type: >WORK~|~pref< email: >karl@mustermann.de< - type: >pref< + type: >INTERNET~|~WORK~|~pref< diff --git a/testing/tests/carddav/2016-PUT-vcard.test b/testing/tests/carddav/2016-PUT-vcard.test index 492156b0..748a2526 100644 --- a/testing/tests/carddav/2016-PUT-vcard.test +++ b/testing/tests/carddav/2016-PUT-vcard.test @@ -141,8 +141,8 @@ END:VCARD ENDDATA QUERY -SELECT caldav_data.dav_name, caldav_data.dav_etag, - version, uid, nickname, fn, n, note, org, url, fburl, caladruri, caluri +SELECT caldav_data.dav_name, + version, nickname, fn, n, note, org, url, fburl, caladruri, caluri FROM caldav_data LEFT JOIN addressbook_resource USING(dav_id) WHERE caldav_data.dav_name ~ '/user1/addressbook/mustrmahn.vcf' ENDQUERY diff --git a/testing/tests/carddav/2017-PUT-vcard.result b/testing/tests/carddav/2017-PUT-vcard.result index c9c7c7c0..24dc743d 100644 --- a/testing/tests/carddav/2017-PUT-vcard.result +++ b/testing/tests/carddav/2017-PUT-vcard.result @@ -4,14 +4,12 @@ HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "f6ae02ec1b5612fe4737092734d062c7" Content-Length: 0 Content-Type: text/plain; charset="utf-8" caladruri: >http://caldav.andresen.local/access< caluri: >http://caldav.andresen.local/sja< - dav_etag: >f6ae02ec1b5612fe4737092734d062c7< dav_name: >/user1/addressbook/andresenesq.vcf< fburl: >http://caldav.andresen.local/freebusy< fn: >Sven Joseph Klaus Michael Andresen, Esq.< @@ -19,7 +17,6 @@ Content-Type: text/plain; charset="utf-8" nickname: >Svenny,Sveny< note: >Nur so ein Test!< org: >andresen AG;R&D;;XXX, 033< - uid: >uid=andresenesq.1209158007,ou=Contacts,dc=andresen,dc=de< url: >http://www.andresen.de< version: >4.0< @@ -37,8 +34,8 @@ Content-Type: text/plain; charset="utf-8" country: >NULL< locality: >Irgendwo< postcode: >34332< - property: >ADR;TYPE=WORK;CHARSET=utf-8:6266 AA\;andresen Holding\, Geschäftsleitung - \;Weisenstraße 13\;Irgendwo\;Niedersachsen\;34332< + property: >ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; + Weisenstraße 13;Irgendwo;Niedersachsen;34332< region: >Niedersachsen< street_address: >Weisenstraße 13< type: >WORK< @@ -48,8 +45,8 @@ Content-Type: text/plain; charset="utf-8" country: >Deutschland< locality: >Passau< postcode: >94036< - property: >ADR;TYPE=WORK;CHARSET=utf-8:PO 373\;Andresen AG\, R&D\;Messegasse 7\;Pas - sau\;Bayern\;94036\;Deutschland< + property: >ADR;TYPE=WORK;CHARSET=utf-8: + PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland< region: >Bayern< street_address: >Messegasse 7< type: >WORK< diff --git a/testing/tests/carddav/2017-PUT-vcard.test b/testing/tests/carddav/2017-PUT-vcard.test index 098fed15..5d4da458 100644 --- a/testing/tests/carddav/2017-PUT-vcard.test +++ b/testing/tests/carddav/2017-PUT-vcard.test @@ -411,8 +411,8 @@ END:VCARD ENDDATA QUERY -SELECT caldav_data.dav_name, caldav_data.dav_etag, - version, uid, nickname, fn, n, note, org, url, fburl, caladruri, caluri +SELECT caldav_data.dav_name, + version, nickname, fn, n, note, org, url, fburl, caladruri, caluri FROM caldav_data LEFT JOIN addressbook_resource USING(dav_id) WHERE caldav_data.dav_name ~ '/user1/addressbook/andresenesq.vcf' ENDQUERY diff --git a/testing/tests/carddav/2018-PUT-vcard.result b/testing/tests/carddav/2018-PUT-vcard.result index aebe6a72..f8f34110 100644 --- a/testing/tests/carddav/2018-PUT-vcard.result +++ b/testing/tests/carddav/2018-PUT-vcard.result @@ -4,14 +4,12 @@ HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "db3e92c0ae37268c647949367e2030cc" Content-Length: 0 Content-Type: text/plain; charset="utf-8" caladruri: >http://davical.hadi-schmist.home/access< caluri: >http://davical.hadi-schmist.home/hadi< - dav_etag: >db3e92c0ae37268c647949367e2030cc< dav_name: >/user1/addressbook/hans_dieter.vcf< fburl: >http://davical.hadi-schmist.home/freebusy< fn: >Hans Dieter Schmidt< @@ -37,8 +35,8 @@ Content-Type: text/plain; charset="utf-8" country: >Deutschland< locality: >Hamburg-Harburg< postcode: >21373< - property: >ADR;TYPE=WORK;CHARSET=utf-8:\;Uni Harburg\, -\;Innstraße 71\;Hamburg-Har - burg\;Hamburg\;21373\;Deutschland< + property: >ADR;TYPE=WORK;CHARSET=utf-8: + ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland< region: >Hamburg< street_address: >Innstraße 71< type: >WORK< diff --git a/testing/tests/carddav/2018-PUT-vcard.test b/testing/tests/carddav/2018-PUT-vcard.test index 6b2757c4..40283a44 100644 --- a/testing/tests/carddav/2018-PUT-vcard.test +++ b/testing/tests/carddav/2018-PUT-vcard.test @@ -129,7 +129,7 @@ END:VCARD ENDDATA QUERY -SELECT caldav_data.dav_name, caldav_data.dav_etag, +SELECT caldav_data.dav_name, version, uid, nickname, fn, n, note, org, url, fburl, caladruri, caluri FROM caldav_data LEFT JOIN addressbook_resource USING(dav_id) WHERE caldav_data.dav_name ~ '/user1/addressbook/hans_dieter.vcf' diff --git a/testing/tests/carddav/2019-PUT-vcard.result b/testing/tests/carddav/2019-PUT-vcard.result index 4a565537..99c785a8 100644 --- a/testing/tests/carddav/2019-PUT-vcard.result +++ b/testing/tests/carddav/2019-PUT-vcard.result @@ -2,14 +2,12 @@ HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "feaa1a28c9942fc56403e2f97f75171b" Content-Length: 0 Content-Type: text/plain; charset="utf-8" caladruri: >NULL< caluri: >NULL< - dav_etag: >feaa1a28c9942fc56403e2f97f75171b< dav_name: >/user1/addressbook/Jörg_Test-Roßdeutscher_2_0.vcf< fburl: >NULL< fn: >Jörg Test-Roßdeutscher< @@ -17,7 +15,6 @@ Content-Type: text/plain; charset="utf-8" nickname: >NULL< note: >Technik, Web, DTP, SysAdmin, €-Vermögensverwalter< org: >Factor Design AG;< - uid: >NULL< url: >www.gesindel.baz< version: >2.1< diff --git a/testing/tests/carddav/2019-PUT-vcard.test b/testing/tests/carddav/2019-PUT-vcard.test index dcc4e1cf..a133713d 100644 --- a/testing/tests/carddav/2019-PUT-vcard.test +++ b/testing/tests/carddav/2019-PUT-vcard.test @@ -32,8 +32,8 @@ END:VCARD ENDDATA QUERY -SELECT caldav_data.dav_name, caldav_data.dav_etag, - version, uid, nickname, fn, n, note, org, url, fburl, caladruri, caluri +SELECT caldav_data.dav_name, + version, nickname, fn, n, note, org, url, fburl, caladruri, caluri FROM caldav_data LEFT JOIN addressbook_resource USING(dav_id) WHERE caldav_data.dav_name ~ '/user1/addressbook/Jörg_Test-Roßdeutscher_2_0.vcf' ENDQUERY diff --git a/testing/tests/carddav/2020-PUT-vcard.result b/testing/tests/carddav/2020-PUT-vcard.result index 516b8de6..adff5786 100644 --- a/testing/tests/carddav/2020-PUT-vcard.result +++ b/testing/tests/carddav/2020-PUT-vcard.result @@ -2,14 +2,12 @@ HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "5a32961b9938a7d6a354a757a8a1ea36" Content-Length: 0 Content-Type: text/plain; charset="utf-8" caladruri: >NULL< caluri: >NULL< - dav_etag: >5a32961b9938a7d6a354a757a8a1ea36< dav_name: >/user1/addressbook/Jörg_Test-Roßdeutscher_3_0.vcf< fburl: >NULL< fn: >Jörg Test-Roßdeutscher< @@ -17,7 +15,6 @@ Content-Type: text/plain; charset="utf-8" nickname: >NULL< note: >Technik, Web, DTP, SysAdmin, €-Vermögensverwalter< org: >Factor Design AG;< - uid: >NULL< url: >NULL< version: >3.0< @@ -38,17 +35,17 @@ Content-Type: text/plain; charset="utf-8" type: >HOME< tel: >040 999999432571-43< - type: >pref< + type: >WORK~|~pref< email: >joerg.rossdeutscher@gesindel.foo< - type: >HOME< + type: >INTERNET~|~HOME< email: >raettchen@gmail.bar< - type: >HOME< + type: >INTERNET~|~HOME< email: >joerg@factordesign.foo< - type: >WORK< + type: >INTERNET~|~WORK< email: >joerg.rossdeutscher@factordesign.foo< - type: >pref< + type: >INTERNET~|~WORK~|~pref< diff --git a/testing/tests/carddav/2020-PUT-vcard.test b/testing/tests/carddav/2020-PUT-vcard.test index a6b1d4af..66764b2e 100644 --- a/testing/tests/carddav/2020-PUT-vcard.test +++ b/testing/tests/carddav/2020-PUT-vcard.test @@ -37,8 +37,8 @@ END:VCARD ENDDATA QUERY -SELECT caldav_data.dav_name, caldav_data.dav_etag, - version, uid, nickname, fn, n, note, org, url, fburl, caladruri, caluri +SELECT caldav_data.dav_name, + version, nickname, fn, n, note, org, url, fburl, caladruri, caluri FROM caldav_data LEFT JOIN addressbook_resource USING(dav_id) WHERE caldav_data.dav_name ~ '/user1/addressbook/Jörg_Test-Roßdeutscher_3_0.vcf' ENDQUERY diff --git a/testing/tests/carddav/2031-REPORT-addressbook-multiget.result b/testing/tests/carddav/2031-REPORT-addressbook-multiget.result index ec7f7a6a..d09734c3 100644 --- a/testing/tests/carddav/2031-REPORT-addressbook-multiget.result +++ b/testing/tests/carddav/2031-REPORT-addressbook-multiget.result @@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "6273a9f7da96e95df34e39f9839dc34e" -Content-Length: 67517 +ETag: "a fine looking etag" +Content-Length: 67715 Content-Type: text/xml; charset="utf-8" @@ -12,11 +12,11 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/andrew_mcmillan.vcf - "24bae2a7f81c0a79413a656c06d8326b" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:3.0 REV:2010-03-29T09:23:34Z -UID:pas-id-4BB0719600000000 +UID:excellent-looking-uid-string X-SKYPE;X-EVOLUTION-UI-SLOT=1;TYPE=HOME:karora__ X-JABBER;X-EVOLUTION-UI-SLOT=3;TYPE=HOME:karora@irc.oftc.net TEL;X-EVOLUTION-UI-SLOT=3;TYPE=CELL:+64 22 123 4567 @@ -57,8 +57,8 @@ END:VCARD /caldav.php/user1/addressbook/donald_kelly.vcf - "fada70a725708bce8521efb87acfa629" - begin:vcard + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> + BEGIN:VCARD fn:Donald Kelly n:Kelly;Donald;;; org:Esposo Designs Ltd @@ -70,7 +70,9 @@ tel;type=cell:+64 2 1234-4321 x-mozilla-html:TRUE url:www.example.co.nz version:2.1 -end:vcard +UID:excellent-looking-uid-string +REV:YYYYMMDDTHHMMSSZ +END:VCARD HTTP/1.1 200 OK @@ -80,7 +82,7 @@ end:vcard /caldav.php/user1/addressbook/F06EC844-EACD-4ADF-8823-588603991E04-ABSPlugin.vcf - "0ea4d7759e103090c6494505b5da0f11" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:3.0 N:McMillan;Andrew;;; @@ -404,7 +406,7 @@ PHOTO;BASE64: X-ABShowAs:COMPANY CATEGORIES:My Contacts X-ABUID:685FC9B6-8446-45B8-89AF-3F3BC70CA03A\:ABPerson -UID:F26B8512-45DA-49ED-B285-23E64B0A68D1-ABSPlugin +UID:excellent-looking-uid-string REV:2010-06-23T00:01:37Z END:VCARD @@ -416,7 +418,7 @@ END:VCARD /caldav.php/user1/addressbook/van_houtte.vcf - "d43780719361367f2d690f1f966e3da1" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:3.0 PROFILE:VCARD @@ -436,7 +438,8 @@ LABEL;TYPE=WORK:Brusselsestraat 108\nB-9200 DENDERMONDE TEL;TYPE=WORK,VOICE:052 11 22 33 TEL;TYPE=WORK,FAX:052 44 55 66 EMAIL;TYPE=WORK:vvh@gmail.no -REV:2010-06-23TZ +UID:excellent-looking-uid-string +REV:2010-06-23T000000Z END:VCARD @@ -447,7 +450,7 @@ END:VCARD /caldav.php/user1/addressbook/mustrmahn.vcf - "e67537e9d473e93911eccd6e63e9ac3a" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:3.0 N:Mustermann;Anton;Karl;Dr.; @@ -470,111 +473,119 @@ item2.X-ABLabel:_$!<HomePage>!$_ BDAY;value=date:1969-08-16 X-AIM;type=WORK;type=pref:bethel69 X-JABBER;type=HOME;type=pref:bethel69@foo.com -PHOTO;BASE64: - /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAA - AqACAAQAAAABAAAAS6ADAAQAAAABAAAASwAAAAD/2wBDAAIBAQIBAQICAQICAgICAwUDAwMDAwYE - BAMFBwYHBwcGBgYHCAsJBwgKCAYGCQ0JCgsLDAwMBwkNDg0MDgsMDAv/2wBDAQICAgMCAwUDAwUL - CAYICwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwv/wAAR - CABLAEsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED - AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol - JicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW - l5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 - +Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 - AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 - OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan - qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIR - AxEAPwDmrj9qzxB4q8F3MniG/uYdSubhYYxa+U9zJGkYJQQNMpbgKwZV4KeormNe+MXiG90sWN/d - 6Zql/qN1NcTzRW6EMXAVV2sg3SKwfPHGW5PU/NXgq90/xwJo9KS61eSaGSUyWqMGjKqQs8kxJWDG - TydpcEqo5yf11/4Ji/8ABJXw38XP2d9J+In7SN94qkuvFVlLceHdJhvjB/wj1pKCIrre0Yk+0FPm - G8lIw6jYWBY/u9XinDYCEXtFaJRtt2SWiPiaeRYjHSc5Xb6uTf66s8//AOCc37dE3wl+P1t4X8Tv - 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 +PHOTO;=ASE64: /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAA + QAAAABAAAAGgAAAAAA AqACAAQAAAABAAAAS6ADAAQAAAABAAAASwAAAAD/2wBDAAIBAQIBA + QICAQICAgICAwUDAwMDAwYE BAMFBwYHBwcGBgYHCAsJBwgKCAYGCQ0JCgsLDAwMBwkNDg0M + DgsMDAv/2wBDAQICAgMCAwUDAwUL CAYICwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws + LCwsLCwsLCwsLCwsLCwsLCwsLCwv/wAAR CABLAEsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQ + EAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE + 1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol JicoKSo0NTY3ODk6Q0RFRkdISUpT + VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW + 2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 +Pn6/8QAHwEAAwEBAQ + EBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 AAECAxEEBSExB + hJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 OkNERUZH + SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKm + qsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAI + R AxEAPwDmrj9qzxB4q8F3MniG/uYdSubhYYxa+U9zJGkYJQQNMpbgKwZV4KeormNe+MXiG9 + 0sWN/d 6Zql/qN1NcTzRW6EMXAVV2sg3SKwfPHGW5PU/NXgq90/xwJo9KS61eSaGSUyWqMGj + KqQs8kxJWDG TydpcEqo5yf11/4Ji/8ABJXw38XP2d9J+In7SN94qkuvFVlLceHdJhvjB/wj + 1pKCIrre0Yk+0FPm G8lIw6jYWBY/u9XinDYCEXtFaJRtt2SWiPiaeRYjHSc5Xb6uTf66s8/ + /AOCc37dE3wl+P1t4X8Tv byeB/H17a2d5Yr5cENlLegRwyxRgbV/eyRIyqACkgJ6V3f8AwV + Q/4Ja+FfjN4Pvrn4F6nL8NdY04 Y1WDR1EVjrFsALjDWzHZBOB5bCQFFycMGFfKv/BTD/gnv + 47/AGEfiLYv8B9Q8ReOfB2qrBa6ZqUM fm6noV1BKk8VrflFwCbdNyXRCBwjZAIWvXfiB+2P + b+A/Duup4N1e9Hh+9n86S7vbybUNQuSURRDD NcO5jDFGG4scbSVTawr53G5vg54qONg2lOP + vJdWu6vvbT5I9illmIp0fYJWs9G9jz34JfG/4c/sr fCK60rTtP8Q6x4V0tDfX+vaRYlNaSV + UZ3h1C0mI8uQkvP58D7JI7hXhjYJKU8x/Z2+NGvftT/tDe Evhx+zv4LvdMXVtWj1CHSYIpL + a00m1VjNc3Ny8iARxKhLPIByzhUBMsYLtX/AGpEstYuLnRLSz0X TnhWeC00yFYINUgMkrlm + ZcHzlkklIduI2kkwF3kV9V/8Et/+Chvhb4WfEQ+DfFt5frB49lgms9Vu L15okIAWOBQ5xCr + O3zgYVnkU45NfL8RY1cQ06dDncYRafLZa+r3Vrnt5Vl0sJX9pJpy73Z+mXwM/ Z70T4DaYl0 + n2bVPEbQeRc6rMu1wDtLRxK2TFFlF+TPJQFsnms342ftC2Fl4ZA0LU9Jg1G6uTp3l3 F3DBI + rgB8RtK4TOzc4z/AAhvQVyP7Yvxqv8A4S/sv/EDXvCMkQ1TQtEnubFrltsfmgqEMn96PLYG + PvHg1/N7+2f8V/iN8UvElhoX7U/j2W40HxVfm8xZwSx2kl0EMRieGVikLR5K7gPujjg15tHC + 1MNB 4ijR54Qdm+idtLndmc4yt9Yn+8lt/wAA/e/9k/8AaB079ofTLjxPptzp17b60S8Nzpl + wbmxvVt2a 3MsErcshdJR/tcnoa0PFmiJrniS9uo3nZJJSFZXIDAfKD+IGa+ff+CWvw+8VeA + P2Jf2e9d8UXYuU 8Q+DLcAmNTsgR5BZJkdSLKO359c19c+HLSFtFgMyxu2DlnQbjyetffYR/ + u1NrXb7m0fN4iSp1OVb Dda/4KE+Cvgzby2/iTwv4x8EWcL+WG1HwtJptupHQK4TY/XtwK82 + 1T/gr94O8R6tFo/geeHVdZ1t nttEgs3+0S6rdDGLYQg8kqpbII2bdx4VhXu/g742Q6hZm3u + 7hrceXsdCG2jtjJ+U1xHiv9lD4VfF nxveXet+EdE0zxJDaxyWesaXaRw3ce5jsukeJRtuIp + VVklTEi4GW8suD+Z4vK8YqfNQraLyV38/0 t8z6vA5rhfaf7TR+ab/I8K/4LBfETxl8Hv2LN + H0q10wXkPi/XoZfHeq27iT+x7WL/TG2xn5nLPHH CJT8qLETjL1+MfxN/a3tfEDSyST2sUcy + NG0JYsgh2/djYHCAAcHGCBuxgMD+qn7VfxOuj8KLjQf2 ifF2i23iMajceDdanuRBBp9xcpF + G4ZxLlUW5iaGZAoXBkG0jAr4Q1r9j/wCA3wFuoZPFF38OP7Tm uJp0g1e7jmkZFxwyzuwUBg + cyEBT0LV81VzqpQfJCm3/wD2MZllV83LHmW91trsfFl/8AHqa+04W+ h3s89xYuZbdLUedgN + jKsiqdxIC54zwM5IzW9ongr44fE+HzPhR8OPiRqYf8Ae+ZbaHdKquAWcLvj +bh0bAK45wa+ + x/Cv/BQjUPAHhDVYfhP8KfDsem6JI9jFq6+IZIvC8BkHmRBUsFSA3EuJWSJ503fN txsctle + Ev+Cy3xE8Z/C69YJ4S0Z7ixuLK+u9K0IvqWkxyq0R+xSXU8qS7Hj3/OjttDfNuZTSp4/F Yl + +7C3rJX+655To16TSdO3rp+Vz9DP2s/HvijX/+COuo2d9A3i74iXvgrS9L1fSdMK6jqY1WT7 + It xBJbW++QOsjsrLw3BJPFfk38ItK0j4p/tIaX8Mfi74bsfEs+tasPDM+ieITJYmz1S7X7P + byRvC6S RYkZIGY4eNt25T5YY/d2h/ts+G/28f8Agmn8SY/HJ0Lwx+0J4R0GTXFufD1vHpOp + 362ZM/2zSbzA l3GGBkePLSJghlPmHP5L6h+07ZfGeS58U/ErTru18b6vAJrzVNLmWGDU7tS + omurm2kjISSZN7yTQ uB56RuIxvOP0jhbF+0o1cPXceWT9Xtb7tjzuJqTqeyrNarsf1N638H + 7X4T/Afwt4W8H2UVpZfDnT LHT7G3iZpYoobO2S12IWJZlEanBb5iACecivG9N/ap8G2tr5V + 9rAhmid0eOd3jkQhiCCo6D09sV8 Ufsof8HJY8B+B/DGkfto6DqfifRooF0u88V6M3m39gpU + Ilxc2hbF1G6nLSRFZF8tvlY/KPqnT/ij +zZ8U9OtvENp47+Fetw6vDHcRXw8U2cDXKFRtZ4 + pXWSN8AbkdVZWDBgCCK+hwcZYJPC1baWaa2af Y+UlONV+0a3Ifhx8Z73+2bO21qeJYbskQN + cBm8xPTyVyWf6K2PavWPjR8a9R+G2jaDfeCtEiku70 fZDcanqCW1vabyqb5UiQuFPykAn+F + sgHIHyr4W+KukaRqrvYiKNvODPJGxEjuQBnJ5PQjPpXpX7Q 37Q2if8ADPus/FXVpJLKD4QD + b4htVCrDqljcQmS1HLKglFyyIhYhf3kisSHxXysKyjScr7Hvzpvn SaPD/wBrDx7ceA9bk0r + Q0sPEVh47sb298RaPdSi4j1+WKSG2uLYLMrIzoL6xntmZVSL7Iof5JmZc r9oK/wBH/Z90vV + ND+L/wV/4Wdpnifw2tpomuaYotdb0/W7S3EKzSSwyLcfZJIvs8rPbFmgkhbbCw nUJ4N4B8E + 3Xx3vYr/wCL3j3w9Z3XhXTry41Tw7aak8N5bmQxPPFfagBItohWGJSkaNI27hirZq7o 3x60 + a4+IetXPwqv/AA7JqFxc/Yrq31ia7ub63fzDgNbIvlqjISsbpIjFUOADvFfndZYrB0PrVSNl + dq/XXX0/G/kfouWPLc2rPL+a8+VO17fD0v8AoR/tE/GqXwN+wZpWn/GPR10m7EEqabpMWkw + xwf2j Kju11LZW4Cm8k3yPNO48w/MGIA2j8rPCvxck8L6VdWejRyWf2u2uIjL5h3qHfaCe4P + 3yfbiv1Q/a t8XXHxJ+Ekq6Dp0lzqmnea9tE0WdzvFJExHZgwZ1z/EvXOa+Ik/4JLeLfEHhK + 61Sx1vRNNvo5Jrm 4t7vdBHb2qx/PKWTd84JC7SANpB6mufCYunL45auxWeYapFxWFjaMen5 + /wDBPN/A/wARNVv73wvo fwue2uPEWp6pFFYwblSGN2EkTv8A9MI1IiYvwm1CSMK2ej/aF/Y + n+Jnww8c+Nr2y+H+uX/hzQ9dv 9NuNY0LTZrjR/tFq8a3DxOqH9yskmFfhDuZR9w12f7EHwo + i8PePpPHNpbafFaWDSrayxx74JLeG3 eANHuJLG5ncgDPIT3xX2xovxd8VJ4rudQ8O3d7YC2 + sfIJEsc1wXilEs0kYkYnKiTygf3e7bIVYEH P3mTZdGMY1pSak+lloflOccRSpzlh4wUkut3 + o/8Agn5geEfFMmoaFcxaYzTTWuJCYlZ5IW+bcCpO fm2sTnjDMuAGxXc6P+zn4Z+IWnprTwT + acdQLS/ZorqIpH8xHGITjOM4ycZxX3H4++MnwJ/a+17Wt K+PXw312CfQpEttS+J3h3w+bq9 + tT5asuozXFmkSyIsqvDLE0VzuePIlRDuT4y+LH7JfxA/Z48fX3 hHSfDWv+N9P0wRS2Ov8Ah + vWjDpesWs8SXEFxDGYWMe+KaNmQklXLA9K+1w+Z0KdNQqrnS8jyaU/r Ert+zdr6tar+vmfX + 3w++Lnib4n3V8fh1pFzqEenAySu08cNpYKpOGuJ952YHRWxkdOtekfBP9t/Q /hXrl/qHxw0 + zwx4gi04Rajpk0Wo2c9v4f1C0VpF1N7eWWX7WbeITSxI0RaOSPzIkLqrL1vh/9kC7 8Tazps + H7Rc+t2vgW5uFt4LTSNItrjT7SRw7LKp0x5LO7iXCgqXQgdlbICW/7Vnw9+AOq3cJ8O6L/ A + MKt1ELaaR8QfDOmmbUL1ysvmWzaOiGSFN8Uqbg5BG1vvMa/Nfr0cI4xqTS5tubZ9fTp3Pq61 + ZSf JbX7vz6ng37Vf7ct94/8U69eXlzrZ8OaPaQ3Fva3qSwXWrXl2m23a7LYMzyxb5zPycKW + znFfEXw0 +OXjr4W6/wCIvGXwk18W+qa9rRtLmJ41ktNRWLOyPyWGAI1kO1h0BIFfbX/BXfw + TrXxY8LeFfiB8 NZ1uvCdtZJCyWkBhnslnBaGZ967ijJJtww/c8g/eFfJ2i+BrPRvBej6faR + SR21szklgPnYtuLMRz tLseD0wAeldTxbziHvWt2X9eR5NXDyyDEOpCT5pWs3vY+hP2RvB3x + Q/bD8OTeKvH2rre6fa6nPaX Ftp8T2c0flOu2QtITkEs42r24q5+3Np83h650v4OfD13lu/F + bWy+JdQIeSa3sZZPMis1kzwZRG8r EcAKAetfWX/BG/wJbaL+yPpOq/KZ9dmuNRuV+8GdrqV + wRnvtUDNfOf7c2v2tj/wUK8eQ6ne6Z4Zj ENhAuoahKkVnYq2nWq72Zm2hiWfgr2rxsDk1CW + LVSWy18tD7bNM5rUsnUr/vJJa97/qca1xbXXxX 8B/D74fWqwWcV3FdX0UJCLBa2EfmJEB90 + OZfK5PACe9cb+1t8Stf+CPxVv49C1S1srix0a6WO4lQ YWC5uNsAEX3GJkjJKgYG0N2zWX8e + vCOlfCGxtdH8IeJTrPirxvbT6asenSC7kMNyYmuJYViAzvRX +Yv/ABAdsDJ8afsMfFT4lXJ + 8f+M9OjuNNQWmm6XFd3gl3W4EdqkkoQnHyuSwz1znnNfSY3MYYWLi 3Z36P/I/NsBlVbMmpU + 4N730/zPoD9lme3+CHhrw82oa82gazLYAS6e97HLJZRzItxPcvcKdsAWV3 cg4bEx5YsFHrH + g3/AIK7eFPC/hq1sNC1b4lala2wZUuobOK2inyxJaKOa4WQRkk7d6hiu0kc1u/s /f8ABule + 6n8Ira/8efEK+t/Eh23Mdvp9pFNpKyhi6vJFOn79gcfeY4IOMcVynif/AIJb/teeHNfu rLw + t4F+H/ibT7d8QapBcG0S8U87vJyQjckMAcbgcYHFdVLN3FJSjZdLxcr/cddfg/Ey96VnfopJ + W 9dV+Z+o/hr9n74XfDP4SP4j/AGE4rfNx5cNpY3us3iWVp5j70W5gMgkZVbG1SwxuOSydeC + /a+/Yq 1r49x2etfCSHTZrnStFXS9Q8Nx6VBptzDH5yTLPpt3bJGruJIm24ffGHbynQuwf4M + 1f4w+IPBf7S Og+HvDV1bW+kX+qNFcwGwt5DOvkyS/NI8ZcneAck56jOCRX2Z4t+OvjD4O/s + yazd/DTxDqWkzvf2 0QMUm5YldV3eWrZWMnJBZADjjOOK8auoVMP7KrH7nY9TEUFjLxm2103 + 0/Fo+a/B0t/4Z+HuoaV8U H1S41S2uLjSpm1m2CXbRoybVuFCIwYIwR3dQXZGbGDXzjrfgnw + 3+0L4m1b4XWF9p/hPx5ZD+1fCX iCKyilg8Q2iL++sbqLbmTy8krs/eFfKKn91Jn0n4v+MNW + 8QXF3rPiPU7/U9W1LVpLi7u724e5muX TyUQu0hJYKgCgHgKAAMCvnzwb/pn7T3w7up8+eni + GyCsvy7fkc8AcA/Owz1wcdABX59LMHgMV7Gk 3ZO2+uuuve1z9MynKaeKyymq9paW1R+m/wD + wT6/Z/T4M/s7aJ4fub6O5mtLaNBceWUMgKFshWJKZ 3fd7ZxX5Zf8ABfz4V3a/t0XOoaTcxR + 6d4i0LTLqQTymKKQpB5Dt83y7g0OcgdTk81+tHwZvZbCx8 qzby44Y2aNVAwmBxj0HJ46du1 + fAX/By7otq3hP4Ya00KnVLS9OkxXHO5bWSJZGix0I3ksCRlSzFS Nxz9tRq89BSkjwc4wvuu + nB2Stb8jwr/gi18KNJ1Xxh4v8SeILV7x9NvLaK2e6mVmDrE0kmGHX59o 47AZr9R/jt8V/AP + hb4I6jpN/fWMF1Fp3mBHOyN9rFo44iQBIwdFO0ZYZ4IHFfnh+yR4ftPBX7M3g PU/Csb2Woe + I7ZLzUp45W33cpdgXbJ64AHGOAB0r7Q8N3kknga484iQm3dcyKHIB3ZAJ6Z9q8atiW lJJan + pZTho0qUFJtrfsfor+z/wCKLfW/hno1ygB+1WUUyue4dQ3QgEDnof1616IbLzsMZbJcgcPa + F2/E7xn8q8D/AGLYwPBvhi3O4wvZQgoSSAAqYAz0HJ4FeH+Pfjl4suPGWotLrd2T5xHAUAAc + AAAc AACv0nhTLKvEkZWmoqKW6ueHxPmdLh5Qm4uXO3s7H//Z item3.X-ABDATE;type=pref:2000-12-31 item3.X-ABLabel:_$!<Anniversary>!$_ X-ABShowAs:COMPANY X-ABUID:73FD0F46-DE18-4F1F-AA2C-59E8738B4249\:ABPerson +UID:excellent-looking-uid-string +REV:YYYYMMDDTHHMMSSZ END:VCARD @@ -585,12 +596,11 @@ END:VCARD /caldav.php/user1/addressbook/andresenesq.vcf - "f6ae02ec1b5612fe4737092734d062c7" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:4.0 PRODID:-//ALAB//NOSGML Version 0.9//DE -REV;VALUE=date-time:20100623071522Z -UID:uid=andresenesq.1209158007\,ou=Contacts\,dc=andresen\,dc=de +UID:excellent-looking-uid-string X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187\:ABPerson FN:Sven Joseph Klaus Michael Andresen\, Esq. SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael @@ -599,264 +609,235 @@ X-DISPLAYNAME:Svenni X-INITIALS:SA X-INITIALS:SHA NICKNAME:Svenny,Sveny -PHOTO;ENCODING=b;TYPE=jpeg: - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS - Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ - CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy - MjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA - AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh - MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 - Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ - mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx - 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA - AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV - YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp - anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE - xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3 - +iiigAooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m - 6seyqOpJ9BQBp1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4 - d8PMSFnOfPnX6jn8FwO2TU2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+ - gGRotK0XVr+QdPkVA305J/Ssyb45eKWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcM - S9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8MryIT+Yq/Y/tLWDlRf8Ahu5hHcwX - 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 - ooooA//Z +PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB + wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN + DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM + jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA + AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF + DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW + mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx + MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA + AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM + oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW + VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w + sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig + AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp + 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T + U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e + KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M + ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt + 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 + //Z X-SPOUSE:Manuela Graf X-EVOLUTION-SPOUSE:Manuela Graf item1.X-ABRELATEDNAMES:Manuela Graf @@ -923,10 +904,10 @@ TEL;TYPE=MODEM:+49 7363 6363 TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 TEL;X-EVOLUTION-TTYTDD:+49 8378 33 TEL;X-QUICKDIAL:13355 -ADR;TYPE=WORK;CHARSET=utf-8:PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Ba - yern;94036;Deutschland -ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung;Wei - senstraße 13;Irgendwo;Niedersachsen;34332 +ADR;TYPE=WORK;CHARSET=utf-8: + PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland +ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; + Weisenstraße 13;Irgendwo;Niedersachsen;34332 ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13\r;Irgendwo;;34332 ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis ORG:andresen AG;R&D;;XXX\, 033 @@ -945,36 +926,32 @@ item10.URL;TYPE=HOME:http://www.andresen.de/~andresen item10.X-ABLabel:_$!<HomePage>!$_ X-BUSINESS-CATEGORY:IT X-BUSINESS-CATEGORY:Development -KEY;ENCODING=b;TYPE=X-CERT: - LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2RENDQXlXZ0F3SUJBZ0lK - QUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd0NRWUQKVlFR - R0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQnhN - RVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRI - a2dUSFJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdR - VzVrY21WelpXNHhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoK - Wlc0dVpHVXdIaGNOTVRBd05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0 - V2pDQm16RUxNQWtHQTFVRQpCaE1DUVZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNS - aGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQWZCZ05WCkJBb1RHRWx1ZEdWeWJt - VjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVRUN4UURVaVpFTVJZd0ZB - WUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJaHZjTkFRa0JG - aEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVB - QTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9Hakxj - Tkt3MktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlT - eldvQ00KbXhZcFN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0ov - eWp5R0JDYU4vdExvdG9ZN3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURB - UUFCbzRJQkJEQ0NBUUF3SFFZRFZSME9CQllFRkhNaFBPR255aENtCmxWcHlCZHhC - TVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQUZITWhQT0dueWhDbWxWcHlCZHhC - TVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHRXdKQlZURVRNQkVHQTFV - RUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlVEVoTUI4R0Ex - VUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnWURW - UVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRC - Z2txaGtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1 - T2JWcVdEQU1CZ05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRH - QkFGcnVidGpoWVB1RERHVVpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitX - UThSL3AxbURrc3ZEQ3hDYWp2YVduSVI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dD - UWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0VkaXBlMEM1SEgyMnY0RitSSzVUK1lq - M1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotLS0tLUVORCBDRVJUSUZJ - Q0FURS0tLS0tCg== +KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R + ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd + 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ + nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS + FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN + HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd + 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU + VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ + WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR + UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa + HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU + VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M + ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc + FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN + 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM + E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ + UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR + XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV + EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW + URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa + GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ + 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV + VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS + VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka + XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL + S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== CALURI:http://caldav.andresen.local/sja FBURL:http://caldav.andresen.local/freebusy CAPURI:http://caldav.andresen.local/access @@ -983,6 +960,7 @@ X-DESCRIPTION:Beschreibung X-DESCRIPTION;CHARSET=utf-8:außerdem NOTE:Nur so ein Test! CATEGORIES:bla,blubb,test,hihi,oops +REV:YYYYMMDDTHHMMSSZ END:VCARD @@ -993,12 +971,11 @@ END:VCARD /caldav.php/user1/addressbook/hans_dieter.vcf - "db3e92c0ae37268c647949367e2030cc" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:4.0 PRODID:-//ALAB//NOSGML Version 0.9//DE -REV;VALUE=date-time:20090124123353Z -UID:uid=schmidt.1208717693\,ou=Contacts\,dc=andresen\,dc=de +UID:excellent-looking-uid-string X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F\:ABPerson FN:Hans Dieter Schmidt SORT-STRING:Schmidt\, Hans Dieter @@ -1086,14 +1063,14 @@ TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 -TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 TEL;TYPE=MAIN:+49 9324 32 479 234234 TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 TEL;TYPE=MODEM:+49 8383 73 723 TEL;X-EVOLUTION-TTYTDD:+49 7373 73 TEL;X-EVOLUTION-TTYTDD:+49 8378 33 -ADR;TYPE=WORK;CHARSET=utf-8:;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg; - Hamburg;21373;Deutschland +ADR;TYPE=WORK;CHARSET=utf-8: + ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13\r;Irgendwo;;33443 ADR;TYPE=X-OTHER:;;Nirgendwo ORG:Uni Harburg;;;033 @@ -1109,6 +1086,7 @@ CALADRURI:http://davical.hadi-schmist.home/access X-DESCRIPTION:Beschreibung X-DESCRIPTION;CHARSET=utf-8:außerdem CATEGORIES:uni +REV:YYYYMMDDTHHMMSSZ END:VCARD @@ -1119,7 +1097,7 @@ END:VCARD /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_2_0.vcf - "feaa1a28c9942fc56403e2f97f75171b" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-8:Test-Roßdeutscher;Jörg;;; @@ -1134,10 +1112,13 @@ TEL;CELL:017799999978200 TEL;HOME:040999999793017 ADR;WORK;CHARSET=UTF-8:;;abcStraße 58;Hamburg;;20357;Deutschland ADR;HOME:;;Gayens Weg 9;Hamburg;;22761;Deutschland -NOTE;CHARSET=UTF-8:Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter +NOTE;CHARSET=UTF-8: + Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter URL;type=pref:www.gesindel.baz URL:www.factordesign.foo BDAY;value=date:1969-06-20 +UID:excellent-looking-uid-string +REV:YYYYMMDDTHHMMSSZ END:VCARD @@ -1148,13 +1129,14 @@ END:VCARD /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_3_0.vcf - "5a32961b9938a7d6a354a757a8a1ea36" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> BEGIN:VCARD VERSION:3.0 N:Test-Roßdeutscher;Jörg;;; FN:Jörg Test-Roßdeutscher ORG:Factor Design AG; -EMAIL;type=INTERNET;type=WORK;type=pref:joerg.rossdeutscher@factordesign.foo +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref: + joerg.rossdeutscher@factordesign.foo EMAIL;type=INTERNET;type=WORK:joerg@factordesign.foo EMAIL;type=INTERNET;type=HOME:joerg.rossdeutscher@gesindel.foo EMAIL;type=INTERNET;type=HOME:raettchen@gmail.bar @@ -1172,6 +1154,8 @@ item4.URL:www.factordesign.foo item4.X-ABLabel:_$!<HomePage>!$_ BDAY;value=date:1969-06-20 X-ABUID:58AB933D-81D3-4095-8CB5-A63431AC934D\:ABPerson +UID:excellent-looking-uid-string +REV:YYYYMMDDTHHMMSSZ END:VCARD diff --git a/testing/tests/carddav/2031-REPORT-addressbook-multiget.test b/testing/tests/carddav/2031-REPORT-addressbook-multiget.test index eaafc45a..b6013a75 100644 --- a/testing/tests/carddav/2031-REPORT-addressbook-multiget.test +++ b/testing/tests/carddav/2031-REPORT-addressbook-multiget.test @@ -23,3 +23,7 @@ BEGINDATA ENDDATA +REPLACE=/"[0-9a-f]{32}"<.get.tag>/"deadbeefcafef00ddeadbeefcafefeed"<.get?tag>/ +REPLACE=/^UID:.+/UID:excellent-looking-uid-string/ +REPLACE=/^REV:\d{8}T\d{6}Z/REV:YYYYMMDDTHHMMSSZ/ +REPLACE=/^ETag: "[0-9a-f]+"\s$/ETag: "a fine looking etag"/ diff --git a/testing/tests/carddav/2039-REPORT-sync-changed.result b/testing/tests/carddav/2039-REPORT-sync-changed.result index d0902bdb..c530c2ec 100644 --- a/testing/tests/carddav/2039-REPORT-sync-changed.result +++ b/testing/tests/carddav/2039-REPORT-sync-changed.result @@ -2,7 +2,7 @@ HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "6c643c2bb832c75fb7417ba9e47269f0" +ETag: "a fine looking etag" Content-Length: 1794 Content-Type: text/xml; charset="utf-8" @@ -12,7 +12,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/andresenesq.vcf - "f6ae02ec1b5612fe4737092734d062c7" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> HTTP/1.1 200 OK @@ -21,7 +21,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/F06EC844-EACD-4ADF-8823-588603991E04-ABSPlugin.vcf - "0ea4d7759e103090c6494505b5da0f11" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> HTTP/1.1 200 OK @@ -30,7 +30,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/hans_dieter.vcf - "db3e92c0ae37268c647949367e2030cc" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> HTTP/1.1 200 OK @@ -39,7 +39,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_2_0.vcf - "feaa1a28c9942fc56403e2f97f75171b" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> HTTP/1.1 200 OK @@ -48,7 +48,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_3_0.vcf - "5a32961b9938a7d6a354a757a8a1ea36" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> HTTP/1.1 200 OK @@ -57,7 +57,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/mustrmahn.vcf - "e67537e9d473e93911eccd6e63e9ac3a" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> HTTP/1.1 200 OK @@ -66,7 +66,7 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/addressbook/van_houtte.vcf - "d43780719361367f2d690f1f966e3da1" + "deadbeefcafef00ddeadbeefcafefeed"<.get?tag> HTTP/1.1 200 OK diff --git a/testing/tests/carddav/2039-REPORT-sync-changed.test b/testing/tests/carddav/2039-REPORT-sync-changed.test index f1df664e..01c3f7aa 100644 --- a/testing/tests/carddav/2039-REPORT-sync-changed.test +++ b/testing/tests/carddav/2039-REPORT-sync-changed.test @@ -17,3 +17,5 @@ BEGINDATA ENDDATA +REPLACE=/"[0-9a-f]{32}"<.get.tag>/"deadbeefcafef00ddeadbeefcafefeed"<.get?tag>/ +REPLACE=/^ETag: "[0-9a-f]+"\s$/ETag: "a fine looking etag"/ From 67541c73c2d3df4333b4528660eecb7fa1eb7b1b Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 17:42:20 +1300 Subject: [PATCH 08/21] Handle addressbook import along with calendar import. --- inc/caldav-PUT-functions.php | 145 +++++++++++++++++++++++++++++++---- 1 file changed, 132 insertions(+), 13 deletions(-) diff --git a/inc/caldav-PUT-functions.php b/inc/caldav-PUT-functions.php index 16a03315..99581e17 100644 --- a/inc/caldav-PUT-functions.php +++ b/inc/caldav-PUT-functions.php @@ -549,6 +549,42 @@ function do_scheduling_requests( vCalendar $resource, $create, $old_data = null } +/** +* This function will import a whole collection +* @param string $ics_content the ics file to import +* @param int $user_no the user wich will receive this ics file +* @param string $path the $path where it will be store such as /user_foo/home/ +* @param boolean $caldav_context Whether we are responding via CalDAV or interactively +* +* The work is either done by +*/ +function import_collection( $import_content, $user_no, $path, $caldav_context, $appending = false ) { + global $c; + + if ( ! ini_get('open_basedir') && (isset($c->dbg['ALL']) || isset($c->dbg['put'])) ) { + $fh = fopen('/tmp/PUT-2.txt','w'); + if ( $fh ) { + fwrite($fh,$import_content); + fclose($fh); + } + } + + if ( preg_match( '{^begin:(vcard|vcalendar)}i', $import_content, $matches) ) { + if ( $matches[1] == 'VCARD' ) + import_addressbook_collection( $import_content, $user_no, $path, $caldav_context, $appending ); + elseif ( $matches[1] == 'VCALENDAR' ) + import_calendar_collection( $import_content, $user_no, $path, $caldav_context, $appending ); + + // Uncache anything to do with the collection + $cache = getCacheInstance(); + $cache_ns = 'collection-'.preg_replace( '{/[^/]*$}', '/', $path); + $cache->delete( $cache_ns, null ); + } + else { + dbg_error_log('PUT', 'Can only import files which are VCARD or VCALENDAR'); + } +} + /** * This function will import a whole calendar * @param string $ics_content the ics file to import @@ -558,17 +594,105 @@ function do_scheduling_requests( vCalendar $resource, $create, $old_data = null * * Any VEVENTs with the same UID will be concatenated together */ -function import_collection( $ics_content, $user_no, $path, $caldav_context, $appending = false ) { - global $c, $session, $tz_regex; +function import_addressbook_collection( $vcard_content, $user_no, $path, $caldav_context, $appending = false ) { + global $c, $session; + // We hack this into an enclosing component because vComponent only expects a single root component + $addressbook = new vComponent("BEGIN:ADDRESSES\r\n".$vcard_content."\r\nEND:ADDRESSES\r\n"); - if ( ! ini_get('open_basedir') && (isset($c->dbg['ALL']) || isset($c->dbg['put'])) ) { - $fh = fopen('/tmp/PUT-2.txt','w'); - if ( $fh ) { - fwrite($fh,$ics_content); - fclose($fh); - } + require_once('vcard.php'); + + $sql = 'SELECT * FROM collection WHERE dav_name = :dav_name'; + $qry = new AwlQuery( $sql, array( ':dav_name' => $path) ); + if ( ! $qry->Exec('PUT',__LINE__,__FILE__) ) rollback_on_error( $caldav_context, $user_no, $path ); + if ( ! $qry->rows() == 1 ) { + dbg_error_log( 'ERROR', ' PUT: Collection does not exist at "%s" for user %d', $path, $user_no ); + rollback_on_error( $caldav_context, $user_no, $path ); } + $collection = $qry->Fetch(); + + if ( !(isset($c->skip_bad_event_on_import) && $c->skip_bad_event_on_import) ) $qry->Begin(); + $base_params = array( + ':collection_id' => $collection->collection_id, + ':session_user' => $session->user_no, + ':caldav_type' => 'VCARD' + ); + if ( !$appending ) { + if ( !$qry->QDo('DELETE FROM caldav_data WHERE collection_id = :collection_id', $base_params) ) + rollback_on_error( $caldav_context, $user_no, $collection->collection_id ); + } + + $dav_data_insert = <<GetComponents(); + foreach( $resources AS $k => $resource ) { + if ( isset($c->skip_bad_event_on_import) && $c->skip_bad_event_on_import ) $qry->Begin(); + + $vcard = new vCard( $resource->Render() ); + + $uid = $vcard->GetPValue('UID'); + if ( empty($uid) ) { + $uid = uuid(); + $vcard->AddProperty('UID',$uid); + } + + $last_modified = $vcard->GetPValue('REV'); + if ( empty($last_modified) ) { + $last_modified = gmdate( 'Ymd\THis\Z' ); + $vcard->AddProperty('REV',$last_modified); + } + + $created = $vcard->GetPValue('X-CREATED'); + if ( empty($last_modified) ) { + $created = gmdate( 'Ymd\THis\Z' ); + $vcard->AddProperty('X-CREATED',$created); + } + + $rendered_card = $vcard->Render(); + + $dav_data_params = $base_params; + $dav_data_params[':user_no'] = $user_no; + // We don't allow any of &?\/@%+: in the UID to appear in the path, but anything else is fair game. + $dav_data_params[':dav_name'] = sprintf( '%s%s.ics', $path, preg_replace('{[&?\\/@%+:]}','',$uid) ); + $dav_data_params[':etag'] = md5($rendered_card); + $dav_data_params[':dav_data'] = $rendered_card; + $dav_data_params[':modified'] = $last_modified; + $dav_data_params[':created'] = $created; + + if ( isset($c->skip_bad_event_on_import) && $c->skip_bad_event_on_import ) $qry->Begin(); + + if ( !$qry->QDo($dav_data_insert,$dav_data_params) ) rollback_on_error( $caldav_context, $user_no, $path ); + + $qry->QDo('SELECT dav_id FROM caldav_data WHERE dav_name = :dav_name ', array(':dav_name' => $dav_data_params[':dav_name'])); + if ( $qry->rows() == 1 && $row = $qry->Fetch() ) { + $dav_id = $row->dav_id; + } + + $vcard->Write( $row->dav_id, false ); + + if ( isset($c->skip_bad_event_on_import) && $c->skip_bad_event_on_import ) $qry->Commit(); + } + + if ( !(isset($c->skip_bad_event_on_import) && $c->skip_bad_event_on_import) ) { + if ( ! $qry->Commit() ) rollback_on_error( $caldav_context, $user_no, $path); + } + +} + +/** +* This function will import a whole calendar +* @param string $ics_content the ics file to import +* @param int $user_no the user wich will receive this ics file +* @param string $path the $path where it will be store such as /user_foo/home/ +* @param boolean $caldav_context Whether we are responding via CalDAV or interactively +* +* Any VEVENTs with the same UID will be concatenated together +*/ +function import_calendar_collection( $ics_content, $user_no, $path, $caldav_context, $appending = false ) { + global $c, $session, $tz_regex; $calendar = new vComponent($ics_content); $timezones = $calendar->GetComponents('VTIMEZONE',true); $components = $calendar->GetComponents('VTIMEZONE',false); @@ -777,11 +901,6 @@ EOSQL; if ( !(isset($c->skip_bad_event_on_import) && $c->skip_bad_event_on_import) ) { if ( ! $qry->Commit() ) rollback_on_error( $caldav_context, $user_no, $path); } - - // Uncache anything to do with the collection - $cache = getCacheInstance(); - $cache_ns = 'collection-'.preg_replace( '{/[^/]*$}', '/', $path); - $cache->delete( $cache_ns, null ); } From e5eeffe9359d859cc1b4daf2c2b77f0c4a45f270 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 13 Jan 2012 23:40:42 +1300 Subject: [PATCH 09/21] Updated german translation. --- po/de.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/po/de.po b/po/de.po index bec23438..01620898 100644 --- a/po/de.po +++ b/po/de.po @@ -5,7 +5,7 @@ # Translators: # Andrew McMillan , 2011. # fmms , 2011. -# , 2011. +# , 2011, 2012. # spasstl , 2011. # thoerb , 2011. msgid "" @@ -13,8 +13,8 @@ msgstr "" "Project-Id-Version: DAViCal\n" "Report-Msgid-Bugs-To: http://repo.or.cz/w/davical.git/tree/HEAD:/issues\n" "POT-Creation-Date: 2011-11-21 10:59+1300\n" -"PO-Revision-Date: 2011-11-20 22:15+0000\n" -"Last-Translator: Andrew McMillan \n" +"PO-Revision-Date: 2012-01-07 09:14+0000\n" +"Last-Translator: fmms \n" "Language-Team: German (http://www.transifex.net/projects/p/davical/team/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -450,7 +450,7 @@ msgstr "Lösche Ticket:" msgid "" "Deliver scheduling invitations from an organiser to this scheduling inbox" msgstr "" -"Auslieferung von Termineinladungen von einem Organisierer an diese " +"Auslieferung von Termineinladungen von einem Organisator an diese " "Termineingangsbox" msgid "Deliver scheduling replies from an attendee to this scheduling inbox" @@ -822,7 +822,7 @@ msgid "PHP iconv support" msgstr "PHP-iconv-Unterstützung" msgid "PHP not using Apache Filter mode" -msgstr "" +msgstr "PHP benutzt nicht den Apache Filter-Modus" msgid "" "PUT on a collection is only allowed for text/calendar content against a " @@ -889,10 +889,10 @@ msgid "Privileges granted to All Users" msgstr "Berechtigungen für alle Benutzer gesetzt" msgid "Privileges to allow delivery of scheduling messages" -msgstr "" +msgstr "Rechte um die Zustellung von Scheduling-Nachrichten zu erlauben" msgid "Privileges to delegate scheduling decisions" -msgstr "" +msgstr "Rechte um Scheduling-Anfragen zu delegieren" msgid "Property is read-only" msgstr "Eigenschaft ist schreibgeschützt" From 927a98482ffdc38afbc0ec9127f115180e81b76a Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sat, 14 Jan 2012 10:46:56 +1300 Subject: [PATCH 10/21] Release 1.0.2 --- ChangeLog | 21 +++ VERSION | 2 +- debian/changelog | 9 +- debian/control | 2 +- docs/api/awl/caldav/CalDAVClient.html | 2 +- docs/api/awl/caldav/CalendarInfo.html | 2 +- docs/api/awl/caldav/RRule.html | 2 +- docs/api/awl/caldav/RepeatRule.html | 2 +- docs/api/awl/caldav/RepeatRuleDateRange.html | 2 +- docs/api/awl/caldav/RepeatRuleDateTime.html | 2 +- docs/api/awl/caldav/RepeatRuleTimeZone.html | 2 +- docs/api/awl/caldav/Rfc5545Duration.html | 2 +- docs/api/awl/caldav/_inc---RRule-v2.php.html | 2 +- docs/api/awl/caldav/_inc---RRule.php.html | 2 +- .../caldav/_inc---caldav-client-v2.php.html | 2 +- .../awl/caldav/_inc---caldav-client.php.html | 2 +- docs/api/awl/caldav/iCalDate.html | 2 +- docs/api/classtrees_awl.html | 2 +- docs/api/classtrees_davical.html | 2 +- docs/api/davical/AtomEntry.html | 2 +- docs/api/davical/AtomFeed.html | 2 +- docs/api/davical/AtomXHTMLContent.html | 2 +- docs/api/davical/CheckResult.html | 2 +- docs/api/davical/DAVTicket/DAVTicket.html | 2 +- .../DAVTicket/_inc---DAVTicket.php.html | 2 +- .../DAViCalSession/DAViCalSession.html | 2 +- docs/api/davical/DAViCalSession/Tools.html | 10 +- .../DAViCalSession/_htdocs---tools.php.html | 20 +-- .../_inc---DAViCalSession.php.html | 2 +- .../HTTPAuthSession/HTTPAuthSession.html | 14 +- .../_inc---HTTPAuthSession.php.html | 2 +- docs/api/davical/Principal/DAVPrincipal.html | 2 +- docs/api/davical/Principal/Principal.html | 10 +- .../Principal/_inc---DAVPrincipal.php.html | 2 +- .../Principal/_inc---Principal.php.html | 2 +- .../davical/PublicSession/PublicSession.html | 2 +- .../_inc---PublicSession.php.html | 2 +- docs/api/davical/RRuleTest.html | 16 +-- docs/api/davical/Request/CalDAVRequest.html | 58 ++++---- .../Request/_inc---CalDAVRequest.php.html | 2 +- docs/api/davical/Resource/DAVResource.html | 2 +- .../davical/Resource/WritableCollection.html | 12 +- .../Resource/_inc---DAVResource.php.html | 2 +- docs/api/davical/SqlToArray.html | 14 +- docs/api/davical/VCard.html | 14 +- .../api/davical/_htdocs---SqlToArray.php.html | 2 +- docs/api/davical/_htdocs---admin.php.html | 2 +- docs/api/davical/_htdocs---always.php.html | 2 +- docs/api/davical/_htdocs---createdb.php.html | 2 +- docs/api/davical/_htdocs---dbexec.php.html | 2 +- docs/api/davical/_htdocs---feed.php.html | 2 +- docs/api/davical/_htdocs---freebusy.php.html | 2 +- docs/api/davical/_htdocs---help.php.html | 2 +- docs/api/davical/_htdocs---index.php.html | 2 +- docs/api/davical/_htdocs---newfile.php.html | 2 +- docs/api/davical/_htdocs---setup.php.html | 90 +++++++----- docs/api/davical/_htdocs---test.php.html | 2 +- docs/api/davical/_htdocs---upgrade.php.html | 16 +-- docs/api/davical/_inc---AtomFeed.php.html | 2 +- .../_inc---WritableCollection.php.html | 4 +- .../_inc---autodiscover-handler.php.html | 2 +- docs/api/davical/_inc---caldav-LOCK.php.html | 2 +- .../_inc---caldav-REPORT-calquery.php.html | 2 +- .../_inc---caldav-REPORT-cardquery.php.html | 2 +- ...c---caldav-REPORT-expand-property.php.html | 2 +- .../_inc---caldav-REPORT-freebusy.php.html | 2 +- .../_inc---caldav-REPORT-multiget.php.html | 2 +- ...c---caldav-REPORT-principal-match.php.html | 2 +- .../_inc---caldav-REPORT-principal.php.html | 2 +- docs/api/davical/_inc---check_UTF8.php.html | 2 +- ...c---davical_configuration_missing.php.html | 2 +- .../_inc---freebusy-functions.php.html | 2 +- .../davical/_inc---interactive-page.php.html | 2 +- .../_inc---other_translated_strings.php.html | 2 +- docs/api/davical/_inc---page-footer.php.html | 2 +- docs/api/davical/_inc---page-header.php.html | 2 +- docs/api/davical/_inc---pubsub.php.html | 2 +- .../api/davical/_inc---test-RRULE-v2.php.html | 8 +- docs/api/davical/_inc---test-RRULE.php.html | 6 +- .../_inc---ui---collection-edit.php.html | 2 +- .../_inc---ui---external-browse.php.html | 2 +- .../_inc---ui---principal-browse.php.html | 2 +- .../_inc---ui---principal-edit.php.html | 2 +- docs/api/davical/_inc---vcard.php.html | 6 +- docs/api/davical/_inc---well-known.php.html | 10 +- .../_inc---auth-functions.php.html | 2 +- .../davical/caldav/_htdocs---caldav.php.html | 2 +- .../davical/caldav/_htdocs---public.php.html | 2 +- .../davical/caldav/_inc---caldav-ACL.php.html | 2 +- .../caldav/_inc---caldav-BIND.php.html | 4 +- .../caldav/_inc---caldav-DELETE.php.html | 2 +- .../caldav/_inc---caldav-DELTICKET.php.html | 2 +- .../davical/caldav/_inc---caldav-GET.php.html | 2 +- .../caldav/_inc---caldav-MKCOL.php.html | 2 +- .../caldav/_inc---caldav-MKTICKET.php.html | 2 +- .../caldav/_inc---caldav-MOVE.php.html | 2 +- .../caldav/_inc---caldav-OPTIONS.php.html | 2 +- .../caldav/_inc---caldav-POST.php.html | 2 +- .../caldav/_inc---caldav-PROPPATCH.php.html | 2 +- .../caldav/_inc---caldav-PUT-default.php.html | 2 +- .../_inc---caldav-PUT-functions.php.html | 132 ++++++++++++++---- .../_inc---caldav-PUT-vcalendar.php.html | 2 +- .../caldav/_inc---caldav-PUT-vcard.php.html | 4 +- .../_inc---caldav-REPORT-pps-set.php.html | 2 +- ...c---caldav-REPORT-sync-collection.php.html | 2 +- .../caldav/_inc---caldav-REPORT.php.html | 2 +- .../caldav/_inc---schedule-functions.php.html | 2 +- .../_inc---external-fetch.php.html | 8 +- .../iSchedule/_inc---iSchedule.php.html | 2 +- docs/api/davical/iSchedule/iSchedule.html | 2 +- .../ldap/_inc---drivers_imap_pam.php.html | 2 +- .../davical/ldap/_inc---drivers_ldap.php.html | 2 +- .../ldap/_inc---drivers_rimap.php.html | 2 +- .../ldap/_inc---drivers_squid_pam.php.html | 2 +- docs/api/davical/ldap/imapPamDrivers.html | 2 +- docs/api/davical/ldap/ldapDrivers.html | 2 +- docs/api/davical/ldap/squidPamDrivers.html | 2 +- .../logging/_inc---log_caldav_action.php.html | 2 +- .../propfind/_inc---caldav-PROPFIND.php.html | 2 +- .../pwauth/_inc---drivers_pwauth_pam.php.html | 2 +- docs/api/davical/pwauth/pwauthPamDrivers.html | 2 +- .../davical/tzservice/_htdocs---tz.php.html | 10 +- .../_inc---tz---capabilities.php.html | 2 +- .../tzservice/_inc---tz---expand.php.html | 2 +- .../tzservice/_inc---tz---get.php.html | 2 +- .../tzservice/_inc---tz---list.php.html | 2 +- docs/api/elementindex.html | 67 ++++++--- docs/api/elementindex_davical.html | 25 +++- docs/api/errors.html | 12 +- docs/api/index.html | 2 +- docs/api/li_davical.html | 3 + docs/api/todolist.html | 2 +- htdocs/always.php | 4 +- 133 files changed, 498 insertions(+), 319 deletions(-) diff --git a/ChangeLog b/ChangeLog index d9e00b49..cdd169c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2012-01-13 Andrew McMillan + * Handle VCARD adr/tel/email which have multiple types. + * Set the default URL to the default calendar name rather than /home/ + * Enable the file upload for addressbook collections. + * Handle addressbook import along with calendar import. + * Write UID and REV property n VCARD if they are missing. + * Fix bug in scheduling on POST request. + * Fix permissions on user create via external auth. + +2012-01-12 Andrew McMillan + * Allow for silly programs that send content-type XML with a GET request. + * Support use of HTTP_AUTHORIZATION in addition to AUTHORIZATION cgi. + * Add a default min_age for external binds. + +2012-01-06 Rob Ostensen + * Prevent external binds from being created/updated if curl is missing. + * Add check to setup page to test whether curl is installed. + +2012-01-05 Andrew McMillan + * Release 1.0.1 + 2012-01-04 Andrew McMillan * Release 1.0 diff --git a/VERSION b/VERSION index 7dea76ed..6d7de6e6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.1 +1.0.2 diff --git a/debian/changelog b/debian/changelog index 0f16050a..0622f16f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +davical (1.0.2-1) unstable; urgency=low + + * New upstream release. + * New release to Debian (closes:#643809, #618957). + + -- Andrew McMillan Fri, 13 Jan 2012 23:44:36 +1300 + davical (1.0.1-1) unstable; urgency=low * New upstream release. @@ -6,7 +13,7 @@ davical (1.0.1-1) unstable; urgency=low davical (1.0.0-1) unstable; urgency=low - * New upstream release (closes:#643809, #618957). + * New upstream release. -- Andrew McMillan Wed, 04 Jan 2012 16:41:50 +1300 diff --git a/debian/control b/debian/control index 4e91505e..357d38a9 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,7 @@ Homepage: http://davical.org/ Package: davical Architecture: all -Depends: ${misc:Depends}, debconf (>= 1.0.32), php5-pgsql, postgresql-client (>= 8.1), libawl-php (>= 0.50-1~), libawl-php (<< 0.51), libdbd-pg-perl, libyaml-perl +Depends: ${misc:Depends}, debconf (>= 1.0.32), php5-pgsql, postgresql-client (>= 8.1), libawl-php (>= 0.51-1~), libawl-php (<< 0.52), libdbd-pg-perl, libyaml-perl Recommends: postgresql (>= 8.3) Description: The DAViCal CalDAV & CardDAV Server The DAViCal CalDAV Server is designed to store CalDAV calendars and diff --git a/docs/api/awl/caldav/CalDAVClient.html b/docs/api/awl/caldav/CalDAVClient.html index f3f57d8c..3a34b952 100644 --- a/docs/api/awl/caldav/CalDAVClient.html +++ b/docs/api/awl/caldav/CalDAVClient.html @@ -1270,7 +1270,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/CalendarInfo.html b/docs/api/awl/caldav/CalendarInfo.html index fec0f960..c2fb8e02 100644 --- a/docs/api/awl/caldav/CalendarInfo.html +++ b/docs/api/awl/caldav/CalendarInfo.html @@ -251,7 +251,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/RRule.html b/docs/api/awl/caldav/RRule.html index 26133eb7..798b66cd 100644 --- a/docs/api/awl/caldav/RRule.html +++ b/docs/api/awl/caldav/RRule.html @@ -170,7 +170,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/RepeatRule.html b/docs/api/awl/caldav/RepeatRule.html index e4deee1f..c32f17d6 100644 --- a/docs/api/awl/caldav/RepeatRule.html +++ b/docs/api/awl/caldav/RepeatRule.html @@ -472,7 +472,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/RepeatRuleDateRange.html b/docs/api/awl/caldav/RepeatRuleDateRange.html index 669db546..b8176810 100644 --- a/docs/api/awl/caldav/RepeatRuleDateRange.html +++ b/docs/api/awl/caldav/RepeatRuleDateRange.html @@ -261,7 +261,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/RepeatRuleDateTime.html b/docs/api/awl/caldav/RepeatRuleDateTime.html index 7d6c2974..fd6d90e1 100644 --- a/docs/api/awl/caldav/RepeatRuleDateTime.html +++ b/docs/api/awl/caldav/RepeatRuleDateTime.html @@ -1043,7 +1043,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/RepeatRuleTimeZone.html b/docs/api/awl/caldav/RepeatRuleTimeZone.html index 0ded1b09..0e38521b 100644 --- a/docs/api/awl/caldav/RepeatRuleTimeZone.html +++ b/docs/api/awl/caldav/RepeatRuleTimeZone.html @@ -238,7 +238,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/Rfc5545Duration.html b/docs/api/awl/caldav/Rfc5545Duration.html index 18c2349b..4a1ae268 100644 --- a/docs/api/awl/caldav/Rfc5545Duration.html +++ b/docs/api/awl/caldav/Rfc5545Duration.html @@ -234,7 +234,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/_inc---RRule-v2.php.html b/docs/api/awl/caldav/_inc---RRule-v2.php.html index 179e3895..682d032f 100644 --- a/docs/api/awl/caldav/_inc---RRule-v2.php.html +++ b/docs/api/awl/caldav/_inc---RRule-v2.php.html @@ -393,7 +393,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/_inc---RRule.php.html b/docs/api/awl/caldav/_inc---RRule.php.html index 31b68bdf..f542503b 100644 --- a/docs/api/awl/caldav/_inc---RRule.php.html +++ b/docs/api/awl/caldav/_inc---RRule.php.html @@ -74,7 +74,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/_inc---caldav-client-v2.php.html b/docs/api/awl/caldav/_inc---caldav-client-v2.php.html index 1d4404d8..35352d28 100644 --- a/docs/api/awl/caldav/_inc---caldav-client-v2.php.html +++ b/docs/api/awl/caldav/_inc---caldav-client-v2.php.html @@ -108,7 +108,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/_inc---caldav-client.php.html b/docs/api/awl/caldav/_inc---caldav-client.php.html index e607bbc3..024c5e72 100644 --- a/docs/api/awl/caldav/_inc---caldav-client.php.html +++ b/docs/api/awl/caldav/_inc---caldav-client.php.html @@ -63,7 +63,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/awl/caldav/iCalDate.html b/docs/api/awl/caldav/iCalDate.html index 95cb8f1f..df7f42d1 100644 --- a/docs/api/awl/caldav/iCalDate.html +++ b/docs/api/awl/caldav/iCalDate.html @@ -943,7 +943,7 @@

- Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

\ No newline at end of file diff --git a/docs/api/classtrees_awl.html b/docs/api/classtrees_awl.html index 6b668aac..abbb0705 100644 --- a/docs/api/classtrees_awl.html +++ b/docs/api/classtrees_awl.html @@ -54,7 +54,7 @@
  • RepeatRuleTimeZone
  • - Documentation generated on Wed, 04 Jan 2012 16:20:15 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:51 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/classtrees_davical.html b/docs/api/classtrees_davical.html index 729779bd..b0caf166 100644 --- a/docs/api/classtrees_davical.html +++ b/docs/api/classtrees_davical.html @@ -106,7 +106,7 @@
  • AtomFeed
  • - Documentation generated on Wed, 04 Jan 2012 16:20:15 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:51 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/AtomEntry.html b/docs/api/davical/AtomEntry.html index 213e5f61..33ade190 100644 --- a/docs/api/davical/AtomEntry.html +++ b/docs/api/davical/AtomEntry.html @@ -550,7 +550,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:15 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:51 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/AtomFeed.html b/docs/api/davical/AtomFeed.html index c203319e..890cdfc3 100644 --- a/docs/api/davical/AtomFeed.html +++ b/docs/api/davical/AtomFeed.html @@ -519,7 +519,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:51 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/AtomXHTMLContent.html b/docs/api/davical/AtomXHTMLContent.html index ce41d6d0..a03e1f75 100644 --- a/docs/api/davical/AtomXHTMLContent.html +++ b/docs/api/davical/AtomXHTMLContent.html @@ -142,7 +142,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/CheckResult.html b/docs/api/davical/CheckResult.html index 043cdee8..f44633e1 100644 --- a/docs/api/davical/CheckResult.html +++ b/docs/api/davical/CheckResult.html @@ -265,7 +265,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/DAVTicket/DAVTicket.html b/docs/api/davical/DAVTicket/DAVTicket.html index 7974b761..37af9126 100644 --- a/docs/api/davical/DAVTicket/DAVTicket.html +++ b/docs/api/davical/DAVTicket/DAVTicket.html @@ -246,7 +246,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/DAVTicket/_inc---DAVTicket.php.html b/docs/api/davical/DAVTicket/_inc---DAVTicket.php.html index 0da74ce7..d3d21187 100644 --- a/docs/api/davical/DAVTicket/_inc---DAVTicket.php.html +++ b/docs/api/davical/DAVTicket/_inc---DAVTicket.php.html @@ -97,7 +97,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/DAViCalSession/DAViCalSession.html b/docs/api/davical/DAViCalSession/DAViCalSession.html index a3989450..38ec0f94 100644 --- a/docs/api/davical/DAViCalSession/DAViCalSession.html +++ b/docs/api/davical/DAViCalSession/DAViCalSession.html @@ -202,7 +202,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/DAViCalSession/Tools.html b/docs/api/davical/DAViCalSession/Tools.html index 915ff58f..73606d02 100644 --- a/docs/api/davical/DAViCalSession/Tools.html +++ b/docs/api/davical/DAViCalSession/Tools.html @@ -86,7 +86,7 @@
    -
    +
    @@ -107,7 +107,7 @@
    -
    +
    @@ -128,7 +128,7 @@
    -
    +
    @@ -149,7 +149,7 @@
    -
    +
    @@ -175,7 +175,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/DAViCalSession/_htdocs---tools.php.html b/docs/api/davical/DAViCalSession/_htdocs---tools.php.html index 5026062a..7619fa09 100644 --- a/docs/api/davical/DAViCalSession/_htdocs---tools.php.html +++ b/docs/api/davical/DAViCalSession/_htdocs---tools.php.html @@ -70,7 +70,7 @@
    -
    +
     @@ -85,7 +85,7 @@
    -
    +
     @@ -100,7 +100,7 @@
    -
    +
     @@ -115,7 +115,7 @@
    -
    +
     @@ -130,7 +130,7 @@
    -
    +
     @@ -145,7 +145,7 @@
    -
    +
     @@ -166,7 +166,7 @@
    -
    +
     @@ -181,7 +181,7 @@
    -
    +
     @@ -196,7 +196,7 @@
    -
    +
     @@ -217,7 +217,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/DAViCalSession/_inc---DAViCalSession.php.html b/docs/api/davical/DAViCalSession/_inc---DAViCalSession.php.html index 91aae319..b66db362 100644 --- a/docs/api/davical/DAViCalSession/_inc---DAViCalSession.php.html +++ b/docs/api/davical/DAViCalSession/_inc---DAViCalSession.php.html @@ -170,7 +170,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/HTTPAuthSession/HTTPAuthSession.html b/docs/api/davical/HTTPAuthSession/HTTPAuthSession.html index 8320623c..eee75dee 100644 --- a/docs/api/davical/HTTPAuthSession/HTTPAuthSession.html +++ b/docs/api/davical/HTTPAuthSession/HTTPAuthSession.html @@ -296,7 +296,7 @@
    - AllowedTo (line 327) + AllowedTo (line 329)
    @@ -327,7 +327,7 @@
    - AssignSessionDetails (line 351) + AssignSessionDetails (line 353)
    @@ -406,7 +406,7 @@
    - CheckPassword (line 278) + CheckPassword (line 280)
    @@ -436,7 +436,7 @@
    - DigestAuthSession (line 183) + DigestAuthSession (line 185)
    @@ -459,7 +459,7 @@
    - GetRoles (line 335) + GetRoles (line 337)
    @@ -481,7 +481,7 @@
    - ParseDigestHeader (line 245) + ParseDigestHeader (line 247)
    @@ -510,7 +510,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/HTTPAuthSession/_inc---HTTPAuthSession.php.html b/docs/api/davical/HTTPAuthSession/_inc---HTTPAuthSession.php.html index 1ae3ef47..369a497e 100644 --- a/docs/api/davical/HTTPAuthSession/_inc---HTTPAuthSession.php.html +++ b/docs/api/davical/HTTPAuthSession/_inc---HTTPAuthSession.php.html @@ -63,7 +63,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Principal/DAVPrincipal.html b/docs/api/davical/Principal/DAVPrincipal.html index af30fbfe..a5de1a15 100644 --- a/docs/api/davical/Principal/DAVPrincipal.html +++ b/docs/api/davical/Principal/DAVPrincipal.html @@ -911,7 +911,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Principal/Principal.html b/docs/api/davical/Principal/Principal.html index 537b41c9..46bf1b16 100644 --- a/docs/api/davical/Principal/Principal.html +++ b/docs/api/davical/Principal/Principal.html @@ -1060,7 +1060,7 @@
    - static cacheDelete (line 598) + static cacheDelete (line 597)
    @@ -1092,7 +1092,7 @@
    - static cacheFlush (line 587) + static cacheFlush (line 586)
    @@ -1217,7 +1217,7 @@
    - Create (line 576) + Create (line 575)
    @@ -1504,7 +1504,7 @@
    - Update (line 580) + Update (line 579)
    @@ -1678,7 +1678,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Principal/_inc---DAVPrincipal.php.html b/docs/api/davical/Principal/_inc---DAVPrincipal.php.html index fea1cb97..86efa1fd 100644 --- a/docs/api/davical/Principal/_inc---DAVPrincipal.php.html +++ b/docs/api/davical/Principal/_inc---DAVPrincipal.php.html @@ -97,7 +97,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Principal/_inc---Principal.php.html b/docs/api/davical/Principal/_inc---Principal.php.html index 754c5221..52393027 100644 --- a/docs/api/davical/Principal/_inc---Principal.php.html +++ b/docs/api/davical/Principal/_inc---Principal.php.html @@ -97,7 +97,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/PublicSession/PublicSession.html b/docs/api/davical/PublicSession/PublicSession.html index 19a1b415..6c94e794 100644 --- a/docs/api/davical/PublicSession/PublicSession.html +++ b/docs/api/davical/PublicSession/PublicSession.html @@ -133,7 +133,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/PublicSession/_inc---PublicSession.php.html b/docs/api/davical/PublicSession/_inc---PublicSession.php.html index 45aa2d86..2977ecf3 100644 --- a/docs/api/davical/PublicSession/_inc---PublicSession.php.html +++ b/docs/api/davical/PublicSession/_inc---PublicSession.php.html @@ -63,7 +63,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/RRuleTest.html b/docs/api/davical/RRuleTest.html index 524e3a5e..8accadc8 100644 --- a/docs/api/davical/RRuleTest.html +++ b/docs/api/davical/RRuleTest.html @@ -122,7 +122,7 @@
    -
    +
    @@ -141,7 +141,7 @@
    -
    +
    @@ -160,7 +160,7 @@
    -
    +
    @@ -179,7 +179,7 @@
    -
    +
    @@ -213,7 +213,7 @@
    -
    +
    @@ -248,7 +248,7 @@
    -
    +
    @@ -269,7 +269,7 @@
    -
    +
    @@ -295,7 +295,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Request/CalDAVRequest.html b/docs/api/davical/Request/CalDAVRequest.html index 1115d910..d14fd8cc 100644 --- a/docs/api/davical/Request/CalDAVRequest.html +++ b/docs/api/davical/Request/CalDAVRequest.html @@ -690,7 +690,7 @@
    - AllowedTo (line 995) + AllowedTo (line 1002)
    @@ -718,7 +718,7 @@
    - BuildSupportedPrivileges (line 957) + BuildSupportedPrivileges (line 964)
    @@ -748,7 +748,7 @@
    - CoerceContentType (line 849) + CoerceContentType (line 856)
    @@ -770,7 +770,7 @@
    - CollectionId (line 949) + CollectionId (line 956)
    @@ -792,7 +792,7 @@
    - dav_name (line 715) + dav_name (line 722)
    @@ -814,7 +814,7 @@
    - DepthRegexTail (line 733) + DepthRegexTail (line 740)
    @@ -836,7 +836,7 @@
    - DoResponse (line 1172) + DoResponse (line 1179)
    @@ -869,7 +869,7 @@
    - FailIfLocked (line 814) + FailIfLocked (line 821)
    @@ -894,7 +894,7 @@
    - GetDepthName (line 724) + GetDepthName (line 731)
    @@ -916,7 +916,7 @@
    - GetLockDetails (line 800) + GetLockDetails (line 807)
    @@ -943,7 +943,7 @@
    - GetLockRow (line 744) + GetLockRow (line 751)
    @@ -973,7 +973,7 @@
    - HavePrivilegeTo (line 1068) + HavePrivilegeTo (line 1075)
    @@ -1000,7 +1000,7 @@
    - IsAddressBook (line 910) + IsAddressBook (line 917)
    @@ -1022,7 +1022,7 @@
    - IsCalendar (line 901) + IsCalendar (line 908)
    @@ -1044,7 +1044,7 @@
    - IsCollection (line 890) + IsCollection (line 897)
    @@ -1066,7 +1066,7 @@
    - IsInfiniteDepth (line 941) + IsInfiniteDepth (line 948)
    @@ -1088,7 +1088,7 @@
    - IsLocked (line 636) + IsLocked (line 643)
    @@ -1113,7 +1113,7 @@
    - IsPrincipal (line 919) + IsPrincipal (line 926)
    @@ -1135,7 +1135,7 @@
    - IsProxyRequest (line 930) + IsProxyRequest (line 937)
    @@ -1157,7 +1157,7 @@
    - IsPublic (line 673) + IsPublic (line 680)
    @@ -1179,7 +1179,7 @@
    - MalformedRequest (line 1145) + MalformedRequest (line 1152)
    @@ -1206,7 +1206,7 @@
    - NeedPrivilege (line 1104) + NeedPrivilege (line 1111)
    @@ -1239,7 +1239,7 @@
    - PreconditionFailed (line 1129) + PreconditionFailed (line 1136)
    @@ -1275,7 +1275,7 @@
    - Privileges (line 1060) + Privileges (line 1067)
    @@ -1297,7 +1297,7 @@
    - setPermissions (line 568) + setPermissions (line 575)
    @@ -1327,7 +1327,7 @@
    - UnsupportedRequest (line 1081) + UnsupportedRequest (line 1088)
    @@ -1354,7 +1354,7 @@
    - ValidateLockToken (line 769) + ValidateLockToken (line 776)
    @@ -1381,7 +1381,7 @@
    - XMLResponse (line 1157) + XMLResponse (line 1164)
    @@ -1412,7 +1412,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Request/_inc---CalDAVRequest.php.html b/docs/api/davical/Request/_inc---CalDAVRequest.php.html index 9bc2b667..fbc9fb2e 100644 --- a/docs/api/davical/Request/_inc---CalDAVRequest.php.html +++ b/docs/api/davical/Request/_inc---CalDAVRequest.php.html @@ -168,7 +168,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Resource/DAVResource.html b/docs/api/davical/Resource/DAVResource.html index 37539e41..e4b5e0dd 100644 --- a/docs/api/davical/Resource/DAVResource.html +++ b/docs/api/davical/Resource/DAVResource.html @@ -1984,7 +1984,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Resource/WritableCollection.html b/docs/api/davical/Resource/WritableCollection.html index 8a0e3e5d..4dbd4624 100644 --- a/docs/api/davical/Resource/WritableCollection.html +++ b/docs/api/davical/Resource/WritableCollection.html @@ -154,7 +154,7 @@
    -
    +
    @@ -184,7 +184,7 @@
    -
    +
    @@ -214,7 +214,7 @@
    -
    +
    @@ -244,7 +244,7 @@
    -
    +
    @@ -286,7 +286,7 @@
    -
    +
    @@ -441,7 +441,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/Resource/_inc---DAVResource.php.html b/docs/api/davical/Resource/_inc---DAVResource.php.html index a40fe43a..f9282dc0 100644 --- a/docs/api/davical/Resource/_inc---DAVResource.php.html +++ b/docs/api/davical/Resource/_inc---DAVResource.php.html @@ -157,7 +157,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/SqlToArray.html b/docs/api/davical/SqlToArray.html index ef0c6c4d..486c3788 100644 --- a/docs/api/davical/SqlToArray.html +++ b/docs/api/davical/SqlToArray.html @@ -117,7 +117,7 @@
    -
    +
    @@ -136,7 +136,7 @@
    -
    +
    @@ -155,7 +155,7 @@
    -
    +
    @@ -189,7 +189,7 @@
    -
    +
    @@ -215,7 +215,7 @@
    -
    +
    @@ -241,7 +241,7 @@
    -
    +
    @@ -267,7 +267,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/VCard.html b/docs/api/davical/VCard.html index 80dbb2a4..d67bcbed 100644 --- a/docs/api/davical/VCard.html +++ b/docs/api/davical/VCard.html @@ -88,7 +88,7 @@
    -
    +
    @@ -117,7 +117,7 @@
    -
    +
    @@ -143,11 +143,11 @@
    -
    +
    - WriteEmails (line 149) + WriteEmails (line 153)
    @@ -169,11 +169,11 @@
    -
    +
    - WritePhones (line 120) + WritePhones (line 122)
    @@ -200,7 +200,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---SqlToArray.php.html b/docs/api/davical/_htdocs---SqlToArray.php.html index c0a114de..91506313 100644 --- a/docs/api/davical/_htdocs---SqlToArray.php.html +++ b/docs/api/davical/_htdocs---SqlToArray.php.html @@ -57,7 +57,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---admin.php.html b/docs/api/davical/_htdocs---admin.php.html index ee11798a..c65837d0 100644 --- a/docs/api/davical/_htdocs---admin.php.html +++ b/docs/api/davical/_htdocs---admin.php.html @@ -206,7 +206,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:15 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:51 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---always.php.html b/docs/api/davical/_htdocs---always.php.html index e21843cc..f102043b 100644 --- a/docs/api/davical/_htdocs---always.php.html +++ b/docs/api/davical/_htdocs---always.php.html @@ -535,7 +535,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:15 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:51 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---createdb.php.html b/docs/api/davical/_htdocs---createdb.php.html index 1fe5e0f7..f2d625ed 100644 --- a/docs/api/davical/_htdocs---createdb.php.html +++ b/docs/api/davical/_htdocs---createdb.php.html @@ -93,7 +93,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---dbexec.php.html b/docs/api/davical/_htdocs---dbexec.php.html index 6c0aa8b8..08740db9 100644 --- a/docs/api/davical/_htdocs---dbexec.php.html +++ b/docs/api/davical/_htdocs---dbexec.php.html @@ -57,7 +57,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---feed.php.html b/docs/api/davical/_htdocs---feed.php.html index 28aaf54a..ce5383b3 100644 --- a/docs/api/davical/_htdocs---feed.php.html +++ b/docs/api/davical/_htdocs---feed.php.html @@ -204,7 +204,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---freebusy.php.html b/docs/api/davical/_htdocs---freebusy.php.html index e87ae300..045d8846 100644 --- a/docs/api/davical/_htdocs---freebusy.php.html +++ b/docs/api/davical/_htdocs---freebusy.php.html @@ -116,7 +116,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---help.php.html b/docs/api/davical/_htdocs---help.php.html index 8453e0b5..1636224e 100644 --- a/docs/api/davical/_htdocs---help.php.html +++ b/docs/api/davical/_htdocs---help.php.html @@ -115,7 +115,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---index.php.html b/docs/api/davical/_htdocs---index.php.html index 2fd59413..efc5c7f4 100644 --- a/docs/api/davical/_htdocs---index.php.html +++ b/docs/api/davical/_htdocs---index.php.html @@ -131,7 +131,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---newfile.php.html b/docs/api/davical/_htdocs---newfile.php.html index 72e869d1..19223793 100644 --- a/docs/api/davical/_htdocs---newfile.php.html +++ b/docs/api/davical/_htdocs---newfile.php.html @@ -55,7 +55,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---setup.php.html b/docs/api/davical/_htdocs---setup.php.html index c9d3d4e6..37fbe16d 100644 --- a/docs/api/davical/_htdocs---setup.php.html +++ b/docs/api/davical/_htdocs---setup.php.html @@ -66,30 +66,30 @@ | Functions
    - +
     include - (page-footer.php) - (line 397) + ("./always.php") + (line 144)
    - +
     include - ("./always.php") - (line 137) + (page-footer.php) + (line 405)
    @@ -104,7 +104,7 @@ include (page-header.php) - (line 147) + (line 154)
    @@ -119,7 +119,7 @@ include (interactive-page.php) - (line 146) + (line 153)
    @@ -134,7 +134,7 @@ include (DAViCalSession.php) - (line 138) + (line 145)
    @@ -149,7 +149,7 @@ require_once ("AwlQuery.php") - (line 149) + (line 156)
    @@ -176,7 +176,7 @@
    - build_dependencies_table (line 241) + build_dependencies_table (line 248)
    @@ -196,7 +196,7 @@
    - build_site_statistics (line 213) + build_site_statistics (line 220)
    @@ -216,7 +216,7 @@
    - check_awl_version (line 198) + check_awl_version (line 205)
    @@ -251,12 +251,32 @@
    - +
    - check_datetime (line 152) + check_curl (line 110) +
    + + +
    + void + + check_curl + + () +
    + + + +
    + +
    + +
    + + check_datetime (line 159)
    @@ -272,11 +292,11 @@
    -
    +
    - check_davical_version (line 182) + check_davical_version (line 189)
    @@ -292,7 +312,7 @@
    -
    +
    @@ -312,7 +332,7 @@
    -
    +
    @@ -332,7 +352,7 @@
    -
    +
    @@ -352,7 +372,7 @@
    -
    +
    @@ -372,7 +392,7 @@
    -
    +
    @@ -392,7 +412,7 @@
    -
    +
    @@ -412,7 +432,7 @@
    -
    +
    @@ -432,7 +452,7 @@
    -
    +
    @@ -453,7 +473,7 @@
    -
    +
    @@ -473,11 +493,11 @@
    -
    +
    - check_schema_version (line 160) + check_schema_version (line 167)
    @@ -493,7 +513,7 @@
    -
    +
    @@ -513,11 +533,11 @@
    -
    +
    - do_error (line 113) + do_error (line 120)
    @@ -538,11 +558,11 @@
    -
    +
    - get_phpinfo (line 125) + get_phpinfo (line 132)
    @@ -558,7 +578,7 @@
    -
    +
    @@ -587,7 +607,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---test.php.html b/docs/api/davical/_htdocs---test.php.html index 078a20a5..f9a88610 100644 --- a/docs/api/davical/_htdocs---test.php.html +++ b/docs/api/davical/_htdocs---test.php.html @@ -28,7 +28,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_htdocs---upgrade.php.html b/docs/api/davical/_htdocs---upgrade.php.html index 52d41b98..c230ec16 100644 --- a/docs/api/davical/_htdocs---upgrade.php.html +++ b/docs/api/davical/_htdocs---upgrade.php.html @@ -34,7 +34,7 @@
    -
    +
     @@ -49,7 +49,7 @@
    -
    +
     @@ -64,7 +64,7 @@
    -
    +
     @@ -79,7 +79,7 @@
    -
    +
     @@ -94,7 +94,7 @@
    -
    +
     @@ -110,7 +110,7 @@
    -
    +
     @@ -125,7 +125,7 @@
    -
    +
     @@ -146,7 +146,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---AtomFeed.php.html b/docs/api/davical/_inc---AtomFeed.php.html index 424baa00..e644b0d1 100644 --- a/docs/api/davical/_inc---AtomFeed.php.html +++ b/docs/api/davical/_inc---AtomFeed.php.html @@ -152,7 +152,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:15 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:51 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---WritableCollection.php.html b/docs/api/davical/_inc---WritableCollection.php.html index 93798a6d..02b7c0d2 100644 --- a/docs/api/davical/_inc---WritableCollection.php.html +++ b/docs/api/davical/_inc---WritableCollection.php.html @@ -64,7 +64,7 @@
    -
    +
     @@ -85,7 +85,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---autodiscover-handler.php.html b/docs/api/davical/_inc---autodiscover-handler.php.html index 33705d4b..c2df53b3 100644 --- a/docs/api/davical/_inc---autodiscover-handler.php.html +++ b/docs/api/davical/_inc---autodiscover-handler.php.html @@ -115,7 +115,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---caldav-LOCK.php.html b/docs/api/davical/_inc---caldav-LOCK.php.html index 8f981746..0ea95e2f 100644 --- a/docs/api/davical/_inc---caldav-LOCK.php.html +++ b/docs/api/davical/_inc---caldav-LOCK.php.html @@ -56,7 +56,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---caldav-REPORT-calquery.php.html b/docs/api/davical/_inc---caldav-REPORT-calquery.php.html index dfb51a6c..99057af4 100644 --- a/docs/api/davical/_inc---caldav-REPORT-calquery.php.html +++ b/docs/api/davical/_inc---caldav-REPORT-calquery.php.html @@ -195,7 +195,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---caldav-REPORT-cardquery.php.html b/docs/api/davical/_inc---caldav-REPORT-cardquery.php.html index 45c112ed..493ebe74 100644 --- a/docs/api/davical/_inc---caldav-REPORT-cardquery.php.html +++ b/docs/api/davical/_inc---caldav-REPORT-cardquery.php.html @@ -128,7 +128,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---caldav-REPORT-expand-property.php.html b/docs/api/davical/_inc---caldav-REPORT-expand-property.php.html index 21e8abdc..eaf2fc34 100644 --- a/docs/api/davical/_inc---caldav-REPORT-expand-property.php.html +++ b/docs/api/davical/_inc---caldav-REPORT-expand-property.php.html @@ -101,7 +101,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---caldav-REPORT-freebusy.php.html b/docs/api/davical/_inc---caldav-REPORT-freebusy.php.html index 194eed1a..98d27fa9 100644 --- a/docs/api/davical/_inc---caldav-REPORT-freebusy.php.html +++ b/docs/api/davical/_inc---caldav-REPORT-freebusy.php.html @@ -56,7 +56,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---caldav-REPORT-multiget.php.html b/docs/api/davical/_inc---caldav-REPORT-multiget.php.html index cc233b7c..ecab401d 100644 --- a/docs/api/davical/_inc---caldav-REPORT-multiget.php.html +++ b/docs/api/davical/_inc---caldav-REPORT-multiget.php.html @@ -28,7 +28,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---caldav-REPORT-principal-match.php.html b/docs/api/davical/_inc---caldav-REPORT-principal-match.php.html index 95440716..24201263 100644 --- a/docs/api/davical/_inc---caldav-REPORT-principal-match.php.html +++ b/docs/api/davical/_inc---caldav-REPORT-principal-match.php.html @@ -28,7 +28,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---caldav-REPORT-principal.php.html b/docs/api/davical/_inc---caldav-REPORT-principal.php.html index 575b2a6e..3e5c8f2d 100644 --- a/docs/api/davical/_inc---caldav-REPORT-principal.php.html +++ b/docs/api/davical/_inc---caldav-REPORT-principal.php.html @@ -29,7 +29,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---check_UTF8.php.html b/docs/api/davical/_inc---check_UTF8.php.html index 63888226..952134de 100644 --- a/docs/api/davical/_inc---check_UTF8.php.html +++ b/docs/api/davical/_inc---check_UTF8.php.html @@ -119,7 +119,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---davical_configuration_missing.php.html b/docs/api/davical/_inc---davical_configuration_missing.php.html index 0a1e7994..be728785 100644 --- a/docs/api/davical/_inc---davical_configuration_missing.php.html +++ b/docs/api/davical/_inc---davical_configuration_missing.php.html @@ -70,7 +70,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---freebusy-functions.php.html b/docs/api/davical/_inc---freebusy-functions.php.html index 5554f649..e868d10b 100644 --- a/docs/api/davical/_inc---freebusy-functions.php.html +++ b/docs/api/davical/_inc---freebusy-functions.php.html @@ -118,7 +118,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---interactive-page.php.html b/docs/api/davical/_inc---interactive-page.php.html index e160c519..dbb55fa9 100644 --- a/docs/api/davical/_inc---interactive-page.php.html +++ b/docs/api/davical/_inc---interactive-page.php.html @@ -55,7 +55,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---other_translated_strings.php.html b/docs/api/davical/_inc---other_translated_strings.php.html index fb594260..f0c8fbf1 100644 --- a/docs/api/davical/_inc---other_translated_strings.php.html +++ b/docs/api/davical/_inc---other_translated_strings.php.html @@ -28,7 +28,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---page-footer.php.html b/docs/api/davical/_inc---page-footer.php.html index b220afc4..49777904 100644 --- a/docs/api/davical/_inc---page-footer.php.html +++ b/docs/api/davical/_inc---page-footer.php.html @@ -28,7 +28,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---page-header.php.html b/docs/api/davical/_inc---page-header.php.html index e19d0e18..c2d3f82b 100644 --- a/docs/api/davical/_inc---page-header.php.html +++ b/docs/api/davical/_inc---page-header.php.html @@ -85,7 +85,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---pubsub.php.html b/docs/api/davical/_inc---pubsub.php.html index 73c19049..7214c007 100644 --- a/docs/api/davical/_inc---pubsub.php.html +++ b/docs/api/davical/_inc---pubsub.php.html @@ -28,7 +28,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---test-RRULE-v2.php.html b/docs/api/davical/_inc---test-RRULE-v2.php.html index 74d88c09..a4d41274 100644 --- a/docs/api/davical/_inc---test-RRULE-v2.php.html +++ b/docs/api/davical/_inc---test-RRULE-v2.php.html @@ -64,7 +64,7 @@
    -
    +
     @@ -79,7 +79,7 @@
    -
    +
     @@ -94,7 +94,7 @@
    -
    +
     @@ -115,7 +115,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---test-RRULE.php.html b/docs/api/davical/_inc---test-RRULE.php.html index 0f3d5264..d07b9695 100644 --- a/docs/api/davical/_inc---test-RRULE.php.html +++ b/docs/api/davical/_inc---test-RRULE.php.html @@ -64,7 +64,7 @@
    -
    +
     @@ -79,7 +79,7 @@
    -
    +
     @@ -100,7 +100,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---ui---collection-edit.php.html b/docs/api/davical/_inc---ui---collection-edit.php.html index 7dcdb00a..e4436557 100644 --- a/docs/api/davical/_inc---ui---collection-edit.php.html +++ b/docs/api/davical/_inc---ui---collection-edit.php.html @@ -146,7 +146,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---ui---external-browse.php.html b/docs/api/davical/_inc---ui---external-browse.php.html index 2b737bd4..ca61069d 100644 --- a/docs/api/davical/_inc---ui---external-browse.php.html +++ b/docs/api/davical/_inc---ui---external-browse.php.html @@ -28,7 +28,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---ui---principal-browse.php.html b/docs/api/davical/_inc---ui---principal-browse.php.html index 0adb6ef0..604ed98c 100644 --- a/docs/api/davical/_inc---ui---principal-browse.php.html +++ b/docs/api/davical/_inc---ui---principal-browse.php.html @@ -28,7 +28,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---ui---principal-edit.php.html b/docs/api/davical/_inc---ui---principal-edit.php.html index 68f21e8f..c0616730 100644 --- a/docs/api/davical/_inc---ui---principal-edit.php.html +++ b/docs/api/davical/_inc---ui---principal-edit.php.html @@ -491,7 +491,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---vcard.php.html b/docs/api/davical/_inc---vcard.php.html index 31daa7f8..1da15694 100644 --- a/docs/api/davical/_inc---vcard.php.html +++ b/docs/api/davical/_inc---vcard.php.html @@ -64,7 +64,7 @@
    -
    +
     @@ -80,7 +80,7 @@
    -
    +
     @@ -101,7 +101,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/_inc---well-known.php.html b/docs/api/davical/_inc---well-known.php.html index fe1e5dca..430a53e1 100644 --- a/docs/api/davical/_inc---well-known.php.html +++ b/docs/api/davical/_inc---well-known.php.html @@ -36,7 +36,7 @@
    -
    +
     @@ -51,7 +51,7 @@
    -
    +
     @@ -66,7 +66,7 @@
    -
    +
     @@ -95,7 +95,7 @@
    -
    +
    @@ -118,7 +118,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/authentication/_inc---auth-functions.php.html b/docs/api/davical/authentication/_inc---auth-functions.php.html index d853e35b..345220b5 100644 --- a/docs/api/davical/authentication/_inc---auth-functions.php.html +++ b/docs/api/davical/authentication/_inc---auth-functions.php.html @@ -359,7 +359,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_htdocs---caldav.php.html b/docs/api/davical/caldav/_htdocs---caldav.php.html index 70794df6..85150583 100644 --- a/docs/api/davical/caldav/_htdocs---caldav.php.html +++ b/docs/api/davical/caldav/_htdocs---caldav.php.html @@ -498,7 +498,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_htdocs---public.php.html b/docs/api/davical/caldav/_htdocs---public.php.html index aa8019d8..dc46aec5 100644 --- a/docs/api/davical/caldav/_htdocs---public.php.html +++ b/docs/api/davical/caldav/_htdocs---public.php.html @@ -188,7 +188,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-ACL.php.html b/docs/api/davical/caldav/_inc---caldav-ACL.php.html index eb54c897..e5919aec 100644 --- a/docs/api/davical/caldav/_inc---caldav-ACL.php.html +++ b/docs/api/davical/caldav/_inc---caldav-ACL.php.html @@ -109,7 +109,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-BIND.php.html b/docs/api/davical/caldav/_inc---caldav-BIND.php.html index 6c1fded5..7edb59ae 100644 --- a/docs/api/davical/caldav/_inc---caldav-BIND.php.html +++ b/docs/api/davical/caldav/_inc---caldav-BIND.php.html @@ -92,7 +92,7 @@ require_once ('external-fetch.php') - (line 52) + (line 54)
    @@ -106,7 +106,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:16 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-DELETE.php.html b/docs/api/davical/caldav/_inc---caldav-DELETE.php.html index 21be6619..a7eca901 100644 --- a/docs/api/davical/caldav/_inc---caldav-DELETE.php.html +++ b/docs/api/davical/caldav/_inc---caldav-DELETE.php.html @@ -120,7 +120,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-DELTICKET.php.html b/docs/api/davical/caldav/_inc---caldav-DELTICKET.php.html index 7ae98510..defaa223 100644 --- a/docs/api/davical/caldav/_inc---caldav-DELTICKET.php.html +++ b/docs/api/davical/caldav/_inc---caldav-DELTICKET.php.html @@ -62,7 +62,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-GET.php.html b/docs/api/davical/caldav/_inc---caldav-GET.php.html index dbcb2f2e..1a816060 100644 --- a/docs/api/davical/caldav/_inc---caldav-GET.php.html +++ b/docs/api/davical/caldav/_inc---caldav-GET.php.html @@ -114,7 +114,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-MKCOL.php.html b/docs/api/davical/caldav/_inc---caldav-MKCOL.php.html index 7d42b1a3..c904603c 100644 --- a/docs/api/davical/caldav/_inc---caldav-MKCOL.php.html +++ b/docs/api/davical/caldav/_inc---caldav-MKCOL.php.html @@ -97,7 +97,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-MKTICKET.php.html b/docs/api/davical/caldav/_inc---caldav-MKTICKET.php.html index 322e458c..ee4f72b2 100644 --- a/docs/api/davical/caldav/_inc---caldav-MKTICKET.php.html +++ b/docs/api/davical/caldav/_inc---caldav-MKTICKET.php.html @@ -84,7 +84,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-MOVE.php.html b/docs/api/davical/caldav/_inc---caldav-MOVE.php.html index 5dbf460e..a15199d1 100644 --- a/docs/api/davical/caldav/_inc---caldav-MOVE.php.html +++ b/docs/api/davical/caldav/_inc---caldav-MOVE.php.html @@ -101,7 +101,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-OPTIONS.php.html b/docs/api/davical/caldav/_inc---caldav-OPTIONS.php.html index ccd4e095..f0c32c87 100644 --- a/docs/api/davical/caldav/_inc---caldav-OPTIONS.php.html +++ b/docs/api/davical/caldav/_inc---caldav-OPTIONS.php.html @@ -67,7 +67,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-POST.php.html b/docs/api/davical/caldav/_inc---caldav-POST.php.html index d9279f7a..0a8efd49 100644 --- a/docs/api/davical/caldav/_inc---caldav-POST.php.html +++ b/docs/api/davical/caldav/_inc---caldav-POST.php.html @@ -160,7 +160,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-PROPPATCH.php.html b/docs/api/davical/caldav/_inc---caldav-PROPPATCH.php.html index a7dfe288..1968aa9b 100644 --- a/docs/api/davical/caldav/_inc---caldav-PROPPATCH.php.html +++ b/docs/api/davical/caldav/_inc---caldav-PROPPATCH.php.html @@ -82,7 +82,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-PUT-default.php.html b/docs/api/davical/caldav/_inc---caldav-PUT-default.php.html index 7ba6010a..3e321ced 100644 --- a/docs/api/davical/caldav/_inc---caldav-PUT-default.php.html +++ b/docs/api/davical/caldav/_inc---caldav-PUT-default.php.html @@ -61,7 +61,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-PUT-functions.php.html b/docs/api/davical/caldav/_inc---caldav-PUT-functions.php.html index 21bef123..d94ed7bd 100644 --- a/docs/api/davical/caldav/_inc---caldav-PUT-functions.php.html +++ b/docs/api/davical/caldav/_inc---caldav-PUT-functions.php.html @@ -41,24 +41,9 @@ | Functions
    - +
    -
    -  - - require_once - ('vCalendar.php') - (line 20) - -
    - - - -
    - -
    -
     @@ -72,7 +57,7 @@
    -
    +
     @@ -85,6 +70,21 @@ +
    + +
    + +
    +  + + require_once + ('vCalendar.php') + (line 20) + +
    + + +
    @@ -303,12 +303,12 @@
    - +
    - import_collection (line 561) + import_addressbook_collection (line 597)
    @@ -316,7 +316,48 @@
    void - import_collection + import_addressbook_collection + + ( $vcard_content, int $user_no, string $path, boolean $caldav_context, [ $appending = false], string $ics_content) +
    + +
      +
    • + string + $ics_content: the ics file to import
    • +
    • + int + $user_no: the user wich will receive this ics file
    • +
    • + string + $path: the $path where it will be store such as /user_foo/home/
    • +
    • + boolean + $caldav_context:

      Whether we are responding via CalDAV or interactively

      Any VEVENTs with the same UID will be concatenated together

    • +
    • + + $vcard_content
    • +
    • + + $appending
    • +
    + + +
    + +
    + +
    + + import_calendar_collection (line 694) +
    + + +

    This function will import a whole calendar

    +
    + void + + import_calendar_collection (string $ics_content, int $user_no, string $path, boolean $caldav_context, [ $appending = false])
    @@ -340,6 +381,47 @@ +
    + +
    + +
    + + import_collection (line 561) +
    + + +

    This function will import a whole collection

    +
    + void + + import_collection + + ( $import_content, int $user_no, string $path, boolean $caldav_context, [ $appending = false], string $ics_content) +
    + +
      +
    • + string + $ics_content: the ics file to import
    • +
    • + int + $user_no: the user wich will receive this ics file
    • +
    • + string + $path: the $path where it will be store such as /user_foo/home/
    • +
    • + boolean + $caldav_context:

      Whether we are responding via CalDAV or interactively

      The work is either done by

    • +
    • + + $import_content
    • +
    • + + $appending
    • +
    + +
    @@ -416,7 +498,7 @@
    - simple_write_resource (line 1187) + simple_write_resource (line 1306)
    @@ -454,7 +536,7 @@
    - write_alarms (line 796) + write_alarms (line 915)
    @@ -483,7 +565,7 @@
    - write_attendees (line 853) + write_attendees (line 972)
    @@ -512,7 +594,7 @@
    - write_resource (line 902) + write_resource (line 1021)
    @@ -567,7 +649,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-PUT-vcalendar.php.html b/docs/api/davical/caldav/_inc---caldav-PUT-vcalendar.php.html index 6e22bc92..89c21923 100644 --- a/docs/api/davical/caldav/_inc---caldav-PUT-vcalendar.php.html +++ b/docs/api/davical/caldav/_inc---caldav-PUT-vcalendar.php.html @@ -76,7 +76,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-PUT-vcard.php.html b/docs/api/davical/caldav/_inc---caldav-PUT-vcard.php.html index 08d08548..353ebd66 100644 --- a/docs/api/davical/caldav/_inc---caldav-PUT-vcard.php.html +++ b/docs/api/davical/caldav/_inc---caldav-PUT-vcard.php.html @@ -62,7 +62,7 @@ require_once ('vcard.php') - (line 87) + (line 59)
    @@ -76,7 +76,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-REPORT-pps-set.php.html b/docs/api/davical/caldav/_inc---caldav-REPORT-pps-set.php.html index fe82d57a..667c632c 100644 --- a/docs/api/davical/caldav/_inc---caldav-REPORT-pps-set.php.html +++ b/docs/api/davical/caldav/_inc---caldav-REPORT-pps-set.php.html @@ -75,7 +75,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-REPORT-sync-collection.php.html b/docs/api/davical/caldav/_inc---caldav-REPORT-sync-collection.php.html index c7651d9b..50ddb363 100644 --- a/docs/api/davical/caldav/_inc---caldav-REPORT-sync-collection.php.html +++ b/docs/api/davical/caldav/_inc---caldav-REPORT-sync-collection.php.html @@ -72,7 +72,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---caldav-REPORT.php.html b/docs/api/davical/caldav/_inc---caldav-REPORT.php.html index 3c596f33..3dffae87 100644 --- a/docs/api/davical/caldav/_inc---caldav-REPORT.php.html +++ b/docs/api/davical/caldav/_inc---caldav-REPORT.php.html @@ -352,7 +352,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/caldav/_inc---schedule-functions.php.html b/docs/api/davical/caldav/_inc---schedule-functions.php.html index 6a327c78..a7f1a802 100644 --- a/docs/api/davical/caldav/_inc---schedule-functions.php.html +++ b/docs/api/davical/caldav/_inc---schedule-functions.php.html @@ -297,7 +297,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:56 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/external-bind/_inc---external-fetch.php.html b/docs/api/davical/external-bind/_inc---external-fetch.php.html index 7cc48264..1ab8f597 100644 --- a/docs/api/davical/external-bind/_inc---external-fetch.php.html +++ b/docs/api/davical/external-bind/_inc---external-fetch.php.html @@ -84,7 +84,7 @@
    - fetch_external (line 37) + fetch_external (line 42)
    @@ -93,7 +93,7 @@ fetch_external - ( $bind_id,  $min_age) + ( $bind_id, [ $min_age = '1 hour'])
      @@ -112,7 +112,7 @@
      - update_external (line 81) + update_external (line 91)
      @@ -136,7 +136,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/iSchedule/_inc---iSchedule.php.html b/docs/api/davical/iSchedule/_inc---iSchedule.php.html index b57f5cb2..7e635c3f 100644 --- a/docs/api/davical/iSchedule/_inc---iSchedule.php.html +++ b/docs/api/davical/iSchedule/_inc---iSchedule.php.html @@ -116,7 +116,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/iSchedule/iSchedule.html b/docs/api/davical/iSchedule/iSchedule.html index 57d7e92e..ba113655 100644 --- a/docs/api/davical/iSchedule/iSchedule.html +++ b/docs/api/davical/iSchedule/iSchedule.html @@ -511,7 +511,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/ldap/_inc---drivers_imap_pam.php.html b/docs/api/davical/ldap/_inc---drivers_imap_pam.php.html index fe8b9d04..8e9f82f1 100644 --- a/docs/api/davical/ldap/_inc---drivers_imap_pam.php.html +++ b/docs/api/davical/ldap/_inc---drivers_imap_pam.php.html @@ -141,7 +141,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/ldap/_inc---drivers_ldap.php.html b/docs/api/davical/ldap/_inc---drivers_ldap.php.html index 28dad458..05373b95 100644 --- a/docs/api/davical/ldap/_inc---drivers_ldap.php.html +++ b/docs/api/davical/ldap/_inc---drivers_ldap.php.html @@ -239,7 +239,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/ldap/_inc---drivers_rimap.php.html b/docs/api/davical/ldap/_inc---drivers_rimap.php.html index 11837aac..820c6b04 100644 --- a/docs/api/davical/ldap/_inc---drivers_rimap.php.html +++ b/docs/api/davical/ldap/_inc---drivers_rimap.php.html @@ -141,7 +141,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/ldap/_inc---drivers_squid_pam.php.html b/docs/api/davical/ldap/_inc---drivers_squid_pam.php.html index f8e5a500..47f0576a 100644 --- a/docs/api/davical/ldap/_inc---drivers_squid_pam.php.html +++ b/docs/api/davical/ldap/_inc---drivers_squid_pam.php.html @@ -141,7 +141,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/ldap/imapPamDrivers.html b/docs/api/davical/ldap/imapPamDrivers.html index cb3063b5..61a6e6ad 100644 --- a/docs/api/davical/ldap/imapPamDrivers.html +++ b/docs/api/davical/ldap/imapPamDrivers.html @@ -133,7 +133,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/ldap/ldapDrivers.html b/docs/api/davical/ldap/ldapDrivers.html index 0420f9f0..358a98d3 100644 --- a/docs/api/davical/ldap/ldapDrivers.html +++ b/docs/api/davical/ldap/ldapDrivers.html @@ -211,7 +211,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:54 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/ldap/squidPamDrivers.html b/docs/api/davical/ldap/squidPamDrivers.html index 68145174..d1b8e28f 100644 --- a/docs/api/davical/ldap/squidPamDrivers.html +++ b/docs/api/davical/ldap/squidPamDrivers.html @@ -100,7 +100,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/logging/_inc---log_caldav_action.php.html b/docs/api/davical/logging/_inc---log_caldav_action.php.html index eff6938b..95f71a8e 100644 --- a/docs/api/davical/logging/_inc---log_caldav_action.php.html +++ b/docs/api/davical/logging/_inc---log_caldav_action.php.html @@ -88,7 +88,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/propfind/_inc---caldav-PROPFIND.php.html b/docs/api/davical/propfind/_inc---caldav-PROPFIND.php.html index cdc64d2f..beb399b0 100644 --- a/docs/api/davical/propfind/_inc---caldav-PROPFIND.php.html +++ b/docs/api/davical/propfind/_inc---caldav-PROPFIND.php.html @@ -181,7 +181,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:17 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:52 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/pwauth/_inc---drivers_pwauth_pam.php.html b/docs/api/davical/pwauth/_inc---drivers_pwauth_pam.php.html index c6db3c96..5ae9649f 100644 --- a/docs/api/davical/pwauth/_inc---drivers_pwauth_pam.php.html +++ b/docs/api/davical/pwauth/_inc---drivers_pwauth_pam.php.html @@ -145,7 +145,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/pwauth/pwauthPamDrivers.html b/docs/api/davical/pwauth/pwauthPamDrivers.html index 742d8464..e8bc1fc0 100644 --- a/docs/api/davical/pwauth/pwauthPamDrivers.html +++ b/docs/api/davical/pwauth/pwauthPamDrivers.html @@ -100,7 +100,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/tzservice/_htdocs---tz.php.html b/docs/api/davical/tzservice/_htdocs---tz.php.html index 0962c4c9..71c22f45 100644 --- a/docs/api/davical/tzservice/_htdocs---tz.php.html +++ b/docs/api/davical/tzservice/_htdocs---tz.php.html @@ -40,7 +40,7 @@
    -
    +
     @@ -55,7 +55,7 @@
    -
    +
     @@ -76,7 +76,7 @@
    -
    +
     @@ -91,7 +91,7 @@
    -
    +
     @@ -112,7 +112,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/tzservice/_inc---tz---capabilities.php.html b/docs/api/davical/tzservice/_inc---tz---capabilities.php.html index 50bbea3e..5d7c968d 100644 --- a/docs/api/davical/tzservice/_inc---tz---capabilities.php.html +++ b/docs/api/davical/tzservice/_inc---tz---capabilities.php.html @@ -34,7 +34,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:18 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:53 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/tzservice/_inc---tz---expand.php.html b/docs/api/davical/tzservice/_inc---tz---expand.php.html index e74a269a..1695ee9e 100644 --- a/docs/api/davical/tzservice/_inc---tz---expand.php.html +++ b/docs/api/davical/tzservice/_inc---tz---expand.php.html @@ -163,7 +163,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/tzservice/_inc---tz---get.php.html b/docs/api/davical/tzservice/_inc---tz---get.php.html index 9da1a513..960c3560 100644 --- a/docs/api/davical/tzservice/_inc---tz---get.php.html +++ b/docs/api/davical/tzservice/_inc---tz---get.php.html @@ -67,7 +67,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:19 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/davical/tzservice/_inc---tz---list.php.html b/docs/api/davical/tzservice/_inc---tz---list.php.html index ecfa9c3c..9aa439a0 100644 --- a/docs/api/davical/tzservice/_inc---tz---list.php.html +++ b/docs/api/davical/tzservice/_inc---tz---list.php.html @@ -67,7 +67,7 @@

    - Documentation generated on Wed, 04 Jan 2012 16:20:20 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:55 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/elementindex.html b/docs/api/elementindex.html index cd3b2ba1..735a54f4 100644 --- a/docs/api/elementindex.html +++ b/docs/api/elementindex.html @@ -500,15 +500,15 @@ $collection_id
    -
    CalDAVRequest::$collection_id in CalDAVRequest.php
    -
    The ID of the collection containing this path, or of this path if it is a collection
    +
    Principal::$collection_id in Principal.php
    Variable $collection_id
    -
    Principal::$collection_id in Principal.php
    +
    CalDAVRequest::$collection_id in CalDAVRequest.php
    +
    The ID of the collection containing this path, or of this path if it is a collection
    Variable @@ -648,6 +648,13 @@
    Function + check_curl +
    +
    +
    check_curl() in setup.php
    +
    +
    + Function check_datetime
    @@ -2741,11 +2748,27 @@
    Function + import_addressbook_collection +
    +
    +
    import_addressbook_collection() in caldav-PUT-functions.php
    +
    This function will import a whole calendar
    +
    +
    + Function + import_calendar_collection +
    +
    +
    import_calendar_collection() in caldav-PUT-functions.php
    +
    This function will import a whole calendar
    +
    +
    + Function import_collection
    import_collection() in caldav-PUT-functions.php
    -
    This function will import a whole calendar
    +
    This function will import a whole collection
    Page @@ -2778,14 +2801,6 @@
    Method - IsAddressBook -
    -
    -
    CalDAVRequest::IsAddressBook() in CalDAVRequest.php
    -
    Returns true if the URL referenced by this request points at an addressbook collection.
    -
    -
    - Method IsAddressbook
    @@ -2794,6 +2809,14 @@
    Method + IsAddressBook +
    +
    +
    CalDAVRequest::IsAddressBook() in CalDAVRequest.php
    +
    Returns true if the URL referenced by this request points at an addressbook collection.
    +
    +
    + Method IsBinding
    @@ -2898,7 +2921,7 @@ IsLocked
    -
    CalDAVRequest::IsLocked() in CalDAVRequest.php
    +
    DAVResource::IsLocked() in DAVResource.php
    Checks whether the resource is locked, returning any lock token, or false
    @@ -2906,7 +2929,7 @@ IsLocked
    -
    DAVResource::IsLocked() in DAVResource.php
    +
    CalDAVRequest::IsLocked() in CalDAVRequest.php
    Checks whether the resource is locked, returning any lock token, or false
    @@ -2922,16 +2945,16 @@ IsPrincipal
    -
    CalDAVRequest::IsPrincipal() in CalDAVRequest.php
    -
    Returns true if the URL referenced by this request points at a principal.
    +
    DAVResource::IsPrincipal() in DAVResource.php
    +
    Checks whether this resource is a principal
    Method IsPrincipal
    -
    DAVResource::IsPrincipal() in DAVResource.php
    -
    Checks whether this resource is a principal
    +
    CalDAVRequest::IsPrincipal() in CalDAVRequest.php
    +
    Returns true if the URL referenced by this request points at a principal.
    Method @@ -2946,16 +2969,16 @@ IsPublic
    -
    CalDAVRequest::IsPublic() in CalDAVRequest.php
    -
    Checks whether the collection is public
    +
    DAVResource::IsPublic() in DAVResource.php
    +
    Checks whether the target collection is publicly_readable
    Method IsPublic
    -
    DAVResource::IsPublic() in DAVResource.php
    -
    Checks whether the target collection is publicly_readable
    +
    CalDAVRequest::IsPublic() in CalDAVRequest.php
    +
    Checks whether the collection is public
    Method diff --git a/docs/api/elementindex_davical.html b/docs/api/elementindex_davical.html index 3b9f0b2e..ae91a0d0 100644 --- a/docs/api/elementindex_davical.html +++ b/docs/api/elementindex_davical.html @@ -600,6 +600,13 @@
    Function + check_curl +
    +
    +
    check_curl() in setup.php
    +
    +
    + Function check_datetime
    @@ -2372,11 +2379,27 @@
    Function + import_addressbook_collection +
    +
    +
    import_addressbook_collection() in caldav-PUT-functions.php
    +
    This function will import a whole calendar
    +
    +
    + Function + import_calendar_collection +
    +
    +
    import_calendar_collection() in caldav-PUT-functions.php
    +
    This function will import a whole calendar
    +
    +
    + Function import_collection
    import_collection() in caldav-PUT-functions.php
    -
    This function will import a whole calendar
    +
    This function will import a whole collection
    Method diff --git a/docs/api/errors.html b/docs/api/errors.html index f7d15bfe..2d16c9d3 100644 --- a/docs/api/errors.html +++ b/docs/api/errors.html @@ -381,10 +381,10 @@ Use an @ignore tag on the original if you want this case to be documented.

    external-fetch.php

    Warnings:


    -Warning on line 34 - Page-level DocBlock precedes "function create_external", use another DocBlock to document the source element
    +Warning on line 39 - Page-level DocBlock precedes "function create_external", use another DocBlock to document the source element

    Errors:


    -Error on line 34 - "function" create_external's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage external-bind"
    -Error on line 34 - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"
    +Error on line 39 - "function" create_external's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage external-bind"
    +Error on line 39 - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"

    feed.php

    Warnings:


    @@ -497,7 +497,7 @@ Use an @ignore tag on the original if you want this case to be documented.

    setup.php

    Warnings:


    Warning on line 7 - no @package tag was used in a DocBlock for class CheckResult
    -Warning on line 396 - File "/home/karora/projects/davical/htdocs/setup.php" has no page-level DocBlock, use @package in the first DocBlock to create one
    +Warning on line 404 - File "/home/karora/projects/davical/htdocs/setup.php" has no page-level DocBlock, use @package in the first DocBlock to create one

    SqlToArray.php

    Warnings:


    @@ -540,7 +540,7 @@ Use an @ignore tag on the original if you want this case to be documented.

    vcard.php

    Warnings:


    Warning on line 8 - no @package tag was used in a DocBlock for class VCard
    -Warning on line 167 - File "/home/karora/projects/davical/inc/vcard.php" has no page-level DocBlock, use @package in the first DocBlock to create one
    +Warning on line 173 - File "/home/karora/projects/davical/inc/vcard.php" has no page-level DocBlock, use @package in the first DocBlock to create one

    well-known.php

    Warnings:


    @@ -551,7 +551,7 @@ Use an @ignore tag on the original if you want this case to be documented.
    Warning on line 3 - no @package tag was used in a DocBlock for class WritableCollection
    Warning on line 444 - File "/home/karora/projects/davical/inc/WritableCollection.php" has no page-level DocBlock, use @package in the first DocBlock to create one

    - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/docs/api/index.html b/docs/api/index.html index adc406fd..6c88cba0 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> - + DAViCal diff --git a/docs/api/li_davical.html b/docs/api/li_davical.html index afb46717..1dc890d3 100644 --- a/docs/api/li_davical.html +++ b/docs/api/li_davical.html @@ -43,6 +43,7 @@
    Functioncaldav_get_feed
    Functioncheck_awl_version
    Functioncheck_calendar
    +
    Functioncheck_curl
    Functioncheck_datetime
    Functioncheck_davical_version
    Functioncheck_for_expansion
    @@ -188,6 +189,8 @@
    Functionhandle_freebusy_request
    Functionhandle_schedule_reply
    Functionhandle_schedule_request
    +
    Functionimport_addressbook_collection
    +
    Functionimport_calendar_collection
    Functionimport_collection
    FunctionlogRequestHeaders
    Functionobfuscated_event
    diff --git a/docs/api/todolist.html b/docs/api/todolist.html index c50156cd..5762e258 100644 --- a/docs/api/todolist.html +++ b/docs/api/todolist.html @@ -28,7 +28,7 @@
  • Improve this to calculate the days difference and then the clock time diff and work from there.
  • - Documentation generated on Wed, 04 Jan 2012 16:20:21 +1300 by phpDocumentor 1.4.3 + Documentation generated on Fri, 13 Jan 2012 23:44:57 +1300 by phpDocumentor 1.4.3

    \ No newline at end of file diff --git a/htdocs/always.php b/htdocs/always.php index 6f90c09d..1768e974 100644 --- a/htdocs/always.php +++ b/htdocs/always.php @@ -175,8 +175,8 @@ init_gettext( 'davical', $c->locale_path ); * */ $c->code_version = 0; -$c->want_awl_version = '0.50'; -$c->version_string = '1.0.1'; // The actual version # is replaced into that during the build /release process +$c->want_awl_version = '0.51'; +$c->version_string = '1.0.2'; // The actual version # is replaced into that during the build /release process if ( isset($c->version_string) && preg_match( '/(\d+)\.(\d+)\.(\d+)(.*)/', $c->version_string, $matches) ) { $c->code_major = $matches[1]; $c->code_minor = $matches[2]; From 329f8b51dca8505fcf2d40d52faa3667cf86266b Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sat, 14 Jan 2012 19:09:53 +1300 Subject: [PATCH 11/21] LDAP driver should not log password unless password logging is specifically on. --- inc/drivers_ldap.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/drivers_ldap.php b/inc/drivers_ldap.php index daeb8780..a784e48e 100644 --- a/inc/drivers_ldap.php +++ b/inc/drivers_ldap.php @@ -222,8 +222,8 @@ class ldapDrivers } } - - dbg_error_log( "LDAP", "drivers_ldap : Bound to user %s using password %s", $dnUser, $passwd ); + dbg_error_log( "LDAP", "drivers_ldap : Bound to user %s using password %s", $dnUser, + (isset($c->dbg['password']) && $c->dbg['password'] ? $passwd : 'another delicious password for the debugging monster!') ); $i = ldap_first_entry($this->connect,$entry); $arr = ldap_get_attributes($this->connect,$i); From 45eb571c158212e54d3b757f3abe54abf49fe527 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sat, 14 Jan 2012 19:10:09 +1300 Subject: [PATCH 12/21] Probably a smidgin more efficient this way around. --- inc/HTTPAuthSession.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/HTTPAuthSession.php b/inc/HTTPAuthSession.php index d4c19efd..3a3a55cd 100644 --- a/inc/HTTPAuthSession.php +++ b/inc/HTTPAuthSession.php @@ -53,7 +53,7 @@ class HTTPAuthSession { if ( ! empty($_SERVER['PHP_AUTH_DIGEST'])) { $this->DigestAuthSession(); } - else if ( isset($_SERVER["AUTHORIZATION"]) || isset($_SERVER['PHP_AUTH_USER']) ) { + else if ( isset($_SERVER['PHP_AUTH_USER']) || isset($_SERVER["AUTHORIZATION"]) ) { $this->BasicAuthSession(); } else if ( isset($c->http_auth_mode) && $c->http_auth_mode == "Digest" ) { From 1e04f898e5576d2459a269ffd78ecbb4830a5d55 Mon Sep 17 00:00:00 2001 From: Philipp Matthias Hahn Date: Wed, 11 Jan 2012 23:14:22 +0100 Subject: [PATCH 13/21] Make several targets .PHONY If a file with the name of the target would exist, re-building would fail. Signed-off-by: Andrew McMillan --- Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ba4292a6..ad4259bb 100755 --- a/Makefile +++ b/Makefile @@ -10,8 +10,10 @@ snapshot : gitrev = $(shell git rev-parse --short HEAD) snapshot : version = $(majorversion)-git$(gitrev) snapshot : issnapshot = 1 +.PHONY: nodocs nodocs: htdocs/always.php built-po +.PHONY: all all: htdocs/always.php built-docs built-po built-docs: docs/api/phpdoc.ini htdocs/*.php inc/*.php docs/translation.rst @@ -32,6 +34,7 @@ htdocs/always.php: scripts/build-always.sh VERSION dba/davical.sql inc/always.ph # # Build a release .tar.gz file in the directory above us # +.PHONY: release release: built-docs VERSION -ln -s . $(package)-$(version) sed 's:@@VERSION@@:$(majorversion):' davical.spec.in | \ @@ -45,15 +48,16 @@ release: built-docs VERSION davical.spec rm $(package)-$(version) +.PHONY: snapshot snapshot: release +.PHONY: clean clean: rm -f built-docs built-po -find . -name "*~" -delete -rm docs/translation.pdf -rm davical.spec +.PHONY: clean-all clean-all: clean -find docs/api/* ! -name "phpdoc.ini" ! -name ".gitignore" -delete - -.PHONY: all clean release From 83b11a162dac833a6bb96cdf6836f25888c570b5 Mon Sep 17 00:00:00 2001 From: Philipp Matthias Hahn Date: Wed, 11 Jan 2012 23:14:23 +0100 Subject: [PATCH 14/21] Use automatic Makefile variables Instead of repeating the file names, use the automatic variables for the target and the first source file. Signed-off-by: Andrew McMillan --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index ad4259bb..e0f560bc 100755 --- a/Makefile +++ b/Makefile @@ -19,17 +19,17 @@ all: htdocs/always.php built-docs built-po built-docs: docs/api/phpdoc.ini htdocs/*.php inc/*.php docs/translation.rst phpdoc -c docs/api/phpdoc.ini || echo "NOTICE: Failed to build optional API docs" rst2pdf docs/translation.rst || echo "NOTICE: Failed to build ReST docs" - touch built-docs + touch $@ built-po: htdocs/always.php scripts/po/rebuild-translations.sh po/*.po scripts/po/rebuild-translations.sh - touch built-po + touch $@ # # Insert the current version number into always.php # -htdocs/always.php: scripts/build-always.sh VERSION dba/davical.sql inc/always.php.in - scripts/build-always.sh htdocs/always.php +htdocs/always.php: inc/always.php.in scripts/build-always.sh VERSION dba/davical.sql + scripts/build-always.sh <$< >$@ # # Build a release .tar.gz file in the directory above us From 05613124ce46f30ea1580ecd7f94839f67366db9 Mon Sep 17 00:00:00 2001 From: Philipp Matthias Hahn Date: Wed, 11 Jan 2012 23:14:24 +0100 Subject: [PATCH 15/21] Compute version only once In a make-file the =-assignment is replaced textually each time it is referenced, which leads to the shell fragments to be executed each time. Use the :=-assignment instead, which computes the value only once. Signed-off-by: Andrew McMillan --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index e0f560bc..56002fc7 100755 --- a/Makefile +++ b/Makefile @@ -1,11 +1,11 @@ #!/usr/bin/make -f # -package=davical -majorversion = $(shell sed -n 's:\([0-9\.]*\)[-a-f0-9-]*:\1:p' VERSION) -gitrev = 0 -version = $(majorversion) -issnapshot = 0 +package := davical +majorversion := $(shell sed -n 's:\([0-9\.]*\)[-a-f0-9-]*:\1:p' VERSION) +gitrev := 0 +version := $(majorversion) +issnapshot := 0 snapshot : gitrev = $(shell git rev-parse --short HEAD) snapshot : version = $(majorversion)-git$(gitrev) snapshot : issnapshot = 1 From c9467618d741fa7782dfbf6351d7f86318a68a7b Mon Sep 17 00:00:00 2001 From: Philipp Matthias Hahn Date: Wed, 11 Jan 2012 23:14:25 +0100 Subject: [PATCH 16/21] Fix remote time comparison The PostgreSQL database returns a string like "2013-01-11 18:37:36.737665+01", while curl returns the file-modification-time as a string repesenting the secondes since the UNIX epoche. Comparing them as strings us wrong. Convert them to DateTime() instances instead. And only do this when the filetime is actually returned. Signed-off-by: Andrew McMillan --- inc/external-fetch.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/inc/external-fetch.php b/inc/external-fetch.php index d86483a6..49506c3a 100644 --- a/inc/external-fetch.php +++ b/inc/external-fetch.php @@ -62,9 +62,10 @@ function fetch_external ( $bind_id, $min_age = '1 hour' ) curl_setopt ( $curl, CURLOPT_NOBODY, true ); $ics = curl_exec ( $curl ); $info = curl_getinfo ( $curl ); - if ( $info['filetime'] <= $row->updated ) { + if ( isset($info['filetime']) && new DateTime("@" . $info['filetime']) <= $local_ts ) { dbg_error_log("external", "external resource unchanged " . $info['filetime'] ); curl_close ( $curl ); + // BUGlet: should track server-time instead of local-time $qry = new AwlQuery( 'UPDATE collection SET modified=NOW() WHERE collection_id = :cid', array ( ':cid' => $row->collection_id ) ); $qry->Exec('DAVResource'); return true; @@ -74,6 +75,7 @@ function fetch_external ( $bind_id, $min_age = '1 hour' ) $ics = curl_exec ( $curl ); curl_close ( $curl ); if ( is_string ( $ics ) && strlen ( $ics ) > 20 ) { + // BUGlet: should track server-time instead of local-time $qry = new AwlQuery( 'UPDATE collection SET modified=NOW(), dav_etag=:etag WHERE collection_id = :cid', array ( ':cid' => $row->collection_id, ':etag' => md5($ics) ) ); $qry->Exec('DAVResource'); From fb3eca0b0760ed07e9b72eefd42a7732677c81b7 Mon Sep 17 00:00:00 2001 From: Philipp Matthias Hahn Date: Wed, 11 Jan 2012 23:14:26 +0100 Subject: [PATCH 17/21] Use If-Modified-Since-HTTP-Header Skip downloading a potentially huge calendar file if it the same as out local copy, using the If-Modified-Since-HTTP-Header. Signed-off-by: Andrew McMillan --- inc/external-fetch.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/inc/external-fetch.php b/inc/external-fetch.php index 49506c3a..fe0f1962 100644 --- a/inc/external-fetch.php +++ b/inc/external-fetch.php @@ -55,14 +55,17 @@ function fetch_external ( $bind_id, $min_age = '1 hour' ) $sql .= ' ORDER BY modified DESC LIMIT 1'; $qry = new AwlQuery( $sql, $params ); if ( $qry->Exec('DAVResource') && $qry->rows() > 0 && $row = $qry->Fetch() ) { + $local_ts = new DateTime($row->modified); $curl = curl_init ( $row->external_url ); curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, true ); curl_setopt ( $curl, CURLOPT_HEADER, true ); curl_setopt ( $curl, CURLOPT_FILETIME, true ); curl_setopt ( $curl, CURLOPT_NOBODY, true ); + curl_setopt ( $curl, CURLOPT_TIMEVALUE, $local_ts->format("U") ); + curl_setopt ( $curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE ); $ics = curl_exec ( $curl ); $info = curl_getinfo ( $curl ); - if ( isset($info['filetime']) && new DateTime("@" . $info['filetime']) <= $local_ts ) { + if ( $info['http_code'] === 304 || isset($info['filetime']) && new DateTime("@" . $info['filetime']) <= $local_ts ) { dbg_error_log("external", "external resource unchanged " . $info['filetime'] ); curl_close ( $curl ); // BUGlet: should track server-time instead of local-time From 7140963e49af5783ca76308f78f96f3a53622f6d Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sun, 15 Jan 2012 20:44:10 +1300 Subject: [PATCH 18/21] Allow user_no, created and modified to be set on create. --- dba/views/dav_principal.sql | 4 ++-- inc/Principal.php | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dba/views/dav_principal.sql b/dba/views/dav_principal.sql index bd32df3b..1950c084 100644 --- a/dba/views/dav_principal.sql +++ b/dba/views/dav_principal.sql @@ -23,8 +23,8 @@ DO INSTEAD VALUES( COALESCE( NEW.user_no, nextval('usr_user_no_seq')), COALESCE( NEW.user_active, TRUE), - current_timestamp, - current_timestamp, + COALESCE( NEW.created, current_timestamp), + COALESCE( NEW.modified, current_timestamp), NEW.username, NEW.password, COALESCE( NEW.fullname, NEW.displayname ), NEW.email, NEW.email_ok, diff --git a/inc/Principal.php b/inc/Principal.php index deff90e8..c7c5a298 100644 --- a/inc/Principal.php +++ b/inc/Principal.php @@ -553,6 +553,16 @@ class Principal { throw new Exception( get_class($this).'::Create: Mandatory field "'.$k.'" is not set.'); } } + if ( isset($this->user_no) ) { + $param_names[] = ':user_no'; + $insert_fields[] = 'user_no'; + $sql_params[':user_no'] = $this->user_no; + } + if ( isset($this->created) ) { + $param_names[] = ':created'; + $insert_fields[] = 'created'; + $sql_params[':created'] = $this->created; + } $sql = 'INSERT INTO '.self::$db_tablename.' ('.implode(',',$insert_fields).') VALUES('.implode(',',$param_names).')'; } else { From f9998cb782c4f02e51b39d72f8a23f940d791d4c Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sun, 15 Jan 2012 20:44:46 +1300 Subject: [PATCH 19/21] If an external source can supply a useful timezone name, we can use that. --- inc/auth-functions.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/inc/auth-functions.php b/inc/auth-functions.php index b716f2f6..8f10c4f8 100644 --- a/inc/auth-functions.php +++ b/inc/auth-functions.php @@ -68,7 +68,7 @@ function getPrincipalByID( $principal_id, $use_cache = true ) { * Creates some default home collections for the user. * @param string $username The username of the user we are creating relationships for. */ -function CreateHomeCollections( $username ) { +function CreateHomeCollections( $username, $defult_timezone = null ) { global $session, $c; if ( empty($c->home_calendar_name) && empty($c->home_addressbook_name) ) return true; @@ -185,6 +185,12 @@ function CreateDefaultRelationships( $username ) { } +function UpdateCollectionTimezones( $username, $new_timezone=null ) { + if ( empty($new_timezone) ) return; + $qry = new AwlQuery('UPDATE collection SET timezone=? WHERE dav_name LIKE ? AND is_calendar', '/'.$username.'/%', $new_timezone); + $qry->Exec(); +} + /** * Update the local cache of the remote user details * @param object $usr The user details we read from the remote. @@ -305,7 +311,7 @@ EOERRMSG; if ( $qry->Exec('Login',__LINE__,__FILE__) && $qry->rows() == 1 ) { $usr = $qry->Fetch(); if ( session_validate_password( $password, $usr->password ) ) { - $principal = new Principal($username); + $principal = new Principal('username',$username); if ( $principal->Exists() ) { if ( $principal->modified <= $usr->updated ) $principal->Update($usr); From a47e3d9d8b4af7dae89811ee971dfdaab7f22f5f Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sun, 15 Jan 2012 21:33:12 +1300 Subject: [PATCH 20/21] Date: Sun, 15 Jan 2012 21:33:45 +1300 Subject: [PATCH 21/21] Starting on a vtimezone object. --- inc/vtimezone.php | 114 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 inc/vtimezone.php diff --git a/inc/vtimezone.php b/inc/vtimezone.php new file mode 100644 index 00000000..a1509449 --- /dev/null +++ b/inc/vtimezone.php @@ -0,0 +1,114 @@ +Exec('VTimezone',__LINE__,__FILE__) && $qry->rows() > 0 && $row = $qry->Fetch() ) { + $vtz = new vComponent($row->vtimezone); + if ( $vtz->GetType() == 'VTIMEZONE' ) return $vtz; + $tmp = $vtz->GetComponents('VTIMEZONE'); + if ( count($tmp) < 1 || $tmp[0]->GetType() != 'VTIMEZONE' ) return null; + $vtz = $tmp[0]; + return $vtz; + } + return null; + } + + static function msCdoToOlson($tzcdo) { + switch( $tzcdo ) { + /** + * List of Microsoft CDO Timezone IDs from here: + * http://msdn.microsoft.com/en-us/library/aa563018%28loband%29.aspx + */ + case 0: return('UTC'); + case 1: return('Europe/London'); + case 2: return('Europe/Lisbon'); + case 3: return('Europe/Paris'); + case 4: return('Europe/Berlin'); + case 5: return('Europe/Bucharest'); + case 6: return('Europe/Prague'); + case 7: return('Europe/Athens'); + case 8: return('America/Brasilia'); + case 9: return('America/Halifax'); + case 10: return('America/New_York'); + case 11: return('America/Chicago'); + case 12: return('America/Denver'); + case 13: return('America/Los_Angeles'); + case 14: return('America/Anchorage'); + case 15: return('Pacific/Honolulu'); + case 16: return('Pacific/Apia'); + case 17: return('Pacific/Auckland'); + case 18: return('Australia/Brisbane'); + case 19: return('Australia/Adelaide'); + case 20: return('Asia/Tokyo'); + case 21: return('Asia/Singapore'); + case 22: return('Asia/Bangkok'); + case 23: return('Asia/Kolkata'); + case 24: return('Asia/Muscat'); + case 25: return('Asia/Tehran'); + case 26: return('Asia/Baghdad'); + case 27: return('Asia/Jerusalem'); + case 28: return('America/St_Johns'); + case 29: return('Atlantic/Azores'); + case 30: return('America/Noronha'); + case 31: return('Africa/Casablanca'); + case 32: return('America/Argentina/Buenos_Aires'); + case 33: return('America/La_Paz'); + case 34: return('America/Indiana/Indianapolis'); + case 35: return('America/Bogota'); + case 36: return('America/Regina'); + case 37: return('America/Tegucigalpa'); + case 38: return('America/Phoenix'); + case 39: return('Pacific/Kwajalein'); + case 40: return('Pacific/Fiji'); + case 41: return('Asia/Magadan'); + case 42: return('Australia/Hobart'); + case 43: return('Pacific/Guam'); + case 44: return('Australia/Darwin'); + case 45: return('Asia/Shanghai'); + case 46: return('Asia/Novosibirsk'); + case 47: return('Asia/Karachi'); + case 48: return('Asia/Kabul'); + case 49: return('Africa/Cairo'); + case 50: return('Africa/Harare'); + case 51: return('Europe/Moscow'); + case 53: return('Atlantic/Cape_Verde'); + case 54: return('Asia/Yerevan'); + case 55: return('America/Panama'); + case 56: return('Africa/Nairobi'); + case 58: return('Asia/Yekaterinburg'); + case 59: return('Europe/Helsinki'); + case 60: return('America/Godthab'); + case 61: return('Asia/Rangoon'); + case 62: return('Asia/Kathmandu'); + case 63: return('Asia/Irkutsk'); + case 64: return('Asia/Krasnoyarsk'); + case 65: return('America/Santiago'); + case 66: return('Asia/Colombo'); + case 67: return('Pacific/Tongatapu'); + case 68: return('Asia/Vladivostok'); + case 69: return('Africa/Ndjamena'); + case 70: return('Asia/Yakutsk'); + case 71: return('Asia/Dhaka'); + case 72: return('Asia/Seoul'); + case 73: return('Australia/Perth'); + case 74: return('Asia/Riyadh'); + case 75: return('Asia/Taipei'); + case 76: return('Australia/Sydney'); + + case 57: // null + case 52: // null + default: // null + } + return null; + } + + +} \ No newline at end of file