Compare commits

..

861 Commits

Author SHA1 Message Date
Florian Schlichting
e990c2edcb fix Debian autopkgtest / CI: prevent caching of phpunit results, like we do for "make test" 2026-05-27 23:10:34 +02:00
Florian Schlichting
c3591225c5 release davical 1.1.13 2026-05-11 23:56:53 +02:00
Florian Schlichting
d4dc174543 update Doxyfile using 'doxygen -u', and fix a phpunit warning 2026-05-11 23:56:53 +02:00
k0walski
85c61ad601 Add missing closing braces to ldap_timestamp pattern match condition 2026-05-11 21:49:21 +00:00
Florian Schlichting
0f14bcb73b gitlab-ci: install curl for davical build 2026-04-07 23:10:39 +02:00
Florian Schlichting
9d6bec35bf acknowledge Debian NMUs, apply PHPUnit 12 syntax changes 2026-04-07 22:53:56 +02:00
malve
fc4f6013db correctly emit error message when cancelling an event fails 2025-04-13 14:54:45 -07:00
Andrew Ruthven
8f38332fce Set DAVResource type correctly when restoring from memcache
Assuming we're always dealing with a Principal isn't correct.
2025-01-27 23:27:45 +13:00
Andrew Ruthven
1fec8fd111 Add debug logging for ACE changes 2025-01-27 23:27:45 +13:00
Andrew Ruthven
f6547bd376 Make some lines more readable 2025-01-27 23:27:45 +13:00
Andrew Ruthven
b4bcc6cc25 Fix DAV:current-user-principal for iPhone devices
iPhone devices incorrectly implement DAV:current-user-principal from
RFC 5397. They assume that current-user-principal is the href for the
resource being queried. The RFC says it should be the current resource.

See: https://gitlab.com/davical-project/davical/-/issues/335
2025-01-27 23:27:45 +13:00
Andrew Ruthven
c1cfd8eb0d Fix typo 2025-01-27 23:02:36 +13:00
Andrew Ruthven
734d5c1f99 The public access endpoint is public.php 2025-01-22 14:48:24 +13:00
Andrew Ruthven
11315dee47 Fix deprecation warning for explicit nullable type. 2024-12-30 20:17:22 +13:00
Andrew Ruthven
a9ffb1e67c We need rst2pdf installed for testing
Looks like this has been removed as a dependency from a package.
2024-12-30 20:17:18 +13:00
Jaydn
a2a9a57fdd Lowercase string when comparing HTTP header for debug output
HTTP/2 requests to Davical with debug mode result in logged
Authorization header as the comparison is currently case sensitive

https://datatracker.ietf.org/doc/rfc9113/
> 8.2.  HTTP Fields
> Field names MUST be converted to lowercase when constructing an HTTP/2
message.
2024-09-03 10:44:32 +09:30
Andrew Ruthven
4d06333f7e Drop the memcache only test, make the ldap+memcache test stage more comprehensive
The old memcache suite was gutted as it wasn't really much use and needed
LDAP to actually test auth caching correctly.
2024-05-27 09:46:12 +12:00
Andrew Ruthven
07c32697dd More testing of cached auth credentials
Test more scenarios, to make sure the cache is used or not used when
it should be.
2024-05-27 09:46:12 +12:00
Andrew Ruthven
d686ea4c3f Allow tests to dynamically set the DAViCal configuration 2024-05-27 09:46:12 +12:00
Andrew Ruthven
341707b045 Allow multiple curl requests per test file
This could still do with some more work to allow clearing previous settings,
it does now allow repeated URL lines per test file.
2024-05-03 23:35:26 +12:00
Andrew Ruthven
1077714a83 Make the log lines have consistent prefixes 2024-05-03 23:35:26 +12:00
Andrew Ruthven
af458f9d90 Remove default expiry times, make 0 disabled. 2024-05-03 23:35:26 +12:00
Andrew Ruthven
3c475a283c Switch to using hash_hmac, SHA256 and bcrypt for caching credentials
We also use a locally set password (aka a pepper) to ensure that the contents
of memcached isn't sufficient to perform dictionary attacks on the cached
credentials.
2024-05-03 23:35:26 +12:00
Andrew Ruthven
55feb03139 Include the username in the log messages. 2024-05-03 23:35:26 +12:00
Andrew Ruthven
ee26ee730f get can return the empty string, check for that.
While the credential checks were correctly failing when salt was the
empty string, it was giving confusing i.e., no log messages.
2024-05-03 23:35:26 +12:00
Andrew Ruthven
0b709c791d Fix the storing of cached credentials when an authentication hook is used.
Thank you LDAP tests for picking up this issue!
2024-05-03 23:35:26 +12:00
Andrew Ruthven
521594bc3f Add testing for LDAP with memcache 2024-05-03 23:35:25 +12:00
Andrew Ruthven
bd6a47bee6 Add tests for memcache 2024-05-03 23:34:43 +12:00
Andrew Ruthven
5826f5c3cf Cache password credentials received, and if they succeed or fail.
This is intended to reduce the load on external authentication sources
as most (all?) CalDAV clients use HTTPBasicAuth to authenticate and
if an external source is used, every request we receive requires
external authentication. This can place a large load on those external
sources.

Closes #254.
2024-05-03 23:34:42 +12:00
Andrew Ruthven
8f7da93a0d Return the Request ID if auth fails
Still only return it if in test_mode.
2024-05-03 23:33:25 +12:00
Andrew Ruthven
a02fffa4ca Ensure that request_id has no \r or \n characters. 2024-05-03 23:33:25 +12:00
Andrew Ruthven
87c3df891b Fix typo, remove sleep 60!! 2024-05-01 22:32:33 +12:00
Andrew Ruthven
fcbd72e310 Fix an exception if a LDAP group mentions a user that doesn't exist
This tickles a bug as reported by Thorsten Marquardt in
https://sourceforge.net/p/davical/mailman/message/58766531/ with this
error message reported:

    Exception [0] ldap_get_attributes(): Argument #2 ($entry) must be of
    type LDAP\ResultEntry, false given
    At line 718 of /usr/share/davical-master/inc/drivers_ldap.php

You need to look in 3da860e5d5e732c2dedb62a73c76608a2b7098a4 for that line
number as I've just made some improvements to the code the last few commits.
2024-05-01 22:32:33 +12:00
Andrew Ruthven
c273b38234 Test adding non-existant LDAP user to a group
This is to tickle my suspicion of the bug as reported by Thorsten Marquardt
in https://sourceforge.net/p/davical/mailman/message/58766531/ with this
error message reported:

Exception [0] ldap_get_attributes(): Argument #2 ($entry) must be of
type LDAP\ResultEntry, false given
At line 718 of /usr/share/davical-master/inc/drivers_ldap.php

You need to look in 3da860e5d5e732c2dedb62a73c76608a2b7098a4 for that line
number as I've just made some improvements to the code.

I have also improved the SQL to check if the users have been added, and
discovered that the result file *did not* have them. This test was failing
due to the test config file looking for memberUid, not member. Also, fix
that.
2024-05-01 22:32:33 +12:00
Andrew Ruthven
629789612e Prevent using undefined or non-existant variables 2024-05-01 22:32:33 +12:00
Andrew Ruthven
a50e3eae90 Be a bit more verbose in the logging 2024-05-01 22:32:33 +12:00
Andrew Ruthven
d2a93643bc Don't be afraid of whitespace 2024-05-01 22:32:33 +12:00
Andrew Ruthven
569b20d92f Allow tests to provide configuration over rides
Written to provide scope for Apache2 config overrides as well (I
think I'll need these to add Kerberos testing...)
2024-05-01 22:32:33 +12:00
Andrew Ruthven
3da860e5d5 ../awl isn't present in CI build, drop dep
Also drop dependency on dba/davical.sql as that is no longer checked
for the DB version.
2024-04-30 22:47:39 +12:00
Andrew Ruthven
24f6c8be18 Actually require AWL v0.65 2024-04-30 20:53:30 +12:00
Andrew Ruthven
e919bce20e Update so that git checkouts will work 2024-04-30 20:50:33 +12:00
Andrew Ruthven
4a64af43f8 Stop picking the DB version from dba/davical.sql as now we just use the patches 2024-04-30 20:50:16 +12:00
Andrew Ruthven
aa35bc6e6d Require the latest DB version 2024-04-30 20:39:14 +12:00
Andrew Ruthven
0c2bb61891 Add missing ChangeLog and CREDITS entries 2024-04-14 23:48:16 +12:00
Andrew Ruthven
2ce32a3ac7 Add info on how to use i_use_mode_kerberos 2024-04-14 23:12:40 +12:00
Andrew Ruthven
781ecff224 Update for stonewall's contribution 2024-04-14 22:42:18 +12:00
Stonewall Jackson
d3a0c89eca Retain original i_use_mode_kerberos behavior, add fallback option
Add a new value for i_use_mode_kerberos: "allow_fallback_ldap_auth",
which will fallback to username/password authentication when the
REMOTE_USER value is unset.
2024-04-10 14:25:23 -04:00
Stonewall Jackson
0ba94e91de Support fallback to LDAP password with i_use_mode_kerberos
Currently, when `i_use_mode_kerberos` is enabled in the LDAP driver,
Davical checks the `REMOTE_USER` server variable, followed by the
`REDIRECT_REMOTE_USER` variable, for a matching username. If a matching
username is not found, authentication fails immediately.

This commit modifies the LDAP driver to fallback to standard LDAP
password authentication when `i_use_mode_kerberos` is enabled and
neither of these server variables are set. This allows
non-kerberos-enabled clients to authenticate as well.

Fixes #323
2024-04-10 14:25:23 -04:00
Andrew Ruthven
786a9f5591 Remove the IMAP auth drivers
The PHP imap module is being retired. Closes #324.
2024-04-02 21:41:26 +13:00
Andrew Ruthven
e900dff28e If a URL test fails, display the Apache Request ID to aid debugging
This helps with #311.
2024-04-02 00:11:30 +13:00
Andrew Ruthven
7c47658bee Make the curl and SQL requests when we see them
This allows us to have more complex test files where an action is taken, then
we test something, then another action is taken, etc.

Changes to test files are required so that URL is defined after all the
required settings are set.

Changes to the result files are either whitespace changes due to above logic
changes, or printing out a SQL Result header before each result. I figured it
was useful.
2024-04-01 22:57:10 +13:00
Andrew Ruthven
7f2cccb94a Use isset when checking that the key exists
To resolve errors like this:

Warning:  Undefined array key "example.net" in /usr/share/davical/inc/iSchedule.php on line 207
2024-04-01 20:46:15 +13:00
Andrew Ruthven
901d82a293 Fix creation of dynamic properties
Add some properties to classes to fix errors like:

Creation of dynamic property iSchedule::$body_cannon is deprecated in /usr/share/davical/inc/iSchedule.php on line 533
Creation of dynamic property FakeSession::$user_active is deprecated in /usr/share/davical/inc/iSchedule-POST.php on line 23
2024-04-01 20:43:45 +13:00
Andrew Ruthven
452b9fa2ef regression-suite/2701-generate-date-tests.pl needs Perl modules
f
2024-04-01 20:29:20 +13:00
Andrew Ruthven
bdc65cc777 iSchedule tests now work, test in CI 2024-04-01 18:58:33 +13:00
Andrew Ruthven
d67c43790a Fix Free/Busy tests for iSchedule
We need to have some events in the time period being checked.

Note in the tests what they're trying to check.
2024-04-01 18:53:12 +13:00
Andrew Ruthven
c97a0719ff Slight wrapping change to lines in a test result, and now have ^M returned 2024-04-01 18:34:33 +13:00
Andrew Ruthven
7459a68b76 We need the sample data for tests for the test files to run 2024-04-01 18:34:33 +13:00
Andrew Ruthven
d2d36399d3 Create the Timezone if we need to
Detected now due to a change from a few years ago to use a clean database
for each set of tests.
2024-04-01 18:34:33 +13:00
Andrew Ruthven
ec9159fd69 Fix some warnings about using undefined keys, simplify dns strings
Fixes:
- PHP Warning:  Trying to access array offset on value of type null in inc/iSchedule.php on line 83
- PHP Warning:  Undefined array key "t" in inc/iSchedule.php on line 165
- PHP Warning:  Undefined array key "t" in inc/iSchedule.php on line 167
- PHP Warning:  Undefined array key "p" in inc/iSchedule.php on line 184

Concatenate the DNS entry we're going to look up once rather than everytime
we need it.
2024-04-01 18:34:33 +13:00
Andrew Ruthven
aaf89bed66 Trust the DKIM key used for ischedule tests 2024-03-30 20:10:41 +13:00
Andrew Ruthven
ba4c1eb989 Skip the "text/calendar" record, so we don't run code that expects "="
Prevents this warning:
  PHP Warning:  Undefined array key 1 in inc/iSchedule-POST.php on line 96
2024-03-30 20:08:14 +13:00
Andrew Ruthven
b26d48fced Put a trailing newline on error messages 2024-03-30 19:03:39 +13:00
Andrew Ruthven
0fc1abd976 Drop datetime check as minimum PHP version is 5.4 2024-03-11 00:41:39 +13:00
Andrew Ruthven
ee16fbf6af Update the translation PO files. 2024-03-11 00:41:39 +13:00
Andrew Ruthven
4e03cb1343 Include the request ID used in logging in the Fatal Error message. 2024-03-11 00:41:37 +13:00
Andrew Ruthven
658bd4e786 Use request ID 2024-03-11 00:41:37 +13:00
Andrew Ruthven
f69480ce77 Test that deletion of a principal's items are secure
Test that other users can't delete:
 - collections
 - tickets
 - bindings

No significant change, just return an error message rather than assume that
things worked.
2024-03-10 00:37:11 +13:00
Andrew Ruthven
7e663b3a2b iSchedule should advertise the full date range that we support. 2024-03-04 00:44:12 +13:00
Andrew Ruthven
19ec65eb3f Add entry for extending date ranges 2024-03-04 00:44:12 +13:00
Andrew Ruthven
c5b3e385b3 Allow changing directory when running a script
This also involves changing scripts to be run at the time they're mentioned,
not accruing them to run at the end.
2024-03-03 21:30:22 +13:00
Andrew Ruthven
0c9e0d6a87 Test more dates in the past and future
There is now a Perl script that'll generate tests and result files to a
wide variety of dates. From this we currently don't support < 1 AD or >
9999 AD.

run_regressions is modified to remove the UNTIL option as I want to use a
character after the test number to allow "subtests".
2024-03-03 21:30:22 +13:00
Andrew Ruthven
9c10ef5eb2 Support start or end missing from free-busy-query REPORT
Previously if either start or end were missing then the current time was
used. This would almost never be the expected behaviour.
2024-03-03 21:30:21 +13:00
Andrew Ruthven
014ee35372 Rename the ICS file to match the test name 2024-03-01 23:42:56 +13:00
Andrew Ruthven
dd1e75d23d Eh, etag changed.
It is tempting to exclude etag from test result checks.
2024-03-01 23:42:55 +13:00
Andrew Ruthven
88fee9f155 The use of quote_dt_param removes the need to append 'T000000Z'
All tests still pass.
2024-03-01 23:42:54 +13:00
Andrew Ruthven
435133adf5 We need to have dtstart_orig be what is passed in, possibly empty.
Using quote_dt_param resolves the error that Benedikt Spranger was
fixing in 3f326f2d3fcc429d7596a4ff59970217161f7930.
2024-03-01 23:42:54 +13:00
Andrew Ruthven
9421dbd7e3 Add an event in the year 500. 2024-03-01 23:42:53 +13:00
Andrew Ruthven
3defc7b266 Add test for an event in the far future 2024-03-01 23:42:50 +13:00
Andrew Ruthven
1c7954fc51 Enforce dates to be send as string (fixes #233)
Prevents AWL/PG from converting them magically.
2024-03-01 23:42:21 +13:00
Benedikt Spranger
ce67c2c839 Add events starting before 1900 test
postgresql is fussy about dates before 1900. Add a test with a recuring
event startting before 1900.

Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
2024-03-01 23:26:26 +13:00
Benedikt Spranger
15f304ab1c Fix handling of events started before 1900
commit 15d01c8bed2d ("Store DTSTART and DTEND from user in shadow columns")
breaks handling of events started before 1900:

[19-Sep-2023 14:30:39 UTC] davical: BUG: :DAViCal Fatal Error: [42804] SQLSTATE[42804]: Datatype mismatch: 7 ERROR:  column "dtstart_orig" is of type timestamp with time zone but expression is of type integer
[19-Sep-2023 14:30:39 UTC] ================= Stack Trace ===================
[19-Sep-2023 14:30:39 UTC] davical: LOG: :Response status 500 for PUT /<user>/home/6bb3a62b-43ae-4a21-bb83-fca84d9ef050.ics
[19-Sep-2023 14:30:39 UTC] davical: LOG: :***************** Response Header ****************
[19-Sep-2023 14:30:39 UTC] davical: LOG: headers:-->Server: 1.1
[19-Sep-2023 14:30:39 UTC] davical: LOG: headers:-->DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
[19-Sep-2023 14:30:39 UTC] davical: LOG: headers:-->DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
[19-Sep-2023 14:30:39 UTC] davical: LOG: headers:-->X-DAViCal-Version: DAViCal/1.1.12; DB/1.3.5
[19-Sep-2023 14:30:39 UTC] davical: LOG: headers:-->Content-type: text/plain; charset="utf-8"
[19-Sep-2023 14:30:39 UTC] davical: LOG: :******************** Response ********************
[19-Sep-2023 14:30:39 UTC] davical: LOG: response:-->DAViCal Fatal Error

Update dtstart_orig in these cases to avoid the database failure.

Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
2024-03-01 23:26:26 +13:00
Stonewall Jackson
fa44a257e9 allow specifying all sasl bind options in config.php 2024-02-28 16:29:56 -05:00
Stonewall Jackson
dc666e191f fix spelling in LDAP sasl example 2024-02-28 16:29:56 -05:00
Stonewall Jackson
c8424ae5d5 Update LDAP driver to support SASL binds
Add a new 'sasl' option to the LDAP driver, which invokes
ldap_sasl_bind() instead of ldap_bind().

This allows authenticating to LDAP using the GSSAPI (kerberos) or
EXTERNAL mechanisms, rather than a bindDN and password.

Note that for GSSAPI binds, PHP needs access to valid kerberos
credentials (for example, by setting the KRB5CCNAME environment variable
for the PHP process).

Tested with OpenLDAP/Heimdal kerberos, but should also work with Active
Directory.
2024-02-28 16:29:56 -05:00
Andrew Ruthven
27ff697d55 Ensure we give bindec a value
Resolves this warning in PHP 7.4.0:

Deprecated: bindec(): Passing null to parameter #1 ($binary_string) of type
string is deprecated in /usr/share/davical/inc/ui/principal-edit.php on line
412
2024-02-29 09:55:23 +13:00
Andrew Ruthven
62441f7705 Ensure we have an array, and there is a value.
Resolves this warning in PHP 8.2:

Warning:  Undefined array key 0 in /usr/share/davical/inc/iSchedule.php on
  line 218
Warning:  Trying to access array offset on null in
  /usr/share/davical/inc/iSchedule.php on line 218
2024-02-29 00:43:50 +13:00
Andrew Ruthven
cb2e4523f3 Add test for invalidating the CSRF token 2024-02-29 00:43:50 +13:00
Andrew Ruthven
0a0c0a77cc Explicitly declare all class properties
PHP 8.2.0 has deprecated dynamic creation of properties.

This kind of warning message is displayed:

Deprecated:  Creation of dynamic property DAViCalSession::$login_failed is
  deprecated in /usr/share/awl/inc/Session.php on line 153
2024-02-29 00:43:50 +13:00
Andrew Ruthven
0c28a4ffe6 Make CLI usage easier 2024-02-29 00:43:49 +13:00
Andrew Ruthven
974d7d3924 Check that all UI pages load without PHP warnings or deprecation messages 2024-02-29 00:43:49 +13:00
Andrew Ruthven
a102105f27 Hide many sections unless the user can modify the principal
There is potential to leak information when viewing the principal
page for another principal. I think it makes more sense to just
not include all of this information unles the user can change the
principal.
2024-02-29 00:43:49 +13:00
Andrew Ruthven
5347680642 Hide change password fields if the user can't change the principal
There is no need to show these fields as they do nothing.
2024-02-29 00:43:49 +13:00
Andrew Ruthven
15e9231ae3 Unescape URLs passed in as external bindings.
Previously PHP was escaping things like ampersands, which then caused
us to have broken URLs.

These aren't displayed anywhere in the UI, so no need to encode them anywhere.

Closes #314.
2024-02-29 00:43:49 +13:00
Andrew Ruthven
59e4f2c929 If a test fails, bail out, the state will be indeterminate 2024-02-29 00:43:49 +13:00
Andrew Ruthven
8c378387c8 For consistency allow BEGIN for the SQL commands 2024-02-29 00:43:49 +13:00
Andrew Ruthven
57ae239a75 Support using this script to test AWL as well 2024-02-29 00:43:49 +13:00
Andrew Ruthven
c2a054d28e Add initial tests for the web UI
Use Test::WWW::Mechanize to test the UI.

Closes #310
2024-02-29 00:43:47 +13:00
Stonewall Jackson
3a08e80d5a Fix scope=onelevel in LDAP driver
When `scope` is set to 'onelevel', the LDAP driver actually does a full
subtree search instead.

Should be `ldap_list` instead. Fixed.
2024-02-27 13:32:15 -05:00
Andrew Ruthven
5bd6d70383 Support using this script to test AWL as well 2024-02-25 23:04:17 +13:00
Andrew Ruthven
d7d7dd2ade Move the CI prep from repeated lines in the YML to a shell script
Oh, this is much easier to work with.

We can now detect the version of PostgreSQL installed and shouldn't
need to update CI just because PostgreSQL has been updated in Debian
Unstable.
2024-02-18 22:30:52 +13:00
Andrew Ruthven
4ae36c132d Have a sensible default setting for the UserAgent 2024-02-18 01:51:56 +13:00
Andrew Ruthven
28d9105810 Update database result results in tests. 2024-02-18 01:51:56 +13:00
Andrew Ruthven
e989e1cf97 Fix PROPFIND with Depth 1 if external bind is included
Previously something like this would be logged if debugging is enabled:

davical: LOG: Principal: Query: DBGQ: SELECT * FROM collection WHERE user_no= :user_no
davical: LOG: Principal: Query: DBGQ:  ":user_no" => ""
davical: BUG: :DAViCal Fatal Error: [42883] SQLSTATE[42883]: Undefined function: 7 ERROR:  operator does not exist: integer = boolean\nLINE 1: SELECT * FROM collection WHERE user_no= FALSE\n                                              ^\nHINT:  No operator matches the given name and argument types. You might need to add explicit type casts. at /home/puck/work/Calendar/awl/inc/AwlDatabase.php:94

And this would be returned as a response:

DAViCal Fatal Error

user_no doesn't get set when construction the Collection for the external
bind, so, just handle that instead of sending the empty string to the
database as a user_no.

Modify the tests from ccc7e182ba4cbfba66a4fe96e1c0620e46390b95 to tickle the
bug.

Closes #175.
2024-02-18 01:51:56 +13:00
Andrew Ruthven
d7d19b906f Set external_refresh by default
Let's just set a sane default of 60 minutes.
2024-02-18 00:04:37 +13:00
Andrew Ruthven
a065435a99 Create tests for 'external' calendars 2024-02-18 00:04:29 +13:00
Andrew Ruthven
eb4d120bbf Honour do_not_sync_from_ldap when sync'ing group members
This had been working as a side effect of the way the SQL insert
statement was working, but better to be explict about skipping them.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
9494256f03 Extend LDAP sync tests, test for DNs in member fields. 2024-02-17 02:25:25 +00:00
Andrew Ruthven
8a6274e6cf Rather than look for a flag, if a member is a DN, modify/fetch the record.
This changes 48c6512a70740c403027b66e9d609e9b871d29c0, in Eric's commit it
needs a flag to go fetch the record and apply the mapping to find the
username field. This approach looks for a telltale that this is DN (naively
an "=") and then either grabs the first element from the DN if the username
attr matches or fetches the entry from LDAP.

There have also been attempts in the past to special case uniqueMember and
to add a group_member_dnfix config option.

This should handle the cases where people use uid/cn/whatever for the
username.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
03d0e66b39 Handle there being no one in the group in the database 2024-02-17 02:25:25 +00:00
Andrew Ruthven
ef6bd9a7e9 fullname is a better default than group 2024-02-17 02:25:25 +00:00
Andrew Ruthven
98d9925241 Always update groups from LDAP
The logic actually handled updated group details, but only new groups were
being passed in. This will cause changes to what is being used for the
fullname to flow through.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
b77b2640f8 The displayname can be unset, test for that 2024-02-17 02:25:25 +00:00
Andrew Ruthven
cb287c5abf Use filterUsers from the config 2024-02-17 02:25:25 +00:00
Andrew Ruthven
b0d01264e0 Various tidyups, show some more defaults, make a bit more current. 2024-02-17 02:25:25 +00:00
Andrew Ruthven
146ab4d068 Update test results for database creation.
I've rebased onto master which has a new DB version.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
56d7d22d86 Rename mapping_field to user_mapping_field
This is to be consistent with group_mapping_field. The code is backwards
compatible with mapping_field.

In sync_LDAP_groups assign user_mapping once, not for every group.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
3d28433b5b Fix the comments 2024-02-17 02:25:25 +00:00
Andrew Ruthven
9d40ae1aa7 Simplify the code by assigning the array after we've cleaned it up.
This allows shorter lines which means easier to understand code.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
2a30a9646c Have some sane defaults for LDAP group mappings 2024-02-17 02:25:25 +00:00
Andrew Ruthven
13083b07e8 Rename username to name in group mappings, drop unused fullname from example
Usinger "username" for the group name is confusing and misleading. Just
use name, but support our users who still have username.

We don't use fullname, drop it from the example.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
bb713137fd memberUid is deprecated, make member default 2024-02-17 02:25:25 +00:00
Andrew Ruthven
a7fc46a848 Add whitespace to sync_LDAP_groups
Make the function more readable.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
820d0992eb Allow running from the root 2024-02-17 02:25:25 +00:00
Andrew Ruthven
995fe296c4 All debug output goes to STDERR so not combined with test results 2024-02-17 02:25:25 +00:00
Andrew Ruthven
86cb62f404 is_head_request is only used once, simplify 2024-02-17 02:25:25 +00:00
Andrew Ruthven
b15c99fe1b Add tests for LDAP sync of users and groups. 2024-02-17 02:25:25 +00:00
Andrew Ruthven
dc2991666a Allow the LDAP group to have no members 2024-02-17 02:25:25 +00:00
Andrew Ruthven
3846d31664 Handle there being no group members in the DB 2024-02-17 02:25:25 +00:00
Andrew Ruthven
1db3663302 We're using a baseDN, not querying a DN 2024-02-17 02:25:25 +00:00
Andrew Ruthven
775ecb8f3b Ensure that users_nothing_done is created as an array
This is likely only going to generate an error on the first time you
sync from LDAP, but still, let's not spit an unncessary error out.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
ed7f308b87 Add default filters for users and groups
Some (all?) LDAP servers will just not respond if there is no filter,
provide a sensible default.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
bacf08fea6 Wrap doc lines at 76 characters. 2024-02-17 02:25:25 +00:00
Andrew Ruthven
702fc05b57 Bail out early to prevent bogus errors if baseDNGroups isn't set 2024-02-17 02:25:25 +00:00
Andrew Ruthven
e73f2d73d4 Better handle when we can't talk to the server, log that 2024-02-17 02:25:25 +00:00
Andrew Ruthven
15e5a89675 Log better information about the connection to the server 2024-02-17 02:25:25 +00:00
Andrew Ruthven
30b05549d0 Remove tests related to memcache, add BPS to copyright
I re-used some of the test LDAP logic from the test suite of Request
Tracker by BPS.
2024-02-17 02:25:25 +00:00
Andrew Ruthven
353a2d1b13 Add testing for LDAP with memcache 2024-02-17 02:25:25 +00:00
Andrew Ruthven
7898efdfda Add the ability to run Perl snippets
This allows for more complicated test suites, which I'll use in the next commit...
2024-02-17 02:25:25 +00:00
Eric Wagner
016e51b4ac use username attr for matching group members 2024-02-17 02:25:25 +00:00
Andrew Ruthven
c75e7aee29 If curl is missing, complain, loudly
As requested on #175,
2024-02-04 01:40:08 +13:00
Andrew Ruthven
0a4471ab06 Wrap most lines in config file to 76 characters
This makes it a lot more readable on an 80 character wide terminal.
2024-02-03 06:24:50 +00:00
Andrew Ruthven
9dc52a5e25 Updates to other tests as side effects of adding room1 and room2 principals 2024-01-21 19:12:42 +13:00
Andrew Ruthven
1ca8284bdc Add ROOM as a principal type
This hopefully resolves #282.
2024-01-21 19:12:42 +13:00
Andrew Ruthven
bc33199083 Run patches when creating the database
From now on we should only provide patches, not a patch and modify
the initial SQL and data. Otherwise we never test the patches.
2024-01-21 17:47:23 +13:00
Andrew Ruthven
27f19cb3b3 Fix typo 2024-01-21 16:41:34 +13:00
Andrew Ruthven
39d0cd5837 Don't change passwords to $pwstars
The password input boxes are supposed to contain the value of $pwstars,
not the string '$pwstars'.
2024-01-21 13:34:30 +13:00
Andrew Ruthven
dabe01657d Bump the AWL version here as well 2024-01-20 15:27:51 +13:00
Andrew Ruthven
216c253ad9 Set a sane timeout for fetching the current DAViCal version
Without this it takes 90 seconds to timeout.
2024-01-20 15:27:51 +13:00
Andrew Ruthven
d42c3dc186 Add PHP version check to setup.php 2024-01-20 15:27:51 +13:00
Andrew Ruthven
3bf44378fa Fix checking if the session is active
The phpversion check was backwards. For PHP >= 5.4.0 we should be
using session_status() === PHP_SESSION_ACTIVE not < 5.4.0.

But in fact, we only support >= 5.4.0, so this check is now redundant.
2024-01-20 02:21:40 +00:00
Andrew Ruthven
ecda4395e8 Update to reflect change in tests 2024-01-19 19:49:02 +13:00
Andrew Ruthven
f137dd788e Update test to straddle the DST change
As pointed out in
https://gitlab.com/davical-project/davical/-/merge_requests/86#note_1209576949
the issue is when events straddle the DST change.
2024-01-19 19:48:03 +13:00
Andrew Ruthven
ff403b84a9 Update ETag, why?! 2024-01-19 19:13:07 +13:00
Chris S
069445579c Fix conversion to UTC for DST changes
The RepeatRuleDateTime constructor extracts the date's time zone then
passes it to the parent class DateTime. Because PHP's DateTime has full
support for time zones, it compensates for them when parsing a string.
Normally this isn't a problem, because the opposite occurs when a
DateTime is converted back into a string; the two adjustments cancel
each other.

Davical often converts a time to UTC by negating the time zone offset
and adding it to the underlying DateTime (keeping the time zone intact).
A problem occurs when the result is on the other side of a daylight-
saving-time transition. In that case the adjustments do not cancel and
an incorrect time string is returned.

This bug is tricky because the problem doesn't manifest during the DST
transition iself, but hours earlier or later depending on the original
time zone. For example, 2022-03-12T18:30:00-08:00 (America/Los_Angeles)
is 2022-03-13T02:30:00Z. Since 2022-03-13 is a 23-hour day in the Los
Angeles time zone (the 2AM-3AM hour is skipped) this becomes
2022-03-13T03:30:00-07:00 after adding the negated offset. FloatOrUTC()
would strip the new offset and simply return "20220313T033000".
2024-01-19 19:13:07 +13:00
Andrew Ruthven
5ef5c756f8 Tests to try and tickle an issue raised in MR 86
However, the result is what it should be? Interesting.

https://gitlab.com/davical-project/davical/-/merge_requests/86
2024-01-19 19:13:07 +13:00
Andrew Ruthven
0ec4fb4dc5 Correct case and plural 2024-01-19 00:43:53 +13:00
Andrew Ruthven
fa1b9ae353 Lower case CN, and use the example domain 2024-01-19 00:43:02 +13:00
Andreas Haerter
11a57a85c6 Another mapping_field key to prevent PHP warnings; typos 2024-01-18 11:05:25 +00:00
Andreas Haerter
d53dad3363 Fix typos in example config; Improve Active Directory example
This fixes a few typos and trailing spaces and improves the AD
example:

- missing port leads to PHP warnings
- use more common and compatible field names for attribute mapping
- distinguishedName as bind user example
2024-01-18 11:05:25 +00:00
Andrew Ruthven
3d2e3d9f12 Move the CSP to only apply to DAViCal htdocs 2023-10-23 18:22:53 +13:00
Andrew Ruthven
aaa70a83f8 Remove sis.redsys.es from CSP
As raised in https://sourceforge.net/p/davical/mailman/message/47766326/
2023-10-23 17:56:54 +13:00
Benedikt Spranger
c88c730236 Gitlab tests: Use postgres 16
Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
2023-10-23 17:47:42 +13:00
Athos Ribeiro
0502860a95 Add support for phpunit 10
In phpunit 10, global states are no longer preserved by default [1].

* https://bugs.debian.org/1039746

[1] https://github.com/sebastianbergmann/phpunit/blob/10.0.0/ChangeLog-10.0.md#changed
2023-07-06 16:28:53 -03:00
eppesuig
de29c6c6ee Better check for $_SERVER['PATH_INFO'] 2023-06-21 23:21:57 +00:00
Andrew Ruthven
6ac6b30c7a Additional record to CONFIDENTIAL resources
Update due to 5ab4f4391406bda5a6f1bc7b2288844bb6fefa06
2023-05-02 10:44:52 +00:00
Andrew Ruthven
ea2a75d86b Confidential resources should retain more reccurence information
To allow for correct expansion of recurring confidential information
we also need to retain EXDATE, RECURRENCE-ID and SEQUENCE, otherwise
client side expansion may well be wrong.

Closes #291
2023-05-02 10:44:52 +00:00
Andrew Ruthven
720eb89adb Add tests for checking that CONFIDENTIAL resources include all recurrance information
This is to tickle #291. The only test that is actually required is
2603-GET-resource-confidential, but I want to make sure all the options were
correct.

In this commit 2603-GET-resource-confidential is expected to fail.
2023-05-02 10:44:52 +00:00
Andrew Ruthven
d4b91f2627 Set UNTIL for some RRULEs
This is to get these events out of the way for some new tests.
2023-05-02 10:44:52 +00:00
Andrew Ruthven
fdf58827e3 Allow enabling debugging via environment variable 2023-05-02 00:12:48 +12:00
Andrew Ruthven
e8f3a3e6f2 Add a missing space to a SQL statement to fix adding groups.
It looks to me like this bug has been present since 2011.

Closes: #294
2023-04-30 12:13:37 +12:00
Scott Savarese
0059d0dcdb Support ldap connections via URI to handle ldaps and redundant ldap servers 2023-04-27 11:00:50 +00:00
Florian Schlichting
effc004741 use "." to concatenate strings, not "+" (fixes #288)
Unsupported operand types: string + string at /usr/share/davical/inc/caldav-ACL.php:146
2023-03-23 22:17:23 +01:00
Florian Schlichting
72b13cfc65 gitlab-ci.yml: add missing phpunit, awl to targets running debuild
we now require this for "make test"
2023-03-13 23:24:37 +01:00
Florian Schlichting
4301a795ac release davical 1.1.12 2023-03-13 22:00:55 +01:00
Florian Schlichting
ab89530819 add Debian autopkgtests 2023-03-13 21:56:13 +01:00
Florian Schlichting
477425f3fe Fix phpunit tests ('Attempt to read property "rrule_loop_limit" on null') and add them to 'make test' 2023-03-13 21:56:13 +01:00
Andrew Ruthven
b40c96debb If time-range is set, only return matching events.
Closes #280
2023-03-12 20:19:10 +01:00
Andrew Ruthven
4a2db83b7c Update ChangeLog 2023-03-12 20:19:02 +01:00
Andrew Ruthven
15d01c8bed Store DTSTART and DTEND from user in shadow columns
We want to store the calculated dtstart and dtend in the database so we can
use SQL to fetch records. However, we also need what the user sent us so we
can allow prop-filters to be used as well.

So we store what the user sends us in dtstart_orig and dtend_orig and only
use for relevant prop-filter reports.
2023-03-12 20:17:43 +01:00
Andrew Ruthven
5a73991496 DTSTART on VTODO is optional, don't force it to be set.
If we force setting DTSTART, then you can't use prop-filter to find VTODOs
with a DUE set and DTSTART unset. And, well, why should DTSTART be set to DUE?

This was introduced in 18150d702d91fa1a687801baa582d967e79fff8d .
2023-03-12 20:05:48 +01:00
Andrew Ruthven
badeca53c7 Update tests that check for CLASS in the database.
We no longer force CLASS to be PUBLIC in the database if it isn't set.
2023-03-12 20:05:48 +01:00
Andrew Ruthven
149ec3555f CLASS is an optional field, don't set it to PUBLIC
As specified in RFC5545 the CLASS field is optional, and if it isn't present
is treated as PUBLIC. To allow a is-not-defined prop-filter to find
resources without CLASS set, we need to not store in the database. This
turns out to be okay, because to enforce privacy we always check to see if
it is PRIVATE or CONFIDENTIAL. We never check to see if it is PUBLIC.

Closes #284.
2023-03-12 20:05:48 +01:00
Andrew Ruthven
4a380b12a2 Fixes to is-defined and is-not-defined prop-filter
Gosh, this was completely broken previously. A number of different scenarios now work.

I have used some of the state I've seen in a largish production database with the
presence of NULL and empty strings. I've assumed that empty string should be treated
as is-not-defined. Happy to be talked out of that.

Closes #281.
2023-03-12 20:05:48 +01:00
Andrew Ruthven
7349944fbc Remove change entry in file, that's what git history is for 2023-03-12 20:05:48 +01:00
Piotr Filip
13c77fdcab check owner when deleting 2023-03-01 21:29:44 +01:00
Florian Schlichting
4b7abbbd83 drop default $position argument from BuildXMLTree everywhere (awl!22) 2023-02-26 22:10:34 +01:00
Andrew Ruthven
8fbab49f0d Create unique constraints for tmp_password and role_member. 2023-02-15 07:42:34 +00:00
Andrew Ruthven
e3b5c331be Add a primary key to calendar_alarm table.
Also fixed a bug in scripts/refresh-alarms.php if there was an
alarm with a duplicate trigger.

This is part of the fix for #276.
2023-02-15 07:42:34 +00:00
Andrew Ruthven
6819d6d7d1 Add a primary_key to the addressbook_addresses_* tables
This is part of the fix for #276.
2023-02-15 07:42:34 +00:00
Andrew Ruthven
c3970f3be2 Fix RRULE for BYHOUR, BYMINUTE and BYSECOND
Closes #283.
2023-02-15 07:28:35 +00:00
Andrew Ruthven
8444347b02 We no longer support PHP 5.1, assume that DateTime is available 2023-02-15 07:28:35 +00:00
Andrew Ruthven
43996a3297 Create .in and .out calendars on principal creation.
Closes #227
2023-02-05 13:04:09 +00:00
Andrew Ruthven
0041577fc8 Handle baseDNGroups being unset. 2023-02-04 19:03:50 +13:00
Andrew Ruthven
444a098130 Ensure that groups_nothing_done is defined
Closes #278.
2023-02-04 05:48:09 +00:00
Andrew Ruthven
f86eaef5b8 Use dbg_error_log instead of dbg_log_array
Closes #277.
2023-02-04 03:21:48 +00:00
Andrew Ruthven
be60ec1778 Improve on SQL syntax fix to keep logging working, and add regression test.
Closes #279.
2023-02-04 03:09:40 +00:00
Tobias Brox
6e6ff6b115 Fix SQL syntax error if is-not-defined is used as a prop-filter. 2023-02-04 03:09:40 +00:00
Andrew Ruthven
533d407196 Update ChangeLog 2023-01-18 00:11:57 +13:00
Andrew Ruthven
0762022453 Depend on AWL 0.64 to get fixed memcache support 2023-01-18 00:11:57 +13:00
Andrew Ruthven
0da12be223 Stop caching bound collections.
This was causing binding/1038-PROPFIND-Depth-2 to fail as the getctag that
was found didn't match what was expected. Looking at how bound collections
are handled, there is a lot of metadata that we're missing.

Preferably we'd cache or otherwise restore that metadata, but I'm going
to leave that as a future enhancement. ;)
2023-01-18 00:11:57 +13:00
Andrew Ruthven
ad1be4b640 Add CI for memcache 2023-01-18 00:11:57 +13:00
Andrew Ruthven
0cb7381c88 Keep track of proxy information for a Collection when using memcached
The test regression-suite/0549-iCal-REPORT was failing due to us not
keeping track of the proxy information when storing/fetching collections
from the cache.
2023-01-18 00:11:57 +13:00
Andrew Ruthven
7a3486563c Only cache a Principal if we've actually loaded something. 2023-01-18 00:11:57 +13:00
Andrew Ruthven
5db0622d65 Provide example configuration on using memcache. 2023-01-18 00:11:57 +13:00
Andrew Ruthven
0c2f55cd66 Update the ChangeLog for my fixes over the past week 2023-01-18 00:10:46 +13:00
Andrew Ruthven
713f8dafdf Copy the log artifacts into unique directories per test 2023-01-08 12:46:29 +13:00
Andrew Ruthven
a054d16390 Mass tidy up of whitespace in sample config. 2023-01-08 12:46:19 +13:00
Andrew Ruthven
c9ac75173b Allow the tester to hit N or n to continue 2023-01-08 12:13:32 +13:00
Andrew Ruthven
2791d7b8c3 Update the ChangeLog for my fixes over the past week 2023-01-08 12:13:32 +13:00
Andrew Ruthven
6abf645d00 Fix minor typo 2022-12-30 17:41:30 +13:00
Andrew Ruthven
a323ba8dae Don't change the day of the month to 28, if it is > 28
Gosh. The logic was saying, if the modified date has a day of the
month > 28, change it to 28. Which is rather odd. Don't do that.

This closes #248. It also fixes a bug with FREQ=MONTHLY;BYMONTHDAY=-1
as it turns out.
2022-12-18 13:52:48 +13:00
Andrew Ruthven
6e68c221e9 Add more logging to investigate the 28th problem on issue #248
I reckon this is useful logging to have, keep it around.
2022-12-18 13:52:48 +13:00
Andrew Ruthven
7d0e2f2435 Test Free/Busy results for MONTHLY with BYMONTHDAY
Tests https://gitlab.com/davical-project/davical/-/issues/248
2022-12-18 13:52:48 +13:00
Andrew Ruthven
64f47fd9e6 Tests for MONTHLY recurrence where DTSTART is on the 29th of Feb
Each of the recurring events should also be on the 29th. Currently
these tests fail as the generated events are on the 28th. Oops.
2022-12-18 13:52:48 +13:00
Andrew Ruthven
7b2fa34f73 Reenable N being a default 2022-12-17 22:01:03 +13:00
Andrew Ruthven
45c74a628b Improvements to run_regressions.sh options
* Add q to quit
* Loop if an invalid command is entered, instead of continuing

As part of this I converted the large if/elif/elif/.../fi to a case
statement, a bit easier to read.
2022-12-17 15:40:06 +13:00
Andrew Ruthven
7a8c7b5b25 Convert loop_limit to a config item 2022-12-15 20:50:44 +00:00
Andrew Ruthven
513db6b8d1 Remove a stray space 2022-12-15 20:50:44 +00:00
Andrew Ruthven
d93a5196b8 Increase loop limit for finding next instance for Recurrence Rules.
With complex rules, it make take more than 10 expansions to find the
next valid date. Increase this to 100, it doesn't slow things down too
much.

I've also added some additional error logging if this issue occurs
again.

Closes #268.
2022-12-15 20:50:44 +00:00
Andrew Ruthven
0fdb3ff558 Add more logging to try and find the root cause for issue 268 2022-12-15 20:50:44 +00:00
Andrew Ruthven
3909ec52f1 Convert RRule debugging to use dbg_error_log
This stops the debugging from being sent to stdout, which goes to the client and
mucks up the test results.
2022-12-15 20:50:44 +00:00
Andrew Ruthven
80102c2700 initial tests for issue 268 2022-12-15 20:50:44 +00:00
Andrew Ruthven
a5d19142bb Fix typo 2022-12-15 22:56:47 +13:00
Andrew Ruthven
0750dd27a1 Another test result to update 2022-12-15 15:09:17 +13:00
Andrew Ruthven
3c1d39ff85 Ensure the test suite exists before operating on it.
I kept on making typos, so ended up with random directories, this should
stop that from happening in future.
2022-12-14 23:58:49 +13:00
Andrew Ruthven
fc09febad2 Update tests now that we don't inherit the DB from previous directory 2022-12-14 09:52:35 +13:00
Andrew Ruthven
692c20eec6 Don't inherit DB from previous test set 2022-12-14 08:53:32 +13:00
Piotr Filip
f29af80116 delete collection by id 2022-12-13 00:30:27 +00:00
Bill McGonigle
abbb6e5e70 support php_fpm under Apache 2.4 (missing PATH_INFO with Apache handler). 2022-12-13 00:12:44 +00:00
Andrew Ruthven
7d2bbeb37c Update regression tests that hit index.php for new CSP 2022-12-13 12:57:41 +13:00
Andrew Ruthven
ffe5ed24ad Add Content-Security-Policy header to sample Apache2 config files
We now support running with a strict self CSP, let's provide that!
2022-12-13 12:57:41 +13:00
Piotr Filip
35641b099a refactor scripts to allow operation with Content-Security-Policy: script-src 'self' 2022-12-12 21:32:57 +00:00
ruliane
43bda7a5ba Fix error when $icfg is not set. 2022-12-12 21:13:49 +00:00
ruliane
19ec6fd2fb Fix PHP Notice: Undefined variable: body in /usr/share/davical/inc/iSchedule.php on line 435 2022-12-12 20:57:34 +00:00
Andrew Ruthven
a9d438dc0f The PHP 8.2 container has deflate enabled in Apache2, disable it.
This is causing a test to fail because we're being sent a gzip compressed
result. My reading of the curl manpage says that it should be decompressed
by curl, but it isn't. Let's just disable the deflate module. Here is what
we're getting:

Displaying diff for test 0548-iCal-PROPFIND
=======================================
--- tests/regression-suite/0548-iCal-PROPFIND.result	2022-12-10 00:43:52.898403110 +0000
+++ tests/regression-suite/results/0548-iCal-PROPFIND	2022-12-10 00:45:11.378242838 +0000
@@ -1,1233 +1,12 @@
-HTTP/1.1 207 Multi-Status
+HTTP/1.1 200 OK
 Date: Dow, 01 Jan 2000 00:00:00 GMT
 DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
 DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
-ETag: "ae8aac5229a8a5d9ee7c86100322162d"
-Content-Length: 28703
-Content-Type: text/xml; charset="utf-8"
+Content-Encoding: gzip
+Content-Length: 2042
+Content-Type: text/html; charset=UTF-8
2022-12-10 15:37:43 +13:00
Andrew Ruthven
042237b05d PHP 8.2 seems to set the timezone to UTC, always set Pacific/Auckland for testcases
Previously the logic only set Pacific/Auckland if the date.timezone setting
on the PHP ini files wasn't set. Let's just always set it if we're processing
the test suite.
2022-12-10 15:37:43 +13:00
Andrew Ruthven
6ad794eae6 freq_name is only used locally
This doesn't need to be an object field.
2022-12-10 14:37:31 +13:00
Andrew Ruthven
aab8ddfd30 Ensure that all fields are defined, not added dynamically.
PHP 8.2 deprecates dynmically adding properties. See:
  https://php.watch/versions/8.2/dynamic-properties-deprecated
2022-12-10 14:37:31 +13:00
Andrew Ruthven
46feee1ec7 Stop copying all fields from the Principal object.
PHP 8.2 deprecates dynmically adding properties. See:
  https://php.watch/versions/8.2/dynamic-properties-deprecated

This arbitary copying of all fields tickles these deprecation
warnings, and just below we copy exactly the fields we need.
I reckon this loop is redundant.
2022-12-10 02:46:37 +13:00
Andrew Ruthven
8162b9f850 Ensure that propfind for access is deterministic.
I noticed that the ordering of principals returned wasn't deterministic
for tests. Ensure it is.
2022-12-10 02:04:27 +13:00
Andrew Ruthven
c904ef5551 Debian Unstable no longer has bzip2 by default, use xz instead 2022-12-09 23:48:07 +13:00
Andrew Ruthven
547c78c48f Debian Unstable has PostgreSQL 15 now 2022-12-09 23:48:07 +13:00
Debian Janitor
cc0d627a21 Remove constraints unnecessary since buster (oldstable)
* Remove 1 maintscript entries from 1 files.

Changes-By: deb-scrub-obsolete
2022-10-04 16:01:02 +00:00
Florian Schlichting
88670bfa39 release davical 1.1.11 2022-10-04 14:05:19 +02:00
Florian Schlichting
5b41b49f35 test_bullseye_carddavclientinterop: user3 description is empty 2022-10-04 12:39:50 +02:00
Florian Schlichting
8b71f09e32 test_bullseye_carddavclientinterop: Interop is now capitalized 2022-10-04 11:22:37 +02:00
Florian Schlichting
69d5c58a5b switch egrep to grep -E to avoid test failure
this is https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1019335, which
should be fixed but apparently isn't in the image we're using...
2022-10-04 09:41:09 +02:00
Florian Schlichting
f44a996432 do not report VTODO in freebusy (fixes: #267)
RFC 4791 clearly states in 7.10:
    Only VEVENT components without a TRANSP property or with the TRANSP
    property set to OPAQUE, and VFREEBUSY components SHOULD be considered
    in generating the free busy time information.

Looking at fa67ef987e, this used to be VFREEBUSY until the refactoring, and
0886-REPORT-freebusy.test still had that.

Apparently we're not (yet) considering VAVAILABILITY (RFC 7953) here.
2022-10-04 08:47:53 +02:00
Dirk Bauer
b3b2ccc6c0 Fixed php8 deprecation for htmlspecialchars (#fixes 266) 2022-07-12 03:25:15 +00:00
Andrew Ruthven
6cf8d5f81d Another attempt to make the results deterministic 2022-07-12 14:27:50 +12:00
Andrew Ruthven
b05a9b2cc0 Final result update?
This time I appear to have locally had the same result as on Gitlab.
I don't like this though, as the order keeps changing.
2022-06-29 00:08:16 +12:00
Andrew Ruthven
26b92a864d Try and be more deterministic. 2022-06-28 23:57:18 +12:00
Andrew Ruthven
d5cb124184 Report about dumping the database 2022-06-28 23:56:57 +12:00
Andrew Ruthven
d90d85d00e Make GET on a collection deterministic.
Turns out it was returning a sorted list based on a generated uuid, which
could be different in different regression environments. When I was
running tests locally I was always using the same initial.dbdump
file. The tests now pass even with a truely fresh regression DB.
2022-06-28 22:47:31 +12:00
Andrew Ruthven
6d61ed9f8d Update test results
This is now the ordering I consistently get, maybe this'll work on gitlab?
2022-06-28 20:28:21 +12:00
linda.fliss
e8b43e60db fixed debug injection 2022-02-18 15:55:36 +01:00
Andrew Ruthven
7cebd30eb5 Fix test result 2022-02-18 23:11:50 +13:00
Andrew Ruthven
0913f8ca69 Fix another PHP 8.1 error 2022-02-18 23:11:50 +13:00
Andrew Ruthven
5f71ccae8b Limit results for get_include_subcollections
Closes #231.
2022-02-18 23:11:50 +13:00
Paul Waite
dd5bd9c282 Provide a facility for setting an override URL which will replace the Change Password UI, and the Forgotten Password UI with a clickable link. 2022-02-12 14:02:54 +00:00
linda.fliss
45035ad488 improved refresh-alarms.php script 2022-02-12 13:47:37 +00:00
Andrew Ruthven
dcd240785d Fix the case of a variable 2022-02-13 02:17:28 +13:00
Andrew Ruthven
cf0e2774f6 Fix a second time where the array might be false. 2022-02-13 01:46:44 +13:00
Raivo Hool
f42627c89f Fix iSchedule configuration with PHP 8
Closes #252.
2022-02-13 01:45:25 +13:00
Andrew Ruthven
8f5a1d2bcc Another fix for PHP 8.1 2022-02-13 01:34:55 +13:00
Andrew Ruthven
836c715a1c Fix the version of AWL we want.
We do actually want 0.62.

Closes #253.
2022-02-13 01:21:17 +13:00
Andrew Ruthven
02af0c58ee Further fixes for PHP 8.1
I don't know why this only show up in the gitlab runners. I have PHP 8.1
locally.
2022-02-13 01:04:47 +13:00
Andrew Ruthven
1c77febeb1 gmstrftime is deprecated in PHP 8.1
Switch to using gmdate. One benefit is that gmdate doesn't respect
the locale, so we don't need the logic to hardcode the month
in English.
2022-02-13 00:42:49 +13:00
Andrew Ruthven
f1a4dcee0c More fixes for PHP 8.1 2022-02-12 23:59:26 +13:00
Andrew Ruthven
5d56f6b5ea Allow "&'<> in passwords.
We had already allowed these when changing a password, but they were
being escaped when logging in. Closes #259.
2022-02-12 23:48:50 +13:00
Andrew Ruthven
8096807c6d Fixes for warnings in PHP 8.1 2022-02-12 23:41:28 +13:00
Andrew Ruthven
9fb6be6f9c Debian Bullseye has PostgreSQL 13. 2022-02-06 13:57:07 +13:00
Andrew Ruthven
d304f47d10 Debian Unstable now has PostgreSQL 14. 2022-02-06 13:56:47 +13:00
Andrew Ruthven
0cf9cfc73a Switch testing to Bullseye, drop Stretch 2022-02-05 16:35:25 +13:00
Andrew Ruthven
c26ad777a2 We need $privilege_names in the list of globals.
Closes #250. Thank you to Laurent Hoareau and Jos Alsters.
2021-09-19 02:56:19 +12:00
Andrew Ruthven
c5cbd75be4 The knock on effects of making a new event for testing...
Missed one.
2021-09-19 02:43:34 +12:00
Andrew Ruthven
fbb6b34508 The knock on effects of making a new event for testing... 2021-09-19 02:33:32 +12:00
Andrew Ruthven
4a9190462c Fix regression tests following Piotr's fix in 467a6bf8900bd0c37f30e74b4adeb6ef801d4eb5 2021-09-19 02:08:33 +12:00
Andrew Ruthven
6d75ac8766 Merge branch 'piotrfilip/davical-fix/247' into master2 2021-09-19 02:04:58 +12:00
Andrew Ruthven
f82929e6a2 Regression tests that tickle #247
Zero duration meeting should have a zero duration time in Free/Busy,
but doesn't, the times are whacky.
2021-09-19 02:04:50 +12:00
Piotr Filip
467a6bf890 fix: Rfc5545Duration __toString returns "P" when in_duration==0 2021-09-18 13:48:39 +00:00
Andrew Ruthven
04f2da406e DTSTART and DTEND for Free/Busy is in UTC 2021-09-19 01:28:19 +12:00
Andrew Ruthven
255e8bf463 Add more details about time jump test 2021-09-19 00:39:52 +12:00
Andrew Ruthven
778f51ca28 Disabling raw gets rid of some of the garbage 2021-09-19 00:30:42 +12:00
Andrew Ruthven
c6e4189fa0 Strip off the space after the face as well 2021-09-19 00:14:59 +12:00
Andrew Ruthven
e47a6d4838 Re-add the headers from running via the webserver 2021-09-19 00:14:20 +12:00
Andrew Ruthven
029849c09b Test the time during a timezone change 2021-09-19 00:13:20 +12:00
Andrew Ruthven
efdbd77cad Add a time zone to a test to anchor it for consistent results 2021-09-19 00:02:53 +12:00
Andrew Ruthven
326afc8cfc Teach how to set timezone when running standalone
It is useful for debugging to run this command standalone, but in
that case it typically has to set the timezone for the database to
ensure that the times in the results are the same as the PHP times.
2021-09-19 00:01:01 +12:00
Andrew Ruthven
1e5c1fd1f3 Disable the debug mode, leave extra debugging output available 2021-09-18 23:22:57 +12:00
Andrew Ruthven
19e69060b9 Enable more debugging so I can see timezone differences in CI 2021-09-18 22:15:27 +12:00
Andrew Ruthven
9d520ab56d Don't check for magic quotes on PHP 8 or newer - functions removed.
This fix removes complaints about trying to call non-existant functions
as they have been removed from PHP 8. This closes #234.
2021-09-18 21:50:07 +12:00
Andrew Ruthven
e4f48ddc1a For RRULE BYMONTHDAY skip expansions where the new day is not the day we expect.
This fixes one of the issues raised in #248.
2021-08-11 22:36:38 +12:00
Andrew Ruthven
23831686bb Don't escape HTML characters in the password.
We allow them when users set their passwords, and no doubt allowed
from LDAP and other external sources. We should allow them to be
entered. Closes #229.
2021-08-11 21:42:01 +12:00
Florian Schlichting
9da21ad116 release davical 1.1.10 2021-03-01 21:24:48 +08:00
Andrew Ruthven
7ecd0bc6d0 Add a regression test for new invalid user result from FreeBusy 2021-03-02 00:33:10 +13:00
Andrew Ruthven
bda3db6da8 Return a nicer error message if no user is found for Free/Busy via email
Previously a stack trace would be returned as the call to dav_name failed,
for example:

Exception [0] Can't calculate dav_name for unknown username
At line 382 of /usr/share/davical/inc/Principal.php
================= Stack Trace ===================
/usr/share/davical/htdocs/freebusy.php[49] Principal->dav_name()
2021-03-02 00:26:49 +13:00
Florian Schlichting
90bcfba683 Update carddav/2042-REPORT-addressbook-query together with df6ff3a in AWL 2021-03-01 13:55:15 +08:00
Florian Schlichting
e92e981542 Listing External Calendars is part of the Administration menu and should be restricted to admins
this could be made configurable, or lumped in with
$c->restrict_setup_to_admin, but non-admins only get here by manually
entering the URL...
2021-02-09 01:54:32 +08:00
Florian Schlichting
202e2edd5a tighten $c->list_everyone to look for DAV::read privilege and actually block access to principals and collections
Groups really only exist in the davical web interface, CALDAV clients
discover principals and collections based on GRANTs such as the
DAV::read privilege, so use that for the web interface as well.

Also, not listing users is nice, actually blocking access to those users
(which can be enumerated with the id GET parameter) is a lot better.
2021-02-09 01:54:32 +08:00
Klaus M Pfeiffer
042ce5f076 add feature list_everyone (fixes #59) 2021-02-08 17:41:28 +00:00
Florian Schlichting
5c2cb6c34a CI: run interop tests from carddavclient by Michael Stilkerich <ms@mike2k.de> 2021-02-08 19:08:28 +08:00
Florian Schlichting
5ee16172af Add tests for AWLs "Fix param-filter that checks if a parameter is defined" 2021-02-08 17:38:17 +08:00
Florian Schlichting
9d144cfe24 Add test for AWLs "Fix param-filter for multi-value parameters with TYPE=T1,T2 format" and update 2044 accordingly
2044 wants VCARDs with either TEL or EMAIL of TYPE=WORK. !20 correctly
splits the comma separated list of parameters so another two vCards
now correctly match (see also
https://gitlab.com/davical-project/awl/-/merge_requests/20#note_503183133)
2021-02-08 17:29:26 +08:00
Florian Schlichting
fd35aacb85 Add tests for AWLs "Fix GetProperties: Select properties with group prefix" 2021-02-08 17:29:26 +08:00
Florian Schlichting
56dc373a71 Add tests for AWLs "Fix: GetProperties must treat property names as case-insensitive" 2021-02-08 17:29:26 +08:00
Andrew Ruthven
a1395eae0f Only return the fields that we need for the test 2021-02-07 01:28:06 +13:00
Andrew Ruthven
8d7c8bafd1 CI: Compress the Apache log files 2021-02-06 21:51:31 +13:00
Andrew Ruthven
b8ce995ffa CI: Ensure DAViCal can write to log files
This appears to be causing PHP 8 to bomb out.
2021-02-06 21:09:33 +13:00
Andrew Ruthven
48fcc1f7b5 CI: Turn on debug logging for all the test runs 2021-02-06 20:49:59 +13:00
Andrew Ruthven
ccedbd1be9 Include the UID of the card which caused us to hit the RRULE limit
This will helpfully assist tracking down issues with recurrence rules.
2021-02-06 20:19:03 +13:00
Andrew Ruthven
dca1eb75da Enable debug logging in CI 2021-02-06 19:58:51 +13:00
Andrew Ruthven
d822cdf4d0 Only return what we're testing, makes it easier to understand regressions 2021-02-06 19:51:43 +13:00
Andrew Ruthven
31fbfe5d88 Add test for anyof 2021-02-06 19:46:35 +13:00
Florian Schlichting
f476675b10 CI: do not clobber apache logs
and include "latestphp" in the test names
2021-02-05 11:34:25 +08:00
Florian Schlichting
f37fa814b6 update 2038-REPORT-addressbook-query after AWL's param-filter: fix a typo / explode multivalue commit
this refers to 6395cd1 in AWL

the added results seem correct, as they all have a TEL;TYPE=WORK
property
2021-02-05 02:05:05 +08:00
Florian Schlichting
ec234cda64 correct test results after AWL merges of mstilkerich/awl-fix_abookquery_paramnotdef and mstilkerich/awl-fix_support_anyof_propfilter 2021-02-05 02:01:09 +08:00
Florian Schlichting
b863c99601 add two more reports testing an allof prop-filter and an anyof text-match prop-filter
BUG: both results are incorrect as explained in the tests. I thought I
should nevertheless commit them to illustrate the fix.
2021-02-05 02:01:09 +08:00
Florian Schlichting
b4f8f5a6c1 cardquery: ensure restriction to target collection remains in force even when we find that we need a post_filter step and thus throw away the SQL
this ensures a sane (but still wrong) result for
carddav/2051-REPORT-carddavclient-ParamNotDefinedSome
2021-02-05 02:01:09 +08:00
Florian Schlichting
6e87a1443c add a REPORT for a property with multiple values, not all of which match the is-not-defined filter (carddavclient's ParamNotDefinedSome test)
BUG: as explained in the test, this should not match Jonny2; and it
should most certainly not match those other VCARDs from a different
user's collections!
2021-02-05 02:01:09 +08:00
Florian Schlichting
57f0bc6e41 add 4 VCARDs from carddavclient AddressbookQueryTest
we will run these tests in user5's addresses
2021-02-05 02:00:42 +08:00
Andrew Ruthven
f94b000cc1 Correctly exclude cards where TYPE is not set on TEL records.
Commit f1bc3b0dc00d42bb6c3053559230690ae1a6745b in AWL fixed this behaviour.
2021-02-04 23:14:49 +13:00
Andrew Ruthven
963772a0f0 Fix the test result and hopefully make the description clearer 2021-02-04 23:08:05 +13:00
Andrew Ruthven
7c37035201 I always get whitespace changes 2021-02-04 22:20:19 +13:00
Andrew Ruthven
55fde81b50 Add a bit more info about various suites, and how to time timezone 2021-02-04 22:15:10 +13:00
Andrew Ruthven
b00fc5d5e6 Merge remote-tracking branch 'origin/master' 2021-02-04 22:09:18 +13:00
Florian Schlichting
75f62a81f6 fix PHP8 deprecation warnings: "Required parameter X follows optional parameter Y"
Deprecated: Required parameter $username follows optional parameter $attributes in inc/drivers_ldap.php on line 190
Deprecated: Required parameter $passwd follows optional parameter $attributes in inc/drivers_ldap.php on line 190
Deprecated: Required parameter $ua_string follows optional parameter $min_age in inc/external-fetch.php on line 42

As explained in https://www.php.net/manual/en/migration80.deprecated.php,
    If a parameter with a default value is followed by a required
    parameter, the default value has no effect. This is deprecated as of
    PHP 8.0.0 and can generally be resolved by dropping the default
    value, without a change in functionality
2021-02-03 23:25:51 +08:00
Jan Hicken
6cdbfcf226 Add default value for errcontext variable in error handler function
This variable is no longer passed in PHP 8.0.

It cannot be removed however, because it would not be backwards
compatible.
2021-02-03 14:57:57 +00:00
Jan Hicken
f376be164e Use brackets instead of curly braces for string offset access
Curly braces have been deprecated in PHP 7.4 and unsupported in PHP 8.0.
2021-02-03 14:57:57 +00:00
Florian Schlichting
39bfe88887 CI: add build_buster_latestphp
this helps to identify issues with new PHP versions before they appear
in Debian

note: debuild sanitizes PATH, needs --prepend-path=/usr/local/bin so
that the (non-Debian) php cli can be found
2021-02-03 22:39:18 +08:00
Florian Schlichting
d6c1c87fc6 CI: build and test on Debian unstable, then several stable releases relevant to our users
stable releases currently include bullseye + buster + stretch; would be
nice if we could add Fedora or Gentoo or Arch ...
2021-02-03 01:18:16 +08:00
Florian Schlichting
8239519ca3 Normalize "100 Continue" headers
apache2 in bullseye has stopped sending these for some reason, but we
want to be able to test in both newer and older environments
2021-02-03 00:42:58 +08:00
Andrew Ruthven
18c19b8fad Test case for awl-fix_abookquery_negated_propnotdef 2021-02-02 16:21:46 +00:00
Andrew Ruthven
bd075897bb Merge branch 'awl-fix_abookquery_paramtextmatch' 2021-02-01 23:28:36 +13:00
Andrew Ruthven
f250d2deb5 Test case for negated values in awl-fix_abookquery_paramtextmatch 2021-02-01 23:27:42 +13:00
Andrew Ruthven
405af5e8d8 Merge branch 'awl-fix_abookquery_negated_propnotdef' 2021-01-31 21:34:24 +13:00
Andrew Ruthven
351b853948 Merge branch 'piotrfilip/davical-freebusy_count_fix' 2021-01-25 00:08:34 +13:00
Piotr Filip
e98bf7b682 fix: events with recurrence rule are sometimes counted one too many times in freebusy 2021-01-25 00:08:13 +13:00
Piotr Filip
bc1bbd3da0 test: remove dependency on the current date 2021-01-25 00:08:13 +13:00
Andrew Ruthven
33509866fb Update test results with new timezone data 2021-01-25 00:02:42 +13:00
Andrew Ruthven
99d9264320 Ignore zones.h and zones.tab 2021-01-24 23:47:11 +13:00
Andrew Ruthven
1c25d643e4 To start with there are no timezones in a fresh database 2021-01-24 23:44:40 +13:00
Andrew Ruthven
3817f2f61a Make the runs deterministic 2021-01-24 23:43:43 +13:00
Andrew Ruthven
b15e320fb7 Fix up update-tzdata.sh so it'll run
On my Debian Sid system, the readlink commands return the empty string.
Given we use these as output files and the files to fetch, I figure
that using hardcoded names is better.
2021-01-24 23:23:58 +13:00
Andrew Ruthven
696426bc81 Test case for awl-fix_abookquery_negated_propnotdef 2021-01-24 21:05:18 +13:00
Andrew Ruthven
9252a329d2 Test case for awl-fix_abookquery_paramtextmatch 2021-01-24 19:30:45 +13:00
Andrew Ruthven
e6a5fe8cb9 Test case for awl-fix_abookquery_paramtextmatch 2021-01-24 19:28:22 +13:00
Andrew Ruthven
65c0882672 Add help option for regression tests 2021-01-24 18:56:43 +13:00
Andrew Ruthven
b684e2468e Update some more results based on current regression tests 2021-01-24 00:27:04 +13:00
Andrew Ruthven
d06c74b297 Add test secondary (or more) properties
This tests commit 1ef4c75 in AWL.
2021-01-24 00:02:31 +13:00
Adrian Bunk
2a9ce31d1e Bug#962653: davical: diff for NMU version 1.1.9.3-1.1 2020-07-06 14:37:43 +08:00
Florian Schlichting
3e8e7f21ab gitlab-ci: use latest Debian stable (fixes #221) 2020-04-14 17:56:34 +02:00
Florian Schlichting
55d485045f release 1.1.9.3 2020-04-13 22:43:07 +02:00
Florian Schlichting
e64fd2b868 LSID logins were removed from AWL, drop related bits in davical 2020-04-04 17:44:12 +02:00
Florian Schlichting
699d077834 release 1.1.9.2: also check CSRF token in collection-edit.php 2019-12-12 00:25:20 +08:00
Florian Schlichting
007bf95589 use foreach() instead of deprecated each() (fixes #190) 2019-12-06 18:21:08 +08:00
Florian Schlichting
e2c6b927c8 HTTP_REFERER will usually be unset for caldav requests, prevent "Undefined index" warnings 2019-12-06 18:17:18 +08:00
nielsvangijzen
c8a0ca4531 Fix CSRF not being checked in collection-edit.php 2019-12-06 09:30:16 +01:00
Jim Fenton
a3acb770ac release 1.1.9.1: fix XSS function lost in rebuild of always.php 2019-12-03 16:35:08 -08:00
Jim Fenton
e2070c9b7a release 1.1.9 2019-12-03 15:10:05 -08:00
Jim Fenton
072207e1c8 Merge branch '194-confidential-issue' 2019-12-03 14:39:40 -08:00
nielsvangijzen
1a917b30eb Addressed comments made by @puck42 2019-11-29 09:58:46 +01:00
Andrew Ruthven
d3a8771d01 Merge branch 'cprn/davical-master' 2019-11-26 23:00:09 +13:00
Andrew Ruthven
65ce5d443e Fix syntax 2019-11-26 22:51:37 +13:00
Andrew Ruthven
8e7866c550 Use a placeholder for another instance of collection_id 2019-11-26 22:24:49 +13:00
nielsvangijzen
86a8ec5302 Added CSRF to the application (took in account backwards compatibility)
Mitigated the XSS vulnerabilities reported by HackDefense
Advisories for said vulnerabilities can be found here:
https://hackdefense.com/publications/cve-2019-18345-davical-caldav-server-vulnerability
https://hackdefense.com/publications/cve-2019-18346-davical-caldav-server-vulnerability
https://hackdefense.com/publications/cve-2019-18347-davical-caldav-server-vulnerability
2019-10-28 11:55:11 +01:00
Milan Crha
710bc6cccd Add missing 'break;' into RRule.php 2019-06-19 09:20:56 +00:00
Cyprian Guerra
2ba1d64b0c fixing Invalid parameter number: :collection_id 2019-03-28 10:52:32 +01:00
Florian Schlichting
75d4db9afb two more PHP5 curl 2019-03-11 22:46:37 +01:00
Andrew Ruthven
afe69f22d3 We need PHP curl, not specifically PHP5 curl 2019-03-07 16:15:34 +13:00
Jamie McClymont
535ae22ea1 Update minimum PHP version requirement (fairly conservatively)
For context, debian jessie has 5.6, ubuntu trusty (out of support) has 5.5.

I believe I have used 5.4 array syntax in some DAViCal code, and made a change to AWL which requires 5.2.
2019-03-06 04:58:17 +00:00
Jamie McClymont
9522fd5f3c Make range-based calendar queries use the new first_instance_start/last_instance_end columns 2019-02-28 16:00:19 +13:00
Jamie McClymont
b07019ed96 Make calquery expansion aware of the calendar default timezone
This fixes cases where we emit floating times
2019-02-28 16:00:19 +13:00
Florian Schlichting
97a2686459 fix more PHP7+ type hints for PHP5 compatibility (fixes #197) 2019-02-13 08:49:19 +01:00
Florian Schlichting
4af9595f4d release 1.1.8 2019-01-30 22:53:08 +01:00
Florian Schlichting
9bc94556b4 add users to new groups in the "update groups" step
do not maintain the same code twice
2019-01-30 22:28:58 +01:00
Florian Schlichting
8d622df3e5 honour do_not_sync_group_from_ldap when creating groups, correctly display all results
same for groups
2019-01-30 22:18:43 +01:00
Florian Schlichting
eb0e9a8aec honour do_not_sync_from_ldap when creating users, correctly display all results
despite its name, $c->do_not_sync_from_ldap did not stop accounts in
LDAP from being created in Davical, it only stopped accounts not in LDAP
from being deactived in Davical (like a local admin account)
2019-01-30 21:57:24 +01:00
Florian Schlichting
afcaacaf2a do_not_sync_from_ldap for groups (fixes #158) 2019-01-30 21:42:01 +01:00
Florian Schlichting
de1e994cab make the Admin role inheritable (fix #140) 2019-01-30 21:12:06 +01:00
Florian Schlichting
6627018f77 turn PHP7+ type hint into phpdoc (fixes #185) 2019-01-30 18:20:04 +01:00
Andrew Ruthven
ace5cfe855 Sure bet to ensure we use a higher version number than Debian 2019-01-30 23:00:22 +13:00
Andrew Ruthven
f658a45d38 Provide example of how to enable audit logging 2019-01-30 22:59:05 +13:00
Andrew Ruthven
dccd7997f7 Merge branch 'master' into hungerburg/davical-master 2019-01-30 22:25:46 +13:00
Andrew Ruthven
ebd169e555 Merge branch 'JJJollyjim/davical-freebusy-modified-instances' 2019-01-30 22:19:25 +13:00
Andrew Ruthven
8966a044a2 Merge branch 'JJJollyjim/davical-rrule-expansion-limit' 2019-01-29 23:06:03 +13:00
Jamie McClymont
cf2f019419 Increase, and make configurable, the limit for rrule expansion 2019-01-28 04:51:37 +00:00
Jamie McClymont
aea6be279b RRule Expansion: Do not emit recurrences for instances with RRULEs
This matches the behaviour of Evolution and Thunderbird
2019-01-28 17:17:28 +13:00
Jamie McClymont
ffa06343a3 Fix bugs in expansion of events with overridden instances 2019-01-28 15:29:55 +13:00
Jamie McClymont
6a3619aaad Swallow errors when updating instance ranges on TZ changes 2019-01-10 16:51:40 +13:00
Jamie McClymont
fe443bf2e6 Update instance range columns when a collection's timezone changes
TODO: Handle the case where it is updated through the web UI
2019-01-08 14:09:16 +13:00
Andrew Ruthven
7b55b7b1f2 meh, I give up on php for now 2019-01-05 00:31:37 +13:00
Andrew Ruthven
93f290e44d The pipeline showed 7.3 as being available, ah well. 2019-01-05 00:29:16 +13:00
Andrew Ruthven
f813fa3b0e Specific PHP version... 2019-01-05 00:27:40 +13:00
Andrew Ruthven
4c930a41d2 Package build wants dot for graphs, and to run php 2019-01-05 00:26:22 +13:00
Andrew Ruthven
65a6a51d7b Need to use sprintf! 2019-01-05 00:12:34 +13:00
Andrew Ruthven
6bcece8632 Make the default settings stand out more 2019-01-04 22:54:37 +13:00
Andrew Ruthven
bcdf59ae2e Merge branch 'JJJollyjim/davical-refactor-freebusy' 2019-01-04 22:37:25 +13:00
Jamie McClymont
c4321dac9f Fix excessive SQL queries in calendar-sync REPORT
The calendar-sync REPORT fetches the collection as a DAVResource, then
instantiates a DAVResource for each event in the collection.

Unfortunately, ByRow in DAVResource fetches the resource's collection from the
database!

This commit populates each DAVResource's collection field with the
already-fetched collection when performing calendar-sync queries.
2019-01-04 14:13:41 +13:00
Jamie McClymont
e449529f34 Fix tests after freebusy query changes
The todo item added in 0514-iCal-PUT-VTODO.test was apparently not picked up by
the PL/pgSQL functions, which as far as I can tell is an error, since the event
is in the 2006-2007 range covered by the query. The new
first_instance_start/last_instance_end method for determining freebusy
information now allows the todo to appear in freebusy.
2019-01-03 17:48:43 +13:00
Jamie McClymont
4f06aeec10 Use first_instance_start / last_instance_end to filter freebusy queries 2019-01-03 17:48:43 +13:00
Jamie McClymont
a2b393317d Populate first_instance_start and last_instance_end on resource write 2019-01-03 17:48:42 +13:00
Jamie McClymont
cf7de16e59 Handle default timezones in getVCalendarRange
Also includes some PHPUnit-based tests for this function!
2019-01-03 17:48:42 +13:00
Jamie McClymont
0c006b5c7c Make the recurrence range columns in the database tz-aware 2019-01-03 16:04:28 +13:00
Jamie McClymont
5fc3875345 Pull the freebusy floating-time handling into a function 2019-01-03 16:04:28 +13:00
Jamie McClymont
28c78023b5 Keep Apache logs as CI artifacts for debugging failures 2019-01-03 16:04:28 +13:00
Florian Schlichting
7330eaf995 checkpoint scheduling test results and add them to CI runner (fixes: #170)
I think these remaining changes are due to AWLs vCalendar->GetItip()
creating a "minimal iTIP version" of events, and Jan Mate's "various
scheduling related fixes" in 31af435c and 92f48f38
2018-12-31 03:34:37 +01:00
Florian Schlichting
df13612a68 mask unstable DTSTAMP in scheduling tests
It is reset to the current date in AWL's vCalendar->GetItip()
2018-12-31 03:23:08 +01:00
Andrew Ruthven
040ed9767f Merge remote-tracking branch 'origin/include-version-in-setup' 2018-12-30 21:58:18 +13:00
Florian Schlichting
19eb79ebf9 provide defaults for unused function parameters (fixes #155)
PHP 7.1 throws an exception when a user-defined function is called with
too few arguments: http://php.net/manual/en/migration71.incompatible.php

As explained in the comments, collection_privilege_format_function and
principal_privilege_format_function take three arguments because of
their use as a rendering callback, however the latter two of them are
never used and thus can be ommitted in other uses.
2018-12-29 19:38:13 +01:00
Florian Schlichting
0023b066fd Debian: use system perl in dba/update-davical-database 2018-12-29 11:54:09 +01:00
Florian Schlichting
3115c92a74 Update debian/watch to changed Gitlab directory layout 2018-12-29 11:10:24 +01:00
Florian Schlichting
44bb5cf7b6 fix to more uses of continue inside switch discovered by CI
I wonder why I saw the first few, but not these?
2018-12-22 19:56:25 +01:00
Florian Schlichting
a51caa38f1 properly check if $row has been unset (fixes #141)
Also fix deprecation warnings introduced with PHP 7.3 about the use of
continue inside switch statements, see
https://wiki.php.net/rfc/continue_on_switch_deprecation
2018-12-22 19:13:13 +01:00
Andrew Ruthven
55586c784e Remove use of $old_attendees
Closes #141
2018-12-22 19:12:50 +01:00
Florian Schlichting
9e8c3c47c4 Test: max-resource-size is no longer infinity
c5891abc7f brought back a new, higher limit, which is configurable by
the site admin.
2018-12-22 00:18:27 +01:00
Florian Schlichting
1301b2c494 Apache 2.4.35 stops sending Content-Type headers for 204 No Content responses
Normalize results so tests work with newer and older versions

This change is similar to e565cc0a5e4af0330fe5a1ab6f2476be7fb10df4 and
following

From the Apache 2.4.35 changelog:

  *) http: Enforce consistently no response body with both 204 and 304
     statuses.  [Yann Ylavic]
2018-12-22 00:12:54 +01:00
Florian Schlichting
c3654a9d48 call fetch_external with external_ua_string (fixes #164) 2018-12-22 00:02:09 +01:00
Florian Schlichting
c21313d05e Merge branch 'fix_max_carddav_resource_size' into 'master'
Introduce new global variable to control maximum size of carddav resources.

See merge request davical-project/davical!53
2018-12-21 22:43:53 +00:00
Andrew Ruthven
5effad3e80 Merge branch 'ci' into 'master'
Add Gitlab CI

See merge request davical-project/davical!56
2018-11-30 11:03:51 +00:00
Jamie McClymont
a4c9718bb2 Add Gitlab CI
Signed-off-by: Jamie McClymont <jamiemcclymont@catalyst.net.nz>
2018-11-30 15:59:04 +13:00
Jamie McClymont
0e0a07eb30 Fix returning dead properties in an allprop PROPFIND
dead_properties is an assoc.array from name to value, but it was being merged
with simple arrays of property names.

This means that tests 0824 and 0828 now actually return the dead properties, so
I've updated those result files.

Signed-off-by: Jamie McClymont <jamiemcclymont@catalyst.net.nz>
2018-11-30 15:59:04 +13:00
Andrew Ruthven
8c01c83e4b Ignore the id in our test comparision
Gitlab CI has a different collection_id for US Holidays than running
the tests locally. We don't actually care about ID for this test,
just the fact that the binding is present is enough for us.
2018-11-30 15:02:53 +13:00
Andrew Ruthven
0c074e4348 Explicitly set the Charset to use, and look for the usual format.
In the GitLab CI environment, the command:

@header("Content-Type: text/plain");

Generates the Content-Type line of:

Content-Type: text/plain; charset=UTF-8

But on my workstation it generates this:

Content-Type: text/plain;charset=UTF-8

By adding that charset to our call to @header, we receive a
predictable result.
2018-11-29 13:40:12 +13:00
Andrew Ruthven
9d2969982c Exclude the ctags from the test
We don't really care about the ctag in this test, and the ctag
for user1 will change from test run to test run.
2018-11-29 13:24:25 +13:00
Andrew Ruthven
46c76c645f Atually, options aren't supported on the end of REPLACE 2018-11-29 13:20:44 +13:00
Andrew Ruthven
bdc480b785 Merge branch 'freebusy-no-ci' into 'master'
Correctly place floating events in freebusy

Closes #169 and #146

See merge request davical-project/davical!57
2018-11-13 22:19:49 +00:00
Andrew Ruthven
12565cb6bd Make the tests more interesting by using ctag 2018-11-12 20:14:40 +13:00
Andrew Ruthven
deb743fdcf Add tests for: Fix Fatal PHP Error if Depth is more than 1.
I'm not 100% this is working as intended, but it does kind
of make sense.
2018-11-12 20:00:20 +13:00
Andrew Ruthven
48efbb272b Fix Fatal PHP Error if Depth is more than 1.
Merge request was proposed by xhess on GitLab, but the commit
had no content. I've solved it, possibly the same way.

For the initial commit:
Executing the second example at https://wiki.davical.org/index.php?title=PROPFIND
The "Depth: 2" header is the problem. Setting the depth header larger than 1
causes the function "compare_val_with_re" to be defined again. Now checking if
the function has already been defined fixes the problem.
2018-11-12 19:32:34 +13:00
Andrew Ruthven
872f4fc6ad Allow over riding the value of ALLSUITES 2018-11-12 18:33:01 +13:00
Andrew Ruthven
a394c73cc4 This looks like an acceptable change 2018-11-12 18:31:28 +13:00
Andrew Ruthven
95ad5ec373 Allow database dumps to be restored in test suite.
Primary fix is the search_path to ensure that the collection table
is in the search path so that the copy into dav_binding (and
possibly others) will work.

I also suppressed the warning about plpgsql.
2018-11-12 18:00:30 +13:00
Andrew Ruthven
b0a1c9212d Ignore the PostgreSQL version for tests
This just creates bogus test result diffs.
2018-11-12 17:59:51 +13:00
Jamie McClymont
ec67b28bf0 Guess the timezone of non-all-day floating events in freebusy
Signed-off-by: Jamie McClymont <jamiemcclymont@catalyst.net.nz>
2018-11-09 15:41:02 +13:00
Jamie McClymont
91aaf48648 Guess the timezone of VALUE=DATE events in freebusy
Resolves #146
2018-10-31 12:09:45 +13:00
Andrew Ruthven
ca5c618740 Add trivial translations of Passed: %s, using what is already present for Passed. 2018-10-02 20:41:42 +13:00
Andrew Ruthven
979667850b If DAViCal or AWL versions pass, show the running version.
Closes #151
2018-10-02 20:41:12 +13:00
Andrew Ruthven
bc61d51f5b Test that max-resource-size is infinity.
Commit 9a430130d84e9512ebaecdb02d634c367b63de46 removed the limit,
update the regression tests to reflect this.
2018-10-02 19:55:25 +13:00
Andrew Ruthven
2873c89149 Fix a typo of this.
Closes #145
2018-10-02 19:53:44 +13:00
“Paul
c5891abc7f Introduce new global variable to control maximum size of carddav resources. 2018-08-30 17:23:12 +02:00
Paul Kallnbach
9a430130d8 increase maximum resource size to infinity. this might be potentially dangerous but it is what's claimed in inc/caldav-MKCOL.php:
case 'urn:ietf:params:xml:ns:caldav:max-resource-size':  /** Ignored, since we will support arbitrary size */
this solves issue #80 (large contact photos not being accepted by the server). we might wanna think about a larger limit instead, e.g. increase the limit from 65kB to 6.5MB
2018-05-22 15:17:28 +00:00
Florian Schlichting
5801916722 Merge branch 'awl_appuser-awl_dbauser' into 'master'
Allow user to define awl_appuser and awl_dbauser on create-database script

See merge request davical-project/davical!48
2018-04-25 16:25:06 +00:00
Florian Schlichting
04bf91cf5c Merge branch 'php4-constructor-removal' into 'master'
replace php4 style constructors with __construct

See merge request davical-project/davical!50
2018-04-25 16:08:05 +00:00
Florian Schlichting
b3c9480b6e Merge branch 'patch-1' into 'master'
Fix a typo in DAV_AllProperties which caused dead properties to be omitted

See merge request davical-project/davical!51
2018-04-25 16:02:06 +00:00
wmbr
fc37b68461 Fix a typo in DAV_AllProperties which caused dead properties to be omitted 2018-04-25 00:50:53 +00:00
Till Schäfer
26bab04599 replace php4 style constructors with __construct 2018-03-21 16:59:35 +01:00
Antoine
c2254d7682 Allow user to define awl_appuser and awl_dbauser on create-database script 2018-02-21 12:36:03 +01:00
Florian Schlichting
d459b489ac external fetch: improve error reporting 2018-01-13 23:46:46 +01:00
Florian Schlichting
81874649f7 external fetch: handle initial NULL of collection.modified 2018-01-13 23:22:12 +01:00
Florian Schlichting
05397d635c release 1.1.6 2018-01-12 00:15:36 +01:00
Florian Schlichting
59b4c2c8ed switch to doxygen for api docs 2018-01-11 23:43:25 +01:00
Florian Schlichting
b8df885484 put the most important debug options in a more visible place 2018-01-11 23:36:16 +01:00
Frank Steinberg
9363a3d19a Improved handling of event modifications:
- only some event attributes modified by the organizer get also modified in attendees' instances of the event,
- revoked invitations mark the according attendee's event appropriately,
- a changed event time resets all attendees' PARTSTAT to NEEDS-ACTION.
2018-01-11 23:08:17 +01:00
Florian Schlichting
4e5d3ceda4 update unit test due to previous commit 2018-01-11 22:13:07 +01:00
Nomad Arton
c04f818c4c Make log_caldav_action log calendar_item summary 2018-01-11 14:09:35 +00:00
Nomad Arton
bc7fd66b5f Make log_caldav_action log to syslog
Additionally, not only log intended actions,
but also log completed actions
2018-01-11 14:02:30 +00:00
Nomad Arton
0164cd38ab Move log_caldav_action() so that it is called before the DELETE 2018-01-11 13:57:03 +00:00
Andrew McMillan
5edf66321d Fix common etag match code, use it everywhere. 2018-01-10 21:50:55 +00:00
Andrew McMillan
0966e5ce68 Tidy up some PHPdoc in DAVResource 2018-01-10 21:50:39 +00:00
Florian Schlichting
db709ddebd Merge branch 'ldap-uid-vs-cn' into 'master'
LDAP: any 'dn' compatibility

See merge request davical-project/davical!43
2018-01-10 21:39:21 +00:00
Florian Schlichting
a4940ac1e3 Merge branch 'ldap-sync-activate-users' into 'master'
LDAP: sync re-activate users

See merge request davical-project/davical!42
2018-01-10 21:36:10 +00:00
Andrew McMillan
ce19c87208 Merge branch 'correct-duration-handling' into 'master'
Correctly handle durations without units like "PT"

Closes #136

See merge request davical-project/davical!41
2018-01-10 21:35:44 +00:00
Jean-Baptiste Guerraz
79acc80eb7 use php ldap explode in order to be compatible with any dn 2018-01-10 17:00:13 +01:00
Jean-Baptiste Guerraz
0fa38c8580 sync ldap user - reactivate 2018-01-10 15:55:26 +01:00
Andrew McMillan
58cf5b01ad Correctly handle durations without units like "PT"
While this has always been handled in basic event parsing the handling
in VALARM components for related triggers was missing.
2018-01-10 14:10:12 +00:00
Florian Schlichting
bc9c39c455 add regression tests for iCal handling calendar delegations 2018-01-09 23:11:04 +01:00
Florian Schlichting
4335e790d1 drop tests/regression-suite/0528, same as 0527 2018-01-09 22:15:29 +01:00
Florian Schlichting
8b9b8ed244 rename DAVResource->_is_proxy_request to _is_proxy_resource 2018-01-09 22:15:29 +01:00
Florian Schlichting
e417061f29 Finally: implement managing calendar delegations from iCal
This is done with a PROPPATCH to the user's calendar-proxy-read or
calendar-proxy-write pseudo-collection, listing the new delegates inside
the group-member-set tag.

See https://github.com/apple/ccs-calendarserver/blob/master/doc/Extensions/caldav-proxy.txt
2018-01-09 22:15:18 +01:00
Florian Schlichting
17c2022122 group-member-set and group-membership queries on proxy resources should be handled in DAVResource
Otherwise we cannot be sure if the resource we are looking at is a
proxy. Looking at the request as we did in DAVPrincipal is wrong, as one
request can result in several resources to be examined, only some of
which may be proxies.

BTW looking at the regression test changes, I'm not sure having
calendar-proxy-read-for on proxy principals is correct, but caldav-proxy
seems to have nothing to say on that so we leave it for now.
2018-01-09 22:11:30 +01:00
Florian Schlichting
6687bdcf03 update regression tests due to FetchProxyGroups changes 2018-01-09 01:30:38 +01:00
Florian Schlichting
ded783a603 DAVPrincipal->FetchProxyGroups(): disable grants_proxy_access_from_p()
I just don't get how it's supposed to work, but it doesn't seem to
return the expected proxy delegates. This SQL doesn't expand groups,
which is a feature, and in general we only look at the grants table and
completely disregard any default privileges the principal might have
set.
2018-01-09 01:30:18 +01:00
Florian Schlichting
7181e466eb DAVPrincipal->FetchProxyGroups(): invert arguments to pprivs()
this needs to be the other way round than above
2018-01-09 01:04:16 +01:00
Florian Schlichting
83e9106160 add DAVResource->IsProxyCollection() 2018-01-08 23:10:23 +01:00
Florian Schlichting
a7ba436f2f advertise support for principal-match REPORT
and a few more bits inspired by CalDAV/aclreports.xml:
    - strict Depth header checking
    - principal-match: match on dav_name if not $match_self
    - principal-match can "alternatively" return resources in a collection
      that belong to a principal, like a user's calendars when we query
      the principal URI
2018-01-08 22:51:22 +01:00
Florian Schlichting
f37daa4ed7 clean up obsolete code: supported_methods and supported_reports was moved to DAVResource 2018-01-08 22:45:33 +01:00
Florian Schlichting
eba26021c7 update doc and fix a warning 2018-01-08 22:43:27 +01:00
Florian Schlichting
50a29d96ab UI: create external bindings with type set (fix: #132) 2018-01-03 00:57:05 +01:00
Florian Schlichting
e02c8e37bb Merge branch 'patch-1' into 'master'
add PT to follow alias

See merge request davical-project/davical!40
2017-11-20 16:08:19 +00:00
CSchulz
cea49fe4a1 add PT to follow alias 2017-11-20 11:50:13 +00:00
Florian Schlichting
79a3cb9e33 Document $c->hide_bound and $c->disable_caldav_proxy_propfind_collections config options
These were added by Jan Mate in 2014 in 6229409 and c32a288
2017-10-25 23:34:36 +02:00
Florian Schlichting
3ba605288f release 1.1.6 2017-10-25 11:48:43 +02:00
Florian Schlichting
7674fe9831 'perl update-davical-database' did not find the intended config file / patchdir
people may use that invocation in addition to calling
/usr/share/davical/dba/update-debian-database, and happen upon a
cryptic error when YAML tries to parse dba/update-davical-database
instead of config/administration.yml
2017-10-09 10:17:03 +02:00
Florian Schlichting
5dc4aed87c testsuite: support /principals/users/ and similar special URLs 2017-10-04 23:28:03 +02:00
Florian Schlichting
8d1a4dba0f testsuite: update for calendar-user-type support 2017-10-04 23:28:03 +02:00
Florian Schlichting
2ed5edaf5a Update scheduling test-suite: consistent linebreaks, unnecessary quoting, etags 2017-10-04 23:28:03 +02:00
Florian Schlichting
50dd8a8d73 fix confusing comments 2017-10-04 23:28:03 +02:00
Florian Schlichting
8f16da75eb fix "PHP Warning: preg_match(): No ending delimiter '.' found"
the second argument of param_to_global, if set, becomes the first
argument of a call to preg_match(). Unless it's the special value 'int',
it needs to have regex delimiters around it, like '/.*/'

In this case, we're not interested in the value of the add-member
parameter, we only want to check for its existence, so skip validation.
2017-10-04 23:02:12 +02:00
Florian Schlichting
528f4dd62d add a log entry for login failures (fix #105) 2017-10-04 22:36:33 +02:00
Florian Schlichting
88bf8fa704 PUT: actually propagate database error to client (fix: #127) 2017-10-04 22:36:33 +02:00
Florian Schlichting
39001794a3 Update caldav_functions.sql for Postgresql 10
From version 10, Postgresql does not allow set-returning functions in
CASE statements. As we're using the functions recursively, we cannot
use LATERAL as suggested in the error message, but we can switch the
condition inside-out with only a limited amount of repetition.
2017-10-04 22:36:29 +02:00
Florian Schlichting
6ad5511c1e fix "PHP Notice: Undefined property" warnings 2017-10-04 22:36:07 +02:00
Florian Schlichting
b9ea83379c Merge branch 'calendar_user_type' into 'master'
Add support for calendar-user-type

See merge request davical-project/davical!39
2017-10-04 20:29:01 +00:00
Pierre GIRAUD
8e04eb27ae
Add support for calendar-user-type 2017-10-03 11:44:19 +02:00
Frank Steinberg
3bb6cd4479 Resolve attendee group names to lists of individual users. Configurable by $c->enable_attendee_group_resolution (from !21) 2017-09-21 23:27:51 +02:00
Florian Schlichting
44ff0b3286 update tests for changed etags, unstable REV/UID or sort order, improved property parsing
Changed line wrapping in awl is one major reason for etag changes.

With this commit, all tests in regression-suite, binding and carddav
pass for me, using the configuration outlined in README.regression_tests
2017-09-21 00:39:30 +02:00
Florian Schlichting
0cab01f390 dav_test: all files and I/O are UTF-8 2017-09-21 00:39:24 +02:00
Florian Schlichting
69ef196730 create-database.sh: call update-davical-database with --dbuser instead of just --owner (see #124) 2017-09-20 17:02:57 +02:00
Florian Schlichting
10bb69d0a0 Card search invalid when negate-condition="no" (fixes #126)
Thanks Bart Vullings for reporting the bug and providing a fix!
2017-09-20 16:15:58 +02:00
Florian Schlichting
b550352aa5 POST: Fix namespace for caldav scheduling privileges
we use CALDAV:schedule-foo-bar in AllowedTo, but here it causes
XMLDocument to throw a DAViCal Fatal Error: [0] Dodgy looking namespace
from 'CALDAV:schedule-send-invite'!
2017-09-19 21:23:06 +02:00
Florian Schlichting
4410d7e94a dont put caldav.php in special URLs 2017-09-19 21:23:06 +02:00
Florian Schlichting
7f59b828d5 log failed attempts to set_dav_property
the path is not a known regular principal, collection, binding or resource
2017-09-19 21:23:06 +02:00
Florian Schlichting
7e3a9a476f group memberships for the calendar-proxy-{read,write} pseudo-principal are always empty
Only regular principals can be members in any groups, for
pseudo-principals group membership doesn't make sense. In case somebody
asks, do not return the group memberships of the parent principal but
rather provide an empty answer.
2017-09-19 21:22:58 +02:00
Florian Schlichting
8c5101c185 PROPPATCH: reject protected properties group-membership, calendar-proxy-{read,write}-for 2017-09-19 21:19:15 +02:00
Florian Schlichting
a6b286ab98 caldav-proxy 5.2: calendar-proxy-read/write are themselves principal resources
Fixes the CalDAV/calendaruserproxy.xml test.
2017-09-19 21:19:02 +02:00
Florian Schlichting
63c4de9f34 do not advertise ?add_member on a principal
We wouldn't know what to do with that anyway...

Fixes the CalDAV/add-member.xml test.
2017-09-19 21:16:43 +02:00
Florian Schlichting
5f3aecfda4 Revert "Support http://.../freebusy.php?foo@example.com"
This reverts commit 38788acc5cbec147d6a46a6254ef8eec0a270c71, which
causes the following tests to fail (not return any FREEBUSY):

    tests/regression-suite/0832-freebusy.test
    tests/regression-suite/0836-freebusy.test
    tests/regression-suite/0837-freebusy.test
    tests/regression-suite/0888-GET-freebusy.test
2017-09-19 20:01:00 +02:00
Florian Schlichting
40e2714adf use new AWL class constructor (fixes: #119) 2017-05-29 23:04:30 +02:00
Florian Schlichting
b4a1e39d6d CalDAVRequest: make content-type match non-greedy
this fixes a warning when the client doesn't include a space between
content-type and charset:

LOG: WARNING:Application sent content-type of "text/vcard;charset=utf-8" instead of "text/vcard"
2017-05-17 11:20:21 +02:00
Andrew Ruthven
22e0e4aa38 Improve parsing of RFC5545 durations
The previous regex failed to parse PT15M which is a valid duration.

This version more correctly implements:
  https://tools.ietf.org/html/rfc5545#section-3.3.6

It isn't totally correct as it incorrectly allows:

  PT10H20S

Which is invalid due to no minutes being present. Oh well.
2017-05-17 11:06:29 +12:00
Andrew Ruthven
38788acc5c Support http://.../freebusy.php?foo@example.com
Sometimes users set the Free/Busy URL to have a ?, not a /. Let's
support that.
2017-05-16 13:33:19 +12:00
Florian Schlichting
b1191bd83c caldav: leave some info about the exception we are catching 2017-04-28 17:43:13 +02:00
Florian Schlichting
ebdd6b1674 fix config example as well 2017-04-25 00:10:22 +02:00
Florian Schlichting
bbea62d288 Merge branch 'server-array-upper' into 'master'
Convert array keys for $_SERVER to uppercase

See merge request !38
2017-04-24 21:59:08 +00:00
Florian Schlichting
513e58fa41 Merge branch 'external-ua' into 'master'
Set the user agent string for external calendars

Closes #115

See merge request !37
2017-04-24 21:20:34 +00:00
Jan Losinski
b5072dd154 Set the user agent string for external calendars 2017-04-24 21:20:34 +00:00
Florian Schlichting
a16dfc7c41 cardquery: query limit can be used independently of any query filter 2017-04-24 22:31:32 +02:00
Florian Schlichting
76e540fb0a cardquery: typo, ends-with has wildcard in front 2017-04-24 22:30:53 +02:00
Florian Schlichting
29e2dbfe92 cardquery: a prop-filter without an actual filter rule means we simply need to ensure the property exists
This guards against a crash when calling ->GetNSTag() on a non-object.

This may need to be refined in case we could be dealing with something
that's not a prop-filter.
2017-04-24 22:25:18 +02:00
Jan Losinski
e97c9674e9 Convert array keys for $_SERVER to uppercase
It seems to be the case, that array indicies in $_SERVER are always
uppercase. Sadly I could not find any documentation of this but at
least with mod_php it is the case. Also a extensive search on github
projects seems to support this thesis.

On my installation the 'X-FORWARDED-PROTO' is even then uppercase when
its mixed case in the Header provided by the reverse proxy.

Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
2017-04-13 03:00:36 +02:00
Florian Schlichting
06e20e5508 dont send early exceptions to the client only, leave a trace in the error log too 2017-04-08 16:43:21 +02:00
Florian Schlichting
323292eb8c log an error instead of crashing on principal-property-search REPORT without a proper match clause (fix #114) 2017-04-08 14:41:50 +02:00
Florian Schlichting
e94d69d3f7 do not output unescaped XML special characters in if-match error message (fixes: #113) 2017-04-08 13:54:49 +02:00
Rik Theys
e0b8ecada5 Fix modified mapping (fix #108)
The checks to test if a "modified" attribute was found in the
$valid array used in_array, which fails.

Replace this with array_key_exists calls.

This fixes https://gitlab.com/davical-project/davical/issues/108

[ $mapping['modified'] is a key in $valid, not a value. This is a
regression introduced in 970b61ac, for 1.1.5 ]
2017-04-08 00:09:50 +02:00
Florian Schlichting
d205521bd4 drivers_ldap says "updated" has been replaced with "modified", so update example config accordingly 2017-04-07 23:58:33 +02:00
Scott Balneaves
8313f765ce Only list active principals in grant selection
modified as per Andrew McMillan's suggestion
2017-04-07 15:09:53 +02:00
Scott Balneaves
8052111635 modify hide_older_than logic to allow through recurring events (fixes #103, !36) 2017-04-07 15:08:10 +02:00
Florian Schlichting
1c174f4b78 fix sync of deleted events when hide_todo is set (fixes #100)
thanks Jerome Borsboom @hinotori
2017-04-07 14:29:42 +02:00
Florian Schlichting
74828c8c60 Update testsuite for changes related to #112 (4cf6628) 2017-04-07 14:17:00 +02:00
Florian Schlichting
4cf6628ea5 cannot-modify-protected-property should be used with 403 Forbidden, not 409 Conflict
see the end of https://tools.ietf.org/html/rfc4918#section-16 (WebDAV,
Precondition/Postcondition XML Elements)
2017-03-29 11:22:44 +02:00
Florian Schlichting
fb4f80d4c1 do not put two sets of angle brackets around cannot-modify-protected-property error tag (fixes #112) 2017-03-29 11:20:35 +02:00
Florian Schlichting
f1ca12bbe9 Fix display of deactivated users after LDAP sync to not include those in $c->do_not_sync_from_ldap
...thus reducing the rate of heart attacks in DAViCal admins.

Also: ignore empty user objects that my LDAP server seems to generate.
2017-03-27 16:56:34 +02:00
Florian Schlichting
7ccc7c4491 release 1.1.5 2017-01-23 23:04:46 +01:00
Florian Schlichting
e50b366d46 Override erroneous lintian errors 2017-01-23 23:04:09 +01:00
Florian Schlichting
940c522aab Mark davical-doc "Multi-Arch: foreign" as suggested by the Multiarch hinter 2017-01-23 23:04:05 +01:00
Florian Schlichting
3702cac409 Use jdupes to remove duplicate files in davical-doc 2017-01-23 23:04:01 +01:00
Florian Schlichting
3ca2801059 Install example configs as /etc/davical/config.php and /etc/apache2/sites-available/davical.conf 2017-01-23 23:03:57 +01:00
Florian Schlichting
0f28e186c4 Make extra sure that the orig-source tarball does not contain any cruft 2017-01-23 23:03:52 +01:00
Florian Schlichting
a7dd4372b7 Bump dependency on libawl-php to 0.57 2017-01-23 23:03:47 +01:00
Florian Schlichting
129e962050 Update ChangeLog and CREDITS 2017-01-23 23:03:11 +01:00
Florian Schlichting
4f72fdfea1 Bump davical version to 1.1.5, DB is at 1.3.2 2017-01-23 23:02:56 +01:00
Florian Schlichting
caaad9ce85 Document remaining config settings for which there are defaults, as well as the very useful skip_bad_event_on_import 2017-01-23 22:59:35 +01:00
Florian Schlichting
dc9edfcfda Update regression suite for gratuitous whitespace changes 2017-01-17 23:40:54 +01:00
Florian Schlichting
2a84694331 Unbreak locale selection in admin interface
http://php.net/manual/en/function.setlocale.php says "Different systems
have different naming schemes for locales." This seems to be true for
platforms (eg Win vs. Linux), but on Debian AFAIR locales were always at
least two-part (de_DE), never just one (de). This seems to have been
broken in 504651a3, likely by mistake.

Also, switch locale immediately, even before writing to the database.

BTW, what happens when system default locale is configured to e.g. fr_FR
and the user selects "English" - does that work?
2017-01-17 23:40:26 +01:00
Florian Schlichting
21b5f8bacf Update apache-davical.conf adding .well-known rewriting 2017-01-17 23:39:53 +01:00
Florian Schlichting
6edd828803 Fix ldapDriver instantiation 2017-01-17 23:36:05 +01:00
Marc
364bbd1df5 allow admins to manually toggle the uniqueMember fix via config (fix #102) 2017-01-17 23:30:59 +01:00
Cyril Giraud
ee0e5e6656 Update translations from Transifex (French + some trivial updates in otherZZ languages). 2017-01-15 21:51:57 +01:00
Cyril Giraud
4a4f578c49 PHP strings extraction with rebulid-translations.sh + tx push -s -t 2017-01-14 23:40:36 +01:00
Florian Schlichting
1335a6117b UI: create internal and external bindings (closes: #90) 2017-01-11 00:13:52 +01:00
Florian Schlichting
93bd6073b1 creating a DAVResource from "/ " loops a lot 2017-01-11 00:10:33 +01:00
Florian Schlichting
0ca04aaa68 UI: do not show tickets unless user has write access; they are like passwords
Same with external URLs

Also restrict Delete buttons on incoming binds to Admins: these binds
will usually live in other people's namespace, which we should not
alter, and may be restricted to default privileges (e.g. freebusy)
anyway
2017-01-11 00:10:21 +01:00
Florian Schlichting
ab7dad057d UI: use ExtraRowFormat to fix tooltip on action rows / buttons 2017-01-10 22:14:42 +01:00
Florian Schlichting
727fe290b4 make clean should also clean regression testing artefacts 2017-01-10 22:14:36 +01:00
Florian Schlichting
3b35350e8b Make sure all configuration settings described at https://wiki.davical.org/index.php/Configuration/settings are documented in the example config files (cf. #76) 2017-01-08 22:18:07 +01:00
Florian Schlichting
09d1f67b39 Bump years on debian/copyright 2017-01-08 16:39:03 +01:00
Florian Schlichting
2c11535eb0 use secure URIs where possible 2017-01-08 15:48:52 +01:00
Florian Schlichting
fd36a1f5a5 destroy LSID cookie when actively hitting "Logout" (fixes #56, Debian #703138) 2017-01-08 02:12:22 +01:00
Florian Schlichting
93d3b6daba remove logout button when the webserver does auth, or use a configured logout URL (fixes #67, Debian #703130) 2017-01-08 02:08:13 +01:00
Florian Schlichting
202542dc1b updates for bulk addressbook import 2017-01-07 02:17:29 +01:00
Florian Schlichting
e245b8d1fb support for bulk addressbook import (thanks Jorge Lpez Prez) - fixes #74 2017-01-06 16:06:11 +01:00
Florian Schlichting
4d689f8539 Create configured default relationships from all drivers as well as for internal auth (closes: #75)
previously, this was only usable with the LDAP driver
2017-01-06 16:06:11 +01:00
Florian Schlichting
2c0c65d08a add optional support for X-Forwarded-Proto etc (closes: #87)
Modify the relevant $_SERVER variables directly, as we're using them in
various places in davical and awl.
2017-01-06 16:06:11 +01:00
Florian Schlichting
55d15d2eed use https for retrieving current_davical_version (fixes #1) 2017-01-06 16:06:11 +01:00
Florian Schlichting
ad763744f1 fix a typo, add a debug statement
WriteAddressbookMember doesn't exist, but as far as I can see it is only
referenced from WriteMember, which itself isn't used anywhere...
2017-01-06 15:04:59 +01:00
Florian Schlichting
78669a3078 delete obsolete entries when updating addressbooks as external resources (see comment on !34) 2017-01-05 11:55:15 +01:00
Florian Schlichting
81e404264f Merge branch 'addressbook_sync_token' into 'master'
Allow updating addressbooks as external resources. (Closes #93)

Closes #93

See merge request !34
2017-01-05 10:31:11 +00:00
Florian Schlichting
f8ee381840 Add a test case for /user/calendar-proxy-read/ with return=minimal
and update 0525-iCal-PROPFIND now that we return a result for proxy
group-member-set
2017-01-04 22:32:58 +01:00
Florian Schlichting
c71bf2511e fix expand-property "group-member-set" on calendar-proxy-write URL (closes: #88) 2017-01-04 22:32:58 +01:00
Florian Schlichting
e7c43a0689 fix infinite loop when finding delegates (closes #48) 2017-01-04 20:52:03 +01:00
Florian Schlichting
11c56c85b1 sort example-config.php, add "Scheduling" section and integrate imap_pam_conf_php.txt 2017-01-02 22:13:40 +01:00
Florian Schlichting
adce3f48a9 provide a .ics download link in collection view and document $c->get_includes_subcollections 2017-01-02 21:57:41 +01:00
Florian Schlichting
10ed3ffc84 misc changes to get more tests to pass
Status: binding almost passes, carddav and scheduling have some issues,
timezone seems hopeless (dependency on remote URL that is 404)
2017-01-01 20:46:36 +01:00
Florian Schlichting
4ef5730bef Restore-Database.result: error setting plpgsql COMMENT and lots more setval in dump 2017-01-01 20:46:36 +01:00
Florian Schlichting
fa2517b983 Update other testsuites for contenttype, PROPPATCH and 204 No Content changes 2017-01-01 20:46:31 +01:00
Florian Schlichting
e565cc0a5e Apache 2.4.24 doesn't send Content-Length: 0 headers for 204 No Content responses
...and is more strict parsing HTTP. Let tests pass on both old and new
versions.
2017-01-01 16:28:37 +01:00
Florian Schlichting
c305bef787 $principal->fullname is not a method (fixes #101) 2017-01-01 12:35:45 +01:00
Florian Schlichting
3b85efc88a document AWL debug logging improvements 2016-12-31 17:34:10 +01:00
Florian Schlichting
bd9d5eacf2 $session: document ->username, actually implement ->fullname 2016-12-31 15:15:33 +01:00
Florian Schlichting
fc78600e64 Allow deletion of collections, tickets, bindings of principals to whom you have write access (closes: #47)
Previously, only the Admin or the principal herself could delete a
collection. Deletion is immediate and irreversible, so there is a risk
in allowing this. But it doesn't make sense to allow the creation of a
test collection and then block the subsequent clean-up.
2016-12-30 21:43:29 +01:00
Florian Schlichting
c0a2d6a7ee do not show edit buttons on admin pages when not allowed to edit 2016-12-30 18:47:46 +01:00
Florian Schlichting
fcace79813 display an error message when not allowed to delete something on the admin page 2016-12-30 16:25:53 +01:00
Florian Schlichting
f24c62531a inc/ui/collection-edit.php: display only privileges applicable for collections 2016-12-30 08:54:28 +01:00
Florian Schlichting
404d9ab449 fix remaining apigen errors (duplicate function names etc) 2016-12-30 08:54:24 +01:00
Florian Schlichting
7cadfc9463 lets have only one function check_for_expansion() 2016-12-30 08:54:19 +01:00
Florian Schlichting
eaef540766 replace RRule with RRule-v2 2016-12-30 08:54:14 +01:00
Florian Schlichting
2a64f0be84 clean up apigen errors (closes: #85) 2016-12-30 08:54:10 +01:00
Florian Schlichting
701feb6143 drivers_*: brush up apidoc 2016-12-30 08:54:05 +01:00
Florian Schlichting
f4fd23ed3c drivers_rimap: update similar to drivers_imap_pam 2016-12-30 08:53:59 +01:00
Florian Schlichting
1393c30390 migrate away from deprecated auth functions, warn more aggressively 2016-12-30 08:53:51 +01:00
Florian Schlichting
8639f08d45 RFC7240: "Prefer: return=minimal"
"return-minimal" was current up to and including draft -15
2016-12-30 08:53:31 +01:00
Florian Schlichting
8d06163ddf less "global $foo" 2016-12-30 08:53:04 +01:00
Florian Schlichting
eb7f2edc0c eliminate trailing whitespace, expand tabs 2016-12-30 08:52:44 +01:00
Florian Schlichting
063048802f extra line (duplicate) 2016-12-30 08:52:12 +01:00
Florian Schlichting
8dc7ab26c4 Merge branch 'ldap_group_issue' into 'master'
ldap group import: unset group after import

See merge request !35
2016-12-27 20:33:35 +00:00
Émile Morel
af5cdfd46d ldap group import: unset group after import 2016-12-08 15:08:38 +01:00
Andrew Ruthven
64be7d3127 Allow updating addressbooks as external resources. (Closes #93)
Previously if an addressbook was an external resource, then all local
info was deleted, and all the remote addressbook entries were
re-inserted, potentially creating new sync tokens.

This change only updates modified records.
2016-12-08 15:39:12 +13:00
Florian Schlichting
1548893229 fix ?add_member when PATH_INFO is not set (closes #96, thanks Thomas Zell!) 2016-12-04 01:07:23 +01:00
Florian Schlichting
9a4589123e CreateDefaultRelationships is not defunct 2016-12-03 00:20:54 +01:00
Christoph Anton Mitterer
70bd8cf0ce handle failing version check when allow_url_fopen is set to false (closes: #57) 2016-12-02 21:57:24 +01:00
Florian Schlichting
a4ba019397 make sure we dont have documentation suggesting that $c->something can be used without assigning a value 2016-12-02 00:46:58 +01:00
Florian Schlichting
0901fd2756 Remove remaining references to $c->local_tzid (fixes #35) 2016-12-02 00:24:53 +01:00
Florian Schlichting
93ea4e47f6 separate rebuild-translations and building locale/
'make' (or 'make all', if one is interested in the apidoc) should now
do everything needed to run from a git checkout. At the same time,
it no longer rebuilds all translations (xgettext run etc.). This
can be done with 'make translations'.
2016-12-01 21:02:53 +01:00
Florian Schlichting
b1ae485973 document the setup that will get regression-suite to pass
The other suites don't pass for me at the moment.
2016-12-01 20:29:28 +01:00
Florian Schlichting
86447e31fe Set the same default timezone to Database and PHP 2016-12-01 19:17:22 +01:00
Florian Schlichting
40ff70e11f freebusy-functions.php: regular debug logging 2016-11-30 23:03:18 +01:00
Florian Schlichting
74e6f8bec9 global $c is not used in this function
delete it, as well as a lot of extra whitespace
2016-11-30 23:03:12 +01:00
Florian Schlichting
b7d1ad513e DAVPrincipal: delete funny tabs and other unusual whitespace 2016-11-30 23:03:06 +01:00
Florian Schlichting
fd1fce90c3 DAVPrincipal: fix logging labels 2016-11-30 23:02:52 +01:00
Florian Schlichting
d140547bc0 replace nonexistant start_here.php link with something helpful 2016-11-30 22:56:52 +01:00
Florian Schlichting
b5cc4d151b install davical-cli, and remove empty .gitignore file 2016-11-30 22:56:52 +01:00
Frank Steinberg
136fc88c12 Fixed some logging labels. 2016-09-15 00:40:46 +02:00
Florian Schlichting
bb8ae530f5 a helpful comment
(and a lot of whitespace cleanup)
2016-09-14 23:46:41 +02:00
Florian Schlichting
f0c6d94d1a fix typo 2016-09-14 23:32:12 +02:00
Florian Schlichting
38cc068d46 Merge branch 'timestamp' into 'master'
Handle empty "modified" ldap mapping

add the epoch origin modification date if the "modified" attribute is either
empty in the config file or is not returned by the request.

Refs #99 

See merge request !33
2016-09-14 21:24:18 +00:00
Benoît Bleuzé
970b61ac14 Handle empty "modified" ldap mapping
add the epoch origin modification date if the "modified" attribute is either
empty in the config file or is not returned by the request.
2016-09-14 23:18:29 +02:00
Florian Schlichting
6ac89a6315 comment in existing email scheduling code
this reverts 9df80fbde19e561699af33b591e4fdb6c7bbf9cf
fixing the crash by requiring EMail.php (from AWL)

Note: this isn't called when inviting people yet, only when replying to
an external organizer or when cancelling a meeting with external
attendees. Actually sending these emails instead of just logging them
also requires setting $c->iMIP->send_email = 1;
2016-09-13 22:14:41 +02:00
Florian Schlichting
41f6267353 davical-cli: add link to wiki page 2016-07-15 00:17:56 +02:00
Jim Fenton
2aba60d9e4 Merge branch 'prometheus-metrics-database-1.3.2' into 'master'
Prometheus metrics (and  database 1.3.2)

This adds support for a /metrics.php endpoint which can be scraped by Prometheus for collecting monitoring and performance data.  The metrics can work in two different ways.

Firstly, they can work as a simple set of ever-increasing counters.  This is the basic mode, using PostgreSQL database sequences for the underlying data, and hence the new database version associated here.

Alternatively, they can work with memcache to build a more detailed performance picture with more advanced metrics about requests and processing.

If you enable memcache enough to get metrics, you will also get detailed result caching in DAViCal, which seems to work well, but if strange things start to happen that disappear when cache is disabled then it would be great if you could file a detailed bug report.

See merge request !32
2016-07-14 21:10:13 +00:00
Andrew McMillan
c5c0421caf Add /metrics.php to be scraped by Prometheus for monitoring. 2016-06-22 23:53:22 +01:00
Andrew McMillan
1ab66a70b5 Some database changes for server-side attendee handling. 2016-06-22 23:44:10 +01:00
Andrew McMillan
7c53722535 Ignore some local cruft. 2016-06-22 23:41:10 +01:00
Andrew McMillan
b85f8e79fe Fail better!
There's a long-standing annoyance about catching errors in the early
stages of startup - sometimes they seem to disappear nowhere and yet
nothing works.  This fixes at least part of that.
2016-06-22 23:26:24 +01:00
Andrew McMillan
aafd81ffd7 Remove array slice reference on method return value.
Eclipse complained about the syntax, and since it was the only complaint
it had I thought it worth dealing with :-)
2016-06-22 23:24:44 +01:00
Andrew McMillan
9f180c9b8f Sending HTTP headers for TODO seems a bit passive-aggressive! 2016-06-22 23:23:45 +01:00
Andrew McMillan
083fc6dd3b getCacheInstance() is the canonical way to get a reference to the cache. 2016-06-22 23:22:26 +01:00
Andrew McMillan
9997f3a912 Enforce ordering on sample data for more consistent test results. 2016-06-22 23:12:23 +01:00
Andrew McMillan
b73ad6ae19 Regression result changes with calendar-free-busy-set disabled.
The calendar-free-busy-set functionality is old and superseded.
2016-06-22 23:11:40 +01:00
Andrew McMillan
208173043a Update to regression test results for PROPPATCH bugfix. 2016-06-22 23:10:20 +01:00
Andrew McMillan
8bb5e72c7b Updated regression test results from updates to contenttype 2016-06-22 23:08:56 +01:00
Andrew McMillan
b7cc11a329 The str_ireplace() function is not always present. 2016-06-22 23:04:52 +01:00
Andrew McMillan
50d0de4992 Disabling slow query threshold nag for batch job. 2016-06-22 23:01:46 +01:00
Andrew McMillan
2a202c77a2 Ensuring we delete vigorously from the cache for DELETE is ++important! 2016-06-22 22:41:05 +01:00
Andrew McMillan
eb80496511 Provide some more useful error details in various PUT failure situations. 2016-06-22 22:36:06 +01:00
Andrew McMillan
0f41ade035 Bugs pointed out by PHPStorm. 2016-06-22 22:27:16 +01:00
Egoitz Aurrekoetxea
607afb824c Add scripts/davical-cli, an example of a command-line interface for administrative tasks in a large-scale multi-domain setup 2016-06-13 22:12:20 +02:00
Florian Schlichting
0281a8d619 adapt to AWL function rename get_fields() -> awl_get_fields() 2016-06-13 22:02:47 +02:00
Florian Schlichting
928ec35ae1 Merge branch 'i92-ignore-external_refresh' into 'master'
Pass in the refresh interval to fetch_external

If we don't pass in the refresh interval then a default of 1 hour is used, this
isn't really what is intended. (Fixes #92)

See merge request !22
2016-06-02 19:50:19 +00:00
Florian Schlichting
dc4a19e5b1 always regenerate api docs, remove generated files from git 2016-06-01 22:46:46 +02:00
Nishanth Aravamudan
56d4edca87 Update to PHP7.0 naming 2016-06-01 22:46:38 +02:00
Florian Schlichting
fee15797f7 Check for PHP XML support in setup.php (see #91) 2016-06-01 22:40:46 +02:00
Florian Schlichting
482850e6b2 Add missing dependency on php-xml, which is a separate package from PHP 7 (fixes #91) 2016-06-01 22:20:00 +02:00
Andrew Ruthven
35f656f58b Pass in the refresh interval to fetch_external
If we don't pass in the refresh interval then a default of 1 hour is used, this
isn't really what is intended.
2016-05-19 15:24:39 +12:00
Florian Schlichting
348532e13b Update to work with both php5 and php7, mainly based on the Ubuntu patch 2016-04-19 21:53:29 +02:00
Florian Schlichting
658daa6d60 release 1.1.4 2016-01-11 23:57:09 +01:00
Florian Schlichting
c510a48aaa allow BuildDeadPropertyXML to continue on namespace errors (#9) 2016-01-11 23:38:54 +01:00
Cyril Giraud
cf6609b166 Transifex web site URL update. To be continued. 2016-01-10 22:46:48 +01:00
Florian Schlichting
1c5c03f5fd ChangeLog uses tabs, not leading whitespace 2016-01-09 00:27:43 +01:00
Florian Schlichting
8ef7966690 Update ChangeLog, add Debian bug closers 2016-01-09 00:05:24 +01:00
Florian Schlichting
f1595efb48 add the iSchedule administration helper to the menu to give it more visibility and testing
and only show 'List External Calendars' in one (the Admin's) menu
2016-01-08 14:54:19 +01:00
Florian Schlichting
71e27e50cb fix Thunderbird mutilating external attendees
semicolon is a separator in iCal, and even though we send it enclosed in
double quotes TB will choke on it and produce a mess
2016-01-08 14:27:37 +01:00
Florian Schlichting
144a938923 demote stack trace to regular debug logging (cf. #42)
This code produced a stack trace every time an attendee deleted an
event from his calendar. It is not clear what bug this was meant to shed
light on.
2016-01-08 13:35:51 +01:00
Florian Schlichting
fd5e7450f2 Fix scheduling replies with mixed internal and external (ignored) attendees
"new DAVPrincipal" always returns an object, so $attendee_principal will
never be false
2016-01-06 16:04:00 +01:00
Florian Schlichting
af1707ef1d prepare for 1.1.4 2016-01-03 19:09:56 +01:00
Florian Schlichting
b8512ad520 Properly remove /etc/davical/.keep/keepme 2016-01-03 19:09:56 +01:00
Florian Schlichting
ffdc13183f remove database connection check before $c is available (closes #36)
My browser hides the error message behind the menu bar, that's why I'm
also adding a line break in the do_error() handler.
2016-01-01 23:54:01 +01:00
Benedikt Spranger
c35704cc4b handle events started before 1900 (closes: #58)
DTSTART/DTEND can be DATE values instead of DATE-TIME. Our database uses
TIMESTAMP WITH TIME ZONE as field type, which seems to accept 19011224
but not values before 1900, such as 18961224. This patch changes values
between 1000 and 1900 to DATE-TIME by adding "T000000Z"

Patch contributed by Benedikt Spranger <b.spranger@linutronix.de>

Patch limited to dates between 1000 and 1900 by Florian Schlichting
<fsfs@debian.org>
2016-01-01 22:36:25 +01:00
Florian Schlichting
bf733fca8e let admin.php without parameters redirect to index.php, and document restrict_setup_to_admin setting (fixes #55) 2016-01-01 21:55:32 +01:00
Florian Schlichting
1821d65f1b minor cleanup of example-config.php 2016-01-01 21:55:15 +01:00
Florian Schlichting
3d886ce139 email addresses must be unique: add a tooltip and a warning message (fixes #30) 2015-12-31 18:37:12 +01:00
Florian Schlichting
bbc7ddef2f Apache 2.4 removed Order / Allow directives for new Require 2015-12-31 17:32:48 +01:00
Milan Medlik
66dd28addc transform date from iOS to standart format 2015-12-28 00:58:33 +01:00
Andrew McMillan
01a6873d4a Revert "add fix for the OSX Contacts.app:"
This reverts commit 3ab7787f7b2c6bebccbacb31396f77f09aa93f09.

The correct fix for the underlying issue which this attempted
to work around was applied in the AWL/XMLElement Render method.

["correct fix" likely refers to awl commits
    4b56e64bc7127a12df737f157e36fd2de19391dd,
    2589e71e18e6ced753500afe0197995290fac52c,
    aafbd7b1e6ffb59166d57725102f2f5a817a8590 and
    46b112f85711732b62e70f2fb40b866423bbf3b5
picked from github handle-remote-attendees branch]
2015-12-27 13:03:15 +01:00
Andrew McMillan
9580da622a Support regression testing with postgres on non-default port
[from github handle-remote-attendees branch]
2015-12-27 13:02:38 +01:00
Florian Schlichting
8e9eaa3410 fix issue #72 - 405 error when adding a new contact from Apple's Contacts
As can be seen from the reporter's debug output, the problem is that
the POST goes to .../?add-member, whereas davical expects / works with /
redirects to ?add_member (note the underscore). So we have davical treat
?add-member the same as ?add_member
2015-12-26 14:33:28 +01:00
Florian Schlichting
38673060a1 Make "Toggle all privileges" button work on all forms 2015-12-16 00:08:21 +01:00
Florian Schlichting
fc18d43fd4 document that YAML hates tabs (fixes #70) 2015-12-14 10:59:20 +01:00
Jim Fenton
32f4e2924f Merge branch 'itemfix' into 'master'
Fixed grouped Properties naming (e.g. Addresses: item1.ADR instead of just ADR) …

…that caused item1.ADR to be written to DB(address_address_adr) because it doesn't match ADR, fix works ofr every grouped Property (yet there is only ADR...)
Added VCard Property ORG as nondefault (because it takes more then one Value)
Fixed false handling of Properties that can have more than one value (e.g. ORG) where values are seperated by semicolons

See merge request !19
2015-12-11 01:27:48 +00:00
Jim Fenton
b95eade0b9 Update required version of AWL to 0.56 2015-12-10 14:04:01 -08:00
Paul Kallnbach
71a2d247e1 Merge branch 'fix_issue_53' into 'master'
Removed favicon.ico work around (fix #53, Debian bug #703294)

This relates to debian bug report #703294 <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=703294>; of Chris Mitterer. He makes the case to delete a block at the very beginning of the file caldav.php.

Andrew authored that code block once (6 years ago?) with the following commit message:

> Provide passthru on icons, images, css and js files.
> In Chrome it requests the favicon (for example) very frequently
> which was causing a prompt for authentication where there was a
> poorly considered regex in the rewrite rules.  I think this is
> a good backup to the rewrite rules to pass through on such files.

As far as i unterstand the code it does in fact passthrough requests for favicon.ico. But these should not happen at all anyway (but seem to have happened with a specific browser and a malformed rewrite rule). And I agree with Chris: most of the code does not work as intended and is potentially introducing security holes.
 
So after having a closer look on this I vote to follow the recommendation of Chris to DELETE this block and close the bug.

See merge request !20
2015-12-10 20:22:31 +00:00
Florian
d79f6b8d40 remove reference to sourceforge pages from README, add info on IRC channel and davical-general mailing list 2015-12-10 11:24:12 +00:00
Frank O. Martin
ce379d3cf7 Removed favicon.ico work around 2015-11-19 19:41:16 +01:00
ClemensN
5fd88ce1cb Fixed grouped Properties naming (e.g. Addresses: item1.ADR instead of just ADR) that caused item1.ADR to be written to DB(address_address_adr) because it doesn't match ADR, fix works ofr every grouped Property (yet there is only ADR...)
Added VCard Property ORG as nondefault (because it takes more then one Value)
Fixed false handling of Properties that can have more than one value (e.g. ORG) where values are seperated by semicolons
2015-11-13 21:52:22 +01:00
Cyril Giraud
2eb0566621 Fix in ar.values. 2015-11-05 20:56:05 +01:00
Cyril Giraud
afc852188e Add Arabic to language list.
Z
2015-11-05 20:34:08 +01:00
Cyril Giraud
f7a72543ea Add Slovak (Slovakia) language to language list. 2015-11-05 20:13:33 +01:00
Cyril Giraud
3b597a5068 Add Finnish language and update for Korean. 2015-11-05 19:58:51 +01:00
Cyril Giraud
7f29218e5f Add language selection for Korean. 2015-11-05 19:06:47 +01:00
Louis Duruflé
00eb3c8e49 HttpDateFormat is actually in AwlDBDialect 2015-10-03 00:11:41 +02:00
Florian Schlichting
e3789ba10e set dav_name of imported address books to .vcf instead of .ics (fixes #39)
and correct a number of typos and documentation inaccuracies on the way
2015-10-02 23:58:33 +02:00
Florian Schlichting
d7b063a249 fix default value for old events, and actually bail out if "old" is less than six days ago (fixes #49) 2015-10-02 22:44:51 +02:00
Florian Schlichting
8895aac2bf replace a few remaining instances of the old name "rscds" 2015-10-02 22:22:10 +02:00
Florian Schlichting
0cdcce0a6c Do not throw postgres errors when views/types/functions to be dropped do not exist (yet). Fixes #43 2015-10-02 22:09:34 +02:00
Florian Schlichting
a64b43b006 Debian: build and ship all the docs, including the translation guide 2015-10-02 01:34:54 +02:00
Florian Schlichting
6bfc8b75c3 dont call make in Debian package builds (fixes #40) 2015-10-02 01:17:16 +02:00
Paul Kallnbach
0b40989b4c Merge branch 'fix-propertyupdate' into 'master'
Fix positive PROPPATCH response message body.

The response values must be inside a DAV:response element, which was missing before.

See merge request !18
2015-10-01 20:27:08 +00:00
Florian Schlichting
3a9d8db575 rebuild-translations.sh: do not create incorrect SQL in supported_locales.sql when $lang.values file is missing (fixing Issue #40 part a) 2015-10-01 21:43:35 +02:00
Florian Schlichting
a4896b085a Merge branch 'petr.jurasek/davical-master' 2015-09-15 23:26:00 +02:00
Marten Gajda
ba13b8db46 Fix positive PROPPATCH response message body.
The response values must be inside a DAV:response element, which was missing before.
2015-07-24 14:39:05 +02:00
Petr Jurášek
f03c0ecc3b Windows phone 8.1 sends ETag=*, see https://www.ietf.org/rfc/rfc2068.txt, chapter 14.25 2015-07-09 08:41:48 +02:00
Andrew Ruthven
3ca7960746 Merge branch 'fix-add-member' into 'master'
Fix add-member support for calendars

Change the add-member parameter to add_member to match the name of the global variable name. Otherwise the global variable was always unset and the generic POST handler handled the request instead of the PUT handler for vcalendars.
Make sure to return a Location header when adding a vcalendar using add-member POST.

See merge request !14
2015-05-28 10:26:18 +00:00
Andrew Ruthven
017fb7731b Merge branch 'content-type-component' into 'master'
Add component parameter to content-types headers and getcontenttype properties

This allows clients using sync-collection requests to filter the results quickly by just looking at the content-type without having to parse the calendar data.

See merge request !15
2015-05-28 10:24:57 +00:00
Marten Gajda
f5dc6c669f Add component parameter to content-types headers and getcontenttype properties
This allows clients to filter the results quickly by just looking at the content-type without having to parse the calendar data.
2015-05-27 19:49:27 +02:00
Marten Gajda
d99a082c24 Change the add-member parameter to add_member to match the name of the global variable name. Otherwise the global variable was always unset and the generic POST handler handled the request instead of the PUT handler for vcalendars.
Make sure to return a Location header when adding a vcalendar using add-member POST.
2015-05-27 14:32:32 +02:00
Andrew Ruthven
71db9008af Merge branch 'master' into 'master'
Basic Auth Bugfix

Bugfix on Basic Auth username/password split.

Basic Auth uses a colon (":") to separate the username and password values. Using the php 'explode' function on this string without limiting the number of substrings returned can truncate the users password if it contains a colon.

By limiting the explode to 2, we get back the username and whatever else is left as the password (hence not truncated).

See merge request !12
2015-05-18 23:07:52 +00:00
Andrew Ruthven
331e4dcccd Merge branch 'import-fix' into 'master'
Fixed broken import function (fixes #38)

Removes a doubled code block introduced in commit 8e60bb3124e2cc4ff09f388e520f3b6935ffc733 causing imports to fail after the first one.

See merge request !13
2015-05-18 23:05:41 +00:00
Andrew Ruthven
a7b316a004 Allow external BIND URL to be file:///
This allows us to load in external files that are copied onto the
Davical server via other means.
2015-05-14 11:17:18 +12:00
Matthias
da750a8092 Fixed broken import function (fixes #38) 2015-04-22 13:31:10 +02:00
Cyril Giraud
642524d391 Extract translatable strings in upgrade.php + update according to Transifex translations. 2015-03-06 23:41:08 +01:00
Cyril Giraud
f8796e58c7 Translation update for es_VE and ko_KR, thanks to Transifex contributors. 2014-12-29 22:46:52 +01:00
Cyril Giraud
4a4b8f22da Forum link update without making translators to re-translate the whole help string (preg_replace). 2014-12-29 22:40:14 +01:00
Timothy Brown
356c995aa3 Bugfix on Basic Auth username/password split.
Basic Auth uses a colon (":") to separate the username and
password values. Using the php 'explode' function on this
string without limiting the number of substrings returned
can truncate the users password if it contains a colon.
By limiting the explode to 2, we get back the username and
whatever else is left as the password (hence not truncated).
2014-12-29 13:04:17 -07:00
Florian Schlichting
39f1d04abe Debian: Ship all config examples and user documentation
but remove website references since it was moved to its own git
repository
2014-12-16 23:02:16 +01:00
Florian Schlichting
4ee8c6d663 test for basic syntax errors in php files
This would have prevented the need for 1.1.3.1
2014-12-16 21:53:49 +01:00
Florian Schlichting
269a24dbb5 fix scripts/build-always.sh: AWL_VERSION is always without quotes 2014-12-16 21:53:28 +01:00
Mark Davies
0cc7b944b4 Add config value "support_obsolete_free_busy_property"
to control whether the obsolete Scheduling property
"calendar-free-busy-set" is populated during a PROPFIND. For Issue #31,
Database Performance Improvements.
2014-12-16 21:30:14 +01:00
Mark Davies
0797e8233e First batch of database indexes
Added in support of Issue #31, Database Performance Improvements. Note
creation of 1.2.12 db patch script - may need renaming or other special
treatment when merging this branch.
2014-12-16 21:29:26 +01:00
Mark Davies
1fe5d24d9f Fix up Windows create-database.bat - see Issue #32. 2014-12-16 21:07:38 +01:00
Florian
289f75def4 Merge branch 'master' into 'master'
Fix current-user-principal

The RFC 5397 (http://tools.ietf.org/html/rfc5397) states that current-user-principal should return the principal URL for the current user, the one who is currently authenticated.

DAViCal answers with the principal URL for the owner of the resource right now, so this is a simple patch to fix this behaviour.

See merge request !9
2014-12-15 22:22:01 +00:00
Florian
508837ed21 Merge branch 'master' into 'master'
Loop Over AWL Directory Candidates

Using this method we're able to loop over the candidate directories
until we find what should be suitable AWL location. Further, adding
additional locations is as simple as adding a new line to ${awldirs}.

It does have the limitation that if the path has a new line in it
(/some/ridic
ulous/path), it'll treat it as two different paths. However, if
somebody seriously has that, they deserve the pain.

See merge request !10
2014-12-15 22:07:08 +00:00
Jim Fenton
a877ef47c5 Correct links to mailing list archives and bug report location 2014-11-22 22:10:40 -08:00
Jim Fenton
58a573d698 Merge branch 'issue_20_localization' 2014-11-20 22:38:52 -08:00
Jim Fenton
2029e24f1a Merge branch issue_20_localization into master 2014-11-20 22:33:08 -08:00
Jim Fenton
70265e7539 Remove extraneous line space 2014-11-20 22:19:36 -08:00
Cyril Giraud
1cdb8adf5c Typo fixes, thanks to Jim. 2014-11-18 22:41:56 +01:00
Aaron W. Swenson
cfd5fd7555 Loop Over AWL Directory Candidates
Using this method we're able to loop over the candidate directories
until we find what should be suitable AWL location. Further, adding
additional locations is as simple as adding a new line to ${awldirs}.

It does have the limitation that if the path has a new line in it
(/some/ridic
ulous/path), it'll treat it as two different paths. However, if
somebody seriously has that, they deserve the pain.
2014-11-14 13:44:39 -05:00
Cyril Giraud
1ec4ce95b5 Update from Transifex. 2014-11-10 22:02:51 +01:00
Jorge López Pérez
5d6f6b8575 Fix current-user-principal
current-user-principal should always return the principal URL for the
currently authenticated user, not the accessed resource one.
2014-11-10 14:49:32 +01:00
Cyril Giraud
1db21c0bf2 Localization update according to Transifex (Englis, French, German and Slovak at 100%). 2014-10-27 22:16:06 +01:00
Cyril Giraud
d8d2dbfeda Translations update from Transifex. 2014-10-25 18:19:18 +02:00
Jim Fenton
ccfff62118 Removed website which is now in DAViCal Project/Website 2014-10-23 14:54:41 -07:00
Cyril Giraud
7d2056fb3a Translations update according to transifex (french). 2014-10-23 16:05:51 +02:00
Cyril Giraud
e431dc96e3 Issue #20: Code modification to make some strings translatable. 2014-10-22 22:14:48 +02:00
Florian Schlichting
bf4ade9b83 fix typo in setup.php 2014-10-20 23:05:54 +02:00
Cyril Giraud
5b5eba38ca Issue #20: setup.php and help.php fixed (to be reviewed) + translations updates. 2014-10-19 00:26:09 +02:00
Cyril Giraud
20e35352d1 Minor translation update. 2014-10-18 23:19:44 +02:00
Cyril Giraud
33b5b335f7 Minor translation update. 2014-10-12 00:22:33 +02:00
Florian Schlichting
cbe63d3182 release 1.1.3.1, fixing a critical typo in htdocs/always.php :-( 2014-10-07 08:48:19 +02:00
Florian Schlichting
37e814c647 release 1.1.3 2014-10-07 00:58:47 +02:00
Florian Schlichting
398302d554 Add a README.Debian explaining the necessary steps for a basic installation 2014-10-07 00:58:47 +02:00
Florian Schlichting
c6b657a631 Add php5-ldap as Suggests (LP: #479378) 2014-10-07 00:37:42 +02:00
Florian Schlichting
7232c042bb exclude debian/ from tarball 2014-10-07 00:19:01 +02:00
Florian Schlichting
c38f4d2ee2 Bump dependency on awl to 0.55 2014-10-06 23:59:43 +02:00
Florian Schlichting
b5008e2e7e Declare compliance with Debian Policy 3.9.6 2014-10-06 23:57:35 +02:00
Florian Schlichting
0b1ab8dc65 document testing setup 2014-10-02 02:01:16 +02:00
Kribbio
af774dd89c Create array Organizer for merged with array Attendee on 'handle_schedule_reply' function. 2014-09-25 10:36:41 +12:00
Kribbio
bddab50aac Name property is 'schedule-inbox' and not 'schedule_inbox' 2014-09-25 10:27:45 +12:00
Andrew Ruthven
325840ab30 Heh, actually make it the same string. Damn quotes. 2014-09-24 15:21:52 +12:00
Andrew Ruthven
1a715ca47a Closes #25 - Remove a duplicate string.
We still need the newline on the end, so append to the result from
the translate call.

I do note that is the only translated string in the file...
2014-09-24 15:19:23 +12:00
Cyril Giraud
4f6e3ecd84 Local update.
Merge branch 'master' of https://gitlab.com/davical-project/davical
2014-09-22 22:56:14 +02:00
Ján Máté
19fbfb0343 fix for debian bug #740827 - ensure that the timestamp inserted into the INSERT query is valid 2014-09-22 22:46:20 +02:00
Cyril Giraud
fcc322e65f Merge branch 'master' of https://gitlab.com/davical-project/davical
Local repository update.
2014-09-22 22:18:37 +02:00
Cyril Giraud
be5c980ab3 Translations update from Transifex. 2014-09-22 22:10:11 +02:00
Paul Kallnbach
0bbf51f92d Merge branch 'remove_quoted_sql_identifiers' into 'master'
Remove quotes around sql language identifiers

As an reaction on Issue #26, removed quotes around language identifiers in SQL statements

See merge request !8
2014-09-16 16:11:06 +00:00
Florian Schlichting
ab2541e6c0 Declare compliance with Debian Policy 3.9.5 and update d/changelog 2014-09-14 21:40:52 +02:00
Florian Schlichting
1f8a4a93be Switch d/copyright to copyright-format 1.0, amend CREDITS from git log 2014-09-14 21:40:52 +02:00
Florian Schlichting
dfb10a7782 Add a debian/watch file 2014-09-14 20:09:04 +02:00
Florian Schlichting
4c8c48830a Bump dh compat to level 9 2014-09-14 20:09:04 +02:00
Florian Schlichting
f25f1fc818 Add doc-base registration for api doc and website in davical-doc 2014-09-14 20:09:04 +02:00
Florian Schlichting
c38809d5cf debian/control: update and sort dependencies, add php5, php5-cli (closes: #717043), php5-curl to Recommends (closes: #656390) 2014-09-14 20:09:04 +02:00
Florian Schlichting
f42a69bc6a Clean up duplicate files (symlink identical files in api documentation) 2014-09-14 20:07:40 +02:00
Florian Schlichting
469b578ebb Use short-form debian/rules and fix source format declaration (closes: #730941) 2014-09-14 17:00:17 +02:00
Florian Schlichting
e87a5abc26 Takeover for the Davical Development Team 2014-09-14 15:56:43 +02:00
“Paul
931651ca32 Remove quoted SQL language identifiers 2014-09-02 20:01:28 +02:00
Jim Fenton
29a0898a10 Update downloading information 2014-07-18 14:28:02 -07:00
Jim Fenton
ab046e5e21 Removed PayPal donation request and Flattr button 2014-07-02 17:11:59 -07:00
“Paul
96a5a31203 Fixed fetching new external resources on BIND 2014-06-23 21:55:11 +02:00
“Paul
e913676660 inc/drivers_ldap: fix 'Undefined variable' 2014-06-23 21:44:13 +02:00
“Paul
ba5c7e90e1 CardDAV Query Report 2014-06-23 21:35:47 +02:00
“Paul
9dc026eb28 Support multiple text-match elements within a filter query. 2014-06-23 21:03:01 +02:00
“Paul
c03b882728 Call log_caldav_action for VCARD PUT requests. 2014-06-23 20:37:32 +02:00
“Paul
096594fac3 Support uniqueMember with DN for user names. 2014-06-23 20:28:08 +02:00
“Paul
a391d4e2a5 Added check to ensure email field does not get a double extension. 2014-06-23 20:02:35 +02:00
Jim Fenton
5e76ca785f Merge branch 'master' of ssh://gitlab.com/davical-project/davical 2014-06-13 13:55:37 -07:00
Jim Fenton
6325bd3019 Adjust copyright; remove broken footer beacon 2014-06-13 13:54:24 -07:00
Ján Máté
f6c0eb3475 Merge branch 'master' of gitlab.com:davical-project/davical 2014-06-12 12:34:25 +02:00
Ján Máté
6b8193ad9a added network timeout option for LDAP (thanks Sebastian Kotthoff) 2014-06-12 12:34:05 +02:00
Cyril Giraud
fff9c684b7 Merge branch 'master' of https://gitlab.com/davical-project/davical 2014-06-11 22:53:59 +02:00
Cyril Giraud
a872cb8f68 Translation updates and new languages. 2014-06-11 22:39:08 +02:00
Jim Fenton
50f9490b01 Updated home page with updated information on support structure.
Eliminated blog, SourceForge -> GitLab on page header
2014-06-07 11:26:16 -07:00
Ján Máté
c32a288385 added $c->disable_caldav_proxy_propfind_collections option - it is very useful if your client not uses the "calendar-proxy-read" and "calendar-proxy-write" resources returned by PROPFIND for each principal (http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk/doc/Extensions/caldav-proxy.txt). The main reason to disable these resources is that it is EXTREMELY expensive to create them (especially on servers with lot of users who share their collections) and most clients will never use them (or use this functionality by explicitly asking for these resources using expand-property REPORT, which will work regardness the value of this option)
supported values:
false/unset => keep these resource active
true	=> never show these resources
array('User-Agent'=>'#regex1#', 'X-Client'=>'#regex2#') => if a client sends "User-Agent" header which matches the regex1 OR "X-Client" header which matches regex2 then do not show these resources
2014-05-14 13:58:10 +02:00
Ján Máté
6229409717 added $c->hide_bound configuration options - it is very useful if you use iOS (which not supports delegation) in combination with other software which supports degation ... simply use case is: bind all collections you want to see on iOS (emulation of delegation) and then hide these collections from other clients with real delegation support
supported values:
false/unset => always show bound collections
true	=> never show bound collections
array('User-Agent'=>'#regex1#', 'X-Client'=>'#regex2#') => if a client sends "User-Agent" header which matches the regex1 OR "X-Client" header which matches regex2 then all bound collections are hidden
2014-05-14 13:46:00 +02:00
Ján Máté
7be6aee280 added functions for regex comparison (see next commits) 2014-05-14 13:37:51 +02:00
Ján Máté
92f48f38cd various cheduling related fixes (there are still few remaining bugs) 2014-05-14 13:34:06 +02:00
Ján Máté
822e81644d expand-property repord - prevent infinite recursion and recursion to the object itself (non-recursive getting request URL properties) 2014-05-14 13:33:36 +02:00
Ján Máté
31af435cec various cheduling related fixes (there are still few remaining bugs) 2014-05-14 13:32:48 +02:00
Ján Máté
7a05f2b7d7 fixed uninitialized principal object for calendar-proxy-* queries 2014-04-27 17:26:35 +02:00
Ján Máté
08cc16074d Awl interface related changes 2014-04-07 12:28:19 +02:00
Ján Máté
9df80fbde1 comment out lines related to external invitation (the Email class is still undefined) 2014-04-07 12:27:58 +02:00
Ján Máté
b3c8a4ad0f awl interface related changes 2014-04-07 12:26:39 +02:00
Ján Máté
1330892852 fixed missing semicolons in drivers_ldap.php 2014-03-25 19:24:49 +01:00
Ján Máté
6b37b2b422 fixed masking of confidential event components 2014-03-24 01:52:52 +01:00
Andrew McMillan
cd343bd9f2 Merge branch 'master' of github.com:DAViCal/davical into github 2013-10-25 12:20:44 +13:00
Ján Máté
c2b6be3b65 fix for $c->hide_TODO processing and user-agent extension
new option: if set to PHP regex string then hide_TODO is enabled if the client
user-agent string matches the regex for example:
    $c->hide_TODO='#^iOS.*dataaccessd.*#';
will hide all todos from non-owner/non-admin users for iOS devices
2013-10-25 12:16:27 +13:00
Ján Máté
16f617b637 fix of major todo synchronization issue if $c->hide_older_than option is set
todo without start date was never synced
2013-10-25 12:16:27 +13:00
Ján Máté
b5e409f7da fix to rename/delete the collection properties during the collection renaming/deleting 2013-10-25 12:16:27 +13:00
Ján Máté
64372ba529 Extend $c->default_collections - adding 'calendar_components' and 'default_properties'
'calendar_components' sets the
'urn:ietf:params:xml:ns:caldav:supported-calendar-component-set' property for
the calendar collection (used to distinguish between different type of calendar
collections, for example: todo and event calendars) the value must be a
non-empty array; allowed values: 'VEVENT', 'VTODO', 'VJOURNAL', 'VTIMEZONE',
'VFREEBUSY', 'VPOLL', 'VAVAILABILITY'
for example:
  array('VEVENT')
  array('VTODO')
  array('VEVENT', 'VTODO')
  null or undefined => all default calendar components are supported - see
    $c->default_calendar_components
NOTE: if you want to change the value of this property later, you need to do
it directly in the database ("property" table) or in the client software!

'default_properties' sets custom properties for the collection in the
"property" table the value must be a non-empty associative array of
key => value pairs (key = property name, value = property value) for example
(set the calendar color property used by Apple and other clients):
  'default_properties' => array('http://apple.com/ns/ical/:calendar-color'=>'#ff0000'),
   null or undefined   => no property is stored in the database
NOTE: if you want to change the value of this property later, you need to do
it directly in the database ("property" table) or in the client software!
2013-10-25 12:16:27 +13:00
Ján Máté
fd6b10d3e2 Prevent processing of collections from inactive principals
e.g. inactive principal collections are not returned if you use clients with
"delegation" support.
2013-10-25 12:16:27 +13:00
Matthias Beyer
8ab19de1fe Added dbg_error_log() calls for error msgs
If the ldap driver is not valid, the error messages were not printed.
There was just "Couldn't contact LDAP server for authentication" - But
why?

This commit adds a print loop for all messages from the global
$c->messages message array.
2013-10-25 12:16:19 +13:00
Jason Alavaliant
495257bebb add fix for the OSX Contacts.app: 2013-10-25 12:16:08 +13:00
Matthias Beyer
b732dcaeb3 Only set the cached instance if driver is valid
As I could see at other locations in the code, the ldap driver instance
can be invalid. And if the instance is invalid, the getStaticLdap()
function gets called again. Caching would prevent the function from
retrying to initiate the ldapDrivers object.

This commit adds conditional caching: only if the ldap driver instance is
valid, the object gets cached. This ensures that a retry with this function
would really try to create a new ldapDrivers object and not simply
return the (invalid) cached one.
2013-10-24 17:04:36 +13:00
Matthias Beyer
40c87435c1 Instance caching added
There was already a variable to cache the ldap driver instance, and a
check if this variable was already set was there, too! But there was no
code to return the cached instance if the function gets called twice!

Maybe this was simply forgotten...
2013-10-24 17:04:23 +13:00
Andrew McMillan
f3b67a2c62 Improve result checking 2013-10-15 23:48:29 +13:00
Andrew McMillan
9fe1bc73b2 Case folding of property names 2013-10-15 23:47:47 +13:00
Andrew McMillan
74e690103b Reorder results 2013-10-15 23:46:25 +13:00
Andrew McMillan
54222e32a5 Improve successful result checking. 2013-10-15 23:46:06 +13:00
Andrew McMillan
0f4cb2a8a8 Result of character escape fixing. 2013-10-15 23:45:19 +13:00
Andrew McMillan
58bbe1c8c3 Change to read all calendars and then discard inaccessible ones 2013-10-15 23:43:35 +13:00
Andrew McMillan
e6b502e71a Minor restructuring. 2013-09-27 16:29:14 +02:00
Andrew McMillan
5290db2657 Changes to VCALENDAR content due to parser / renderer changes. 2013-09-26 16:27:45 +02:00
Andrew McMillan
02ca39d2fe Changed etags. 2013-09-26 16:27:17 +02:00
Andrew McMillan
7f83ffc31a Changes to sending of DAV header. 2013-09-26 16:26:46 +02:00
Andrew McMillan
413c26dd71 More aggressively set timezone for regression testing. 2013-09-26 16:25:01 +02:00
Andrew McMillan
2aa2f244ee Transifex updates 2013-09-26 16:24:36 +02:00
Andrew McMillan
3e73a8da7b Debugging and small amounts of fixing. 2013-09-26 16:10:02 +02:00
Andrew McMillan
1141a43089 Fixing and debugging. 2013-09-26 16:09:36 +02:00
Andrew McMillan
350bb08445 The SQL date formatting constants have moved. 2013-09-26 16:09:13 +02:00
Andrew McMillan
e49d3dd225 We will add a setting to disable the DAV header on non-OPTIONS requests. 2013-09-26 14:24:38 +02:00
Andrew McMillan
d0fffe490a Set the default timezone to the database as well as for PHP. 2013-09-26 14:24:08 +02:00
Andrew McMillan
f074f214d0 Freebusy should use vComponent rather than the deprecated iCalComponent 2013-09-24 15:43:00 +02:00
Andrew McMillan
8b52d69e1e Force consistent result ordering. 2013-09-24 12:15:02 +02:00
Andrew McMillan
7346c35c0c Results changed for new VXXXXX parser. 2013-09-24 12:14:42 +02:00
Andrew McMillan
50c25cc740 Add options to do colourized, side-by-side & meld reviewing of results. 2013-09-24 11:46:37 +02:00
Andrew McMillan
2589a886f8 Fix deprecated warning. 2013-09-24 11:45:47 +02:00
Andrew Ruthven
ad4e6f1a0b Merge pull request #14 from matthiasbeyer/fix-ldap_driver_caching
Fix ldap driver caching
2013-09-23 03:06:08 -07:00
Andrew Ruthven
5f2a7eb1d3 Merge pull request #13 from matthiasbeyer/ldap_error_output
Added dbg_error_log() calls for error msgs
2013-09-23 03:02:45 -07:00
Ján Máté
183a8c4083 fix for $c->hide_TODO processing and user-agent extension
new option: if set to PHP regex string then hide_TODO is enabled if the client
user-agent string matches the regex for example:
    $c->hide_TODO='#^iOS.*dataaccessd.*#';
will hide all todos from non-owner/non-admin users for iOS devices
2013-09-20 23:18:55 +12:00
Ján Máté
26275a5fab fix of major todo synchronization issue if $c->hide_older_than option is set
todo without start date was never synced
2013-09-20 23:09:43 +12:00
Ján Máté
c2f309981d fix to rename/delete the collection properties during the collection renaming/deleting 2013-09-20 23:06:25 +12:00
Ján Máté
a264a752c4 Extend $c->default_collections - adding 'calendar_components' and 'default_properties'
'calendar_components' sets the
'urn:ietf:params:xml:ns:caldav:supported-calendar-component-set' property for
the calendar collection (used to distinguish between different type of calendar
collections, for example: todo and event calendars) the value must be a
non-empty array; allowed values: 'VEVENT', 'VTODO', 'VJOURNAL', 'VTIMEZONE',
'VFREEBUSY', 'VPOLL', 'VAVAILABILITY'
for example:
  array('VEVENT')
  array('VTODO')
  array('VEVENT', 'VTODO')
  null or undefined => all default calendar components are supported - see
    $c->default_calendar_components
NOTE: if you want to change the value of this property later, you need to do
it directly in the database ("property" table) or in the client software!

'default_properties' sets custom properties for the collection in the
"property" table the value must be a non-empty associative array of
key => value pairs (key = property name, value = property value) for example
(set the calendar color property used by Apple and other clients):
  'default_properties' => array('http://apple.com/ns/ical/:calendar-color'=>'#ff0000'),
   null or undefined   => no property is stored in the database
NOTE: if you want to change the value of this property later, you need to do
it directly in the database ("property" table) or in the client software!
2013-09-20 23:00:40 +12:00
Ján Máté
1532b757f5 Prevent processing of collections from inactive principals
e.g. inactive principal collections are not returned if you use clients with
"delegation" support.
2013-09-20 22:57:54 +12:00
Matthias Beyer
ef365a5940 Only set the cached instance if driver is valid
As I could see at other locations in the code, the ldap driver instance
can be invalid. And if the instance is invalid, the getStaticLdap()
function gets called again. Caching would prevent the function from
retrying to initiate the ldapDrivers object.

This commit adds conditional caching: only if the ldap driver instance is
valid, the object gets cached. This ensures that a retry with this function
would really try to create a new ldapDrivers object and not simply
return the (invalid) cached one.
2013-09-19 11:11:44 +02:00
Matthias Beyer
953b922a13 Instance caching added
There was already a variable to cache the ldap driver instance, and a
check if this variable was already set was there, too! But there was no
code to return the cached instance if the function gets called twice!

Maybe this was simply forgotten...
2013-09-19 11:08:43 +02:00
Matthias Beyer
1f21370b20 Added dbg_error_log() calls for error msgs
If the ldap driver is not valid, the error messages were not printed.
There was just "Couldn't contact LDAP server for authentication" - But
why?

This commit adds a print loop for all messages from the global
$c->messages message array.
2013-09-19 09:49:55 +02:00
Milan Medlik
2f66c35b22 Merge branch 'master' of https://github.com/DAViCal/davical 2013-09-16 16:03:10 +12:00
Jason Alavaliant
72dc5b1f39 fix the append box when importing collections 2013-09-02 15:02:47 +12:00
Jason Alavaliant
2f27d181f0 fix for CLASS attribute problem (CONFIDENTIAL value) and invalid processing of ->hide_alarm configuration option: 2013-09-02 14:54:12 +12:00
Christoph Anton Mitterer
1d54f57533 removed debian/README.Debian
* Removed debian/README.Debian which didn’t contain any useful information.
2013-09-02 14:53:47 +12:00
Christoph Anton Mitterer
35e471013b support Apache’s REDIRECT_REMOTE_USER CGI env var
* In places where the CGI variable REMOTE_USER is read, support alternatively
  REDIRECT_REMOTE_USER, which is used by the Apache HTTPD Server instead, when a
  redirect was used.

Note: This alone is not enough yet, to fully support it in DAViCal. An analogous
      change (commit 29ddd89baaf65bda2560e51665a2e761abef4147) is necessary in
      AWL.
2013-09-02 14:53:33 +12:00
Christoph Anton Mitterer
82757beba4 RFC compliant CGI AUTH_TYPE usage
* Handle the content of the CGI AUTH_TYPE variable case-insensitively as defined
  by RFC 3875 Section 4.1.1.
2013-09-02 14:53:12 +12:00
Christoph Anton Mitterer
c092a6153e make debug files pathnames more FHS compliant
* Changed the pathnames of the debug files to be a bit more FHS compliant.
2013-09-02 14:40:46 +12:00
Christoph Anton Mitterer
4ae44558c7 update addresses to the new canonical location
* Updated all addresses of the canonical git upstream repository and the issue
  tracker to the new ones.

Conflicts:
	po/de.po
	po/es_AR.po
	po/es_ES.po
	po/es_MX.po
	po/es_VE.po
	po/et.po
	po/fr.po
	po/hu.po
	po/it.po
	po/ja.po
	po/nb_NO.po
	po/nl.po
	po/pl.po
	po/pt_BR.po
	po/pt_PT.po
	po/ru.po
	po/sv.po
2013-09-02 14:40:33 +12:00
Christoph Anton Mitterer
1b73e00cbc document closed Debian bug
* Document that Debian bug #703387 was closed by commit
  56968d48651518dd386a53bcd28c408ffe313aeb which I forgot to do before.
2013-09-02 14:38:15 +12:00
Christoph Anton Mitterer
ea1ca0be0c escape version string to prevent XSS for sure
* HTML escape the remotely retrieved version string printed to the HTML in order
  to prevent and attacks (if this would have been possible at all in 12
  characters).

The version string read from the davical.org webserver might be changed by an
attacker in order to perform XSS.
Even though this is highly unlikley (there are only 12 characters used) it's
better to HTML escape any such string that is printed to HTML.

This was originally reported at:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=703290
2013-09-02 14:38:05 +12:00
Christoph Anton Mitterer
8e60bb3124 set line endings of most text files to LF
* Changed the end-of-line encodings of all non-Windows-related and non-autogenerated text files to use UNIX LF (lots of them had mixed LF/CRLF).

Conflicts:
	inc/caldav-PUT-functions.php
2013-09-02 14:37:23 +12:00
Matthias
92c15bed64 Fixed schedule reply handling for missing organizer 2013-09-02 14:27:40 +12:00
fbiete@gmail.com
b97ec56851 CardDAV support for search contains, starts-with, ends-with, equals 2013-09-02 14:27:20 +12:00
Andrew McMillan
1a86165883 Changes to default supported-component-set. 2013-09-02 14:22:12 +12:00
Andrew McMillan
bc1ef8b26c ETag/path changes due to regression.host changes. 2013-09-02 14:18:11 +12:00
Matthias
3837e9a559 Merge branch 'master' of github.com:DAViCal/davical 2013-07-18 11:56:16 +02:00
Matthias
835a3940c0 Merge branch 'master' of git://repo.or.cz/davical
Conflicts:
	inc/caldav-PUT-functions.php
	po/de.po
	po/es_AR.po
	po/es_ES.po
	po/es_MX.po
	po/es_VE.po
	po/et.po
	po/fr.po
	po/hu.po
	po/it.po
	po/ja.po
	po/nb_NO.po
	po/nl.po
	po/pl.po
	po/pt_BR.po
	po/pt_PT.po
	po/ru.po
	po/sv.po
2013-07-18 11:53:09 +02:00
Matthias
a5100a1681 Fixed schedule reply handling for missing organizer 2013-05-28 12:51:32 +02:00
Matthias Althaus
0823f781f0 Merge pull request #5 from fmbiete/master
Add support in carddav searches: starts-with, ends-with, equals, contains
2013-05-28 03:48:55 -07:00
Matthias Althaus
ff03363831 Merge pull request #7 from althaus/master
Merging changes from origin
2013-05-28 03:33:14 -07:00
Matthias
72660d9851 Merge branch 'master' of git://repo.or.cz/davical 2013-05-28 12:26:40 +02:00
Jason Alavaliant
126895e2a6 fix the append box when importing collections 2013-04-21 21:52:19 +12:00
Jason Alavaliant
036872ac85 fix for CLASS attribute problem (CONFIDENTIAL value) and invalid processing of ->hide_alarm configuration option: 2013-04-21 21:47:59 +12:00
Jason Alavaliant
3ab7787f7b add fix for the OSX Contacts.app: 2013-04-21 21:44:34 +12:00
Christoph Anton Mitterer
639295eb43 removed debian/README.Debian
* Removed debian/README.Debian which didn’t contain any useful information.
2013-03-25 20:13:38 +01:00
Christoph Anton Mitterer
f313282ee0 support Apache’s REDIRECT_REMOTE_USER CGI env var
* In places where the CGI variable REMOTE_USER is read, support alternatively
  REDIRECT_REMOTE_USER, which is used by the Apache HTTPD Server instead, when a
  redirect was used.

Note: This alone is not enough yet, to fully support it in DAViCal. An analogous
      change (commit 29ddd89baaf65bda2560e51665a2e761abef4147) is necessary in
      AWL.
2013-03-25 02:16:32 +01:00
Christoph Anton Mitterer
2b68d1130f RFC compliant CGI AUTH_TYPE usage
* Handle the content of the CGI AUTH_TYPE variable case-insensitively as defined
  by RFC 3875 Section 4.1.1.
2013-03-23 03:32:34 +01:00
fbiete@gmail.com
8c5a271943 CardDAV support for search contains, starts-with, ends-with, equals 2013-03-22 11:05:20 +01:00
Christoph Anton Mitterer
e701961cf4 make debug files pathnames more FHS compliant
* Changed the pathnames of the debug files to be a bit more FHS compliant.
2013-03-21 02:10:34 +01:00
Christoph Anton Mitterer
fd4e4005a4 update addresses to the new canonical location
* Updated all addresses of the canonical git upstream repository and the issue
  tracker to the new ones.
2013-03-21 00:20:24 +01:00
Christoph Anton Mitterer
ce0747b74f document closed Debian bug
* Document that Debian bug #703387 was closed by commit
  56968d48651518dd386a53bcd28c408ffe313aeb which I forgot to do before.
2013-03-20 23:50:25 +01:00
Christoph Anton Mitterer
ba74446aa0 Merge pull request #3 from calestyo/master
escape version string to prevent XSS for sure
2013-03-20 15:47:18 -07:00
Christoph Anton Mitterer
5fccb302a8 escape version string to prevent XSS for sure
* HTML escape the remotely retrieved version string printed to the HTML in order
  to prevent and attacks (if this would have been possible at all in 12
  characters).

The version string read from the davical.org webserver might be changed by an
attacker in order to perform XSS.
Even though this is highly unlikley (there are only 12 characters used) it's
better to HTML escape any such string that is printed to HTML.

This was originally reported at:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=703290
2013-03-20 23:41:43 +01:00
Christoph Anton Mitterer
4ef8dc9d53 Merge pull request #1 from calestyo/unix-line-endings
set line endings of most text files to LF
2013-03-19 16:55:15 -07:00
Christoph Anton Mitterer
56968d4865 set line endings of most text files to LF
* Changed the end-of-line encodings of all non-Windows-related and non-autogenerated text files to use UNIX LF (lots of them had mixed LF/CRLF).
2013-03-20 00:48:02 +01:00
1642 changed files with 62298 additions and 68653 deletions

7
.gitignore vendored
View File

@ -9,7 +9,7 @@ rscds.bfproject
davical.bfproject
locale
built-docs
built-po
built-locale
.settings
*~
testing/dumps
@ -19,12 +19,14 @@ docs/website/api
htdocs/api
htdocs/jq
htdocs/test.php
htdocs/testfiles
inc/test-RRULE-v2.php
perms-perf.base
random_crap
testing/tests/x-*
testing/tests/local
testing/timing.stats*
testing/report.xml
.sync-cache
.buildpath
.cvsignore
@ -41,3 +43,6 @@ zonedb/tzcode
zonedb/tzdata
zonedb/vtimezones
zonedb/*.tar.gz
.idea
*.orig
zonedb/releases

180
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,180 @@
stages:
- build
- test
- testall
- testldap
- testldapmemcache
build:
stage: build
image: debian:unstable
script:
- apt-get -y update
- bash -c 'mkdir -p /usr/share/man/man{0..10}'
- apt-get -y install build-essential curl devscripts fakeroot dh-exec jdupes doxygen graphviz php-cli phpunit rst2pdf
- mv debian/changelog debian/changelog.old
- >
cat
<(echo "davical ($(cat VERSION)-99~git$(date +"%Y%m%d")-$(git rev-parse --short $CI_COMMIT_SHA)) unstable; urgency=medium")
<(echo "")
<(echo " * Build on CI")
<(echo "")
<(echo " -- ${GITLAB_USER_NAME} <${GITLAB_USER_EMAIL}> $(date -R)")
<(echo "")
debian/changelog.old
>debian/changelog
- rm debian/changelog.old
- curl 'https://gitlab.com/davical-project/awl/-/archive/master/awl-master.tar.gz' | tar zxf -
- mv awl-master /usr/share/awl/
- debuild -us -uc -b -d
- 'mv ../davical_*_all.deb ./davical.deb'
artifacts:
paths:
- '*.deb'
test:
stage: test
image: debian:unstable
artifacts:
paths:
- testing/report.xml
- apache2_log/*
- davical_log/*
reports:
junit: testing/report.xml
when:
always
script:
- testing/gitlab_ci_script.sh
- cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling webui ischedule" ./run_regressions.sh all x'
after_script:
- testing/gitlab_ci_after_script.sh build
test_bullseye_carddavclientinterop:
stage: testall
image: debian:bullseye
artifacts:
paths:
- testing/report.xml
- carddavclient-master/testreports/unit/results.html
- apache2_log/*
- davical_log/*
- carddavclient-master/testreports/interop/*
reports:
junit:
- testing/report.xml
- carddavclient-master/testreports/unit/results.html
when:
always
script:
- testing/gitlab_ci_script.sh interop
# Needed to create the regression database. Could be replaced by a basic suite.
- cd testing && su testrunner -c 'IS_CI=yes ./run_regressions.sh regression-suite x'
- cd ../carddavclient-master && vendor/bin/phpunit -c tests/Interop/phpunit.xml --no-coverage
after_script:
- testing/gitlab_ci_after_script.sh
build_bullseye_latestphp:
stage: testall
image: php:apache-bullseye
script:
- apt-get -y update
- bash -c 'mkdir -p /usr/share/man/man{0..10}'
- apt-get -y install build-essential devscripts fakeroot dh-exec jdupes doxygen graphviz rst2pdf
- mv debian/changelog debian/changelog.old
- >
cat
<(echo "davical ($(cat VERSION)-99~git$(date +"%Y%m%d")-$(git rev-parse --short $CI_COMMIT_SHA)) unstable; urgency=medium")
<(echo "")
<(echo " * Build on CI")
<(echo "")
<(echo " -- ${GITLAB_USER_NAME} <${GITLAB_USER_EMAIL}> $(date -R)")
<(echo "")
debian/changelog.old
>debian/changelog
- rm debian/changelog.old
- curl 'https://gitlab.com/davical-project/awl/-/archive/master/awl-master.tar.gz' | tar zxf -
- mv awl-master /usr/share/awl/
- curl -o /usr/bin/phpunit -L https://phar.phpunit.de/phpunit-9.phar
- chmod +x /usr/bin/phpunit
- debuild --prepend-path=/usr/local/bin -us -uc -b -d
- 'mv ../davical_*_all.deb ./davical.deb'
artifacts:
paths:
- '*.deb'
test_bullseye_latestphp:
stage: testall
image: php:apache-bullseye
artifacts:
paths:
- testing/report.xml
- apache2_log/*
- davical_log/*
reports:
junit: testing/report.xml
when:
always
script:
- testing/gitlab_ci_script.sh
- cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling webui ischedule" ./run_regressions.sh all x'
after_script:
- testing/gitlab_ci_after_script.sh
test_memcache:
stage: testall
image: debian:unstable
artifacts:
paths:
- testing/report.xml
- apache2_log/*
- davical_log/*
reports:
junit: testing/report.xml
when:
always
script:
- testing/gitlab_ci_script.sh memcache
- cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling webui ischedule" ./run_regressions.sh all x'
after_script:
- testing/gitlab_ci_after_script.sh
test_ldap:
stage: testldap
image: debian:unstable
artifacts:
paths:
- testing/report.xml
- apache2_log/*
- davical_log/*
reports:
junit: testing/report.xml
when:
always
script:
- testing/gitlab_ci_script.sh ldap
- cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="ldap" ./run_regressions.sh all x'
after_script:
- testing/gitlab_ci_after_script.sh
# Only test if the memcache and LDAP tests pass
test_memcache_and_ldap:
stage: testldapmemcache
image: debian:unstable
artifacts:
paths:
- testing/report.xml
- apache2_log/*
- davical_log/*
- davical_conf/*
reports:
junit: testing/report.xml
when:
always
script:
- testing/gitlab_ci_script.sh ldap_memcache_auth
- cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="ldap ldap_memcache" ./run_regressions.sh all x'
after_script:
- testing/gitlab_ci_after_script.sh

View File

@ -4,5 +4,5 @@ source_file = po/messages.pot
source_lang = en
[main]
host = http://www.transifex.net
host = https://www.transifex.com

83
CREDITS
View File

@ -18,4 +18,85 @@ And a big thank you to the translators:
Many other people have contributed bug reports, fixes and
in many small ways. These are acknowledged in the changelog
and version control history.
and version control history:
Aiko Barz <aiko@deepco.de>
Andreas Haerter <ah@foundata.com>
Andrew McMillan <debian@mcmillan.net.nz>
Andrew Ruthven <andrew@etc.gen.nz>
Antoine <ahuret@skilld.fr>
Athos Ribeiro <athoscribeiro@gmail.com>
Aurelien Requiem <aurelien@menfin.net>
Benoît Bleuzé <benoit.bleuze@gmail.com>
Bill McGonigle <bill-gitlab.com-20170608@bfccomputing.com>
Chris S <chris@abacuscc.org>
Christian Kier <kier@isip.uni-luebeck.de>
Christoph Anton Mitterer <calestyo@scientia.net>
CSchulz <christian@schulz.re>
Cyprian Guerra <cyprian.guerra@gmail.com>
Cyril Giraud <cgiraud@free.fr>
Daniel Aleksandersen <code@daniel.priv.no>
Danny de Weille <info@hackdefense.com>
DAViCal Administrator <davical@fry.dotcal.com>
Dávid Takács <david.takacs@cafeopen.eu>
Dirk Bauer <dirk.bauer@iserv.eu>
Émile Morel <emorel@quarkslab.com>
Emmanuel Seyman <eseyman@edd.fr>
eppesuig <giuseppe@sguazz.it>
Eric Wagner <eric.wagner@htwsaar.de>
fbiete@gmail.com <fbiete@gmail.com>
Felix Möller <mail@felixmoeller.de>
Florian Schlichting <fsfs@debian.org>
Francois Marier <francois@debian.org>
Francois Perichon <francois.perichon@univ-lille2.fr>
Frank Steinberg <steinberg@ibr.cs.tu-bs.de>
Henri Sivonen <hsivonen@iki.fi>
Jamie McClymont <jamiemcclymont@catalyst.net.nz>
Jan Hicken <jan.hicken@posteo.de>
Jan Losinski <losinskij@gmail.com>
Ján Máté <jan.mate@inf-it.com>
Jason Alavaliant <alavaliant@gmail.com>
Jean-Baptiste Guerraz <jbguerraz@skilld.fr>
Jens Zahner <jens.zahner@servicereisen.de>
Jeppe Bob Dyrby <jeppe.dyrby@gmail.com>
Jeroen van Disseldorp <jdizzl@xs4all.nl>
Jim Fenton <fenton@bluepopcorn.net>
Jim Hague <jim.hague@acm.org>
Klaus M Pfeiffer <kmp+gitlab@kmp.or.at>
lebarjack <lebarjack@agenda.univ-lille2.fr>
Leho Kraav <leho@kraav.com>
linda.fliss <linda.fliss@iserv.eu>
Marc <github@mleuser.de>
Masahiro Mikami <ZBN15427@nifty.com>
Matthias Althaus <contact@althaus.it>
Matthias Beyer <matthias@ib-fb.de>
Matthias Mohr <Matthias@Mohrenclan.de>
Maxime Delorme <mdelorme@tennaxia.com>
Michael Trausch <mike@trausch.us>
Milan Crha <mcrha@redhat.com>
Milan Medlik <milan@morphoss.com>
Niels van Gijzen <n.van.gijzen@gmail.com>
Nishanth Aravamudan <nish.aravamudan@canonical.com>
Nomad Arton <pch13@myzel.net>
Patrick Näf Moser <patrick@moser-naef.ch>
Paul Kallnbach <p.kallnbach@gorilla-computing.de>
Paul Waite <85040614+paulwaite87@users.noreply.github.com>
Paul Willoughby <paulw@nationalfitness.com>
Peter Schaefer-Hutter <pschaefer@users.sourceforge.net>
Philipp Matthias Hahn <pmhahn@pmhahn.de>
Pierre Giraud <pierre.giraud@dalibo.com>
Piotr Filip <6465816-piotrfilip@users.noreply.gitlab.com>
Raphael Hertzog <debian@mcmillan.net.nz>
Rick Verdoes <info@hackdefense.com>
Rik Theys <Rik.Theys@esat.kuleuven.be>
Rob Ostensen <caveman+davical@caveman.name>
ruliane <ruliane+github@ruliane.net>
Sarenet S.A.U Egoitz Aurrekoetxea <egoitz@sarenet.es>
Scott Balneaves <sbalneav@alburg.net>
Scott Savarese <root@infra1.scottsavarese.com>
Stonewall Jackson <stonewall@sacredheartsc.com>
Till Schäfer <till2.schaefer@tu-dortmund.de>
Tobias Brox <tobias@redpill-linpro.com>
Vincent Van Houtte <vvh@synergylaw.be>
wmbr <w-m-b-r@t-online.de>
Wolfgang Herget <wolfgang@r007.de>

1174
ChangeLog

File diff suppressed because it is too large Load Diff

10
INSTALL
View File

@ -18,7 +18,7 @@ Gentoo Users
------------
DAVical is in the Sunrise overlay. You will have to add this overlay,
following the instructions on http://overlays.gentoo.org/proj/sunrise.
following the instructions on https://overlays.gentoo.org/proj/sunrise.
You can then use emerge to install DAVical and its dependencies.
@ -29,7 +29,7 @@ Other Linux Users
-----------------
You will need to download the latest versions of the davical and awl packages
from the DAViCal site. See http://www.davical.org/ for more information.
from the DAViCal site. See https://www.davical.org/ for more information.
You will need to untar these. Preferably you will untar them from within
the "/usr/share" directory and everything will be in it's expected location
@ -63,7 +63,7 @@ The best place to get help is on IRC. The official DAViCal
IRC channel is #davical on irc.oftc.net
The starting point for further help should be the DAViCal website
at http://www.davical.org/ and from there you might visit the wiki
at https://www.davical.org/ and from there you might visit the wiki
which contains a fair amount of information about configuring
DAViCal in a variety of different circumstances.
@ -78,7 +78,7 @@ a number of years.
The following other software is also needed:
Apache: 1.3.x or 2.x.x
PHP: 5.1 or greater (along with the PDO and PostgreSQL extensions)
PHP: 5.4 or greater (along with the PDO and PostgreSQL extensions)
PostgreSQL: 8.2 or greater
The PostgreSQL database may be installed on a server other
@ -224,7 +224,7 @@ to use this, and the docs for that are elsewhere.
See:
http://wiki.davical.org/
https://wiki.davical.org/
Which is the place where documentation will generally be kept up to
date the most.

View File

@ -11,26 +11,37 @@ snapshot : version = $(majorversion)-git$(gitrev)
snapshot : issnapshot = 1
.PHONY: nodocs
nodocs: htdocs/always.php built-po
nodocs: htdocs/always.php built-locale
.PHONY: all
all: htdocs/always.php built-docs built-po
all: htdocs/always.php built-docs built-locale
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"
built-docs: docs/phpdoc.ini docs/Doxyfile inc/*.php docs/translation.rst
doxygen docs/Doxyfile || apigen generate --quiet --title=DAViCal --todo --tree --deprecated -s inc --exclude caldav-client.php -d docs/api || phpdoc -c docs/phpdoc.ini || echo "NOTICE: Failed to build API docs"
rst2pdf docs/translation.rst || echo "NOTICE: Failed to build ReST docs"
touch $@
built-po: htdocs/always.php scripts/po/rebuild-translations.sh po/*.po
scripts/po/rebuild-translations.sh
built-locale: po/*.po
for LOCALE in `ls po/*.po | cut -f2 -d/ | cut -f1 -d.` ; do \
[ "$${LOCALE}" = "en" ] && continue; \
mkdir -p locale/$${LOCALE}/LC_MESSAGES; \
msgfmt po/$${LOCALE}.po -o locale/$${LOCALE}/LC_MESSAGES/davical.mo; \
done
touch $@
#
# Insert the current version number into always.php
#
htdocs/always.php: inc/always.php.in scripts/build-always.sh VERSION dba/davical.sql
htdocs/always.php: inc/always.php.in scripts/build-always.sh VERSION
scripts/build-always.sh <$< >$@
#
# recreate translations
#
.PHONY: translations
translations:
scripts/po/rebuild-translations.sh
#
# Build a release .tar.gz file in the directory above us
#
@ -51,13 +62,27 @@ release: built-docs VERSION
.PHONY: snapshot
snapshot: release
.PHONY: test
test:
@for PHP in htdocs/*.php inc/*.php; do php -l $${PHP} | grep -v 'No syntax errors detected' >> test-syntax; done; \
if [ -s test-syntax ]; then \
cat test-syntax >&2; \
rm test-syntax; \
exit 1; \
else \
rm test-syntax; \
echo "OK (Syntax checked)"; \
exit 0; \
fi
# run phpunit tests
phpunit --do-not-cache-result testing/phpunit
.PHONY: clean
clean:
rm -f built-docs built-po
rm -f built-docs built-locale
rm -rf docs/api locale
-rm -rf testing/tests/*/diffs testing/tests/*/results testing/tests/*/initial.dbdump
-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
rm -f docs/translation.pdf
rm -f davical.spec

11
README
View File

@ -1,11 +1,12 @@
DAViCal CalDAV Server by Andrew McMillan.
For documentation you are best advised to visit the sourceforge pages
or to start searching from http://davical.org/ and see where you end
up.
For documentation you are best advised to visit the DAViCal
website at https://www.davical.org/ or search our general mailing
list at https://lists.sourceforge.net/mailman/listinfo/davical-general
There's lots of useful information at http://wiki.davical.org/ as well,
and if you want access to update that contact us on IRC or send an e-mail
There's lots of useful information at https://wiki.davical.org/ as well,
and if you want access to update that contact us on IRC (#davical on OFTC,
be patient and stick around for a while) or send an e-mail
to <wiki-access@davical.org>.
Good luck!

View File

@ -1 +1 @@
1.1.2
1.1.13

View File

@ -3,15 +3,54 @@
Alias /davical /usr/share/davical/htdocs
<Directory /usr/share/davical/htdocs>
DirectoryIndex index.php index.html
DirectoryIndex index.php
AllowOverride None
Order allow,deny
Allow from all
AcceptPathInfo On
php_value include_path /usr/share/php/awl/inc
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value error_reporting "E_ALL & ~E_NOTICE"
php_value default_charset "utf-8"
# for Apache from 2.4 use
Require all granted
# for Apache before 2.4 use
#Order allow,deny
#Allow from all
# These are usually not necessary (set correctly by default)
#AcceptPathInfo On
#php_value include_path /usr/share/php/awl/inc
#php_value magic_quotes_gpc 0
#php_value register_globals 0
#php_value error_reporting "E_ALL & ~E_NOTICE"
#php_value default_charset "utf-8"
# Some people want this. YMMV.
#php_admin_value open_basedir /usr/share/awl/inc/:/usr/share/davical/:/etc/davical/
# All content for our UI should be served locally.
<FilesMatch "(admin|help|iSchedule|index|metrics|public|setup|tools|upgrade).php">
Header set Content-Security-Policy "default-src 'none'; img-src 'self' data:; media-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline' data:; font-src 'self' data:; object-src 'self'; base-uri 'self'; connect-src 'self'; form-action 'self'; frame-ancestors 'self'"
</FilesMatch>
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine On
# PT is important if you are using an alias, it implies L
# Redirect /.well-known URLs
RewriteRule ^/\.well-known/(.*)$ /davical/caldav.php/.well-known/$1 [NC,PT]
# Optionally: redirect /principals/users/ as well
RewriteRule ^/principals/users/(.*)$ /davical/caldav.php/$1 [NC,PT]
RewriteRule ^/principals/resources/(.*)$ /davical/caldav.php/$1 [NC,PT]
RewriteRule ^/calendars/__uids__/(.*)$ /davical/caldav.php/$1 [NC,PT]
RewriteRule ^/addressbooks/__uids__/(.*)$ /davical/caldav.php/$1 [NC,PT]
# Optionally: Put DAViCal in the root
# NOTE: this will break other applications that rely on mod_rewrite!
#
# Not if it's the root URL. You might want to comment this out if you
# want to use an explicit /index.php for getting to the admin pages.
#RewriteCond %{REQUEST_URI} !^/$
#RewriteCond %{REQUEST_URI} !^/davical/$
#
# Not if it explicitly specifies a .php program, html page, stylesheet or image
#RewriteCond %{REQUEST_URI} !\.(php|html|css|js|png|gif|jpg|ico)
#
# Everything else gets rewritten to /caldav.php/...
#RewriteRule ^(.*)$ /davical/caldav.php$1 [NC,L]
</IfModule>

View File

@ -1,29 +1,34 @@
<?php
/**
* The configuration settings detailed here should probably not appear in most
* most people's configuration files, but they can be useful to have available
* to assist with debugging problems.
* people's configuration files, but they can be useful to assist with debugging
* problems. When reporting an issue in the bug tracker or on the mailing list,
* and you need other people's help to understand what's going wrong, please
* include a debug log of the failing request with $c->dbg["ALL"] set, possibly
* also using $c->dbg_filter on busy servers.
*/
/**
* if this is set then any e-mail that would normally be sent by DAViCal will be
* sent to this e-mail address for debugging.
*/
//$c->debug_email
//$c->debug_email = 'davical@example.com'
/**
* If you want to debug you have to set to 1 one of this variable
* and then you can look at the error log of PHP for example :
* $c->dbg["ALL"] = 1;
* and then tail -f /var/log/apache2/error_log (or wherever PHP errors are logged).
* If you want to see debug messages in the PHP error log you can set to 1 one
* or several of these variables (there are many more).
* If you want to see every possible log message then $c->dbg["ALL"] can be set,
* and then individual components can be set to 0 to selectively ignore them.
*
* in the code a line like this:
* dbg_error_log( "Login", "blabla %s blalba %s",first_string, second_string );
* will produce in apache error log and if $c->dbg['Login'] ==1 : "blabla first_string blalba second_string"
* using format rules as for printf and related functions.
* To follow the log, try
* tail -f /var/log/apache2/error_log (or wherever your PHP errors are logged)
*
* To add your own debug logging using a printf syntax, use
* dbg_error_log( 'MyComponent', 'At this point, first is %s and second is %s', $first_string, $second_string );
*/
// $c->dbg["ALL"] = 1;
// $c->dbg['i18n'] = 0;
// $c->dbg["request"] = 1; // The request headers & content
// $c->dbg['response'] = 1; // The response headers & content
// $c->dbg["component"] = 1;
@ -43,6 +48,19 @@
// $c->dbg['vevent'] = 1;
// $c->dbg['rrule'] = 1;
/**
* Even on a moderately busy server, turning on debug logging for everyone can
* produce a lot of output in a short time that makes it hard to find the
* relevant lines. Debug filtering limits logging to certain IP addresses or
* usernames. (config values are arrays)
*/
// $c->dbg_filter["remoteIP"][] = '192.168.1.20';
// $c->dbg_filter["remoteIP"][] = '192.168.1.21';
// $c->dbg_filter["authenticatedUser"][] = 'peter';
// $c->dbg_filter["authenticatedUser"][] = 'john';
/**
* default is 'davical' used to prefix debugging messages but will only need to change
* if you are running multiple DAViCal servers logging into the same place.

View File

@ -8,6 +8,9 @@
#
# This file should be called 'administration.yml' in the config directory.
#
# Make sure field-separating whitespace does not contain any ^I (tab)
# characters. The YAML parser will trip over them ungracefully.
#
##
## The database username for connecting with sufficient rights to create

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +0,0 @@
/**
* Authentication against IMAP using the imap_open function.
*/
$c->authenticate_hook['call'] = 'IMAP_PAM_check';
$c->authenticate_hook['config'] = array(
'imap_url' => '{localhost:993/imap/ssl/novalidate-cert}',
'email_base' => 'example.com'
);
include('drivers_imap_pam.php');

View File

@ -13,7 +13,7 @@
* to set the relative address of images and so forth. You probably should
* not change it unless you know why you want to.
*/
// $c->base_url
// $c->base_url = 'http://example.com/davical';
/**
* Automatically set according to $_SERVER['DOCUMENT_ROOT'], but could be overridden
@ -24,16 +24,29 @@
/**
* Used to set the timeouts applying to the LOCK method.
*/
// $c->default_lock_timeout;
// $c->maximum_lock_timeout;
// $c->default_lock_timeout = 900;
// $c->maximum_lock_timeout = 8640000;
/**
* default = true;
* If set, DAViCal will store each unique time zone used in any calendar to speed
* future timezone interpretation.
* Default = true;
*/
// $c->save_time_zone_defs;
// $c->save_time_zone_defs = true;
/**
* If there is some timezone which shows up with a name that is not understood
* by DAViCal, you can add a translation for it into this list
*/
// $c->timezone_translations = array( 'Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London' => 'Europe/London' );
/**
* It is possible that you have installed DAViCal in a non-standard manner, and
* DAViCal can't find it's locale files, or you want it to use some different
* ones that you're writing to submit to the developers (yes please!).
* Default: ../locale
*/
// $c->locale_path = '/path/to/davical/locale/files';
/**
* Internal variable used to contain arrays of stylesheets or javascripts
@ -44,6 +57,33 @@
// $c->scripts = array();
// $c->stylesheets = array();
/**
* Where the up.gif and down.gif are located
* */
// $c->images = $c->base_url . '/images';
/**
* PostgreSQL supports multiple namespaces (schemas) within a single database,
* allowing you to have (e.g.) two tables with the same name. This setting
* allows you to control the search path so that you can have the DAViCal
* tables in a different schema.
* Note that there is no support in DAViCal for putting the tables into a
* non-default schema in the first place.
*/
// $c->db_schema = 'schema1,schema2';
/**
* Whether to replace query parameters with appropriately escaped substitutions
* in AWL, or leave it to the database to "prepare" the query.
* Default: true (do it in AWL)
*/
// $c->expand_pdo_parameters = true;
/**
* The recursion depth when expanding group memberships to resolve effective
* permissions. Default: 2
*/
// $c->permission_scan_depth = 2;
/**
* Internal variable to display page's title
@ -51,8 +91,7 @@
*/
// Usually internally assigned, but you may want to set it to something meaningful
// if you are writing your own pages within the admin interface.
// $c->page_title;
// $c->page_title = 'DAViCal CalDAV Server';
/**
* Internal array variable to hold error messages to be displayed on top of page
@ -60,34 +99,13 @@
*/
// Usually internally assigned, but you may want to append meaningful messages
// to this array if you are writing your own pages within the admin interface.
//$c->messages;
//$c->messages[] = 'Hello World!';
/**
* These 6 next properties are extracted automatically from the Changelog
* used to give informtion for debugging
*/
// Internally assigned
// $c->code_debian,
// $c->code_major,
// $c->code_minor,
// $c->code_patch,
// $c->code_pkgver,
// $c->code_version,
/**
* Used internally to know the revision of the database schema and display
* in HTTP error anwser in the header
*/
// Internally assigned
// $c->schema_major
// $c->schema_minor
// $c->schema_patch
// $c->schema_version
/**
* This property is used to enforce regular ordering of query results so
* that the regression test output is deterministically ordered. In
* real life this is not important, and it is a performance hit, so it
* should not usually be enabled anywhere else.
*/
// $c->strict_result_ordering = boolean;
// $c->strict_result_ordering = false;

View File

@ -1,5 +1,5 @@
#
# This file is used by update-rscds-database to set the correct
# This file is used by update-davical-database to set the correct
# permissions for the application user. In newer installations
# the application user will probably be called app_davical (and
# the administrative user will be called dba_davical) but in
@ -58,6 +58,26 @@ GRANT SELECT,UPDATE
ON principal_type_principal_type_id_seq
ON sync_tokens_sync_token_seq
ON timezones_our_tzno_seq
ON metrics_count_acl
ON metrics_count_bind
ON metrics_count_delete
ON metrics_count_delticket
ON metrics_count_get
ON metrics_count_head
ON metrics_count_lock
ON metrics_count_mkcalendar
ON metrics_count_mkcol
ON metrics_count_mkticket
ON metrics_count_move
ON metrics_count_options
ON metrics_count_post
ON metrics_count_propfind
ON metrics_count_proppatch
ON metrics_count_put
ON metrics_count_report
ON metrics_count_unknown
ON metrics_count_unlock
GRANT SELECT
ON supported_locales

View File

@ -45,7 +45,7 @@ BEGIN
RETURN out_bits;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- This legacy conversion function will eventually be removed, once all logic
-- has been converted to use bitmaps, or to use the bits_to_priv() output.
@ -98,7 +98,7 @@ BEGIN
RETURN out_priv;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION get_permissions( INT, INT ) RETURNS TEXT AS $$
DECLARE
@ -151,12 +151,12 @@ BEGIN
RETURN '';
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION get_group_role_no() RETURNS INT AS $$
SELECT role_no FROM roles WHERE role_name = 'Group'
$$ LANGUAGE 'sql' IMMUTABLE;
$$ LANGUAGE sql IMMUTABLE;
CREATE or REPLACE FUNCTION has_legacy_privilege( INT, TEXT, INT ) RETURNS BOOLEAN AS $$
DECLARE
@ -205,7 +205,7 @@ BEGIN
RETURN FALSE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Given a verbose DAV: or CalDAV: privilege name return the bitmask
@ -242,7 +242,7 @@ BEGIN
ELSE 0 END)::BIT(24);
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- Given an array of verbose DAV: or CalDAV: privilege names return the bitmask
@ -269,7 +269,7 @@ BEGIN
RETURN out_bits;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- This legacy conversion function will eventually be removed, once all logic
@ -368,4 +368,4 @@ BEGIN
RETURN out_priv;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;

View File

@ -1,7 +1,7 @@
/**
* PostgreSQL Functions for CalDAV handling
*
* @package rscds
* @package davical
* @subpackage database
* @author Andrew McMillan <andrew@catalyst.net.nz>
* @copyright Catalyst IT Ltd
@ -74,7 +74,7 @@ BEGIN
RETURN our_answer;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION calculate_later_timestamp( TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH TIME ZONE, TEXT ) RETURNS TIMESTAMP WITH TIME ZONE AS $$
@ -239,12 +239,12 @@ BEGIN
RETURN our_answer;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION usr_is_role( INT, TEXT ) RETURNS BOOLEAN AS $$
SELECT EXISTS( SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_member.user_no=$1 AND roles.role_name=$2 )
$$ LANGUAGE 'sql' IMMUTABLE STRICT;
$$ LANGUAGE sql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION legacy_get_permissions( INT, INT ) RETURNS TEXT AS $$
DECLARE
@ -333,13 +333,13 @@ BEGIN
RETURN '';
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Function to convert a PostgreSQL date into UTC + the format used by iCalendar
CREATE or REPLACE FUNCTION to_ical_utc( TIMESTAMP WITH TIME ZONE ) RETURNS TEXT AS $$
SELECT to_char( $1 at time zone 'UTC', 'YYYYMMDD"T"HH24MISS"Z"' )
$$ LANGUAGE 'sql' IMMUTABLE STRICT;
$$ LANGUAGE sql IMMUTABLE STRICT;
-- Function to set an arbitrary DAV property
CREATE or REPLACE FUNCTION set_dav_property( TEXT, INTEGER, TEXT, TEXT ) RETURNS BOOLEAN AS $$
@ -365,7 +365,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' STRICT;
$$ LANGUAGE plpgsql STRICT;
-- List a user's relationships as a text string
CREATE or REPLACE FUNCTION relationship_list( INT8 ) RETURNS TEXT AS $$
@ -385,10 +385,10 @@ BEGIN
END LOOP;
RETURN rlist;
END;
$$ LANGUAGE 'plpgsql';
$$ LANGUAGE plpgsql;
DROP FUNCTION rename_davical_user( TEXT, TEXT );
DROP TRIGGER usr_modified ON usr CASCADE;
DROP FUNCTION IF EXISTS rename_davical_user( TEXT, TEXT );
DROP TRIGGER IF EXISTS usr_modified ON usr CASCADE;
CREATE or REPLACE FUNCTION usr_modified() RETURNS TRIGGER AS $$
DECLARE
oldpath TEXT;
@ -412,7 +412,7 @@ CREATE TRIGGER usr_modified AFTER UPDATE ON usr
FOR EACH ROW EXECUTE PROCEDURE usr_modified();
DROP TRIGGER collection_modified ON collection CASCADE;
DROP TRIGGER IF EXISTS collection_modified ON collection CASCADE;
CREATE or REPLACE FUNCTION collection_modified() RETURNS TRIGGER AS $$
DECLARE
BEGIN
@ -423,16 +423,23 @@ BEGIN
SET dav_name = replace( dav_name, OLD.dav_name, NEW.dav_name),
user_no = NEW.user_no
WHERE substring(dav_name from 1 for char_length(OLD.dav_name)) = OLD.dav_name;
-- On rename we also need to rename all properties
UPDATE property SET dav_name=NEW.dav_name WHERE dav_name=OLD.dav_name;
END IF;
RETURN NEW;
ELSIF TG_OP = 'DELETE' THEN
-- On delete we remove all properties for the collection
DELETE FROM property WHERE dav_name=OLD.dav_name;
RETURN OLD;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER collection_modified AFTER UPDATE ON collection
CREATE TRIGGER collection_modified AFTER UPDATE OR DELETE ON collection
FOR EACH ROW EXECUTE PROCEDURE collection_modified();
DROP TRIGGER caldav_data_modified ON caldav_data CASCADE;
DROP TRIGGER IF EXISTS caldav_data_modified ON caldav_data CASCADE;
CREATE or REPLACE FUNCTION caldav_data_modified() RETURNS TRIGGER AS $$
DECLARE
coll_id caldav_data.collection_id%TYPE;
@ -479,8 +486,8 @@ CREATE TRIGGER caldav_data_modified AFTER INSERT OR UPDATE OR DELETE ON caldav_d
FOR EACH ROW EXECUTE PROCEDURE caldav_data_modified();
DROP TRIGGER caldav_data_sync_dav_id ON caldav_data CASCADE;
DROP TRIGGER calendar_item_sync_dav_id ON calendar_item CASCADE;
DROP TRIGGER IF EXISTS caldav_data_sync_dav_id ON caldav_data CASCADE;
DROP TRIGGER IF EXISTS calendar_item_sync_dav_id ON calendar_item CASCADE;
CREATE or REPLACE FUNCTION sync_dav_id ( ) RETURNS TRIGGER AS $$
DECLARE
BEGIN
@ -511,7 +518,7 @@ CREATE or REPLACE FUNCTION sync_dav_id ( ) RETURNS TRIGGER AS $$
RETURN NEW;
END
$$ LANGUAGE 'plpgsql';
$$ LANGUAGE plpgsql;
CREATE TRIGGER caldav_data_sync_dav_id AFTER INSERT OR UPDATE ON caldav_data
FOR EACH ROW EXECUTE PROCEDURE sync_dav_id();
@ -566,7 +573,7 @@ BEGIN
RETURN out_bits;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- This legacy conversion function will eventually be removed, once all logic
-- has been converted to use bitmaps, or to use the bits_to_priv() output.
@ -619,7 +626,7 @@ BEGIN
RETURN out_priv;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION get_permissions( INT, INT ) RETURNS TEXT AS $$
DECLARE
@ -672,12 +679,12 @@ BEGIN
RETURN '';
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION get_group_role_no() RETURNS INT AS $$
SELECT role_no FROM roles WHERE role_name = 'Group'
$$ LANGUAGE 'sql' IMMUTABLE;
$$ LANGUAGE sql IMMUTABLE;
CREATE or REPLACE FUNCTION has_legacy_privilege( INT, TEXT, INT ) RETURNS BOOLEAN AS $$
DECLARE
@ -726,7 +733,7 @@ BEGIN
RETURN FALSE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Given a verbose DAV: or CalDAV: privilege name return the bitmask
@ -763,7 +770,7 @@ BEGIN
ELSE 0 END)::BIT(24);
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- Given an array of verbose DAV: or CalDAV: privilege names return the bitmask
@ -790,7 +797,7 @@ BEGIN
RETURN out_bits;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- NOTE: Round-trip through this and then back through privilege_to_bits
@ -885,26 +892,42 @@ BEGIN
RETURN out_priv;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- Expanded group memberships out to some depth
CREATE or REPLACE FUNCTION expand_memberships( INT8, INT ) RETURNS SETOF INT8 AS $$
SELECT group_id FROM group_member WHERE member_id = $1
UNION
SELECT expanded.g_id FROM (SELECT CASE WHEN $2 > 0 THEN expand_memberships( group_id, $2 - 1) END AS g_id
FROM group_member WHERE member_id = $1) AS expanded
WHERE expanded.g_id IS NOT NULL;
$$ LANGUAGE 'sql' STABLE STRICT;
BEGIN
IF $2 > 0 THEN
RETURN QUERY
SELECT group_id FROM group_member WHERE member_id = $1
UNION
SELECT expanded.g_id FROM (SELECT expand_memberships( group_id, $2 - 1) AS g_id
FROM group_member WHERE member_id = $1) AS expanded
WHERE expanded.g_id IS NOT NULL;
ELSE
RETURN QUERY
SELECT group_id FROM group_member WHERE member_id = $1;
END IF;
END
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Expanded group members out to some depth
CREATE or REPLACE FUNCTION expand_members( INT8, INT ) RETURNS SETOF INT8 AS $$
SELECT member_id FROM group_member WHERE group_id = $1
UNION
SELECT expanded.m_id FROM (SELECT CASE WHEN $2 > 0 THEN expand_members( member_id, $2 - 1) END AS m_id
FROM group_member WHERE group_id = $1) AS expanded
WHERE expanded.m_id IS NOT NULL;
$$ LANGUAGE 'sql' STABLE STRICT;
BEGIN
IF $2 > 0 THEN
RETURN QUERY
SELECT member_id FROM group_member WHERE group_id = $1
UNION
SELECT expanded.m_id FROM (SELECT expand_members( member_id, $2 - 1) AS m_id
FROM group_member WHERE group_id = $1) AS expanded
WHERE expanded.m_id IS NOT NULL;
ELSE
RETURN QUERY
SELECT member_id FROM group_member WHERE group_id = $1;
END IF;
END
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
@ -942,7 +965,7 @@ BEGIN
RETURN out_conferred;
END;
$$ LANGUAGE 'plpgsql' STABLE STRICT;
$$ LANGUAGE plpgsql STABLE STRICT;
-- Privileges from accessor to grantor, by user_no
@ -965,7 +988,7 @@ BEGIN
RETURN out_conferred;
END;
$$ LANGUAGE 'plpgsql' STABLE STRICT;
$$ LANGUAGE plpgsql STABLE STRICT;
-- Privileges from accessor (by principal_id) to path
@ -1039,7 +1062,7 @@ BEGIN
RETURN out_conferred;
END;
$$ LANGUAGE 'plpgsql' STABLE STRICT;
$$ LANGUAGE plpgsql STABLE STRICT;
-- List a user's memberships as a text string
@ -1059,7 +1082,7 @@ BEGIN
END LOOP;
RETURN mlist;
END;
$$ LANGUAGE 'plpgsql' STRICT;
$$ LANGUAGE plpgsql STRICT;
-- List a user's members as a text string
@ -1079,7 +1102,7 @@ BEGIN
END LOOP;
RETURN mlist;
END;
$$ LANGUAGE 'plpgsql' STRICT;
$$ LANGUAGE plpgsql STRICT;
-- List the privileges as a text string
@ -1106,10 +1129,10 @@ BEGIN
END IF;
RETURN plist;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
DROP TRIGGER principal_modified ON principal CASCADE;
DROP TRIGGER IF EXISTS principal_modified ON principal CASCADE;
CREATE or REPLACE FUNCTION principal_modified() RETURNS TRIGGER AS $$
DECLARE
BEGIN
@ -1128,7 +1151,7 @@ CREATE TRIGGER principal_modified AFTER UPDATE ON principal
FOR EACH ROW EXECUTE PROCEDURE principal_modified();
DROP TRIGGER grants_modified ON grants CASCADE;
DROP TRIGGER IF EXISTS grants_modified ON grants CASCADE;
CREATE or REPLACE FUNCTION grants_modified() RETURNS TRIGGER AS $$
DECLARE
old_to_principal INT8;
@ -1168,7 +1191,7 @@ CREATE or REPLACE FUNCTION p_has_proxy_access_to( INT8, INT ) RETURNS SETOF INT8
WHERE (default_privileges & 5::BIT(24)) != 0::BIT(24)
AND principal_id != $1
) subquery;
$$ LANGUAGE 'sql' STABLE STRICT;
$$ LANGUAGE sql STABLE STRICT;
-- A list of the principals who can proxy to this principal
@ -1178,7 +1201,7 @@ CREATE or REPLACE FUNCTION grants_proxy_access_from_p( INT8, INT ) RETURNS SETOF
WHERE by_collection IS NULL AND by_principal != $1
AND by_principal IN (SELECT expand_members(g2.to_principal,$2) FROM grants g2 WHERE g2.by_principal = $1)
;
$$ LANGUAGE 'sql' STABLE STRICT;
$$ LANGUAGE sql STABLE STRICT;
@ -1202,7 +1225,7 @@ BEGIN
VALUES( in_collection_id, in_status, tmp_int, in_dav_name);
RETURN TRUE;
END
$$ LANGUAGE 'plpgsql' VOLATILE STRICT;
$$ LANGUAGE plpgsql VOLATILE STRICT;
CREATE or REPLACE FUNCTION new_sync_token( INT8, INT8 ) RETURNS INT8 AS $$
@ -1247,10 +1270,10 @@ BEGIN
-- Returning the new token
RETURN new_token;
END
$$ LANGUAGE 'plpgsql' STRICT;
$$ LANGUAGE plpgsql STRICT;
DROP TRIGGER alarm_changed ON calendar_alarm CASCADE;
DROP TRIGGER IF EXISTS alarm_changed ON calendar_alarm CASCADE;
CREATE or REPLACE FUNCTION alarm_changed() RETURNS TRIGGER AS $$
DECLARE
oldcomponent TEXT;

View File

@ -10,41 +10,50 @@ DBADIR="`dirname \"$0\"`"
INSTALL_NOTE_FN="`mktemp -t tmp.XXXXXXXXXX`"
testawldir() {
[ -f "${1}/dba/awl-tables.sql" ]
}
#
# Attempt to locate the AWL directory
AWLDIR="${DBADIR}/../../awl"
if ! testawldir "${AWLDIR}"; then
AWLDIR="/usr/share/awl"
if ! testawldir "${AWLDIR}"; then
AWLDIR="/usr/local/share/awl"
if ! testawldir "${AWLDIR}"; then
echo "Unable to find AWL libraries"
exit 1
# Candidate locations of the AWL directory
awldirs="${DBADIR}/../../awl
/usr/share/awl
/usr/share/php/awl
/usr/local/share/awl"
# Disable globbing and use newline as seperator
set -f; IFS='
'
for d in $awldirs ; do
if [ -f "${d}/dba/awl-tables.sql" ] ; then
AWLDIR="${d}"
break
fi
fi
done
# Renable file globbing and reset seperator
set +f; unset IFS
if [ -z "${AWLDIR}" ] ; then
echo "Unable to find AWL libraries"
exit 1
fi
export AWL_DBAUSER=davical_dba
export AWL_APPUSER=davical_app
AWL_DBAUSER="${3:-davical_dba}"
AWL_APPUSER="${4:-davical_app}"
# set -x
# Get the major version for PostgreSQL
export DBVERSION="`psql -qXAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
export DBVERSION="`psql -qXAt ${PSQLOPTS} -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
install_note() {
cat >>"${INSTALL_NOTE_FN}"
}
db_users() {
psql -qXAt -c "SELECT usename FROM pg_user;" template1
psql -qXAt ${PSQLOPTS} -c "SELECT usename FROM pg_user;" template1
}
create_db_user() {
if ! db_users | grep "^${1}$" >/dev/null ; then
psql -qXAt -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1
psql -qXAt ${PSQLOPTS} -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1
cat <<EONOTE | install_note
* You will need to edit the PostgreSQL pg_hba.conf to allow the
'${1}' database user access to the 'davical' database.
@ -54,13 +63,13 @@ EONOTE
}
create_plpgsql_language() {
if ! psql ${DBA} -qXAt -c "SELECT lanname FROM pg_language;" "${DBNAME}" | grep "^plpgsql$" >/dev/null; then
createlang plpgsql "${DBNAME}"
if ! psql ${DBA} -qXAt ${PSQLOPTS} -c "SELECT lanname FROM pg_language;" "${DBNAME}" | grep "^plpgsql$" >/dev/null; then
createlang ${PSQLOPTS} plpgsql "${DBNAME}"
fi
}
try_db_user() {
[ "XtestX`psql -U "${1}" -qXAt -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ]
[ "XtestX`psql -U "${1}" -qXAt ${PSQLOPTS} -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ]
}
# Hide all the annoying NOTICE... messages
@ -70,7 +79,7 @@ create_db_user "${AWL_DBAUSER}"
create_db_user "${AWL_APPUSER}"
# FIXME: Need to check that the database was actually created.
if ! createdb --encoding UTF8 --template template0 --owner "${AWL_DBAUSER}" "${DBNAME}" ; then
if ! createdb --encoding UTF8 --template template0 --owner "${AWL_DBAUSER}" ${PSQLOPTS} "${DBNAME}" ; then
echo "Unable to create database"
exit 1
fi
@ -102,7 +111,7 @@ as a user with full permissions to access the local PostgreSQL database.
If your PostgreSQL database is non-standard then you will need to set the PGHOST,
PGPORT and/or PGCLUSTER environment variables before running this script again.
See: http://wiki.davical.org/w/Install_Errors/No_Database_Rights
See: https://wiki.davical.org/index.php/Problems_and_Solutions#No_Database_Rights
EOFAILURE
exit 1
@ -115,16 +124,16 @@ create_plpgsql_language
#
# Load the AWL base tables and schema management tables
psql -qXAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
psql -qXAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
psql -qXAt ${PSQLOPTS} ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
psql -qXAt ${PSQLOPTS} ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
#
# Load the DAViCal tables
psql -qXAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
psql -qXAt ${PSQLOPTS} ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
#
# Set permissions for the application DB user on the database
if ! ${DBADIR}/update-davical-database --dbname "${DBNAME}" --appuser "${AWL_APPUSER}" --nopatch --owner "${AWL_DBAUSER}" ; then
# Set permissions for the application DB user on the database.
if ! ${DBADIR}/update-davical-database ${DBAOPTS} --dbuser "${AWL_DBAUSER}" --dbname "${DBNAME}" --appuser "${AWL_APPUSER}" --nopatch --owner "${AWL_DBAUSER}" ; then
cat <<EOFAILURE
* * * * ERROR * * * *
The database administration utility failed. This may be due to database
@ -134,14 +143,21 @@ libraries are not available.
Check that your pg_hba.conf allows the davical_dba user to connect to the
database (and make sure you've reloaded PostgreSQL since changing that).
Also see: http://wiki.davical.org/w/Install_Errors/No_Perl_YAML
Also see: https://wiki.davical.org/index.php/Problems_and_Solutions
EOFAILURE
exit 1
fi
#
# Load the required base data
psql -qXAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}" | egrep -v '^10'
psql -qXAt ${PSQLOPTS} ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}" | grep -E -v '^10'
# Apply any patches.
if ! ${DBADIR}/update-davical-database ${DBAOPTS} --dbuser "${AWL_DBAUSER}" --dbname "${DBNAME}" --appuser "${AWL_APPUSER}" --owner "${AWL_DBAUSER}" ; then
echo "Failed to patch database"
exit 1;
fi
#
# We can override the admin password generation for regression testing predictability
@ -165,7 +181,7 @@ if [ "$ADMINPW" = "" ] ; then
ADMINPW="please change this password"
fi
psql -qX ${DBA} -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
psql -qX ${PSQLOPTS} ${DBA} -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
echo "NOTE"
echo "===="
@ -175,7 +191,7 @@ rm "${INSTALL_NOTE_FN}"
cat <<FRIENDLY
* The password for the 'admin' user has been set to '${ADMINPW}'
Thanks for trying DAViCal! Check in /usr/share/doc/davical/examples/ for
some configuration examples. For help, visit #davical on irc.oftc.net.
Thanks for trying DAViCal! Check the configuration in /etc/davical/config.php.
For help, look at our website and wiki, or visit #davical on irc.oftc.net.
FRIENDLY

View File

@ -36,7 +36,7 @@ BEGIN
ELSE 0 END)::BIT(24);
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- Given an array of verbose DAV: or CalDAV: privilege names return the bitmask
CREATE or REPLACE FUNCTION privilege_to_bits( TEXT[] ) RETURNS BIT(24) AS $$
@ -62,7 +62,7 @@ BEGIN
RETURN out_bits;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- This sequence is used in a number of places so that any DAV resource will have a unique ID
@ -115,8 +115,9 @@ CREATE TABLE collection (
description TEXT DEFAULT '',
UNIQUE(user_no,dav_name)
);
ALTER TABLE collection ADD CONSTRAINT unique_path UNIQUE (dav_name);
CREATE INDEX collection_dav_name_idx ON collection (dav_name);
-- The main event. Where we store the things the calendar throws at us.
CREATE TABLE caldav_data (
@ -135,6 +136,8 @@ CREATE TABLE caldav_data (
PRIMARY KEY ( user_no, dav_name )
);
CREATE INDEX caldav_data_collection_id_fkey ON caldav_data(collection_id);
CREATE INDEX caldav_data_dav_name_idx ON caldav_data (dav_name);
-- The parsed calendar item. Here we have pulled those events/todos/journals apart somewhat.
CREATE TABLE calendar_item (
@ -148,7 +151,9 @@ CREATE TABLE calendar_item (
last_modified TIMESTAMP,
dtstamp TIMESTAMP,
dtstart TIMESTAMP WITH TIME ZONE,
dtstart_orig TIMESTAMP WITH TIME ZONE,
dtend TIMESTAMP WITH TIME ZONE,
dtend_orig TIMESTAMP WITH TIME ZONE,
due TIMESTAMP WITH TIME ZONE,
summary TEXT,
location TEXT,
@ -164,8 +169,8 @@ CREATE TABLE calendar_item (
completed TIMESTAMP WITH TIME ZONE,
dav_id INT8 UNIQUE,
collection_id INT8 REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE,
first_instance_start TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL,
last_instance_end TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL,
first_instance_start TIMESTAMP WITH TIME ZONE DEFAULT NULL,
last_instance_end TIMESTAMP WITH TIME ZONE DEFAULT NULL,
-- Cascade updates / deletes from the caldav_data table
CONSTRAINT caldav_exists FOREIGN KEY ( user_no, dav_name )
@ -175,7 +180,7 @@ CREATE TABLE calendar_item (
PRIMARY KEY ( user_no, dav_name )
);
CREATE INDEX calendar_item_collection_id_fkey ON calendar_item(collection_id);
CREATE INDEX calendar_item_dav_name_idx ON calendar_item (dav_name);
-- Each user can be related to each other user. This mechanism can also
@ -262,7 +267,7 @@ CREATE or REPLACE FUNCTION sync_dav_id ( ) RETURNS TRIGGER AS $$
RETURN NEW;
END
$$ LANGUAGE 'plpgsql';
$$ LANGUAGE plpgsql;
CREATE TRIGGER caldav_data_sync_dav_id AFTER INSERT OR UPDATE ON caldav_data
FOR EACH ROW EXECUTE PROCEDURE sync_dav_id();
@ -311,6 +316,8 @@ CREATE TABLE sync_tokens (
collection_id INT8 REFERENCES collection(collection_id) ON DELETE CASCADE ON UPDATE CASCADE,
modification_time TIMESTAMP WITH TIME ZONE DEFAULT current_timestamp
);
CREATE INDEX sync_tokens_collection_idx ON sync_tokens (collection_id);
CREATE TABLE sync_changes (
sync_time TIMESTAMP WITH TIME ZONE DEFAULT current_timestamp,
@ -364,6 +371,7 @@ CREATE TABLE addressbook_resource (
CREATE TABLE addressbook_address_adr (
dav_id INT8 NOT NULL REFERENCES caldav_data(dav_id) ON UPDATE CASCADE ON DELETE CASCADE,
count INT,
type TEXT,
box_no TEXT,
unit_no TEXT,
@ -372,35 +380,59 @@ CREATE TABLE addressbook_address_adr (
region TEXT,
postcode TEXT,
country TEXT,
property TEXT -- The full text of the property
property TEXT, -- The full text of the property
UNIQUE (dav_id, count)
);
CREATE TABLE addressbook_address_tel (
dav_id INT8 NOT NULL REFERENCES caldav_data(dav_id) ON UPDATE CASCADE ON DELETE CASCADE,
count INT,
type TEXT,
tel TEXT,
property TEXT -- The full text of the property
property TEXT, -- The full text of the property
UNIQUE (dav_id, count)
);
CREATE TABLE addressbook_address_email (
dav_id INT8 NOT NULL REFERENCES caldav_data(dav_id) ON UPDATE CASCADE ON DELETE CASCADE,
count INT,
type TEXT,
email TEXT,
property TEXT -- The full text of the property
property TEXT, -- The full text of the property
UNIQUE (dav_id, count)
);
CREATE TABLE calendar_alarm (
dav_id INT8 NOT NULL REFERENCES caldav_data(dav_id) ON UPDATE CASCADE ON DELETE CASCADE,
count INT,
action TEXT,
trigger TEXT,
summary TEXT,
description TEXT,
next_trigger TIMESTAMP WITH TIME ZONE,
component TEXT, -- The full text of the component
trigger_state CHAR DEFAULT 'N' -- 'N' => 'New/Needs setting', 'A' = 'Active', 'O' = 'Old'
trigger_state CHAR DEFAULT 'N', -- 'N' => 'New/Needs setting', 'A' = 'Active', 'O' = 'Old'
UNIQUE (dav_id, count)
);
CREATE TABLE calendar_attendee_email_status (
email_status_id INT8 PRIMARY KEY,
description TEXT NOT NULL
);
INSERT INTO calendar_attendee_email_status (email_status_id, description)
VALUES
(1, 'waiting for invitation to be sent'),
(2, 'invitation has been sent'),
(3, 'waiting for schedule change to be sent'),
(4, 'schedule change has been sent'),
(11, 'attendee has accepted'),
(12, 'attendee indicated maybe'),
(13, 'attendee has refused')
;
CREATE TABLE calendar_attendee (
dav_id INT8 NOT NULL REFERENCES caldav_data(dav_id) ON UPDATE CASCADE ON DELETE CASCADE,
status TEXT,
@ -412,6 +444,8 @@ CREATE TABLE calendar_attendee (
property TEXT, -- The full text of the property
attendee_state TEXT, -- Internal DAViCal processing state
weak_etag TEXT, -- The week_etag applying for this attendee state
email_status INT REFERENCES calendar_attendee_email_status(email_status_id) DEFAULT 1 NOT NULL,
is_remote BOOLEAN DEFAULT false,
PRIMARY KEY ( dav_id, attendee )
);
@ -444,4 +478,25 @@ $$ LANGUAGE plpgsql ;
ALTER TABLE dav_binding ADD CONSTRAINT "dav_name_does_not_exist"
CHECK (NOT real_path_exists(dav_name));
SELECT new_db_revision(1,2,11, 'Novembre' );
-- We create a bunch of counters for reporting basic statistics
CREATE SEQUENCE metrics_count_get;
CREATE SEQUENCE metrics_count_put;
CREATE SEQUENCE metrics_count_propfind;
CREATE SEQUENCE metrics_count_proppatch;
CREATE SEQUENCE metrics_count_report;
CREATE SEQUENCE metrics_count_head;
CREATE SEQUENCE metrics_count_options;
CREATE SEQUENCE metrics_count_post;
CREATE SEQUENCE metrics_count_mkcalendar;
CREATE SEQUENCE metrics_count_mkcol;
CREATE SEQUENCE metrics_count_delete;
CREATE SEQUENCE metrics_count_move;
CREATE SEQUENCE metrics_count_acl;
CREATE SEQUENCE metrics_count_lock;
CREATE SEQUENCE metrics_count_unlock;
CREATE SEQUENCE metrics_count_mkticket;
CREATE SEQUENCE metrics_count_delticket;
CREATE SEQUENCE metrics_count_bind;
CREATE SEQUENCE metrics_count_unknown;
SELECT new_db_revision(1,3,5, 'Maj' );

View File

@ -46,7 +46,7 @@ CREATE or REPLACE FUNCTION sync_dav_id ( ) RETURNS TRIGGER AS '
RETURN NEW;
END
' LANGUAGE 'plpgsql';
' LANGUAGE plpgsql;
CREATE TRIGGER caldav_data_sync_dav_id AFTER INSERT OR UPDATE ON caldav_data
FOR EACH ROW EXECUTE PROCEDURE sync_dav_id();

View File

@ -48,7 +48,7 @@ CREATE or REPLACE FUNCTION sync_dav_id ( ) RETURNS TRIGGER AS '
RETURN NEW;
END
' LANGUAGE 'plpgsql';
' LANGUAGE plpgsql;
CREATE TRIGGER caldav_data_sync_dav_id AFTER INSERT OR UPDATE ON caldav_data
FOR EACH ROW EXECUTE PROCEDURE sync_dav_id();

View File

@ -42,7 +42,7 @@ CREATE or REPLACE FUNCTION sync_dav_id ( ) RETURNS TRIGGER AS '
RETURN NEW;
END
' LANGUAGE 'plpgsql';
' LANGUAGE plpgsql;
-- CREATE TRIGGER caldav_data_sync_dav_id AFTER INSERT OR UPDATE ON caldav_data
-- FOR EACH ROW EXECUTE PROCEDURE sync_dav_id();

View File

@ -28,7 +28,7 @@ CREATE or REPLACE FUNCTION check_db_revision( INT, INT, INT ) RETURNS BOOLEAN AS
RAISE EXCEPTION ''Database has not been upgraded to %.%.%'', major, minor, patch;
RETURN FALSE;
END;
' LANGUAGE 'plpgsql';
' LANGUAGE plpgsql;
-- Just in case these constraints got added manually, so we won't fail

22
dba/patches/1.2.12.sql Normal file
View File

@ -0,0 +1,22 @@
-- Apply database indexes in support of Issue #31 Database performance improvements
BEGIN;
SELECT check_db_revision(1,2,11);
-- These two indexes improves performance of the stored function write_sync_change(), which is called on every calendar item update
CREATE INDEX sync_tokens_collection_idx ON sync_tokens (collection_id);
CREATE INDEX caldav_data_dav_name_idx ON caldav_data (dav_name);
-- Improves performance of the stored function sync_dav_id(), which is called via a trigger on any insert or update on caldav_data
CREATE INDEX calendar_item_dav_name_idx ON calendar_item (dav_name);
-- Speeds up construction of CalDAVRequest, in particular when DaviCAL attempts to determine the "correct" URL for a calendar collection
CREATE INDEX collection_dav_name_idx ON collection (dav_name);
SELECT new_db_revision(1,2,12, 'Decembre' );
COMMIT;
ROLLBACK;

View File

@ -42,7 +42,7 @@ CREATE or REPLACE FUNCTION sync_dav_id ( ) RETURNS TRIGGER AS '
RETURN NEW;
END
' LANGUAGE 'plpgsql';
' LANGUAGE plpgsql;
-- CREATE TRIGGER caldav_data_sync_dav_id AFTER INSERT OR UPDATE ON caldav_data
-- FOR EACH ROW EXECUTE PROCEDURE sync_dav_id();

View File

@ -42,7 +42,7 @@ CREATE or REPLACE FUNCTION sync_dav_id ( ) RETURNS TRIGGER AS '
RETURN NEW;
END
' LANGUAGE 'plpgsql';
' LANGUAGE plpgsql;
-- CREATE TRIGGER caldav_data_sync_dav_id AFTER INSERT OR UPDATE ON caldav_data
-- FOR EACH ROW EXECUTE PROCEDURE sync_dav_id();

View File

@ -50,7 +50,7 @@ BEGIN
RETURN out_bits;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- This legacy conversion function will eventually be removed, once all logic
-- has been converted to use bitmaps, or to use the bits_to_priv() output.
@ -103,7 +103,7 @@ BEGIN
RETURN out_priv;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION get_permissions( INT, INT ) RETURNS TEXT AS $$
DECLARE
@ -156,12 +156,12 @@ BEGIN
RETURN '';
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION get_group_role_no() RETURNS INT AS $$
SELECT role_no FROM roles WHERE role_name = 'Group'
$$ LANGUAGE 'sql' IMMUTABLE;
$$ LANGUAGE sql IMMUTABLE;
CREATE or REPLACE FUNCTION has_legacy_privilege( INT, TEXT, INT ) RETURNS BOOLEAN AS $$
DECLARE
@ -210,7 +210,7 @@ BEGIN
RETURN FALSE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Given a verbose DAV: or CalDAV: privilege name return the bitmask
@ -247,7 +247,7 @@ BEGIN
ELSE 0 END)::BIT(24);
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- Given an array of verbose DAV: or CalDAV: privilege names return the bitmask
@ -274,7 +274,7 @@ BEGIN
RETURN out_bits;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
-- This legacy conversion function will eventually be removed, once all logic
@ -372,7 +372,7 @@ BEGIN
RETURN out_priv;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
@ -491,7 +491,7 @@ BEGIN
RETURN out_bits;
END
$$
LANGUAGE 'plpgsql' IMMUTABLE STRICT;
LANGUAGE plpgsql IMMUTABLE STRICT;
ALTER TABLE relationship_type ADD COLUMN bit_confers BIT(24) DEFAULT privilege_to_bits(ARRAY['DAV::read','DAV::write']);

View File

@ -54,7 +54,7 @@ BEGIN
VALUES( in_collection_id, in_status, tmp_int, in_dav_name);
RETURN TRUE;
END
$$ LANGUAGE 'plpgsql' VOLATILE STRICT;
$$ LANGUAGE plpgsql VOLATILE STRICT;
CREATE or REPLACE FUNCTION new_sync_token( INT8, INT8 ) RETURNS INT8 AS $$
@ -76,4 +76,4 @@ BEGIN
INSERT INTO sync_tokens(collection_id, sync_token) VALUES( in_collection_id, tmp_int );
RETURN tmp_int;
END
$$ LANGUAGE 'plpgsql' STRICT;
$$ LANGUAGE plpgsql STRICT;

36
dba/patches/1.3.1.sql Normal file
View File

@ -0,0 +1,36 @@
-- Notable enhancement: Add/Alter tables for dealing with remote attendee handling
BEGIN;
SELECT check_db_revision(1,2,12);
CREATE TABLE calendar_attendee_email_status (
email_status_id INT8 PRIMARY KEY,
description TEXT NOT NULL
);
INSERT INTO calendar_attendee_email_status (email_status_id, description)
VALUES
(1, 'waiting for invitation to be sent'),
(2, 'invitation has been sent'),
(3, 'waiting for schedule change to be sent'),
(4, 'schedule change has been sent'),
(11, 'attendee has accepted'),
(12, 'attendee indicated maybe'),
(13, 'attendee has refused')
;
ALTER TABLE calendar_attendee
ADD COLUMN email_status INT REFERENCES calendar_attendee_email_status(email_status_id) DEFAULT 1 NOT NULL ;
ALTER TABLE calendar_attendee
ADD COLUMN is_remote BOOLEAN DEFAULT FALSE;
-- A new year! http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/
SELECT new_db_revision(1,3,1, 'Styczeń' );
COMMIT;
ROLLBACK;

32
dba/patches/1.3.2.sql Normal file
View File

@ -0,0 +1,32 @@
-- Notable enhancement: Sequence counters for reporting metrics for monitoring.
BEGIN;
SELECT check_db_revision(1,3,1);
CREATE SEQUENCE metrics_count_get;
CREATE SEQUENCE metrics_count_put;
CREATE SEQUENCE metrics_count_propfind;
CREATE SEQUENCE metrics_count_proppatch;
CREATE SEQUENCE metrics_count_report;
CREATE SEQUENCE metrics_count_head;
CREATE SEQUENCE metrics_count_options;
CREATE SEQUENCE metrics_count_post;
CREATE SEQUENCE metrics_count_mkcalendar;
CREATE SEQUENCE metrics_count_mkcol;
CREATE SEQUENCE metrics_count_delete;
CREATE SEQUENCE metrics_count_move;
CREATE SEQUENCE metrics_count_acl;
CREATE SEQUENCE metrics_count_lock;
CREATE SEQUENCE metrics_count_unlock;
CREATE SEQUENCE metrics_count_mkticket;
CREATE SEQUENCE metrics_count_delticket;
CREATE SEQUENCE metrics_count_bind;
CREATE SEQUENCE metrics_count_unknown;
-- A new year! http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/
SELECT new_db_revision(1,3,2, 'Luty' );
COMMIT;
ROLLBACK;

23
dba/patches/1.3.3.sql Normal file
View File

@ -0,0 +1,23 @@
-- Notable enhancement: change first_instance_start and last_instance_end to be timezone-aware
BEGIN;
SELECT check_db_revision(1,3,2);
ALTER TABLE calendar_item
ALTER COLUMN first_instance_start
TYPE TIMESTAMP WITH TIME ZONE
-- I don't believe the column has ever been populated, but if it has, we want
-- to throw away that data anyway because we don't know its timezone
USING NULL::timestamptz;
ALTER TABLE calendar_item
ALTER COLUMN last_instance_end
TYPE TIMESTAMP WITH TIME ZONE
USING NULL::timestamptz; -- As above
-- http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/
SELECT new_db_revision(1,3,3, 'Marzec' );
COMMIT;
ROLLBACK;

67
dba/patches/1.3.4.sql Normal file
View File

@ -0,0 +1,67 @@
-- Notable enhancement: add unique constraints to tables missing them
BEGIN;
SELECT check_db_revision(1,3,3);
-- Temporary sequence so we can set the count in each of the tables.
--
-- While this doesn't give the result we really want, where count increments
-- for each dav_id, it'll give us the uniqueness we want. Then as users
-- update their records, we'll eventually up with counts per dav_id.
CREATE SEQUENCE temporary_seq;
-- addressbook_address_adr
ALTER TABLE addressbook_address_adr
ADD COLUMN count INT;
UPDATE addressbook_address_adr
SET count = nextval('temporary_seq');
CREATE UNIQUE INDEX addressbook_address_adr_pk
ON addressbook_address_adr(dav_id, count);
-- addressbook_address_email
ALTER TABLE addressbook_address_email
ADD COLUMN count INT;
CREATE UNIQUE INDEX addressbook_address_email_pk
ON addressbook_address_email(dav_id, count);
UPDATE addressbook_address_email
SET count = nextval('temporary_seq');
-- addressbook_address_tel
ALTER TABLE addressbook_address_tel
ADD COLUMN count INT;
UPDATE addressbook_address_tel
SET count = nextval('temporary_seq');
CREATE UNIQUE INDEX addressbook_address_tel_pk
ON addressbook_address_tel(dav_id, count);
-- calendar_alarm
ALTER TABLE calendar_alarm
ADD COLUMN count INT;
UPDATE calendar_alarm
SET count = nextval('temporary_seq');
CREATE UNIQUE INDEX calendar_alarms_pk
ON calendar_alarm(dav_id, count);
-- Tidy up after ourselves.
DROP SEQUENCE temporary_seq;
-- Add unique constraints where no other changes are needed.
CREATE UNIQUE INDEX role_member_pk
ON role_member (role_no, user_no);
CREATE UNIQUE INDEX tmp_password_pk
ON tmp_password (user_no, valid_until);
-- http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/
SELECT new_db_revision(1,3,4, 'Kwiecień' );
COMMIT;
ROLLBACK;

25
dba/patches/1.3.5.sql Normal file
View File

@ -0,0 +1,25 @@
-- Notable enhancement: add shadow columns to calendar_item
BEGIN;
SELECT check_db_revision(1,3,4);
ALTER TABLE calendar_item
ADD COLUMN dtstart_orig TIMESTAMP WITH TIME ZONE,
ADD COLUMN dtend_orig TIMESTAMP WITH TIME ZONE;
-- We don't know what the user sent us without reparsing all the VCALENDAR
-- blobs, which I'm not going to do in SQL. We'll just have to wing it, and
-- hope this is good enough (it is no better than the current situation for
-- existing deployments) and dtstart_orig and dtend_orig will end up with
-- correct data over time as users re-upload the VCALENDAR blobs.
UPDATE calendar_item
SET
dtstart_orig = dtstart,
dtend_orig = dtend;
-- http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/
SELECT new_db_revision(1,3,5, 'Maj' );
COMMIT;
ROLLBACK;

42
dba/patches/1.3.6.sql Normal file
View File

@ -0,0 +1,42 @@
-- Add CalDAV labels to principal types to remove hardcoded ID -> Label
-- mappings in code.
--
-- List is from: https://tools.ietf.org/html/rfc5545#section-3.2.3
BEGIN;
SELECT check_db_revision(1,3,5);
INSERT INTO roles ( role_no, role_name ) VALUES( 5, 'Room');
ALTER TABLE principal_type ADD COLUMN label VARCHAR;
-- Add labels
UPDATE principal_type
SET label = 'INDIVIDUAL'
WHERE principal_type_id = 1;
UPDATE principal_type
SET label = 'RESOURCE'
WHERE principal_type_id = 2;
UPDATE principal_type
SET label = 'GROUP'
WHERE principal_type_id = 3;
-- Add suport for the ROOM principal type.
-- Having hardcoded IDs pains me. A lot.
INSERT INTO principal_type
(principal_type_id, principal_type_desc, label)
VALUES (4, 'Room', 'ROOM');
-- Ensure that the sequence is primed, on my instance the sequence had
-- last_value as 0.
SELECT setval('principal_type_principal_type_id_seq',
(SELECT max(principal_type_id) FROM principal_type)
);
-- http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/
SELECT new_db_revision(1,3,6, 'Czerwiec');
COMMIT;
ROLLBACK;

View File

@ -1,7 +1,7 @@
/**
* PostgreSQL Functions for RRULE handling
*
* @package rscds
* @package davical
* @subpackage database
* @author Andrew McMillan <andrew@morphoss.com>
* @copyright Morphoss Ltd - http://www.morphoss.com/
@ -75,7 +75,7 @@ BEGIN
RETURN result;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Return a SETOF dates within the month of a particular date which match a string of BYDAY rule specifications
@ -170,7 +170,7 @@ BEGIN
RETURN;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
-- Return a SETOF dates within the month of a particular date which match a string of BYDAY rule specifications
@ -204,7 +204,7 @@ BEGIN
RETURN;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Return a SETOF dates within the week of a particular date which match a single BYDAY rule specification
@ -238,12 +238,12 @@ BEGIN
RETURN;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE or REPLACE FUNCTION event_has_exceptions( TEXT ) RETURNS BOOLEAN AS $$
SELECT $1 ~ E'\nRECURRENCE-ID(;TZID=[^:]+)?:[[:space:]]*[[:digit:]]{8}(T[[:digit:]]{6})?'
$$ LANGUAGE 'sql' IMMUTABLE STRICT;
$$ LANGUAGE sql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -261,7 +261,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -277,7 +277,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -293,7 +293,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -309,7 +309,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -356,7 +356,7 @@ BEGIN
END IF;
CLOSE curse;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -396,7 +396,7 @@ BEGIN
RETURN NEXT after;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -428,7 +428,7 @@ BEGIN
END LOOP;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -473,7 +473,7 @@ BEGIN
END LOOP;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -507,7 +507,7 @@ BEGIN
END IF;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -535,7 +535,7 @@ BEGIN
RETURN NEXT after;
END IF;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -632,7 +632,7 @@ BEGIN
END LOOP;
-- RETURN QUERY;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -651,7 +651,7 @@ BEGIN
RETURN NEXT rowvar.d;
END LOOP;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -701,9 +701,9 @@ BEGIN
RETURN FOUND;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE or REPLACE FUNCTION icalendar_interval_to_SQL( TEXT ) RETURNS interval AS $function$
SELECT CASE WHEN substring($1,1,1) = '-' THEN -1 ELSE 1 END * regexp_replace( regexp_replace($1, '[PT-]', '', 'g'), '([A-Z])', E'\\1 ', 'g')::interval;
$function$ LANGUAGE 'sql' IMMUTABLE STRICT;
$function$ LANGUAGE sql IMMUTABLE STRICT;

View File

@ -1,7 +1,7 @@
/**
* PostgreSQL Functions for RRULE handling
*
* @package rscds
* @package davical
* @subpackage database
* @author Andrew McMillan <andrew@morphoss.com>
* @copyright Morphoss Ltd - http://www.morphoss.com/
@ -26,7 +26,7 @@
*/
-- Create a composite type for the parts of the RRULE.
DROP TYPE rrule_parts CASCADE;
DROP TYPE IF EXISTS rrule_parts CASCADE;
CREATE TYPE rrule_parts AS (
base TIMESTAMP WITH TIME ZONE,
until TIMESTAMP WITH TIME ZONE,
@ -75,7 +75,7 @@ BEGIN
RETURN result;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Return a SETOF dates within the month of a particular date which match a string of BYDAY rule specifications
@ -161,7 +161,7 @@ BEGIN
RETURN;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
-- Return a SETOF dates within the month of a particular date which match a string of BYDAY rule specifications
@ -195,7 +195,7 @@ BEGIN
RETURN;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
-- Return a SETOF dates within the week of a particular date which match a single BYDAY rule specification
@ -229,12 +229,12 @@ BEGIN
RETURN;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE or REPLACE FUNCTION event_has_exceptions( TEXT ) RETURNS BOOLEAN AS $$
SELECT $1 ~ E'\nRECURRENCE-ID(;TZID=[^:]+)?:[[:space:]]*[[:digit:]]{8}(T[[:digit:]]{6})?'
$$ LANGUAGE 'sql' IMMUTABLE STRICT;
$$ LANGUAGE sql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -252,7 +252,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -268,7 +268,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -284,7 +284,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -300,7 +300,7 @@ BEGIN
END IF;
RETURN TRUE;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -340,7 +340,7 @@ BEGIN
END IF;
CLOSE curse;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
------------------------------------------------------------------------------------------------------
@ -380,7 +380,7 @@ BEGIN
RETURN NEXT after;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -410,7 +410,7 @@ BEGIN
RETURN QUERY SELECT d FROM rrule_bysetpos_filter(curse,rrule.bysetpos) d;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -453,7 +453,7 @@ BEGIN
RETURN QUERY SELECT d FROM rrule_bysetpos_filter(curse,rrule.bysetpos) d;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -483,7 +483,7 @@ BEGIN
END IF;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -510,7 +510,7 @@ BEGIN
RETURN NEXT after;
END IF;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -610,7 +610,7 @@ BEGIN
END LOOP;
-- RETURN QUERY;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -626,7 +626,7 @@ BEGIN
maxdate := current_date + '10 years'::interval;
RETURN QUERY SELECT d FROM rrule_event_instances_range( basedate, repeatrule, basedate, maxdate, 300 ) d;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
------------------------------------------------------------------------------------------------------
@ -676,11 +676,11 @@ BEGIN
RETURN FOUND;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;
$$ LANGUAGE plpgsql IMMUTABLE;
-- Create a composite type for the parts of the RRULE.
DROP TYPE rrule_instance CASCADE;
DROP TYPE IF EXISTS rrule_instance CASCADE;
CREATE TYPE rrule_instance AS (
dtstart TIMESTAMP WITH TIME ZONE,
rrule TEXT,
@ -707,10 +707,10 @@ BEGIN
END LOOP;
END;
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
$$ LANGUAGE plpgsql IMMUTABLE STRICT;
CREATE or REPLACE FUNCTION icalendar_interval_to_SQL( TEXT ) RETURNS interval AS $function$
SELECT CASE WHEN substring($1,1,1) = '-' THEN -1 ELSE 1 END * regexp_replace( regexp_replace($1, '[PT-]', '', 'g'), '([A-Z])', E'\\1 ', 'g')::interval;
$function$ LANGUAGE 'sql' IMMUTABLE STRICT;
$function$ LANGUAGE sql IMMUTABLE STRICT;

View File

@ -2,7 +2,9 @@ TRUNCATE supported_locales;
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'en', 'English', 'English' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'de', 'German', 'Deutsch' );
VALUES( 'ar', 'Arabic', 'العَرَبِية' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'de_DE', 'German', 'Deutsch' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'es_AR', 'Spanish (Argentina)', 'Español (Argentina)' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
@ -12,26 +14,32 @@ INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'es_VE', 'Spanish (Venezuela)', 'Español (Venezuela)' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'et', 'Estonian', 'Eesti' );
VALUES( 'et_EE', 'Estonian', 'Eesti' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'fr', 'French', 'Français' );
VALUES( 'fi_FI', 'Finnish', 'Suomi' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'hu', 'Hungarian', 'Magyar' );
VALUES( 'fr_FR', 'French', 'Français' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'it', 'Italian', 'Italiano' );
VALUES( 'hu_HU', 'Hungarian', 'Magyar' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'ja', 'Japanese', '日本語' );
VALUES( 'it_IT', 'Italian', 'Italiano' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'nb', 'Norwegian', 'Bokmål' );
VALUES( 'ja_JP', 'Japanese', '日本語' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'nl', 'Netherlands', 'Nederlands' );
VALUES( 'ko_KR', 'Korean (Korea)', '한국어' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'pl', 'Polish', 'Polski' );
VALUES( 'nb_NO', 'Norwegian', 'Bokmål' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'nl_NL', 'Netherlands', 'Nederlands' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'pl_PL', 'Polish', 'Polski' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'pt_BR', 'Brazilian Portuguese', 'Brazilian Portuguese' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'pt_PT', 'Portuguese', 'Portuguese' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'ru', 'Russian', 'Русский' );
VALUES( 'ru_RU', 'Russian', 'Русский' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'sv', 'Swedish', 'Svenska' );
VALUES( 'sk_SK', 'Slovak (Slovakia)', 'Slovenčina' );
INSERT INTO supported_locales ( locale, locale_name_en, locale_name_locale )
VALUES( 'sv_SE', 'Swedish', 'Svenska' );

View File

@ -26,8 +26,8 @@ my $force_owner = "";
my $config_file = "config/administration.yml";
my $dbadir = $0;
$dbadir =~ s#/[^/]*$##;
my $patchdir = $dbadir . "/patches";
$dbadir =~ s#[^/]*$##;
my $patchdir = $dbadir . "patches";
#
# We look in a few places for the config file. First relative to
@ -35,7 +35,7 @@ my $patchdir = $dbadir . "/patches";
# start to look in absolute locations. Then we give up :-)
if ( ! -f $config_file ) {
$config_file = $0;
$config_file =~ s{[^/]+/update-[a-z]+-database}{config/administration.yml};
$config_file =~ s{update-[a-z]+-database}{../config/administration.yml};
}
if ( ! -f $config_file ) {
$config_file = "/etc/davical/administration.yml";

View File

@ -1,8 +1,8 @@
-- Define an updateable view for dav_principal which conbines the AWL usr
-- Define an updateable view for dav_principal which combines the AWL usr
-- record 1:1 with the principal table
DROP VIEW dav_principal CASCADE;
DROP VIEW IF EXISTS dav_principal CASCADE;
CREATE OR REPLACE VIEW dav_principal AS
SELECT user_no, usr.active AS user_active, joined AS created, updated AS modified,
username, password, fullname, email,

View File

@ -24,16 +24,16 @@ if EXIST %AWLDIR%\awl-tables.sql (
)
rem Set DB user, web user, DB config directory, Windows DB config directory
set AWL_DBAUSER=davical_dba
set AWL_APPUSER=davical_app
set AWL_DBAUSER=%3-davical_dba
set AWL_APPUSER=%4-davical_app
set DBA=%AWL_DBAUSER%
rem Need PostgreSQL location
if DEFINED %PGDIR% (
if DEFINED PGDIR (
rem Use existing variable
) ELSE (
if EXIST "c:\Program Files\PostgreSQL\8.3\bin\createuser" (
set PGDIR="c:\Program Files\PostgreSQL\8.3\bin"
if EXIST "c:\Program Files\PostgreSQL\9.3\bin\createuser.exe" (
set PGDIR="c:\Program Files\PostgreSQL\9.3\bin"
)
)
echo PGDIR=%PGDIR%
@ -65,12 +65,12 @@ rem Test if egrep is available
rem You can download egrep.exe for Windows e.g. from UnxUtils: http://unxutils.sourceforge.net/):
egrep 2>NULL
echo egrep results: %ERRORLEVEL%
if %ERRORLEVEL% EQU 3 (
if %ERRORLEVEL% EQU 9009 (
rem No egrep
rem Load the AWL base tables and schema management tables
echo load windows\awl-tables.sql [no egrep]
%PGDIR%\psql -q -f %AWLDIR/awl-tables.sql %DBNAME% %USERNAME% 2>&1
%PGDIR%\psql -q -f %AWLDIR%/awl-tables.sql %DBNAME% %USERNAME% 2>&1
echo load windows\schema-management.sql [no egrep]
%PGDIR%\psql -q -f %AWLDIR%/schema-management.sql %DBNAME% %USERNAME% 2>&1
@ -94,8 +94,21 @@ if %ERRORLEVEL% EQU 3 (
)
del NULL
echo load caldav_functions
rem Apply locales data
%PGDIR%\psql -q -f %DBADIR%/supported_locales.sql %DBNAME% %USERNAME%
echo Supported locales updated
rem Apply any views (TODO really need to load all scripts in views folder)
%PGDIR%\psql -q -f %DBADIR%/views/dav_principal.sql %DBNAME% %USERNAME%
echo Davical views updated
rem Apply functions
%PGDIR%\psql -q -f %DBADIR%/caldav_functions.sql %DBNAME% %USERNAME%
echo CalDAV functions updated
rem Apply RRULE functions
%PGDIR%\psql -q -f %DBADIR%/rrule_functions.sql %DBNAME% %USERNAME%
echo RRULE functions updated
echo TBD: Set permissions for the application DB user on the database
rem if EXIST %DBADIR%\update-davical-database (
@ -112,7 +125,7 @@ rem echo * * * * ERROR * * * *
rem echo The database administration utility failed. This is usually due to the Perl YAML
rem echo or the Perl DBD::Pg libraries not being available.
rem echo See: http://wiki.davical.org/w/Install_Errors/No_Perl_YAML
rem echo See: https://wiki.davical.org/index.php/Problems_and_Solutions
rem exit /B 2
rem )

7
debian/.gitignore vendored
View File

@ -1,7 +0,0 @@
files
html
rscds
davical
davical-doc
rscds-phpdoc.ini
*.debhelper.log

43
debian/README.Debian vendored
View File

@ -1,14 +1,35 @@
DAViCal for Debian
----------------
Initial DAViCal configuration on Debian
=======================================
This is a CalDAV Server which I wrote because I was getting
sick of the length of time it was taking to make worthwhile
CalDAV server-side implementations that worked OK with
Evolution.
General installation and configuration information is available at
https://www.davical.org/installation.php. Please visit that website for
details and further reading.
Then, when I finally did find a CalDAV store that worked, I
found that it was quite bloated because it wanted to do vast
amounts of irrelevant stuff. Well, irrelevant for me in any
case.
After installation, basic configuration with a local database consists
of the following steps:
Andrew McMillan <andrew@catalyst.net.nz>, Tue. 2 May 2006 07:11:22 +1200
1. Allow DAViCal to connect to the database, by adding the following 2
lines at the top of your pg_hba.conf file (path depending on postgres
version, for Debian Jessie try /etc/postgresql/9.4/main/pg_hba.conf):
local davical davical_app trust
local davical davical_dba trust
Don't forget to restart postgres for the change to take effect!
2. Create the database, noting the displayed DAViCal admin password:
sudo -u postgres /usr/share/davical/dba/create-database.sh
3. Review and activate the default Apache config ('a2ensite davical'),
or symlink /usr/share/davical/htdocs somewhere below an existing vhost's
document root.
4. Customize /etc/davical/config.php if you want.
5. Point your browser to /setup.php (or wherever you symlinked the
htdocs directory in step 3), log in as user admin with the password
noted in step 2 above, and review the displayed issues, if any.
After that you're all set to create and configure users, upload existing
calendars or set up clients.

233
debian/changelog vendored
View File

@ -1,8 +1,235 @@
davical (1.1.2-1) unstable; urgency=low
davical (1.1.13-2) unstable; urgency=medium
* New upstream release (closes:#702403)
* fix Debian autopkgtest / CI: prevent caching of phpunit results, like we
do already for "make test"
-- Andrew McMillan <awm@debian.org> Wed, 01 May 2013 10:05:33 +1200
-- Florian Schlichting <fsfs@debian.org> Wed, 27 May 2026 23:10:28 +0200
davical (1.1.13-1) unstable; urgency=medium
[ Andrew Ruthven ]
* New upstream release (Closes: #1040996, #1054143)
[ Florian Schlichting ]
* Acknowledge NMUs by David Prévot - thank you! (closes: #1121419)
* Depend on AWL 0.65
* Update copyright years
* Drop redundant "Priority: optional" and "Rules-Requires-Root: no" fields
in debian/control
* Update Doxyfile using "doxygen -u"
* Add graphviz to Build-Depends, our doxygen config needs "dot"
* Update debian/watch to version 5 (Gitlab template)
* Declare compliance with Debian Policy 4.7.4
-- Florian Schlichting <fsfs@debian.org> Mon, 11 May 2026 23:00:17 +0200
davical (1.1.12-2.3) unstable; urgency=medium
* Non-maintainer upload
* No change upload for the reproducible effort
-- David Prévot <taffit@debian.org> Wed, 26 Nov 2025 08:37:04 +0100
davical (1.1.12-2.2) unstable; urgency=medium
* Non-maintainer upload
* Update latest patch to PHPUnit 12 syntax (Closes: #1099659)
-- David Prévot <taffit@debian.org> Thu, 25 Sep 2025 08:27:38 +0200
davical (1.1.12-2.1) unstable; urgency=medium
* Non-maintainer upload
* Add support for PHPUnit 10 (Closes: #1039746)
-- David Prévot <taffit@debian.org> Tue, 14 Jan 2025 13:45:14 +0100
davical (1.1.12-2) unstable; urgency=medium
* Cherry-pick two bug fixes from upstream:
+ use "." to concatenate strings, not "+" (gitlab #288)
+ Add a missing space to a SQL statement to fix adding groups (gitlab #294)
-- Florian Schlichting <fsfs@debian.org> Mon, 01 May 2023 00:29:20 +0200
davical (1.1.12-1) unstable; urgency=medium
[ Debian Janitor ]
* Remove constraints unnecessary since buster (oldstable):
+ Remove 1 maintscript entries from 1 files.
[ Florian Schlichting ]
* New upstream release
* Depend on AWL 0.64
* Update copyright years
* Declare compliance with Debian Policy 4.6.2
* Update lintian overrides (.txt is not necessarily documentation)
-- Florian Schlichting <fsfs@debian.org> Mon, 13 Mar 2023 21:59:44 +0100
davical (1.1.11-1) unstable; urgency=medium
* New upstream release(closes: #1004285, #1004393)
* Depend on AWL 0.63
* Update copyright years
* Declare compliance with Debian Policy 4.6.1
-- Florian Schlichting <fsfs@debian.org> Tue, 04 Oct 2022 13:56:36 +0200
davical (1.1.10-1) unstable; urgency=medium
* New upstream release (closes: #703388)
* Depend on AWL 0.62
* Bump debhelper compat to level 13 (no changes necessary)
* Bump d/watch to version 4 (no changes necessary)
* Update copyright years
* Add Rules-Requires-Root: no
* Declare compliance with Debian Policy 4.5.1
-- Florian Schlichting <fsfs@debian.org> Mon, 01 Mar 2021 21:24:31 +0800
davical (1.1.9.3-1.1) unstable; urgency=high
* Non-maintainer upload.
* Stop using rst2pdf that might not be in bullseye. (Closes: #962653)
-- Adrian Bunk <bunk@debian.org> Sun, 05 Jul 2020 12:34:48 +0300
davical (1.1.9.3-1) unstable; urgency=medium
* New upstream release to support AWL 0.61
* Restore rst2pdf dependency removed in 1.1.9.2
* Use d/davical.maintscript instead of individual calls to rm_conffile
* Amend d/upstream/metadata (add Bug-Database)
* Update copyright years
* Declare compliance with Debian Policy 4.5.0
-- Florian Schlichting <fsfs@debian.org> Mon, 13 Apr 2020 22:11:31 +0200
davical (1.1.9.2-1) unstable; urgency=medium
* New upstream release (closes: #934106)
+ fixes CVE-2019-18345 CVE-2019-18346 CVE-2019-18347 (closes: #946343)
* Drop dependency on rst2pdf to clear the blocker for testing migration
* Use debian-compat dependency, level 12
* Put API documentation into davical directory (instead of davical-doc), as
has been suggested by policy for a while
* Fix capitalization on Vcs- fields
* Declare compliance with Debian Policy 4.4.1
* Add a basic upstream metadata file, as suggested by the Debian Janitor
-- Florian Schlichting <fsfs@debian.org> Thu, 12 Dec 2019 00:20:46 +0800
davical (1.1.8-1) unstable; urgency=medium
* New upstream release
* Update debian/watch to changed Gitlab directory layout
* Use system perl in dba/update-davical-database
* Bump dependency on AWL to 0.60
* Update copyright years
* Declare compliance with Debian Policy 4.3.0
-- Florian Schlichting <fsfs@debian.org> Wed, 30 Jan 2019 22:52:41 +0100
davical (1.1.7-1) unstable; urgency=medium
* New upstream release
* Bump dependency on AWL to 0.59
* Declare compliance with Debian Policy 4.1.3
* Update lintian-overrides
-- Florian Schlichting <fsfs@debian.org> Fri, 12 Jan 2018 00:04:06 +0100
davical (1.1.6-1) unstable; urgency=medium
* New upstream release (closes: #704069, #784282, #856467)
* Update debian/watch to match changed Gitlab download URLs
* Update debian/rules to use dpkg variables instead of parsing
dpkg-parsechangelog output
* Update debian/control: Priority is optional, not extra (obsolete)
* Declare compliance with Debian Policy 4.1.1
-- Florian Schlichting <fsfs@debian.org> Wed, 25 Oct 2017 11:40:25 +0200
davical (1.1.5-1) unstable; urgency=medium
* New upstream release (closes: #703130, #703138, #703342)
* Separate rebuild-translations and building locale/*po files. This should
make davical builds reproducible.
* Ship davical-cli in /usr/share/davical/scripts
* Use secure URIs where possible
* Bump years on debian/copyright
* Bump dependency on libawl-php to 0.57
* Make extra sure that the orig-source tarball does not contain any cruft
* Install example configs as /etc/davical/config.php and
/etc/apache2/sites-available/davical.conf
* Use jdupes to remove duplicate files in davical-doc
* Mark davical-doc "Multi-Arch: foreign" as suggested by the Multiarch
hinter
* Override erroneous lintian errors
-- Florian Schlichting <fsfs@debian.org> Mon, 23 Jan 2017 23:04:30 +0100
davical (1.1.4-3) unstable; urgency=medium
* Add missing dependency on php-xml, which is a separate package from PHP 7
-- Florian Schlichting <fsfs@debian.org> Wed, 01 Jun 2016 22:18:51 +0200
davical (1.1.4-2) unstable; urgency=medium
* Update to work with both php5 and php7, mainly based on the Ubuntu patch
by Nishanth Aravamudan (thanks!). Closes: #821673, #821477
* Declare compliance with Debian Policy 3.9.8
-- Florian Schlichting <fsfs@debian.org> Tue, 19 Apr 2016 21:52:33 +0200
davical (1.1.4-1) unstable; urgency=medium
* New upstream release (closes: #703128, #703294, #703287, #656020, #764915)
* Ship all config examples and user documentation, but remove website
references since it was moved to its own git repository.
* Don't run make / make built-docs during package build to avoid nasty
surprises; files should be up-to-date in git anyway
* Purge /etc/davical/.keep directory
* Clean source tree before creating orig-source tarball
-- Florian Schlichting <fsfs@debian.org> Mon, 11 Jan 2016 23:56:48 +0100
davical (1.1.3.1-1) unstable; urgency=medium
* fix a critical typo in htdocs/always.php
-- Florian Schlichting <fsfs@debian.org> Tue, 07 Oct 2014 08:44:50 +0200
davical (1.1.3-1) unstable; urgency=low
[ Andrew McMillan ]
* New upstream release (closes: #656395, #702403, #703290, #703383, #703387,
#740827)
* Updated the control file Vcs-* fields to the new addresses of the
canonical git upstream repository.
* Removed README.Debian which didnt contain any useful information.
[ Florian Schlichting ]
* Takeover for the Davical Development Team (closes: #742498)
* Use short-form debian/rules and fix source format declaration
(closes: #730941)
* Clean up duplicate files (symlink identical files in api documentation)
* debian/control: update and sort dependencies, add php5, php5-cli
(closes: #717043), php5-curl to Recommends (closes: #656390),
php5-ldap as Suggests (LP: #479378)
* Add doc-base registration for api doc and website in davical-doc
* Add a README.Debian explaining the necessary steps for a basic
installation
* Bump dh compat to level 9
* Add a debian/watch file
* Switch d/copyright to copyright-format 1.0, amend CREDITS from git log
* Bump dependency on awl to 0.55
* Declare compliance with Debian Policy 3.9.6
* Upload to Debian (closes: #726577)
-- Florian Schlichting <fsfs@debian.org> Tue, 07 Oct 2014 00:12:13 +0200
davical (1.1.1-1) unstable; urgency=high

1
debian/compat vendored
View File

@ -1 +0,0 @@
5

45
debian/control vendored
View File

@ -1,18 +1,37 @@
Source: davical
Section: web
Priority: extra
Maintainer: Andrew McMillan <awm@debian.org>
Standards-Version: 3.9.2
Build-Depends: debhelper (>= 7), libawl-php, gettext
Vcs-git: git://repo.or.cz/davical.git
Vcs-browser: http://repo.or.cz/w/davical.git
Homepage: http://davical.org/
Maintainer: Davical Development Team <davical-devel@lists.sourceforge.net>
Uploaders: Andrew McMillan <awm@debian.org>,
Florian Schlichting <fsfs@debian.org>
Standards-Version: 4.7.4
Build-Depends: debhelper-compat (= 13),
dh-exec,
jdupes,
libawl-php (>= 0.65-1~), libawl-php (<< 0.66),
gettext,
doxygen,
graphviz,
php-cli | php5-cli,
phpunit
Vcs-Git: https://gitlab.com/davical-project/davical.git
Vcs-Browser: https://gitlab.com/davical-project/davical
Homepage: https://www.davical.org/
Package: davical
Architecture: all
Depends: ${misc:Depends}, debconf (>= 1.0.32), php5-pgsql, postgresql-client (>= 8.1), libawl-php (>= 0.54-1~), libawl-php (<< 0.55), libdbd-pg-perl, libyaml-perl
Recommends: postgresql (>= 8.3)
Description: The DAViCal CalDAV & CardDAV Server
Depends: ${misc:Depends}, ${perl:Depends},
libawl-php (>= 0.65-1~), libawl-php (<< 0.66),
libdbd-pg-perl,
libyaml-perl,
php | php5,
php-cli | php5-cli,
php-pgsql | php5-pgsql,
php-xml | php5,
postgresql-client
Recommends: php-curl | php5-curl,
postgresql
Suggests: php-ldap | php5-ldap
Description: PHP CalDAV and CardDAV Server
The DAViCal CalDAV Server is designed to store CalDAV calendars and
CardDAV addressbooks, such as those from Evolution, Sunbird/Lightning,
Mulberry, iCal, iPhone or SOHO Organizer, in a central location,
@ -22,8 +41,9 @@ Description: The DAViCal CalDAV & CardDAV Server
Package: davical-doc
Section: doc
Architecture: all
Multi-Arch: foreign
Depends: ${misc:Depends}
Description: The DAViCal CalDAV & CardDAV Server - technical documentation
Description: PHP CalDAV and CardDAV Server - technical documentation
The DAViCal CalDAV Server is designed to store CalDAV calendars and
CardDAV addressbooks, such as those from Evolution, Sunbird/Lightning,
Mulberry, iCal, iPhone or SOHO Organizer, in a central location,
@ -31,6 +51,5 @@ Description: The DAViCal CalDAV & CardDAV Server - technical documentation
basic administration interface.
.
This package contains detailed technical documentation for the
classes and methods in the DAViCal programs. Some user-centric
classes and methods in the DAViCal programs. Some user-centric
configuration documentation is also included.

157
debian/copyright vendored
View File

@ -1,47 +1,132 @@
This package was debianized by Andrew McMillan <andrew@mcmillan.net.nz>
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://gitlab.com/davical-project/davical
Upstream-Name: davical
Upstream-Contact: davical-devel@lists.sourceforge.net
It was downloaded from http://debian.mcmillan.net.nz/packages/davical/
Files: *
Copyright: 2006 - 2013, Andrew McMillan <andrew@mcmillan.net.nz>
2006 - 2008, Catalyst IT Ltd
2008 - 2013, Morphoss Ltd
2007 - 2026, Davical contributors (see CREDITS for details)
License: GPL-2+
Upstream Author: Andrew McMillan <andrew@mcmillan.net.nz>
Files: dba/caldav_functions.sql htdocs/public.php htdocs/tools.php
inc/pubsub.php inc/caldav-MKCOL.php inc/log_caldav_action.php
inc/caldav-ACL.php inc/caldav-PROPPATCH.php
inc/HTTPAuthSession.php inc/caldav-client.php inc/DAViCalSession.php
inc/caldav-REPORT.php inc/caldav-MOVE.php
Copyright: 2006 - 2013, Andrew McMillan <andrew@mcmillan.net.nz>
2006 - 2008, Catalyst IT Ltd
2008 - 2013, Morphoss Ltd
2007 - 2026, Davical contributors (see CREDITS for details)
License: GPL-2
Copyright: 2006-2011 Andrew McMillan
Files: htdocs/tz.php inc/CalDAVRequest.php inc/iSchedule-POST.php
inc/DAVResource.php inc/external-fetch.php inc/DAVTicket.php
inc/iSchedule.php inc/tz/* scripts/tz-update.php scripts/refresh-alarms.php
scripts/archive-old-events.php
Copyright: 2006 - 2013, Andrew McMillan <andrew@mcmillan.net.nz>
2006 - 2008, Catalyst IT Ltd
2008 - 2013, Morphoss Ltd
2007 - 2026, Davical contributors (see CREDITS for details)
License: GPL-3+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Files: inc/caldav-client-v2.php
Copyright: 2006 - 2013, Andrew McMillan <andrew@mcmillan.net.nz>
2006 - 2008, Catalyst IT Ltd
2008 - 2013, Morphoss Ltd
2007 - 2026, Davical contributors (see CREDITS for details)
License: LGPL-3+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Files: inc/check_UTF8.php
Copyright: 1998, Netscape Communications Corporation
2003, Henri Sivonen, hsivonen@iki.fi
License: NPL-1.1_or_GPL-2+_or_LGPL-2.1+
The contents of this file are subject to the Netscape Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/NPL/
.
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
.
Alternatively, the contents of this file may be used under the terms of
either the GNU General Public License Version 2 or later (the "GPL"), or
the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
in which case the provisions of the GPL or the LGPL are applicable instead
of those above. If you wish to allow use of your version of this file only
under the terms of either the GPL or the LGPL, and not to allow others to
use your version of this file under the terms of the NPL, indicate your
decision by deleting the provisions above and replace them with the notice
and other provisions required by the GPL or the LGPL. If you do not delete
the provisions above, a recipient may use your version of this file under
the terms of any one of the NPL, the GPL or the LGPL.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA
Files: scripts/davical-cli
Copyright: 2016, Sarenet S.A.U (http://www.sarenet.es/)
License: 3-clause-bsd
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of Sarenet S.A.U nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY SARENET S.A.U AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL SARENET S.A.U OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
You are free to distribute this software under the terms of the GNU General
Public License. On Debian systems, the complete text of the GNU General
Public License can be found in /usr/share/common-licenses/GPL file.
Files: debian/*
Copyright: 2006-2012, Andrew McMillan <awm@debian.org>
2014-2026, Florian Schlichting <fsfs@debian.org>
License: GPL-2+
License: GPL-2+
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
.
On Debian systems, the complete text of version 2 of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
License for Translation Building code
=====================================
The following files inherit their license separately:
scripts/po/extract.pl
scripts/po/rebuild-translations.sh
License: GPL-2
This program is free software; you can redistribute it and/or modify it
under the terms of version 2 of the GNU General Public License as
published by the Free Software Foundation.
.
On Debian systems, the complete text of version 2 of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
The process used for building the translations for DAViCal is based on
prior code originally from the Horde project and subsequently from the
Gallery project. It has also been somewhat further modified here.
License: GPL-3+
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3, or (at your option) any
later version.
.
On Debian systems, the complete text of version 3 of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-3'.
The applicable Horde license is the LGPL, as identified here:
http://cvs.horde.org/co.php/horde/COPYING?r=2.1
Authors:
Copyright 2000-2002 Joris Braakman <jbraakman@yahoo.com>
Copyright 2001-2002 Chuck Hagenbuch <chuck@horde.org>
Copyright 2001-2002 Jan Schneider <jan@horde.org>
Copyright 2002-2003 Bharat Mediratta <bharat@menalto.co>
Copyright 2006-2008 Andrew McMillan <andrew@mcmillan.net.nz>
License: LGPL-3+
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 3, or (at your option)
any later version.
.
On Debian systems, the complete text of version 3 of the GNU Lesser
General Public License can be found in `/usr/share/common-licenses/LGPL-3'.

12
debian/davical-doc.doc-base.api vendored Normal file
View File

@ -0,0 +1,12 @@
Document: davical-api
Title: DAViCal API Documentation
Section: Programming/PHP
Abstract: Technical documentation for DAViCal
The DAViCal CalDAV & CardDAV Server is designed to store CalDAV calendars and
CardDAV addressbooks in a central location, providing shared calendars,
free/busy publication and a basic administration interface. This API
documentation details the classes and methods in die DAViCal programs.
Format: HTML
Index: /usr/share/doc/davical/api/index.html
Files: /usr/share/doc/davical/api/*.html

View File

@ -1,2 +1 @@
docs/website/
docs/api/
docs/*

13
debian/davical.install vendored Normal file → Executable file
View File

@ -1,6 +1,7 @@
dba htdocs inc locale usr/share/davical
debian/keepme etc/davical/.keep
config/example-config.php usr/share/doc/davical/examples/davical-conf.php
config/example-administration.yml usr/share/doc/davical/examples/administration.yml
config/debug-config.php config/other-config.php usr/share/doc/davical/examples
scripts/cron-sync-ldap.php scripts/tz-update.php usr/share/davical/scripts
#! /usr/bin/dh-exec
dba htdocs inc locale usr/share/davical
config/apache-davical.conf => etc/apache2/sites-available/davical.conf
config/example-config.php => etc/davical/config.php
config/* usr/share/doc/davical/examples
scripts/*.php usr/share/davical/scripts
scripts/davical-cli usr/share/davical/scripts

11
debian/davical.lintian-overrides vendored Normal file
View File

@ -0,0 +1,11 @@
# this is lintian being stupid and failing to detect our alternative php-cli dependency - remove when dropping php5
davical: php-script-but-no-php-cli-dep php (does not satisfy php-cli:any) [usr/share/davical/scripts/archive-old-events.php]
davical: php-script-but-no-php-cli-dep php (does not satisfy php-cli:any) [usr/share/davical/scripts/cron-sync-ldap.php]
davical: php-script-but-no-php-cli-dep php (does not satisfy php-cli:any) [usr/share/davical/scripts/export_calendar.php]
davical: php-script-but-no-php-cli-dep php (does not satisfy php-cli:any) [usr/share/davical/scripts/load_calendar.php]
davical: php-script-but-no-php-cli-dep php (does not satisfy php-cli:any) [usr/share/davical/scripts/refresh-alarms.php]
davical: php-script-but-no-php-cli-dep php (does not satisfy php-cli:any) [usr/share/davical/scripts/tz-update.php]
davical: php-script-but-no-php-cli-dep /usr/bin/php (does not satisfy php-cli:any) [usr/share/davical/scripts/sync-remote-caldav.php]
# this is actually code, not documentation, even though it can be read by humans in addition to machines
davical: package-contains-documentation-outside-usr-share-doc [usr/share/davical/dba/appuser_permissions.txt]
davical: package-contains-documentation-outside-usr-share-doc [usr/share/davical/htdocs/robots.txt]

View File

@ -15,3 +15,8 @@ case $1 in
esac
#DEBHELPER#
# remove leftover /etc/davical/.keep directory, if empty (cf. #584185)
[ -d /etc/davical/.keep ] && rmdir --ignore-fail-on-non-empty /etc/davical/.keep
exit 0

10
debian/davical.postrm vendored
View File

@ -7,9 +7,9 @@ PACKAGE=::package::
[ -n "${DEBUG}" ] && echo "PostRM Parameters: $@"
case $1 in
purge)
;;
esac
#DEBHELPER#
# remove leftover /etc/davical/.keep directory, if empty (cf. #584185)
[ -d /etc/davical/.keep ] && rmdir --ignore-fail-on-non-empty /etc/davical/.keep
exit 0

View File

@ -1,4 +0,0 @@
docs/website/wiki
htdocs/.gitignore
inc/test-RRULE.php
inc/test-RRULE-v2.php

99
debian/rules vendored
View File

@ -1,90 +1,29 @@
#!/usr/bin/make -f
#
# rules for DAViCal
#
# This file allows you to build any of the binary packages independantly, via binary-<package> targets.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
include /usr/share/dpkg/pkg-info.mk
# This has to be exported to make some magic below work.
export DH_OPTIONS
get-orig-source:
make clean
git clean -idx
tar cJf ../davical_$(DEB_VERSION_UPSTREAM).orig.tar.xz --exclude-vcs --exclude=.gitattributes --exclude=debian .
build: build-stamp
build-stamp:
dh_testdir
$(MAKE)
touch build-stamp
%:
dh $@
clean:
dh_testdir
dh_testroot
rm -f build-stamp
$(MAKE) clean
-rm -f build
dh_clean
install: DH_OPTIONS=
install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
override_dh_auto_build:
make all
override_dh_install:
dh_install
# This single target is used to build all the packages, all at once, or
# one at a time. So keep in mind: any options passed to commands here will
# affect _all_ packages. Anything you want to only affect one package
# should be put in another target, such as the install target.
binary-common:
dh_testdir
dh_testroot
dh_installchangelogs ChangeLog
dh_installdocs --exclude=.gitignore
# dh_installexamples
# dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installcatalogs
# dh_installpam
# dh_installmime
# dh_installinit
# dh_installman
# dh_installcron
# dh_installinfo
# dh_installwm
# dh_installudev
# dh_lintian
# dh_undocumented
# dh_strip
# dh_link
dh_compress --exclude=.js
dh_fixperms
rm debian/davical/usr/share/davical/htdocs/.htaccess || true
# dh_perl
# dh_python
# dh_makeshlibs
dh_installdeb
# dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
rm -f debian/davical/usr/share/doc/davical/examples/apache-davical.conf \
debian/davical/usr/share/doc/davical/examples/example-config.php
sed -i -e '1s|^#!/usr/bin/env perl|#!/usr/bin/perl|' debian/davical/usr/share/davical/dba/update-davical-database
# Build architecture independant packages using the common target.
binary-indep: build install
$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
override_dh_installchangelogs:
dh_installchangelogs ChangeLog
# Build architecture dependant packages using the common target.
binary-arch: build install
# Any other binary targets build just one binary package at a time.
binary-%: build install
make -f debian/rules binary-common DH_OPTIONS=-p$*
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary-common binary install
override_dh_installdocs:
dh_installdocs
find debian/davical-doc/ -name '*.md5' -delete
jdupes -rl debian/davical-doc/

View File

@ -1 +1 @@
3.0 (native)
3.0 (quilt)

3
debian/tests/control vendored Normal file
View File

@ -0,0 +1,3 @@
# https://people.debian.org/~eriberto/README.package-tests.html
Tests: syntax, phpunit
Depends: davical, php-cli, phpunit

8
debian/tests/phpunit vendored Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
# run our test suite, but on the installed package
set -e
# 2) phpunit tests
phpunit --include-path "/usr/share/davical:/usr/share/awl" --do-not-cache-result testing/phpunit

19
debian/tests/syntax vendored Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash
# run our test suite, but on the installed package
set -e
# 1) simple php syntax check
for PHP in /usr/share/davical/htdocs/*.php /usr/share/davical/inc/*.php
do
php -l ${PHP} >> $AUTOPKGTEST_TMP/test-syntax
done
if grep -v 'No syntax errors detected' $AUTOPKGTEST_TMP/test-syntax
then
cat $AUTOPKGTEST_TMP/test-syntax
exit 1
else
echo "OK (Syntax checked)";
fi
rm $AUTOPKGTEST_TMP/test-syntax

2
debian/upstream/metadata vendored Normal file
View File

@ -0,0 +1,2 @@
Repository: https://gitlab.com/davical-project/davical
Bug-Database: https://gitlab.com/davical-project/davical/issues

5
debian/watch vendored Normal file
View File

@ -0,0 +1,5 @@
Version: 5
Template: GitLab
Dist: https://gitlab.com/davical-project/davical
Matching-Pattern: r(\d[\-+\.:\~\da-zA-Z]*)

1
docs/.gitignore vendored
View File

@ -1,3 +1,4 @@
api/
IETF-CAP-RFC4324.txt
draft-dawson-ical-xml-dtd-01.txt
draft-desruisseaux-caldav-sched-02.html

3010
docs/Doxyfile Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,396 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class CalDAVSyncCalendar</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> CalDAVSyncCalendar</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A class for holding basic information about a calendar we shall synchronize</p>
<p class="notes">
Located in <a class="field" href="_inc---CalDAVSyncCalendar.php.html">/inc/CalDAVSyncCalendar.php</a> (line <span class="field">8</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-var-summary"></a>
<div class="info-box">
<div class="info-box-title">Variable Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="var-summary">
<div class="var-title">
<img src="../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$sync_client" title="details" class="var-name">$sync_client</a>
</div>
<div class="var-title">
<img src="../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$url" title="details" class="var-name">$url</a>
</div>
</div>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-result">CalDAVSyncCalendar</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$sync_client</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$url</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#Get" title="details" class="method-name">Get</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$key</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#GetToken" title="details" class="method-name">GetToken</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#hasSyncReport" title="details" class="method-name">hasSyncReport</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#Set" title="details" class="method-name">Set</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$key</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$value</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#whatChangedSince" title="details" class="method-name">whatChangedSince</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$old_remote_token</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#__toString" title="details" class="method-name">__toString</a>
()
</div>
</div>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<a name="var$sync_client" id="$sync_client"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$sync_client</span>
(line <span class="line-number">9</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$url" id="$url"><!-- --></A>
<div class="oddrow">
<div class="var-header">
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$url</span>
(line <span class="line-number">10</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">14</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">CalDAVSyncCalendar</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$sync_client</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$url</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$sync_client</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$url</span> </li>
</ul>
</div>
<a name="methodGet" id="Get"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">Get</span> (line <span class="line-number">28</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
Get
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$key</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$key</span> </li>
</ul>
</div>
<a name="methodGetToken" id="GetToken"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">GetToken</span> (line <span class="line-number">33</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
GetToken
</span>
()
</div>
</div>
<a name="methodhasSyncReport" id="hasSyncReport"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">hasSyncReport</span> (line <span class="line-number">45</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
hasSyncReport
</span>
()
</div>
</div>
<a name="methodSet" id="Set"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">Set</span> (line <span class="line-number">24</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
Set
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$key</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$value</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$key</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$value</span> </li>
</ul>
</div>
<a name="methodwhatChangedSince" id="whatChangedSince"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">whatChangedSince</span> (line <span class="line-number">52</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
whatChangedSince
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$old_remote_token</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$old_remote_token</span> </li>
</ul>
</div>
<a name="method__toString" id="__toString"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">__toString</span> (line <span class="line-number">20</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
__toString
</span>
()
</div>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Sun, 08 Jul 2012 12:53:47 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page CalDAVSyncCalendar.php</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/CalDAVSyncCalendar.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A class for holding basic information about a calendar we shall synchronize</p>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../awl/CalDAVSyncCalendar.html">CalDAVSyncCalendar</a>
</td>
<td>
A class for holding basic information about a calendar we shall synchronize
</td>
</tr>
</table>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Sun, 08 Jul 2012 12:53:47 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,267 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class CalendarInfo</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> CalendarInfo</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A class for holding basic calendar information</p>
<p class="notes">
Located in <a class="field" href="_inc---caldav-client-v2.php.html">/inc/caldav-client-v2.php</a> (line <span class="field">19</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-var-summary"></a>
<div class="info-box">
<div class="info-box-title">Variable Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="var-summary">
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$displayname" title="details" class="var-name">$displayname</a>
</div>
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$getctag" title="details" class="var-name">$getctag</a>
</div>
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$url" title="details" class="var-name">$url</a>
</div>
</div>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">CalendarInfo</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$url</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$displayname</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$getctag</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#__toString" title="details" class="method-name">__toString</a>
()
</div>
</div>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<a name="var$displayname" id="$displayname"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$displayname</span>
(line <span class="line-number">21</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$getctag" id="$getctag"><!-- --></A>
<div class="oddrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$getctag</span>
(line <span class="line-number">22</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$url" id="$url"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$url</span>
(line <span class="line-number">20</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">24</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">CalendarInfo</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$url</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$displayname</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$getctag</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$url</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$displayname</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$getctag</span> </li>
</ul>
</div>
<a name="method__toString" id="__toString"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">__toString</span> (line <span class="line-number">30</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
__toString
</span>
()
</div>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:06 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,176 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class RRule</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> RRule</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for handling Events on a calendar which repeat</p>
<p class="description"><p>Here's the spec, from RFC2445:</p><p>At this point we are going to restrict ourselves to parts of the RRULE specification seen in the wild. And by &quot;in the wild&quot; I don't include within people's timezone definitions. We always convert time zones to canonical names and assume the lower level libraries can do a better job with them than we can.</p><p>We will concentrate on: FREQ=(YEARLY|MONTHLY|WEEKLY|DAILY) UNTIL= COUNT= INTERVAL= BYDAY= BYMONTHDAY= BYSETPOS= WKST= BYYEARDAY= BYWEEKNO= BYMONTH=</p></p>
<p class="notes">
Located in <a class="field" href="_inc---RRule.php.html">/inc/RRule.php</a> (line <span class="field">691</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">RRule</span>
<a href="#RRule" title="details" class="method-name">RRule</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$start</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$rrule</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#GetNext" title="details" class="method-name">&amp;GetNext</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#WithinScope" title="details" class="method-name">WithinScope</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$base</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$relative_days</span>)
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="methodRRule" id="RRule"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor RRule</span> (line <span class="line-number">723</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">The constructor takes a start date and an RRULE definition. Both of these follow the iCalendar standard.</p>
<div class="method-signature">
<span class="method-result">RRule</span>
<span class="method-name">
RRule
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$start</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$rrule</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$start</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$rrule</span> </li>
</ul>
</div>
<a name="methodGetNext" id="GetNext"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GetNext</span> (line <span class="line-number">829</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">This is most of the meat of the RRULE processing, where we find the next date.</p>
<p class="description"><p>We maintain an</p></p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
&amp;GetNext
</span>
()
</div>
</div>
<a name="methodWithinScope" id="WithinScope"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">WithinScope</span> (line <span class="line-number">769</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Processes the array of $relative_days to $base and removes any which are not within the scope of our rule.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
WithinScope
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$base</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$relative_days</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$base</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$relative_days</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:10 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,478 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class RepeatRule</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> RepeatRule</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">This class is an implementation of RRULE parsing and expansion, as per RFC5545. It should be reasonably complete, except that it does not handle changing the WKST - there may be a few errors in unusual rules also, but all of the common cases should be handled correctly.</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
</ul>
<p class="notes">
Located in <a class="field" href="_inc---RRule-v2.php.html">/inc/RRule-v2.php</a> (line <span class="field">590</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/StaticMethod.png" alt=" "/>
static <span class="method-result">void</span>
<a href="#date_mask" title="details" class="method-name">date_mask</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$date</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$y</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$mo</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$d</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$h</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$mi</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$s</span>)
</div>
<div class="method-definition">
<img src="../../media/images/StaticMethod.png" alt=" "/>
static <span class="method-result">void</span>
<a href="#rrule_day_number" title="details" class="method-name">rrule_day_number</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$day</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">RepeatRule</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$basedate</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$rrule</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$is_date</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#current" title="details" class="method-name">current</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#hasLimitedOccurrences" title="details" class="method-name">hasLimitedOccurrences</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#key" title="details" class="method-name">key</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">vComponent</span>
<a href="#next" title="details" class="method-name">next</a>
([<span class="var-type">boolean</span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#rewind" title="details" class="method-name">rewind</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#set_timezone" title="details" class="method-name">set_timezone</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$tzstring</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#Start" title="details" class="method-name">Start</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#valid" title="details" class="method-name">valid</a>
()
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="methoddate_mask" id="date_mask"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/StaticMethod.png" />
<span class="method-title">static date_mask</span> (line <span class="line-number">827</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
date_mask
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$date</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$y</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$mo</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$d</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$h</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$mi</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$s</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$date</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$y</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$mo</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$d</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$h</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$mi</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$s</span> </li>
</ul>
</div>
<a name="methodrrule_day_number" id="rrule_day_number"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/StaticMethod.png" />
<span class="method-title">static rrule_day_number</span> (line <span class="line-number">813</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
rrule_day_number
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$day</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$day</span> </li>
</ul>
</div>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">615</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">RepeatRule</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$basedate</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$rrule</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$is_date</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$basedate</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$rrule</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$is_date</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$return_floating_times</span> </li>
</ul>
</div>
<a name="methodcurrent" id="current"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">current</span> (line <span class="line-number">702</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
current
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$return_floating_times</span> </li>
</ul>
</div>
<a name="methodhasLimitedOccurrences" id="hasLimitedOccurrences"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">hasLimitedOccurrences</span> (line <span class="line-number">668</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">If this repeat rule has an UNTIL= or COUNT= then we can know it will end. Eventually.</p>
<ul class="tags">
<li><span class="field">return:</span> Whether or not one of these properties is present.</li>
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
hasLimitedOccurrences
</span>
()
</div>
</div>
<a name="methodkey" id="key"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">key</span> (line <span class="line-number">712</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
key
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$return_floating_times</span> </li>
</ul>
</div>
<a name="methodnext" id="next"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">next</span> (line <span class="line-number">696</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Return the next date in the repeating series.</p>
<ul class="tags">
<li><span class="field">return:</span> The next instance.</li>
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">vComponent</span>
<span class="method-name">
next
</span>
([<span class="var-type">boolean</span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">boolean</span>
<span class="var-name">$return_floating_times</span><span class="var-description">: Whether to return dates as floating times.</span> </li>
</ul>
</div>
<a name="methodrewind" id="rewind"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">rewind</span> (line <span class="line-number">686</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
rewind
</span>
()
</div>
</div>
<a name="methodset_timezone" id="set_timezone"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">set_timezone</span> (line <span class="line-number">673</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
set_timezone
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$tzstring</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$tzstring</span> </li>
</ul>
</div>
<a name="methodStart" id="Start"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">Start</span> (line <span class="line-number">678</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
Start
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$return_floating_times</span> </li>
</ul>
</div>
<a name="methodvalid" id="valid"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">valid</span> (line <span class="line-number">722</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
valid
</span>
()
</div>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:09 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,267 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class RepeatRuleDateRange</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> RepeatRuleDateRange</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">This class is used to hold a pair of dates defining a range. The range may be open-ended by including a null for one end or the other, or both.</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
</ul>
<p class="notes">
Located in <a class="field" href="_inc---RRule-v2.php.html">/inc/RRule-v2.php</a> (line <span class="field">522</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-var-summary"></a>
<div class="info-box">
<div class="info-box-title">Variable Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="var-summary">
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$from" title="details" class="var-name">$from</a>
</div>
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$until" title="details" class="var-name">$until</a>
</div>
</div>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">RepeatRuleDateRange</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>&nbsp;<span class="var-name">$date1</span>, <span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>&nbsp;<span class="var-name">$date2</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">NULL|<a href="../../awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a></span>
<a href="#getDuration" title="details" class="method-name">getDuration</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#overlaps" title="details" class="method-name">overlaps</a>
(<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateRange.html">RepeatRuleDateRange</a></span>&nbsp;<span class="var-name">$other</span>)
</div>
</div>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<a name="var$from" id="$from"><!-- --></A>
<div class="oddrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$from</span>
(line <span class="line-number">523</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$until" id="$until"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$until</span>
(line <span class="line-number">524</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">535</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Construct a new RepeatRuleDateRange which will be the range between $date1 and $date2. The earliest of the two dates will be used as the start of the period, the latest as the end. If one of the dates is null then the order of the parameters is significant, with the null treated as -infinity if it is first, or +infinity if it is second.</p>
<p class="description"><p>If both parameters are null then the range is from -infinity to +infinity.</p></p>
<div class="method-signature">
<span class="method-result">RepeatRuleDateRange</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>&nbsp;<span class="var-name">$date1</span>, <span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>&nbsp;<span class="var-name">$date2</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>
<span class="var-name">$date1</span> </li>
<li>
<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>
<span class="var-name">$date2</span> </li>
</ul>
</div>
<a name="methodgetDuration" id="getDuration"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">getDuration</span> (line <span class="line-number">570</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Get an Rfc5545Duration from this date range. If the from date is null it will be null.</p>
<p class="description"><p>If the until date is null the duration will either be 1 day (if the from is a date) or 0 otherwise.</p></p>
<div class="method-signature">
<span class="method-result">NULL|<a href="../../awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a></span>
<span class="method-name">
getDuration
</span>
()
</div>
</div>
<a name="methodoverlaps" id="overlaps"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">overlaps</span> (line <span class="line-number">551</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Assess whether this range overlaps the supplied range. null values are treated as infinity.</p>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
overlaps
</span>
(<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateRange.html">RepeatRuleDateRange</a></span>&nbsp;<span class="var-name">$other</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateRange.html">RepeatRuleDateRange</a></span>
<span class="var-name">$other</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:09 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,244 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class RepeatRuleTimeZone</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> RepeatRuleTimeZone</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
<a href="#sec-consts">Constants</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Wrap the DateTimeZone class to allow parsing some iCalendar TZID strangenesses</p>
<p class="notes">
Located in <a class="field" href="_inc---RRule-v2.php.html">/inc/RRule-v2.php</a> (line <span class="field">39</span>)
</p>
<pre>DateTimeZone
|
--RepeatRuleTimeZone</pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-consts">Constants</a>
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">RepeatRuleTimeZone</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$in_dtz</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#tzid" title="details" class="method-name">tzid</a>
()
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">42</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">RepeatRuleTimeZone</span>
<span class="method-name">
__construct
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$in_dtz</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$in_dtz</span> </li>
</ul>
<hr class="separator" />
<div class="notes">Redefinition of:</div>
<dl>
<dt>DateTimeZone::constructor __construct ( $timezone )</dt>
</dl>
</div>
<a name="methodtzid" id="tzid"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">tzid</span> (line <span class="line-number">65</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
tzid
</span>
()
</div>
</div>
<h4>Inherited Methods</h4>
<a name='inherited_methods'><!-- --></a>
<!-- =========== Summary =========== -->
<p>Inherited From <span class="classname">DateTimeZone (Internal Class)</span></p>
<blockquote>
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-name">constructor __construct ( $timezone )</span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name">getLocation ( )</span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name">getName ( )</span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name">getOffset ( $datetime )</span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name">getTransitions ( $timestamp_begin, $timestamp_end )</span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name">listAbbreviations ( )</span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name">listIdentifiers ( [$what = ], [$country = ] )</span><br>
</blockquote>
</div>
</div>
<a name="sec-consts"></a>
<div class="info-box">
<div class="info-box-title">Class Constants</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Constants</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<h4>Inherited Constants</h4>
<A NAME='inherited_consts'><!-- --></A>
<p>Inherited from <span class="classname">DateTimeZone (Internal Class)</span></p>
<blockquote>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">AFRICA = 1</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">ALL = 2047</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">ALL_WITH_BC = 4095</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">AMERICA = 2</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">ANTARCTICA = 4</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">ARCTIC = 8</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">ASIA = 16</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">ATLANTIC = 32</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">AUSTRALIA = 64</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">EUROPE = 128</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">INDIAN = 256</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">PACIFIC = 512</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">PER_COUNTRY = 4096</span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="const-title">
<span class="const-name">UTC = 1024</span><br>
</span>
</blockquote>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:09 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,240 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class Rfc5545Duration</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> Rfc5545Duration</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Provide a useful way of dealing with RFC5545 duration strings of the form</p>
<p class="description"><p>^-?P(\dW)|((\dD)?(T(\dH)?(\dM)?(\dS)?)?)$</p></p>
<p class="notes">
Located in <a class="field" href="_inc---RRule-v2.php.html">/inc/RRule-v2.php</a> (line <span class="field">77</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/StaticMethod.png" alt=" "/>
static <span class="method-result"><a href="../../awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a></span>
<a href="#fromTwoDates" title="details" class="method-name">fromTwoDates</a>
(<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>&nbsp;<span class="var-name">$d1</span>, <span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>&nbsp;<span class="var-name">$d2</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">Rfc5545Duration</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type">mixed</span>&nbsp;<span class="var-name">$in_duration</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#asSeconds" title="details" class="method-name">asSeconds</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#equals" title="details" class="method-name">equals</a>
(<span class="var-type"><a href="../../awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a></span>&nbsp;<span class="var-name">$other</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">string</span>
<a href="#__toString" title="details" class="method-name">__toString</a>
()
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="methodfromTwoDates" id="fromTwoDates"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/StaticMethod.png" />
<span class="method-title">static fromTwoDates</span> (line <span class="line-number">192</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Factory method to return an Rfc5545Duration object from the difference between two dates.</p>
<p class="description"><p>This is flawed, at present: we should really localise both dates and work out the difference in days, then localise the times and work out the difference between the clock times. On the other hand we're replacing a quick and dirty hack that did it exactly the same way in the past, so we're not making things any *worse* and at least we're making it clear that it could be improved...</p><p>The problem strikes (as they all do) across DST boundaries.</p></p>
<ul class="tags">
<li><span class="field">todo:</span> Improve this to calculate the days difference and then the clock time diff and work from there.</li>
</ul>
<div class="method-signature">
<span class="method-result"><a href="../../awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a></span>
<span class="method-name">
fromTwoDates
</span>
(<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>&nbsp;<span class="var-name">$d1</span>, <span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>&nbsp;<span class="var-name">$d2</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>
<span class="var-name">$d1</span> </li>
<li>
<span class="var-type"><a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></span>
<span class="var-name">$d2</span> </li>
</ul>
</div>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">87</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Construct a new Rfc5545Duration either from incoming seconds or a text string.</p>
<div class="method-signature">
<span class="method-result">Rfc5545Duration</span>
<span class="method-name">
__construct
</span>
(<span class="var-type">mixed</span>&nbsp;<span class="var-name">$in_duration</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">mixed</span>
<span class="var-name">$in_duration</span> </li>
</ul>
</div>
<a name="methodasSeconds" id="asSeconds"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">asSeconds</span> (line <span class="line-number">116</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Returns the duration as epoch seconds.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
asSeconds
</span>
()
</div>
</div>
<a name="methodequals" id="equals"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">equals</span> (line <span class="line-number">107</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Return true if $this and $other are equal, false otherwise.</p>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
equals
</span>
(<span class="var-type"><a href="../../awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a></span>&nbsp;<span class="var-name">$other</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"><a href="../../awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a></span>
<span class="var-name">$other</span> </li>
</ul>
</div>
<a name="method__toString" id="__toString"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">__toString</span> (line <span class="line-number">145</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Returns the duration as a text string of the form ^(-?)P(\d+W)|((\d+D)?(T(\d+H)?(\d+M)?(\d+S)?)?)$</p>
<ul class="tags">
<li><span class="field">return:</span> The stringified stuff.</li>
</ul>
<div class="method-signature">
<span class="method-result">string</span>
<span class="method-name">
__toString
</span>
()
</div>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:09 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,124 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page CalDAVSyncClient.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/CalDAVSyncClient.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for connecting to a caldav server</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Andrew McMillan</li>
<li><span class="field">license:</span> <a href="http://www.gnu.org/licenses/lgpl-3.0.txt">GNU LGPL version 3 or later</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
| <a href="#sec-includes">Includes</a>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/CalDAVSyncClient.html">CalDAVSyncClient</a>
</td>
<td>
A class for accessing DAViCal via CalDAV, as a client
</td>
</tr>
</table>
</div>
</div>
<a name="sec-includes"></a>
<div class="info-box">
<div class="info-box-title">Includes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <span class="disabled">Includes</span>
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<a name="_XMLDocument_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name">'XMLDocument.php'</span>)
(line <span class="line-number">13</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for connecting to a caldav server</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Andrew McMillan</li>
<li><span class="field">license:</span> <a href="http://www.gnu.org/licenses/lgpl-3.0.txt">GNU LGPL version 3 or later</a></li>
</ul>
</div>
<a name="_CalDAVSyncCalendar_php"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name"><a href="../../awl/_inc---CalDAVSyncCalendar.php.html">'CalDAVSyncCalendar.php'</a></span>)
(line <span class="line-number">14</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Sun, 08 Jul 2012 12:53:47 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,399 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page RRule-v2.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/RRule-v2.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
| <a href="#sec-constants">Constants</a>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Class for parsing RRule and getting us the dates</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Morphoss Ltd</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2 or later</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
| <a href="#sec-includes">Includes</a>
| <a href="#sec-constants">Constants</a>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/RepeatRuleTimeZone.html">RepeatRuleTimeZone</a>
</td>
<td>
Wrap the DateTimeZone class to allow parsing some iCalendar TZID strangenesses
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a>
</td>
<td>
Provide a useful way of dealing with RFC5545 duration strings of the form
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a>
</td>
<td>
Wrap the DateTime class to make it friendlier to passing in random strings from iCalendar objects, and especially the random stuff used to identify timezones. We also add some utility methods and stuff too, in order to simplify some of the operations we need to do with dates.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/RepeatRuleDateRange.html">RepeatRuleDateRange</a>
</td>
<td>
This class is used to hold a pair of dates defining a range. The range may be open-ended by including a null for one end or the other, or both.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/RepeatRule.html">RepeatRule</a>
</td>
<td>
This class is an implementation of RRULE parsing and expansion, as per RFC5545. It should be reasonably complete, except that it does not handle changing the WKST - there may be a few errors in unusual rules also, but all of the common cases should be handled correctly.
</td>
</tr>
</table>
</div>
</div>
<a name="sec-includes"></a>
<div class="info-box">
<div class="info-box-title">Includes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <span class="disabled">Includes</span>
| <a href="#sec-constants">Constants</a>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<a name="_vComponent_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name">"vComponent.php"</span>)
(line <span class="line-number">1102</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
</div>
</div>
<a name="sec-constants"></a>
<div class="info-box">
<div class="info-box-title">Constants</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
| <span class="disabled">Constants</span>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<a name="defineDEBUG_RRULE"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Constant.png" />
<span class="const-title">
<span class="const-name">DEBUG_RRULE</span> = false
(line <span class="line-number">34</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
</div>
</div>
<a name="sec-functions"></a>
<div class="info-box">
<div class="info-box-title">Functions</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
| <a href="#sec-constants">Constants</a>
| <span class="disabled">Functions</span>
</div>
<div class="info-box-body">
<a name="functionexpand_event_instances" id="functionexpand_event_instances"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Function.png" />
<span class="method-title">expand_event_instances</span> (line <span class="line-number">1183</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Expand the event instances for an iCalendar VEVENT (or VTODO)</p>
<p class="description"><p>Note: expansion here does not apply modifications to instances other than modifying start/end/due/duration.</p></p>
<ul class="tags">
<li><span class="field">return:</span> The original vComponent, with the instances of the internal components expanded.</li>
</ul>
<div class="method-signature">
<span class="method-result">vComponent</span>
<span class="method-name">
expand_event_instances
</span>
(<span class="var-type">object</span>&nbsp;<span class="var-name">$vResource</span>, [<span class="var-type">object</span>&nbsp;<span class="var-name">$range_start</span> = <span class="var-default">null</span>], [<span class="var-type">object</span>&nbsp;<span class="var-name">$range_end</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">object</span>
<span class="var-name">$vResource</span><span class="var-description">: A vComponent which is a VCALENDAR containing components needing expansion</span> </li>
<li>
<span class="var-type">object</span>
<span class="var-name">$range_start</span><span class="var-description">: A RepeatRuleDateTime which is the beginning of the range for events, default -6 weeks</span> </li>
<li>
<span class="var-type">object</span>
<span class="var-name">$range_end</span><span class="var-description">: A RepeatRuleDateTime which is the end of the range for events, default +6 weeks</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$return_floating_times</span> </li>
</ul>
</div>
<a name="functiongetComponentRange" id="functiongetComponentRange"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Function.png" />
<span class="method-title">getComponentRange</span> (line <span class="line-number">1397</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Return a date range for this component.</p>
<ul class="tags">
<li><span class="field">throws:</span> Exception (1) When DTSTART is not present but the RFC says MUST and (2) when we get an unsupported component</li>
</ul>
<div class="method-signature">
<span class="method-result"><a href="../../awl/caldav/RepeatRuleDateRange.html">RepeatRuleDateRange</a></span>
<span class="method-name">
getComponentRange
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$comp</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">vComponent</span>
<span class="var-name">$comp</span> </li>
</ul>
</div>
<a name="functiongetVCalendarRange" id="functiongetVCalendarRange"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Function.png" />
<span class="method-title">getVCalendarRange</span> (line <span class="line-number">1452</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Return a RepeatRuleDateRange from the earliest start to the latest end of the event.</p>
<ul class="tags">
<li><span class="field">return:</span> Representing the range of time covered by the event.</li>
</ul>
<div class="method-signature">
<span class="method-result"><a href="../../awl/caldav/RepeatRuleDateRange.html">RepeatRuleDateRange</a></span>
<span class="method-name">
getVCalendarRange
</span>
(<span class="var-type">object</span>&nbsp;<span class="var-name">$vResource</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">object</span>
<span class="var-name">$vResource</span><span class="var-description">: A vComponent which is a VCALENDAR containing components needing expansion</span> </li>
</ul>
</div>
<a name="functionolson_from_vtimezone" id="functionolson_from_vtimezone"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Function.png" />
<span class="method-title">olson_from_vtimezone</span> (line <span class="line-number">19</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Try and extract something like &quot;Pacific/Auckland&quot; or &quot;America/Indiana/Indianapolis&quot; if possible, given the VTIMEZONE component that is passed in. This is much more complex than olson_from_tzstring since we start to examine the rules and work out what actual timezone this might be.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
olson_from_vtimezone
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$vtz</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">vComponent</span>
<span class="var-name">$vtz</span> </li>
</ul>
</div>
<a name="functionrdate_expand" id="functionrdate_expand"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Function.png" />
<span class="method-title">rdate_expand</span> (line <span class="line-number">1113</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Expand the event instances for an RDATE or EXDATE property</p>
<ul class="tags">
<li><span class="field">return:</span> An array keyed on the UTC dates, referring to the component</li>
</ul>
<div class="method-signature">
<span class="method-result">array</span>
<span class="method-name">
rdate_expand
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$dtstart</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$property</span>, <span class="var-type">array</span>&nbsp;<span class="var-name">$component</span>, [<span class="var-type">array</span>&nbsp;<span class="var-name">$range_end</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$is_date</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$property</span><span class="var-description">: RDATE or EXDATE, depending...</span> </li>
<li>
<span class="var-type">array</span>
<span class="var-name">$component</span><span class="var-description">: A vComponent which is a VEVENT, VTODO or VJOURNAL</span> </li>
<li>
<span class="var-type">array</span>
<span class="var-name">$range_end</span><span class="var-description">: A date after which we care less about expansion</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$dtstart</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$is_date</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$return_floating_times</span> </li>
</ul>
</div>
<a name="functionrrule_expand" id="functionrrule_expand"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Function.png" />
<span class="method-title">rrule_expand</span> (line <span class="line-number">1141</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Expand the event instances for an RRULE property</p>
<ul class="tags">
<li><span class="field">return:</span> An array keyed on the UTC dates, referring to the component</li>
</ul>
<div class="method-signature">
<span class="method-result">array</span>
<span class="method-name">
rrule_expand
</span>
(<span class="var-type">object</span>&nbsp;<span class="var-name">$dtstart</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$property</span>, <span class="var-type">array</span>&nbsp;<span class="var-name">$component</span>, <span class="var-type">array</span>&nbsp;<span class="var-name">$range_end</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$is_date</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$return_floating_times</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">object</span>
<span class="var-name">$dtstart</span><span class="var-description">: A RepeatRuleDateTime which is the master dtstart</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$property</span><span class="var-description">: RDATE or EXDATE, depending...</span> </li>
<li>
<span class="var-type">array</span>
<span class="var-name">$component</span><span class="var-description">: A vComponent which is a VEVENT, VTODO or VJOURNAL</span> </li>
<li>
<span class="var-type">array</span>
<span class="var-name">$range_end</span><span class="var-description">: A date after which we care less about expansion</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$is_date</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$return_floating_times</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:09 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page RRule.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/RRule.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Class for parsing RRule and getting us the dates</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@catalyst.net.nz">andrew@catalyst.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Catalyst .Net Ltd</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/iCalDate.html">iCalDate</a>
</td>
<td>
A Class for handling dates in iCalendar format. We do make the simplifying assumption that all date handling in here is normalised to GMT. One day we might provide some functions to do that, but for now it is done externally.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/RRule.html">RRule</a>
</td>
<td>
A Class for handling Events on a calendar which repeat
</td>
</tr>
</table>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:10 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,148 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page caldav-client-v2.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/caldav-client-v2.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
| <a href="#sec-constants">Constants</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for connecting to a caldav server</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Andrew McMillan</li>
<li><span class="field">license:</span> <a href="http://www.gnu.org/licenses/lgpl-3.0.txt">GNU LGPL version 3 or later</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
| <a href="#sec-includes">Includes</a>
| <a href="#sec-constants">Constants</a>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/CalendarInfo.html">CalendarInfo</a>
</td>
<td>
A class for holding basic calendar information
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
</td>
<td>
A class for accessing DAViCal via CalDAV, as a client
</td>
</tr>
</table>
</div>
</div>
<a name="sec-includes"></a>
<div class="info-box">
<div class="info-box-title">Includes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <span class="disabled">Includes</span>
| <a href="#sec-constants">Constants</a>
</div>
<div class="info-box-body">
<a name="_XMLDocument_php"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name">'XMLDocument.php'</span>)
(line <span class="line-number">13</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for connecting to a caldav server</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Andrew McMillan</li>
<li><span class="field">license:</span> <a href="http://www.gnu.org/licenses/lgpl-3.0.txt">GNU LGPL version 3 or later</a></li>
</ul>
</div>
</div>
</div>
<a name="sec-constants"></a>
<div class="info-box">
<div class="info-box-title">Constants</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
| <span class="disabled">Constants</span>
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<a name="define_FSOCK_TIMEOUT"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Constant.png" />
<span class="const-title">
<span class="const-name">_FSOCK_TIMEOUT</span> = 10
(line <span class="line-number">36</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:06 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,71 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page caldav-client.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/caldav-client.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for connecting to a caldav server</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:debian@mcmillan.net.nz">debian@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Andrew McMillan</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../awl/caldav/CalDAVClient.html">CalDAVClient</a>
</td>
<td>
A class for accessing DAViCal via CalDAV, as a client
</td>
</tr>
</table>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:06 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,949 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class iCalDate</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> iCalDate</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for handling dates in iCalendar format. We do make the simplifying assumption that all date handling in here is normalised to GMT. One day we might provide some functions to do that, but for now it is done externally.</p>
<p class="notes">
Located in <a class="field" href="_inc---RRule.php.html">/inc/RRule.php</a> (line <span class="field">21</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">iCalDate</span>
<a href="#iCalDate" title="details" class="method-name">iCalDate</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$input</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#AddDays" title="details" class="method-name">AddDays</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$dd</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#AddDuration" title="details" class="method-name">AddDuration</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$duration</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#AddMonths" title="details" class="method-name">AddMonths</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$mo</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">array</span>
<a href="#ApplyBySetPos" title="details" class="method-name">&amp;ApplyBySetPos</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$bysplist</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$set</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">string</span>
<a href="#DateDifference" title="details" class="method-name">DateDifference</a>
(<span class="var-type">date</span>&nbsp;<span class="var-name">$from</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#DaysInMonth" title="details" class="method-name">DaysInMonth</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$mo</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$yy</span> = <span class="var-default">false</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">array</span>
<a href="#GetMonthByDay" title="details" class="method-name">GetMonthByDay</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$byday</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">array</span>
<a href="#GetMonthByMonthDay" title="details" class="method-name">GetMonthByMonthDay</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$bymonthday</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">array</span>
<a href="#GetWeekByDay" title="details" class="method-name">GetWeekByDay</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$byday</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$increasing</span> = <span class="var-default">false</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#GreaterThan" title="details" class="method-name">GreaterThan</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$lesser</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#LessThan" title="details" class="method-name">LessThan</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$greater</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">array</span>
<a href="#MonthDays" title="details" class="method-name">&amp;MonthDays</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$dow_first</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$days_in_month</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$dayspec</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#Render" title="details" class="method-name">Render</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$fmt</span> = <span class="var-default">'Y-m-d H:i:s'</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#RenderGMT" title="details" class="method-name">RenderGMT</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$fmt</span> = <span class="var-default">'Ymd\THis\Z'</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#SetEpochDate" title="details" class="method-name">SetEpochDate</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$input</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#SetGMTDate" title="details" class="method-name">SetGMTDate</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$input</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#SetLocalDate" title="details" class="method-name">SetLocalDate</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$input</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#SetMonthDay" title="details" class="method-name">SetMonthDay</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$dd</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#SetWeekStart" title="details" class="method-name">SetWeekStart</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$weekstart</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#TestByMonth" title="details" class="method-name">TestByMonth</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$monthlist</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#_EpochFromParts" title="details" class="method-name">_EpochFromParts</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#_GMTEpochFromParts" title="details" class="method-name">_GMTEpochFromParts</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#_GMTTextFromEpoch" title="details" class="method-name">_GMTTextFromEpoch</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#_PartsFromText" title="details" class="method-name">_PartsFromText</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#_TextFromEpoch" title="details" class="method-name">_TextFromEpoch</a>
()
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="methodiCalDate" id="iCalDate"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor iCalDate</span> (line <span class="line-number">50</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">The constructor takes either an iCalendar date, a text string formatted as an iCalendar date, or epoch seconds.</p>
<div class="method-signature">
<span class="method-result">iCalDate</span>
<span class="method-name">
iCalDate
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$input</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$input</span> </li>
</ul>
</div>
<a name="methodAddDays" id="AddDays"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">AddDays</span> (line <span class="line-number">265</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Add some integer number of days to a date</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
AddDays
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$dd</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$dd</span> </li>
</ul>
</div>
<a name="methodAddDuration" id="AddDuration"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">AddDuration</span> (line <span class="line-number">293</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Add duration</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
AddDuration
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$duration</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$duration</span> </li>
</ul>
</div>
<a name="methodAddMonths" id="AddMonths"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">AddMonths</span> (line <span class="line-number">237</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Add some number of months to a date</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
AddMonths
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$mo</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$mo</span> </li>
</ul>
</div>
<a name="methodApplyBySetPos" id="ApplyBySetPos"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">ApplyBySetPos</span> (line <span class="line-number">563</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Given set position descriptions like '1', '3', '11', '-3' or '-1' and a set, return the subset matching the list of set positions.</p>
<ul class="tags">
<li><span class="field">return:</span> The subset which matches.</li>
</ul>
<div class="method-signature">
<span class="method-result">array</span>
<span class="method-name">
&amp;ApplyBySetPos
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$bysplist</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$set</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$bysplist</span><span class="var-description">: The list of set positions.</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$set</span><span class="var-description">: The set of days that we will apply the positions to.</span> </li>
</ul>
</div>
<a name="methodDateDifference" id="DateDifference"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">DateDifference</span> (line <span class="line-number">331</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Produce an iCalendar format DURATION for the difference between this an another iCalDate</p>
<ul class="tags">
<li><span class="field">return:</span> The date difference, as an iCalendar duration format</li>
</ul>
<div class="method-signature">
<span class="method-result">string</span>
<span class="method-name">
DateDifference
</span>
(<span class="var-type">date</span>&nbsp;<span class="var-name">$from</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">date</span>
<span class="var-name">$from</span><span class="var-description">: The start of the period</span> </li>
</ul>
</div>
<a name="methodDaysInMonth" id="DaysInMonth"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">DaysInMonth</span> (line <span class="line-number">188</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">No of days in a month 1(Jan) - 12(Dec)</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
DaysInMonth
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$mo</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$yy</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$mo</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$yy</span> </li>
</ul>
</div>
<a name="methodGetMonthByDay" id="GetMonthByDay"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GetMonthByDay</span> (line <span class="line-number">414</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Applies any BYDAY to the month to return a set of days</p>
<ul class="tags">
<li><span class="field">return:</span> An array of the day numbers for the month which meet the rule.</li>
</ul>
<div class="method-signature">
<span class="method-result">array</span>
<span class="method-name">
GetMonthByDay
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$byday</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$byday</span><span class="var-description">: The BYDAY rule</span> </li>
</ul>
</div>
<a name="methodGetMonthByMonthDay" id="GetMonthByMonthDay"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GetMonthByMonthDay</span> (line <span class="line-number">435</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Applies any BYMONTHDAY to the month to return a set of days</p>
<ul class="tags">
<li><span class="field">return:</span> An array of the day numbers for the month which meet the rule.</li>
</ul>
<div class="method-signature">
<span class="method-result">array</span>
<span class="method-name">
GetMonthByMonthDay
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$bymonthday</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$bymonthday</span><span class="var-description">: The BYMONTHDAY rule</span> </li>
</ul>
</div>
<a name="methodGetWeekByDay" id="GetWeekByDay"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GetWeekByDay</span> (line <span class="line-number">455</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Applies any BYDAY to the week to return a set of days</p>
<ul class="tags">
<li><span class="field">return:</span> An array of the day numbers for the week which meet the rule.</li>
</ul>
<div class="method-signature">
<span class="method-result">array</span>
<span class="method-name">
GetWeekByDay
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$byday</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$increasing</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$byday</span><span class="var-description">: The BYDAY rule</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$increasing</span><span class="var-description">: When we are moving by months, we want any day of the week, but when by day we only want to increase. Default false.</span> </li>
</ul>
</div>
<a name="methodGreaterThan" id="GreaterThan"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GreaterThan</span> (line <span class="line-number">478</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Test if $this is greater than the date parameter</p>
<ul class="tags">
<li><span class="field">return:</span> True if $this &gt; $lesser</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
GreaterThan
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$lesser</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$lesser</span><span class="var-description">: The other date, as a local time string</span> </li>
</ul>
</div>
<a name="methodLessThan" id="LessThan"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">LessThan</span> (line <span class="line-number">493</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Test if $this is less than the date parameter</p>
<ul class="tags">
<li><span class="field">return:</span> True if $this &lt; $greater</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
LessThan
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$greater</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$greater</span><span class="var-description">: The other date, as a local time string</span> </li>
</ul>
</div>
<a name="methodMonthDays" id="MonthDays"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">MonthDays</span> (line <span class="line-number">512</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Given a MonthDays string like &quot;1MO&quot;, &quot;-2WE&quot; return an integer day of the month.</p>
<ul class="tags">
<li><span class="field">return:</span> An array of the day numbers for the month which meet the rule.</li>
</ul>
<div class="method-signature">
<span class="method-result">array</span>
<span class="method-name">
&amp;MonthDays
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$dow_first</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$days_in_month</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$dayspec</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$dow_first</span><span class="var-description">: The day of week of the first of the month.</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$days_in_month</span><span class="var-description">: The number of days in the month.</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$dayspec</span><span class="var-description">: The specification for a month day (or days) which we parse.</span> </li>
</ul>
</div>
<a name="methodRender" id="Render"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">Render</span> (line <span class="line-number">172</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Set the day of week used for calculation of week starts</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
Render
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$fmt</span> = <span class="var-default">'Y-m-d H:i:s'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$fmt</span> </li>
</ul>
</div>
<a name="methodRenderGMT" id="RenderGMT"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">RenderGMT</span> (line <span class="line-number">180</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Render the date as GMT</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
RenderGMT
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$fmt</span> = <span class="var-default">'Ymd\THis\Z'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$fmt</span> </li>
</ul>
</div>
<a name="methodSetEpochDate" id="SetEpochDate"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">SetEpochDate</span> (line <span class="line-number">104</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Set the date from an epoch</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
SetEpochDate
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$input</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$input</span> </li>
</ul>
</div>
<a name="methodSetGMTDate" id="SetGMTDate"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">SetGMTDate</span> (line <span class="line-number">84</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Set the date from a text string</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
SetGMTDate
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$input</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$input</span> </li>
</ul>
</div>
<a name="methodSetLocalDate" id="SetLocalDate"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">SetLocalDate</span> (line <span class="line-number">94</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Set the date from a text string</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
SetLocalDate
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$input</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$input</span> </li>
</ul>
</div>
<a name="methodSetMonthDay" id="SetMonthDay"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">SetMonthDay</span> (line <span class="line-number">225</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Set the day in the month to what we have been given</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
SetMonthDay
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$dd</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$dd</span> </li>
</ul>
</div>
<a name="methodSetWeekStart" id="SetWeekStart"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">SetWeekStart</span> (line <span class="line-number">163</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Set the day of week used for calculation of week starts</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
SetWeekStart
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$weekstart</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$weekstart</span><span class="var-description">: The day of the week which is the first business day.</span> </li>
</ul>
</div>
<a name="methodTestByMonth" id="TestByMonth"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">TestByMonth</span> (line <span class="line-number">402</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Test to see if our _mo matches something in the list of months we have received.</p>
<ul class="tags">
<li><span class="field">return:</span> Whether this date falls within one of those months.</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
TestByMonth
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$monthlist</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$monthlist</span><span class="var-description">: A comma-separated list of months.</span> </li>
</ul>
</div>
<a name="method_EpochFromParts" id="_EpochFromParts"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">_EpochFromParts</span> (line <span class="line-number">152</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Given a local text date, convert it to an epoch</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
_EpochFromParts
</span>
()
</div>
</div>
<a name="method_GMTEpochFromParts" id="_GMTEpochFromParts"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">_GMTEpochFromParts</span> (line <span class="line-number">143</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Given a GMT text date, convert it to an epoch</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
_GMTEpochFromParts
</span>
()
</div>
</div>
<a name="method_GMTTextFromEpoch" id="_GMTTextFromEpoch"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">_GMTTextFromEpoch</span> (line <span class="line-number">122</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Given a GMT epoch date, convert it to text</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
_GMTTextFromEpoch
</span>
()
</div>
</div>
<a name="method_PartsFromText" id="_PartsFromText"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">_PartsFromText</span> (line <span class="line-number">130</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Given a text date, convert it to parts</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
_PartsFromText
</span>
()
</div>
</div>
<a name="method_TextFromEpoch" id="_TextFromEpoch"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">_TextFromEpoch</span> (line <span class="line-number">114</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Given an epoch date, convert it to text</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
_TextFromEpoch
</span>
()
</div>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:10 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,15 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<html>
<head>
<title>DAViCal</title>
<link rel="stylesheet" href="media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div align="center"><h1>DAViCal</h1></div>
<b>Welcome to davical!</b><br />
<br />
This documentation was generated by <a href="http://www.phpdoc.org">phpDocumentor v1.4.3</a><br />
</body>
</html>

View File

@ -1,60 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title></title>
<link rel="stylesheet" href="media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<!-- Start of Class Data -->
<H2>
</H2>
<h2>Root class CalDAVClient</h2>
<ul>
<li><a href="awl/caldav/CalDAVClient.html">CalDAVClient</a></li></ul>
<h2>Root class CalDAVClient</h2>
<ul>
<li><a href="awl/caldav/CalDAVClient.html">CalDAVClient</a></li></ul>
<h2>Root class CalendarInfo</h2>
<ul>
<li><a href="awl/caldav/CalendarInfo.html">CalendarInfo</a></li></ul>
<h2>Root class iCalDate</h2>
<ul>
<li><a href="awl/caldav/iCalDate.html">iCalDate</a></li></ul>
<h2>Root class RepeatRule</h2>
<ul>
<li><a href="awl/caldav/RepeatRule.html">RepeatRule</a></li></ul>
<h2>Root class RepeatRuleDateRange</h2>
<ul>
<li><a href="awl/caldav/RepeatRuleDateRange.html">RepeatRuleDateRange</a></li></ul>
<h2>Root class Rfc5545Duration</h2>
<ul>
<li><a href="awl/caldav/Rfc5545Duration.html">Rfc5545Duration</a></li></ul>
<h2>Root class RRule</h2>
<ul>
<li><a href="awl/caldav/RRule.html">RRule</a></li></ul>
<h2>Root class DateTime</h2>
<ul>
<li><a href="awl/caldav/RepeatRuleDateTime.html">RepeatRuleDateTime</a></li></ul>
<h2>Root class DateTimeZone</h2>
<ul>
<li><a href="awl/caldav/RepeatRuleTimeZone.html">RepeatRuleTimeZone</a></li></ul>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:05 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</body>
</html>

View File

@ -1,122 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title></title>
<link rel="stylesheet" href="media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<!-- Start of Class Data -->
<H2>
</H2>
<h2>Root class AtomEntry</h2>
<ul>
<li><a href="davical/AtomEntry.html">AtomEntry</a></li></ul>
<h2>Root class AtomXHTMLContent</h2>
<ul>
<li><a href="davical/AtomXHTMLContent.html">AtomXHTMLContent</a></li></ul>
<h2>Root class CalDAVRequest</h2>
<ul>
<li><a href="davical/Request/CalDAVRequest.html">CalDAVRequest</a></li></ul>
<h2>Root class CheckResult</h2>
<ul>
<li><a href="davical/CheckResult.html">CheckResult</a></li></ul>
<h2>Root class DAVResource</h2>
<ul>
<li><a href="davical/Resource/DAVResource.html">DAVResource</a><ul>
<li><a href="davical/Resource/WritableCollection.html">WritableCollection</a></li></ul></li>
</ul>
<h2>Root class DAVTicket</h2>
<ul>
<li><a href="davical/DAVTicket/DAVTicket.html">DAVTicket</a></li></ul>
<h2>Root class FakeSession</h2>
<ul>
<li><a href="davical/iSchedule-POST/FakeSession.html">FakeSession</a></li></ul>
<h2>Root class FakeSession</h2>
<ul>
<li><a href="davical/iSchedule-POST/FakeSession.html">FakeSession</a></li></ul>
<h2>Root class HTTPAuthSession</h2>
<ul>
<li><a href="davical/HTTPAuthSession/HTTPAuthSession.html">HTTPAuthSession</a></li></ul>
<h2>Root class imapPamDrivers</h2>
<ul>
<li><a href="davical/ldap/imapPamDrivers.html">imapPamDrivers</a></li></ul>
<h2>Root class imapPamDrivers</h2>
<ul>
<li><a href="davical/ldap/imapPamDrivers.html">imapPamDrivers</a></li></ul>
<h2>Root class iSchedule</h2>
<ul>
<li><a href="davical/iSchedule/iSchedule.html">iSchedule</a></li></ul>
<h2>Root class ldapDrivers</h2>
<ul>
<li><a href="davical/ldap/ldapDrivers.html">ldapDrivers</a></li></ul>
<h2>Root class Principal</h2>
<ul>
<li><a href="davical/Principal/Principal.html">Principal</a><ul>
<li><a href="davical/Principal/DAVPrincipal.html">DAVPrincipal</a></li></ul></li>
</ul>
<h2>Root class PublicSession</h2>
<ul>
<li><a href="davical/PublicSession/PublicSession.html">PublicSession</a></li></ul>
<h2>Root class pwauthPamDrivers</h2>
<ul>
<li><a href="davical/pwauth/pwauthPamDrivers.html">pwauthPamDrivers</a></li></ul>
<h2>Root class RRuleTest</h2>
<ul>
<li><a href="davical/RRuleTest.html">RRuleTest</a></li></ul>
<h2>Root class RRuleTest</h2>
<ul>
<li><a href="davical/RRuleTest.html">RRuleTest</a></li></ul>
<h2>Root class SqlToArray</h2>
<ul>
<li><a href="davical/SqlToArray.html">SqlToArray</a></li></ul>
<h2>Root class squidPamDrivers</h2>
<ul>
<li><a href="davical/ldap/squidPamDrivers.html">squidPamDrivers</a></li></ul>
<h2>Root class Tools</h2>
<ul>
<li><a href="davical/DAViCalSession/Tools.html">Tools</a></li></ul>
<h2>Root class Session</h2>
<ul>
<li><a href="davical/DAViCalSession/DAViCalSession.html">DAViCalSession</a></li></ul>
<h2>Root class vComponent</h2>
<ul>
<li><a href="davical/VCard.html">VCard</a></li><li><a href="davical/VTimezone.html">VTimezone</a></li></ul>
<h2>Root class XMLDocument</h2>
<ul>
<li><a href="davical/AtomFeed.html">AtomFeed</a></li></ul>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:05 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</body>
</html>

View File

@ -1,562 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class AtomEntry</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> AtomEntry</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="notes">
Located in <a class="field" href="_inc---AtomFeed.php.html">/inc/AtomFeed.php</a> (line <span class="field">33</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/StaticMethod.png" alt=" "/>
static <span class="method-result">void</span>
<a href="#setDate" title="details" class="method-name">setDate</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$tagname</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$epoch</span>)
</div>
<div class="method-definition">
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-result">AtomEntry</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$id</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$title</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$published</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$updated</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#addAuthor" title="details" class="method-name">addAuthor</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#addCategory" title="details" class="method-name">addCategory</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#addNode" title="details" class="method-name">addNode</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$in_tag</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$content</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$attributes</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$xmlns</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#getXML" title="details" class="method-name">getXML</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setContent" title="details" class="method-name">setContent</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'xhtml'</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setDateCreated" title="details" class="method-name">setDateCreated</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$epoch</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setDateModified" title="details" class="method-name">setDateModified</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$epoch</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setDescription" title="details" class="method-name">setDescription</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'text'</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setId" title="details" class="method-name">setId</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setLink" title="details" class="method-name">setLink</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">&quot;text/calendar&quot;</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$rel</span> = <span class="var-default">'alternate'</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setTitle" title="details" class="method-name">setTitle</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'text'</span>])
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<A NAME='method_detail'></A>
<a name="methodsetDate" id="setDate"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/StaticMethod.png" />
<span class="method-title">static setDate</span> (line <span class="line-number">67</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setDate
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$tagname</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$epoch</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$tagname</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$epoch</span> </li>
</ul>
</div>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">53</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">AtomEntry</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$id</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$title</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$published</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$updated</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$id</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$title</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$published</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$updated</span> </li>
</ul>
</div>
<a name="methodaddAuthor" id="addAuthor"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">addAuthor</span> (line <span class="line-number">87</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
addAuthor
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
</ul>
</div>
<a name="methodaddCategory" id="addCategory"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">addCategory</span> (line <span class="line-number">99</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
addCategory
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
</ul>
</div>
<a name="methodaddNode" id="addNode"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">addNode</span> (line <span class="line-number">123</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
addNode
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$in_tag</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$content</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$attributes</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$xmlns</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$in_tag</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$content</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$attributes</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$xmlns</span> </li>
</ul>
</div>
<a name="methodgetXML" id="getXML"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">getXML</span> (line <span class="line-number">130</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
getXML
</span>
()
</div>
</div>
<a name="methodsetContent" id="setContent"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setContent</span> (line <span class="line-number">112</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setContent
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'xhtml'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$type</span> </li>
</ul>
</div>
<a name="methodsetDateCreated" id="setDateCreated"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setDateCreated</span> (line <span class="line-number">77</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setDateCreated
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$epoch</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$epoch</span> </li>
</ul>
</div>
<a name="methodsetDateModified" id="setDateModified"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setDateModified</span> (line <span class="line-number">72</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setDateModified
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$epoch</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$epoch</span> </li>
</ul>
</div>
<a name="methodsetDescription" id="setDescription"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setDescription</span> (line <span class="line-number">108</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setDescription
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'text'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$type</span> </li>
</ul>
</div>
<a name="methodsetId" id="setId"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setId</span> (line <span class="line-number">57</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setId
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
</ul>
</div>
<a name="methodsetLink" id="setLink"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setLink</span> (line <span class="line-number">83</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setLink
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">&quot;text/calendar&quot;</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$rel</span> = <span class="var-default">'alternate'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$type</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$rel</span> </li>
</ul>
</div>
<a name="methodsetTitle" id="setTitle"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setTitle</span> (line <span class="line-number">62</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setTitle
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'text'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$type</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:05 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,525 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class AtomFeed</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> AtomFeed</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="notes">
Located in <a class="field" href="_inc---AtomFeed.php.html">/inc/AtomFeed.php</a> (line <span class="field">139</span>)
</p>
<pre>XMLDocument
|
--AtomFeed</pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-result">AtomFeed</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#addAuthor" title="details" class="method-name">addAuthor</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#addEntry" title="details" class="method-name">addEntry</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_entry</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#addNode" title="details" class="method-name">addNode</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$in_tag</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$content</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$attributes</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$xmlns</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#createEntry" title="details" class="method-name">createEntry</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$title</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$published</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$updated</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#export" title="details" class="method-name">export</a>
([<span class="var-type"></span>&nbsp;<span class="var-name">$format</span> = <span class="var-default">'atom'</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setDateModified" title="details" class="method-name">setDateModified</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$epoch</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setDescription" title="details" class="method-name">setDescription</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'text'</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">XMLElement</span>
<a href="#setFeedLink" title="details" class="method-name">setFeedLink</a>
(<span class="var-type">uri</span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setId" title="details" class="method-name">setId</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setLink" title="details" class="method-name">setLink</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">&quot;text/calendar&quot;</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$rel</span> = <span class="var-default">'alternate'</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setTitle" title="details" class="method-name">setTitle</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'text'</span>])
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">146</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">AtomFeed</span>
<span class="method-name">
__construct
</span>
()
</div>
</div>
<a name="methodaddAuthor" id="addAuthor"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">addAuthor</span> (line <span class="line-number">201</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
addAuthor
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
</ul>
</div>
<a name="methodaddEntry" id="addEntry"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">addEntry</span> (line <span class="line-number">224</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
addEntry
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_entry</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_entry</span> </li>
</ul>
</div>
<a name="methodaddNode" id="addNode"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">addNode</span> (line <span class="line-number">217</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
addNode
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$in_tag</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$content</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$attributes</span> = <span class="var-default">false</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$xmlns</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$in_tag</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$content</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$attributes</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$xmlns</span> </li>
</ul>
</div>
<a name="methodcreateEntry" id="createEntry"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">createEntry</span> (line <span class="line-number">229</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
createEntry
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$title</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$published</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$updated</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$id</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$title</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$published</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$updated</span> </li>
</ul>
</div>
<a name="methodexport" id="export"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">export</span> (line <span class="line-number">233</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
export
</span>
([<span class="var-type"></span>&nbsp;<span class="var-name">$format</span> = <span class="var-default">'atom'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$format</span> </li>
</ul>
</div>
<a name="methodsetDateModified" id="setDateModified"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setDateModified</span> (line <span class="line-number">179</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setDateModified
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$epoch</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$epoch</span> </li>
</ul>
</div>
<a name="methodsetDescription" id="setDescription"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setDescription</span> (line <span class="line-number">213</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setDescription
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'text'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$type</span> </li>
</ul>
</div>
<a name="methodsetFeedLink" id="setFeedLink"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setFeedLink</span> (line <span class="line-number">196</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Sets the feed link (rel=self), ignoring the parameter which is for compatibility with the Zend library API, although we use this for the Id, whereas they use the first link that is set.</p>
<ul class="tags">
<li><span class="field">return:</span> the node that was added.</li>
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">XMLElement</span>
<span class="method-name">
setFeedLink
</span>
(<span class="var-type">uri</span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">uri</span>
<span class="var-name">$new_value</span><span class="var-description">: The link target</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$type</span> </li>
</ul>
</div>
<a name="methodsetId" id="setId"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setId</span> (line <span class="line-number">169</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setId
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
</ul>
</div>
<a name="methodsetLink" id="setLink"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setLink</span> (line <span class="line-number">184</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setLink
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">&quot;text/calendar&quot;</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$rel</span> = <span class="var-default">'alternate'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$type</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$rel</span> </li>
</ul>
</div>
<a name="methodsetTitle" id="setTitle"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setTitle</span> (line <span class="line-number">174</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setTitle
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_value</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'text'</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_value</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$type</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:05 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,148 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class AtomXHTMLContent</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> AtomXHTMLContent</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">These two classes here sort of emulate the interface from the Zend Framework API with regard to ZendFeedWriteFeed for constructing an Atom feed. Except we do it in a DAViCal way, and we have some huge limitations: <ul><li>We *only* support Atom feeds.</li></ul></p>
<p class="description"><p><ul><li>We *only* support creating them.</li></ul></p></p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@morphoss.com">andrew@morphoss.com</a>&gt;</li>
</ul>
<p class="notes">
Located in <a class="field" href="_inc---AtomFeed.php.html">/inc/AtomFeed.php</a> (line <span class="field">20</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-result">AtomXHTMLContent</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$xhtml</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#Render" title="details" class="method-name">Render</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$ignore1</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$ignore2</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$ignore3</span>)
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">23</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">AtomXHTMLContent</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$xhtml</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$xhtml</span> </li>
</ul>
</div>
<a name="methodRender" id="Render"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">Render</span> (line <span class="line-number">27</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
Render
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$ignore1</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$ignore2</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$ignore3</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$ignore1</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$ignore2</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$ignore3</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:05 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,418 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class CalDAVSyncCache</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> CalDAVSyncCache</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Our SyncCache holds</p>
<p class="notes">
Located in <a class="field" href="_inc---CalDAVSyncCache.php.html">/inc/CalDAVSyncCache.php</a> (line <span class="field">11</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-result">CalDAVSyncCache</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$cache_dir</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$username</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$caldav</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$remote_calendar</span>, <span class="var-type"><a href="../davical/Resource/WritableCollection.html">WritableCollection</a></span>&nbsp;<span class="var-name">$local_calendar</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#applyLocalChangesToRemote" title="details" class="method-name">applyLocalChangesToRemote</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#applyRemoteChangesToLocal" title="details" class="method-name">applyRemoteChangesToLocal</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#deleteRemote" title="details" class="method-name">deleteRemote</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$change</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#finish" title="details" class="method-name">finish</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#localChanges" title="details" class="method-name">localChanges</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#needsSync" title="details" class="method-name">needsSync</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_local_token</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$new_remote_token</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#putRemote" title="details" class="method-name">putRemote</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$change</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#remoteChanges" title="details" class="method-name">remoteChanges</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#resolveConflicts" title="details" class="method-name">resolveConflicts</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#updateETags" title="details" class="method-name">updateETags</a>
()
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">23</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">CalDAVSyncCache</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$cache_dir</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$username</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$caldav</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$remote_calendar</span>, <span class="var-type"><a href="../davical/Resource/WritableCollection.html">WritableCollection</a></span>&nbsp;<span class="var-name">$local_calendar</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$cache_dir</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$username</span> </li>
<li>
<span class="var-type"><a href="../awl/caldav/CalDAVSyncClient.html">CalDAVSyncClient</a></span>
<span class="var-name">$caldav</span> </li>
<li>
<span class="var-type"><a href="../awl/CalDAVSyncCalendar.html">CalDAVSyncCalendar</a></span>
<span class="var-name">$remote_calendar</span> </li>
<li>
<span class="var-type"><a href="../davical/Resource/WritableCollection.html">WritableCollection</a></span>
<span class="var-name">$local_calendar</span> </li>
</ul>
</div>
<a name="methodapplyLocalChangesToRemote" id="applyLocalChangesToRemote"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">applyLocalChangesToRemote</span> (line <span class="line-number">89</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Put/Delete to the remote server as appropriate</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
applyLocalChangesToRemote
</span>
()
</div>
</div>
<a name="methodapplyRemoteChangesToLocal" id="applyRemoteChangesToLocal"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">applyRemoteChangesToLocal</span> (line <span class="line-number">112</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Apply remote changes to local database</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
applyRemoteChangesToLocal
</span>
()
</div>
</div>
<a name="methoddeleteRemote" id="deleteRemote"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">deleteRemote</span> (line <span class="line-number">80</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Delete this from the remote server</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
deleteRemote
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$change</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$change</span> </li>
</ul>
</div>
<a name="methodfinish" id="finish"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">finish</span> (line <span class="line-number">41</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
finish
</span>
()
</div>
</div>
<a name="methodlocalChanges" id="localChanges"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">localChanges</span> (line <span class="line-number">52</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
localChanges
</span>
()
</div>
</div>
<a name="methodneedsSync" id="needsSync"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">needsSync</span> (line <span class="line-number">56</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
needsSync
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_local_token</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$new_remote_token</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_local_token</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$new_remote_token</span> </li>
</ul>
</div>
<a name="methodputRemote" id="putRemote"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">putRemote</span> (line <span class="line-number">66</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Write this change to the remote server</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
putRemote
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$change</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$change</span> </li>
</ul>
</div>
<a name="methodremoteChanges" id="remoteChanges"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">remoteChanges</span> (line <span class="line-number">48</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
remoteChanges
</span>
()
</div>
</div>
<a name="methodresolveConflicts" id="resolveConflicts"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">resolveConflicts</span> (line <span class="line-number">121</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
resolveConflicts
</span>
()
</div>
</div>
<a name="methodupdateETags" id="updateETags"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">updateETags</span> (line <span class="line-number">126</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
updateETags
</span>
()
</div>
</div>
</div>
</div>
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<p class="notes" id="credit">
Documentation generated on Sun, 08 Jul 2012 12:53:47 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,340 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class CalDAVSyncState</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> CalDAVSyncState</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<p class="implements">
Implements interfaces:
<ul>
<li>Serializable (internal interface)</li> </ul>
</p>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">The CalDAVSyncState is a very lightweight object holding the data from the last sync process.</p>
<p class="notes">
Located in <a class="field" href="_inc---CalDAVSyncState.php.html">/inc/CalDAVSyncState.php</a> (line <span class="field">5</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-var-summary"></a>
<div class="info-box">
<div class="info-box-title">Variable Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="var-summary">
<div class="var-title">
<img src="../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$local_etags" title="details" class="var-name">$local_etags</a>
</div>
<div class="var-title">
<img src="../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$local_token" title="details" class="var-name">$local_token</a>
</div>
<div class="var-title">
<img src="../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$remote_etags" title="details" class="var-name">$remote_etags</a>
</div>
<div class="var-title">
<img src="../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$remote_token" title="details" class="var-name">$remote_token</a>
</div>
</div>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-result">CalDAVSyncState</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$rtoken</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$retags</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$ltoken</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$letags</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#serialize" title="details" class="method-name">serialize</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#unserialize" title="details" class="method-name">unserialize</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$data</span>)
</div>
</div>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<a name="var$local_etags" id="$local_etags"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$local_etags</span>
(line <span class="line-number">9</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$local_token" id="$local_token"><!-- --></A>
<div class="oddrow">
<div class="var-header">
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$local_token</span>
(line <span class="line-number">8</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$remote_etags" id="$remote_etags"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$remote_etags</span>
(line <span class="line-number">7</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$remote_token" id="$remote_token"><!-- --></A>
<div class="oddrow">
<div class="var-header">
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$remote_token</span>
(line <span class="line-number">6</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">11</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">CalDAVSyncState</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$rtoken</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$retags</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$ltoken</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$letags</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$rtoken</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$retags</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$ltoken</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$letags</span> </li>
</ul>
</div>
<a name="methodserialize" id="serialize"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">serialize</span> (line <span class="line-number">18</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
serialize
</span>
()
</div>
<hr class="separator" />
<div class="notes">Implementation of:</div>
<dl>
<dt>Serializable::serialize</dt>
</dl>
</div>
<a name="methodunserialize" id="unserialize"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">unserialize</span> (line <span class="line-number">22</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
unserialize
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$data</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$data</span> </li>
</ul>
<hr class="separator" />
<div class="notes">Implementation of:</div>
<dl>
<dt>Serializable::unserialize</dt>
</dl>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Sun, 08 Jul 2012 12:53:48 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,271 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class CheckResult</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> CheckResult</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="notes">
Located in <a class="field" href="_htdocs---setup.php.html">/htdocs/setup.php</a> (line <span class="field">50</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-result">CheckResult</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$success</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$description</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$use_class</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#getClass" title="details" class="method-name">getClass</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#getDescription" title="details" class="method-name">getDescription</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#getOK" title="details" class="method-name">getOK</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setClass" title="details" class="method-name">setClass</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_class</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#setDescription" title="details" class="method-name">setDescription</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_desc</span>)
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">55</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">CheckResult</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$success</span>, [<span class="var-type"></span>&nbsp;<span class="var-name">$description</span> = <span class="var-default">null</span>], [<span class="var-type"></span>&nbsp;<span class="var-name">$use_class</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$success</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$description</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$use_class</span> </li>
</ul>
</div>
<a name="methodgetClass" id="getClass"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">getClass</span> (line <span class="line-number">61</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
getClass
</span>
()
</div>
</div>
<a name="methodgetDescription" id="getDescription"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">getDescription</span> (line <span class="line-number">73</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
getDescription
</span>
()
</div>
</div>
<a name="methodgetOK" id="getOK"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">getOK</span> (line <span class="line-number">69</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
getOK
</span>
()
</div>
</div>
<a name="methodsetClass" id="setClass"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setClass</span> (line <span class="line-number">65</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setClass
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_class</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_class</span> </li>
</ul>
</div>
<a name="methodsetDescription" id="setDescription"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">setDescription</span> (line <span class="line-number">77</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
setDescription
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$new_desc</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$new_desc</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:10 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,260 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class DAVTicket</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> DAVTicket</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A class for things to do with a DAV Ticket</p>
<p class="notes">
Located in <a class="field" href="_inc---DAVTicket.php.html">/inc/DAVTicket.php</a> (line <span class="field">20</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">DAVTicket</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$ticket_id</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#dav_name" title="details" class="method-name">dav_name</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#id" title="details" class="method-name">id</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#MatchesPath" title="details" class="method-name">MatchesPath</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$test_path</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#MatchesResource" title="details" class="method-name">MatchesResource</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$test_resource_id</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#privileges" title="details" class="method-name">privileges</a>
()
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">66</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Constructor</p>
<div class="method-signature">
<span class="method-result">DAVTicket</span>
<span class="method-name">
__construct
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$ticket_id</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$ticket_id</span> </li>
</ul>
</div>
<a name="methoddav_name" id="dav_name"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">dav_name</span> (line <span class="line-number">109</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
dav_name
</span>
()
</div>
</div>
<a name="methodid" id="id"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">id</span> (line <span class="line-number">114</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
id
</span>
()
</div>
</div>
<a name="methodMatchesPath" id="MatchesPath"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">MatchesPath</span> (line <span class="line-number">124</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
MatchesPath
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$test_path</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$test_path</span> </li>
</ul>
</div>
<a name="methodMatchesResource" id="MatchesResource"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">MatchesResource</span> (line <span class="line-number">129</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
MatchesResource
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$test_resource_id</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$test_resource_id</span> </li>
</ul>
</div>
<a name="methodprivileges" id="privileges"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">privileges</span> (line <span class="line-number">119</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
privileges
</span>
()
</div>
</div>
</div>
</div>
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:08 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,109 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page DAVTicket.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/DAVTicket.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">An object representing a DAV 'ticket'</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Morphoss Ltd</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v3 or later</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
| <a href="#sec-includes">Includes</a>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../davical/DAVTicket/DAVTicket.html">DAVTicket</a>
</td>
<td>
A class for things to do with a DAV Ticket
</td>
</tr>
</table>
</div>
</div>
<a name="sec-includes"></a>
<div class="info-box">
<div class="info-box-title">Includes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <span class="disabled">Includes</span>
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<a name="_AwlQuery_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name">'AwlQuery.php'</span>)
(line <span class="line-number">12</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">An object representing a DAV 'ticket'</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Morphoss Ltd</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v3 or later</a></li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:08 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,318 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class DAViCalSession</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> DAViCalSession</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A class for creating and holding session information.</p>
<p class="notes">
Located in <a class="field" href="_inc---DAViCalSession.php.html">/inc/DAViCalSession.php</a> (line <span class="field">48</span>)
</p>
<pre>Session
|
--DAViCalSession</pre>
</div>
</div>
<a name="sec-var-summary"></a>
<div class="info-box">
<div class="info-box-title">Variable Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="var-summary">
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">mixed</span>
<a href="#$principal_id" title="details" class="var-name">$principal_id</a>
</div>
</div>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">DAViCalSession</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
([<span class="var-type">string</span>&nbsp;<span class="var-name">$sid</span> = <span class="var-default">''</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#AssignSessionDetails" title="details" class="method-name">AssignSessionDetails</a>
(<span class="var-type">object</span>&nbsp;<span class="var-name">$u</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#GetRoles" title="details" class="method-name">GetRoles</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#HavePrivilegeTo" title="details" class="method-name">HavePrivilegeTo</a>
(<span class="var-type">$do_what</span>&nbsp;<span class="var-name">$do_what</span>, <span class="var-type">$path</span>&nbsp;<span class="var-name">$path</span>, [<span class="var-type">$any</span>&nbsp;<span class="var-name">$any</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#LoginRequired" title="details" class="method-name">LoginRequired</a>
([<span class="var-type">string</span>&nbsp;<span class="var-name">$roles</span> = <span class="var-default">''</span>])
</div>
</div>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<a name="var$principal_id" id="$principal_id"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">mixed</span>
<span class="var-name">$principal_id</span>
(line <span class="line-number">51</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">62</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Create a new DAViCalSession object.</p>
<p class="description"><p>We create a Session and extend it with some additional useful DAViCal related information.</p></p>
<div class="method-signature">
<span class="method-result">DAViCalSession</span>
<span class="method-name">
__construct
</span>
([<span class="var-type">string</span>&nbsp;<span class="var-name">$sid</span> = <span class="var-default">''</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$sid</span><span class="var-description">: A session identifier.</span> </li>
</ul>
</div>
<a name="methodAssignSessionDetails" id="AssignSessionDetails"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">AssignSessionDetails</span> (line <span class="line-number">72</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Internal function used to assign the session details to a user's new session.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
AssignSessionDetails
</span>
(<span class="var-type">object</span>&nbsp;<span class="var-name">$u</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">object</span>
<span class="var-name">$u</span><span class="var-description">: The user+session object we (probably) read from the database.</span> </li>
</ul>
</div>
<a name="methodGetRoles" id="GetRoles"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GetRoles</span> (line <span class="line-number">92</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Method used to get the user's roles</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
GetRoles
</span>
()
</div>
</div>
<a name="methodHavePrivilegeTo" id="HavePrivilegeTo"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">HavePrivilegeTo</span> (line <span class="line-number">111</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Does the user have the privileges to do what is requested.</p>
<ul class="tags">
<li><span class="field">return:</span> Whether they do have one of those privileges against the specified path.</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
HavePrivilegeTo
</span>
(<span class="var-type">$do_what</span>&nbsp;<span class="var-name">$do_what</span>, <span class="var-type">$path</span>&nbsp;<span class="var-name">$path</span>, [<span class="var-type">$any</span>&nbsp;<span class="var-name">$any</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">$do_what</span>
<span class="var-name">$do_what</span><span class="var-description">: mixed The request privilege name, or array of privilege names, to be checked.</span> </li>
<li>
<span class="var-type">$path</span>
<span class="var-name">$path</span><span class="var-description">: string The path we want that permission for</span> </li>
<li>
<span class="var-type">$any</span>
<span class="var-name">$any</span><span class="var-description">: boolean Whether we accept any of the privileges. The default is true, unless the requested privilege is 'all', when it is false.</span> </li>
</ul>
</div>
<a name="methodLoginRequired" id="LoginRequired"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">LoginRequired</span> (line <span class="line-number">134</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Checks that this user is logged in, and presents a login screen if they aren't.</p>
<p class="description"><p>The function can optionally confirm whether they are a member of one of a list of roles, and deny access if they are not a member of any of them.</p></p>
<ul class="tags">
<li><span class="field">return:</span> Whether or not the user is logged in and is a member of one of the required roles.</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
LoginRequired
</span>
([<span class="var-type">string</span>&nbsp;<span class="var-name">$roles</span> = <span class="var-default">''</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$roles</span><span class="var-description">: The list of roles that the user must be a member of one of to be allowed to proceed.</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:07 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,181 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class Tools</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> Tools</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="notes">
Located in <a class="field" href="_htdocs---tools.php.html">/htdocs/tools.php</a> (line <span class="field">39</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/StaticMethod.png" alt=" "/>
static <span class="method-result">void</span>
<a href="#importFromDirectory" title="details" class="method-name">importFromDirectory</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/StaticMethod.png" alt=" "/>
static <span class="method-result">void</span>
<a href="#renderImportFromDirectory" title="details" class="method-name">renderImportFromDirectory</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/StaticMethod.png" alt=" "/>
static <span class="method-result">void</span>
<a href="#renderSyncLDAP" title="details" class="method-name">renderSyncLDAP</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#render" title="details" class="method-name">render</a>
()
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="methodimportFromDirectory" id="importFromDirectory"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/StaticMethod.png" />
<span class="method-title">static importFromDirectory</span> (line <span class="line-number">105</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
importFromDirectory
</span>
()
</div>
</div>
<a name="methodrenderImportFromDirectory" id="renderImportFromDirectory"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/StaticMethod.png" />
<span class="method-title">static renderImportFromDirectory</span> (line <span class="line-number">77</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
renderImportFromDirectory
</span>
()
</div>
</div>
<a name="methodrenderSyncLDAP" id="renderSyncLDAP"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/StaticMethod.png" />
<span class="method-title">static renderSyncLDAP</span> (line <span class="line-number">49</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
renderSyncLDAP
</span>
()
</div>
</div>
<a name="methodrender" id="render"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">render</span> (line <span class="line-number">41</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
render
</span>
()
</div>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:10 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,223 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page tools.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/htdocs/tools.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Tools for manipulating calendars</p>
<ul class="tags">
<li><span class="field">author:</span> Maxime Delorme &lt;<a href="mailto:mdelorme@tennaxia.com">mdelorme@tennaxia.com</a>&gt;</li>
<li><span class="field">copyright:</span> Maxime Delorme</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
| <a href="#sec-includes">Includes</a>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../davical/DAViCalSession/Tools.html">Tools</a>
</td>
<td>
</td>
</tr>
</table>
</div>
</div>
<a name="sec-includes"></a>
<div class="info-box">
<div class="info-box-title">Includes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <span class="disabled">Includes</span>
</div>
<div class="info-box-body">
<a name="_page-footer_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">include</span>
(<span class="include-name"><a href="../../davical/_inc---page-footer.php.html">page-footer.php</a></span>)
(line <span class="line-number">166</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="_page-header_php"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">include</span>
(<span class="include-name"><a href="../../davical/_inc---page-header.php.html">page-header.php</a></span>)
(line <span class="line-number">164</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="_check_UTF8_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">include_once</span>
(<span class="include-name"><a href="../../davical/_inc---check_UTF8.php.html">check_UTF8.php</a></span>)
(line <span class="line-number">21</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="_interactive-page_php"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name"><a href="../../davical/_inc---interactive-page.php.html">interactive-page.php</a></span>)
(line <span class="line-number">17</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="_DataEntry_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name">"DataEntry.php"</span>)
(line <span class="line-number">16</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="__/always_php"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name"><a href="../../davical/_htdocs---always.php.html">"./always.php"</a></span>)
(line <span class="line-number">12</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Tools for manipulating calendars</p>
<ul class="tags">
<li><span class="field">author:</span> Maxime Delorme &lt;<a href="mailto:mdelorme@tennaxia.com">mdelorme@tennaxia.com</a>&gt;</li>
<li><span class="field">copyright:</span> Maxime Delorme</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2</a></li>
</ul>
</div>
<a name="_classBrowser_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name">"classBrowser.php"</span>)
(line <span class="line-number">18</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="_caldav-PUT-functions_php"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-PUT-functions.php.html">caldav-PUT-functions.php</a></span>)
(line <span class="line-number">20</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="_DAViCalSession_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name"><a href="../../davical/DAViCalSession/_inc---DAViCalSession.php.html">DAViCalSession.php</a></span>)
(line <span class="line-number">13</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:10 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,195 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page DAViCalSession.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/DAViCalSession.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
| <a href="#sec-variables">Variables</a>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">DAViCal extensions to AWL Session handling</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Catalyst .Net Ltd, Morphoss Ltd &lt;http://www.morphoss.com/&gt;</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
| <a href="#sec-includes">Includes</a>
| <a href="#sec-variables">Variables</a>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../davical/DAViCalSession/DAViCalSession.html">DAViCalSession</a>
</td>
<td>
A class for creating and holding session information.
</td>
</tr>
</table>
</div>
</div>
<a name="sec-includes"></a>
<div class="info-box">
<div class="info-box-title">Includes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <span class="disabled">Includes</span>
| <a href="#sec-variables">Variables</a>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<a name="_DAVResource_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">include_once</span>
(<span class="include-name"><a href="../../davical/Resource/_inc---DAVResource.php.html">'DAVResource.php'</a></span>)
(line <span class="line-number">38</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="_Session_php"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require</span>
(<span class="include-name">'Session.php'</span>)
(line <span class="line-number">37</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">We extend the AWL Session class.</p>
</div>
</div>
</div>
<a name="sec-variables"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
| <span class="disabled">Variables</span>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<a name="global$session
The session object is global." id="global$session
The session object is global."><!-- --></a>
<div class="evenrow">
<div>
<img src="../../media/images/Global.png" />
<span class="var-title">
<span class="var-type">resource</span>
<span class="var-name">$session
The session object is global.</span>
(line <span class="line-number">17</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">name:</span> $session
The session object is global.</li>
</ul>
</div>
</div>
</div>
<a name="sec-functions"></a>
<div class="info-box">
<div class="info-box-title">Functions</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
| <a href="#sec-variables">Variables</a>
| <span class="disabled">Functions</span>
</div>
<div class="info-box-body">
<a name="functionlocal_session_sql" id="functionlocal_session_sql"><!-- --></a>
<div class="oddrow">
<div>
<img src="../../media/images/Function.png" />
<span class="method-title">local_session_sql</span> (line <span class="line-number">26</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">todo:</span> Make this a defined constant</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
local_session_sql
</span>
()
</div>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:07 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,150 +0,0 @@
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class FakeSession</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> FakeSession</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Sometimes we need a fake session when we are using the DAViCal libraries from a script POV.</p>
<p class="description"><p>This FakeSession grants complete privileges and access - normally what you want, in a script context - so you should know what you're doing and why you're using it.</p></p>
<ul class="tags">
<li><span class="field">author:</span> karora</li>
</ul>
<p class="notes">
Located in <a class="field" href="_inc---FakeSession.php.html">/inc/FakeSession.php</a> (line <span class="field">12</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-result">FakeSession</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$user_no</span>)
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#AllowedTo" title="details" class="method-name">AllowedTo</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$do_something</span>)
</div>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
Strict Standards: Only variables should be passed by reference in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 712
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">14</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">FakeSession</span>
<span class="method-name">
__construct
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$user_no</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$user_no</span> </li>
</ul>
</div>
<a name="methodAllowedTo" id="AllowedTo"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">AllowedTo</span> (line <span class="line-number">35</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
AllowedTo
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$do_something</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$do_something</span> </li>
</ul>
</div>
</div>
</div>
Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /usr/share/php/PhpDocumentor/phpDocumentor/Smarty-2.6.0/libs/Smarty_Compiler.class.php on line 370
<p class="notes" id="credit">
Documentation generated on Sun, 08 Jul 2012 12:53:49 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,516 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class HTTPAuthSession</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> HTTPAuthSession</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for handling a session using HTTP Basic Authentication</p>
<p class="notes">
Located in <a class="field" href="_inc---HTTPAuthSession.php.html">/inc/HTTPAuthSession.php</a> (line <span class="field">17</span>)
</p>
<pre></pre>
</div>
</div>
<a name="sec-var-summary"></a>
<div class="info-box">
<div class="info-box-title">Variable Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="var-summary">
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">email</span>
<a href="#$email" title="details" class="var-name">$email</a>
</div>
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">fullname</span>
<a href="#$fullname" title="details" class="var-name">$fullname</a>
</div>
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">groups</span>
<a href="#$groups" title="details" class="var-name">$groups</a>
</div>
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">user_no</span>
<a href="#$user_no" title="details" class="var-name">$user_no</a>
</div>
</div>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">HTTPAuthSession</span>
<a href="#HTTPAuthSession" title="details" class="method-name">HTTPAuthSession</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#AllowedTo" title="details" class="method-name">AllowedTo</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$whatever</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#AssignSessionDetails" title="details" class="method-name">AssignSessionDetails</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$principal</span>, <span class="var-type">object</span>&nbsp;<span class="var-name">$u</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#AuthFailedResponse" title="details" class="method-name">AuthFailedResponse</a>
([<span class="var-type">string</span>&nbsp;<span class="var-name">$auth_header</span> = <span class="var-default">&quot;&quot;</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#BasicAuthSession" title="details" class="method-name">BasicAuthSession</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#CheckPassword" title="details" class="method-name">CheckPassword</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$username</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$password</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#DigestAuthSession" title="details" class="method-name">DigestAuthSession</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#GetRoles" title="details" class="method-name">GetRoles</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#ParseDigestHeader" title="details" class="method-name">ParseDigestHeader</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$auth_header</span>)
</div>
</div>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<a name="var$email" id="$email"><!-- --></A>
<div class="oddrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">email</span>
<span class="var-name">$email</span>
(line <span class="line-number">32</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">User e-mail</p>
<ul class="tags">
<li><span class="field">var:</span> string</li>
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$fullname" id="$fullname"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">fullname</span>
<span class="var-name">$fullname</span>
(line <span class="line-number">38</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">User full name</p>
<ul class="tags">
<li><span class="field">var:</span> string</li>
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$groups" id="$groups"><!-- --></A>
<div class="oddrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">groups</span>
<span class="var-name">$groups</span>
(line <span class="line-number">44</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Group rights</p>
<ul class="tags">
<li><span class="field">var:</span> array</li>
<li><span class="field">access:</span> public</li>
</ul>
</div>
<a name="var$user_no" id="$user_no"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">user_no</span>
<span class="var-name">$user_no</span>
(line <span class="line-number">26</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">User ID number</p>
<ul class="tags">
<li><span class="field">var:</span> int</li>
<li><span class="field">access:</span> public</li>
</ul>
</div>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="methodHTTPAuthSession" id="HTTPAuthSession"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor HTTPAuthSession</span> (line <span class="line-number">50</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">The constructor, which just calls the type supplied or configured</p>
<div class="method-signature">
<span class="method-result">HTTPAuthSession</span>
<span class="method-name">
HTTPAuthSession
</span>
()
</div>
</div>
<a name="methodAllowedTo" id="AllowedTo"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">AllowedTo</span> (line <span class="line-number">329</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Checks whether a user is allowed to do something.</p>
<p class="description"><p>The check is performed to see if the user has that role.</p></p>
<ul class="tags">
<li><span class="field">return:</span> Whether or not the user has the specified role.</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
AllowedTo
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$whatever</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$whatever</span><span class="var-description">: The role we want to know if the user has.</span> </li>
</ul>
</div>
<a name="methodAssignSessionDetails" id="AssignSessionDetails"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">AssignSessionDetails</span> (line <span class="line-number">353</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Internal function used to assign the session details to a user's new session.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
AssignSessionDetails
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$principal</span>, <span class="var-type">object</span>&nbsp;<span class="var-name">$u</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">object</span>
<span class="var-name">$u</span><span class="var-description">: The user+session object we (probably) read from the database.</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$principal</span> </li>
</ul>
</div>
<a name="methodAuthFailedResponse" id="AuthFailedResponse"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">AuthFailedResponse</span> (line <span class="line-number">72</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Authorisation failed, so we send some headers to say so.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
AuthFailedResponse
</span>
([<span class="var-type">string</span>&nbsp;<span class="var-name">$auth_header</span> = <span class="var-default">&quot;&quot;</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$auth_header</span><span class="var-description">: The WWW-Authenticate header details.</span> </li>
</ul>
</div>
<a name="methodBasicAuthSession" id="BasicAuthSession"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">BasicAuthSession</span> (line <span class="line-number">98</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Handle Basic HTTP Authentication (not secure unless https)</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
BasicAuthSession
</span>
()
</div>
</div>
<a name="methodCheckPassword" id="CheckPassword"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">CheckPassword</span> (line <span class="line-number">280</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">CheckPassword does all of the password checking and returns a user record object, or false if it all ends in tears.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
CheckPassword
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$username</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$password</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$username</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$password</span> </li>
</ul>
</div>
<a name="methodDigestAuthSession" id="DigestAuthSession"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">DigestAuthSession</span> (line <span class="line-number">185</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Handle Digest HTTP Authentication (no passwords were harmed in this transaction!)</p>
<p class="description"><p>Note that this will not actually work, unless we can either: (A) store the password plain text in the database (B) store an md5( username || realm || password ) in the database</p><p>The problem is that potentially means that the administrator can collect the sorts of things people use as passwords. I believe this is quite a bad idea. In scenario (B) while they cannot see the password itself, they can see a hash which only varies when the password varies, so can see when two users have the same password, or can use some of the reverse lookup sites to attempt to reverse the hash. I think this is a less bad idea, but not ideal. Probably better than running Basic auth of HTTP though!</p></p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
DigestAuthSession
</span>
()
</div>
</div>
<a name="methodGetRoles" id="GetRoles"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GetRoles</span> (line <span class="line-number">337</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Internal function used to get the user's roles from the database.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
GetRoles
</span>
()
</div>
</div>
<a name="methodParseDigestHeader" id="ParseDigestHeader"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">ParseDigestHeader</span> (line <span class="line-number">247</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Parse the HTTP Digest Auth Header</p>
<p class="description"><p><ul><li>largely sourced from the PHP documentation</li></ul></p></p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
ParseDigestHeader
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$auth_header</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$auth_header</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:09 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,69 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page HTTPAuthSession.php</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/inc/HTTPAuthSession.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A Class for handling HTTP Authentication</p>
<ul class="tags">
<li><span class="field">author:</span> Andrew McMillan &lt;<a href="mailto:andrew@catalyst.net.nz">andrew@catalyst.net.nz</a>&gt;</li>
<li><span class="field">copyright:</span> Catalyst .Net Ltd</li>
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../../davical/HTTPAuthSession/HTTPAuthSession.html">HTTPAuthSession</a>
</td>
<td>
A Class for handling a session using HTTP Basic Authentication
</td>
</tr>
</table>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:09 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

View File

@ -1,917 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class DAVPrincipal</title>
<link rel="stylesheet" href="../../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> DAVPrincipal</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">A class for things to do with a DAV Principal</p>
<p class="notes">
Located in <a class="field" href="_inc---DAVPrincipal.php.html">/inc/DAVPrincipal.php</a> (line <span class="field">19</span>)
</p>
<pre><a href="../../davical/Principal/Principal.html">Principal</a>
|
--DAVPrincipal</pre>
</div>
</div>
<a name="sec-var-summary"></a>
<div class="info-box">
<div class="info-box-title">Variable Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="var-summary">
<div class="var-title">
<img src="../../media/images/Variable.png" alt=" " />
<span class="var-type">RFC3744:</span>
<a href="#$_is_group" title="details" class="var-name">$_is_group</a>
</div>
</div>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#__construct" title="details" class="method-name">__construct</a>
([<span class="var-type">mixed</span>&nbsp;<span class="var-name">$parameters</span> = <span class="var-default">null</span>])
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#addressbook_home_set" title="details" class="method-name">addressbook_home_set</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#AsCollection" title="details" class="method-name">AsCollection</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#calendar_free_busy_set" title="details" class="method-name">calendar_free_busy_set</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#calendar_home_set" title="details" class="method-name">calendar_home_set</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#FetchProxyGroups" title="details" class="method-name">FetchProxyGroups</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">string</span>
<a href="#GetProperty" title="details" class="method-name">GetProperty</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$property_id</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#GroupMemberSet" title="details" class="method-name">GroupMemberSet</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#GroupMembership" title="details" class="method-name">GroupMembership</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#InitialiseRecord" title="details" class="method-name">InitialiseRecord</a>
(<span class="var-type">object</span>&nbsp;<span class="var-name">$usr</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">boolean</span>
<a href="#IsGroup" title="details" class="method-name">IsGroup</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#PrincipalProperty" title="details" class="method-name">PrincipalProperty</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$tag</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$prop</span>, <span class="var-type"></span>&nbsp;<span class="var-name">&$reply</span>, <span class="var-type"></span>&nbsp;<span class="var-name">&$denied</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#Privileges" title="details" class="method-name">Privileges</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#PropertySearch" title="details" class="method-name">PropertySearch</a>
(<span class="var-type"></span>&nbsp;<span class="var-name">$parameters</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#ProxyFor" title="details" class="method-name">ProxyFor</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$type</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#ReadProxyGroup" title="details" class="method-name">ReadProxyGroup</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">string</span>
<a href="#RenderAsXML" title="details" class="method-name">RenderAsXML</a>
(<span class="var-type">array</span>&nbsp;<span class="var-name">$properties</span>, <span class="var-type"></span>&nbsp;<span class="var-name">&$reply</span>, [<span class="var-type">boolean</span>&nbsp;<span class="var-name">$props_only</span> = <span class="var-default">false</span>], <span class="var-type">reference</span>&nbsp;<span class="var-name">$reply</span>)
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#unique_tag" title="details" class="method-name">unique_tag</a>
()
</div>
<div class="method-definition">
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#WriteProxyGroup" title="details" class="method-name">WriteProxyGroup</a>
()
</div>
</div>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<a name="var$_is_group" id="$_is_group"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-type">RFC3744:</span>
<span class="var-name">$_is_group</span>
(line <span class="line-number">42</span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">var:</span> The principals that are direct members of this group.</li>
<li><span class="field">access:</span> protected</li>
</ul>
</div>
<h4>Inherited Variables</h4>
<A NAME='inherited_vars'><!-- --></A>
<p>Inherited from <span class="classname"><a href="../../davical/Principal/Principal.html">Principal</a></span></p>
<blockquote>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$by_email">Principal::$by_email</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$collections">Principal::$collections</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$collection_id">Principal::$collection_id</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$created">Principal::$created</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$date_format_type">Principal::$date_format_type</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$dav_name">Principal::$dav_name</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$dead_properties">Principal::$dead_properties</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$default_calendar">Principal::$default_calendar</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$default_privileges">Principal::$default_privileges</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$displayname">Principal::$displayname</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$email">Principal::$email</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$email_ok">Principal::$email_ok</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$exists">Principal::$exists</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$fullname">Principal::$fullname</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$is_addressbook">Principal::$is_addressbook</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$is_calendar">Principal::$is_calendar</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$is_principal">Principal::$is_principal</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$locale">Principal::$locale</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$modified">Principal::$modified</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$original_request_url">Principal::$original_request_url</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$password">Principal::$password</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$principal_id">Principal::$principal_id</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$privileges">Principal::$privileges</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$resourcetypes">Principal::$resourcetypes</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$type_id">Principal::$type_id</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$url">Principal::$url</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$username">Principal::$username</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$user_active">Principal::$user_active</a></span><br>
</span>
<img src="../../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../../davical/Principal/Principal.html#var$user_no">Principal::$user_no</a></span><br>
</span>
</blockquote>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="method__construct" id="__construct"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Constructor.png" />
<span class="method-title">Constructor __construct</span> (line <span class="line-number">95</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Constructor</p>
<ul class="tags">
<li><span class="field">return:</span> Whether we actually read data from the DB to initialise the record.</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
__construct
</span>
([<span class="var-type">mixed</span>&nbsp;<span class="var-name">$parameters</span> = <span class="var-default">null</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">mixed</span>
<span class="var-name">$parameters</span><span class="var-description">: If null, an empty Principal is created. If it is an integer then that ID is read (if possible). If it is an array then the Principal matching the supplied elements is read. If it is an object then it is expected to be a 'usr' record that was read elsewhere.</span> </li>
</ul>
<hr class="separator" />
<div class="notes">Redefinition of:</div>
<dl>
<dt><a href="../../davical/Principal/Principal.html#method__construct">Principal::__construct()</a></dt>
<dd>Construct a new Principal object. The principal record will be retrieved from the database, or (if not found) initialised to a new record. You can test for whether the Principal exists by calling the Exists() method on the returned object.</dd>
</dl>
</div>
<a name="methodaddressbook_home_set" id="addressbook_home_set"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">addressbook_home_set</span> (line <span class="line-number">358</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Get the addressbook_home_set, as lazily as possible</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
addressbook_home_set
</span>
()
</div>
</div>
<a name="methodAsCollection" id="AsCollection"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">AsCollection</span> (line <span class="line-number">419</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Returns a representation of the principal as a collection</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
AsCollection
</span>
()
</div>
</div>
<a name="methodcalendar_free_busy_set" id="calendar_free_busy_set"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">calendar_free_busy_set</span> (line <span class="line-number">381</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Get the calendar_free_busy_set, as lazily as possible</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
calendar_free_busy_set
</span>
()
</div>
</div>
<a name="methodcalendar_home_set" id="calendar_home_set"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">calendar_home_set</span> (line <span class="line-number">335</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Get the calendar_home_set, as lazily as possible</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
calendar_home_set
</span>
()
</div>
</div>
<a name="methodFetchProxyGroups" id="FetchProxyGroups"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">FetchProxyGroups</span> (line <span class="line-number">194</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Split this out so we do it as infrequently as possible, given the cost.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
FetchProxyGroups
</span>
()
</div>
</div>
<a name="methodGetProperty" id="GetProperty"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GetProperty</span> (line <span class="line-number">302</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Return an arbitrary property</p>
<ul class="tags">
<li><span class="field">return:</span> The name of the arbitrary property</li>
</ul>
<div class="method-signature">
<span class="method-result">string</span>
<span class="method-name">
GetProperty
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$property_id</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$property_id</span> </li>
</ul>
</div>
<a name="methodGroupMemberSet" id="GroupMemberSet"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GroupMemberSet</span> (line <span class="line-number">283</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Accessor for the group member set - the members of this group</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
GroupMemberSet
</span>
()
</div>
</div>
<a name="methodGroupMembership" id="GroupMembership"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">GroupMembership</span> (line <span class="line-number">274</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Accessor for the group membership - the groups this principal is a member of</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
GroupMembership
</span>
()
</div>
</div>
<a name="methodInitialiseRecord" id="InitialiseRecord"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">InitialiseRecord</span> (line <span class="line-number">144</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Initialise the Principal object from a $usr record from the DB.</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
InitialiseRecord
</span>
(<span class="var-type">object</span>&nbsp;<span class="var-name">$usr</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">object</span>
<span class="var-name">$usr</span><span class="var-description">: The usr record from the DB.</span> </li>
</ul>
</div>
<a name="methodIsGroup" id="IsGroup"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">IsGroup</span> (line <span class="line-number">293</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Is this a group principal?</p>
<ul class="tags">
<li><span class="field">return:</span> Whether this is a group principal</li>
</ul>
<div class="method-signature">
<span class="method-result">boolean</span>
<span class="method-name">
IsGroup
</span>
()
</div>
</div>
<a name="methodPrincipalProperty" id="PrincipalProperty"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">PrincipalProperty</span> (line <span class="line-number">450</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Returns properties which are specific to this principal</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
PrincipalProperty
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$tag</span>, <span class="var-type"></span>&nbsp;<span class="var-name">$prop</span>, <span class="var-type"></span>&nbsp;<span class="var-name">&$reply</span>, <span class="var-type"></span>&nbsp;<span class="var-name">&$denied</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$tag</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">$prop</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">&$reply</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">&$denied</span> </li>
</ul>
</div>
<a name="methodPrivileges" id="Privileges"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">Privileges</span> (line <span class="line-number">403</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Return the privileges bits for the current session user to this resource</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
Privileges
</span>
()
</div>
</div>
<a name="methodPropertySearch" id="PropertySearch"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">PropertySearch</span> (line <span class="line-number">443</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
PropertySearch
</span>
(<span class="var-type"></span>&nbsp;<span class="var-name">$parameters</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type"></span>
<span class="var-name">$parameters</span> </li>
</ul>
</div>
<a name="methodProxyFor" id="ProxyFor"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">ProxyFor</span> (line <span class="line-number">264</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Accessor for read or write proxy</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
ProxyFor
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$type</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$type</span><span class="var-description">: read/write - which sort of proxy list is requested.</span> </li>
</ul>
</div>
<a name="methodReadProxyGroup" id="ReadProxyGroup"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">ReadProxyGroup</span> (line <span class="line-number">245</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Accessor for the read proxy group</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
ReadProxyGroup
</span>
()
</div>
</div>
<a name="methodRenderAsXML" id="RenderAsXML"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">RenderAsXML</span> (line <span class="line-number">568</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Render XML for a single Principal (user) from the DB</p>
<ul class="tags">
<li><span class="field">return:</span> An XML fragment with the requested properties for this principal</li>
</ul>
<div class="method-signature">
<span class="method-result">string</span>
<span class="method-name">
RenderAsXML
</span>
(<span class="var-type">array</span>&nbsp;<span class="var-name">$properties</span>, <span class="var-type"></span>&nbsp;<span class="var-name">&$reply</span>, [<span class="var-type">boolean</span>&nbsp;<span class="var-name">$props_only</span> = <span class="var-default">false</span>], <span class="var-type">reference</span>&nbsp;<span class="var-name">$reply</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">array</span>
<span class="var-name">$properties</span><span class="var-description">: The requested properties for this principal</span> </li>
<li>
<span class="var-type">reference</span>
<span class="var-name">$reply</span><span class="var-description">: A reference to the XMLDocument being used for the reply</span> </li>
<li>
<span class="var-type">boolean</span>
<span class="var-name">$props_only</span><span class="var-description">: Default false. If true will only return the fragment with the properties, not a full response fragment.</span> </li>
<li>
<span class="var-type"></span>
<span class="var-name">&$reply</span> </li>
</ul>
</div>
<a name="methodunique_tag" id="unique_tag"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">unique_tag</span> (line <span class="line-number">323</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Returns the unique_tag (ETag or getctag) for this resource</p>
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
unique_tag
</span>
()
</div>
</div>
<a name="methodWriteProxyGroup" id="WriteProxyGroup"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../../media/images/Method.png" />
<span class="method-title">WriteProxyGroup</span> (line <span class="line-number">254</span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Accessor for the write proxy group</p>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
WriteProxyGroup
</span>
()
</div>
</div>
<h4>Inherited Methods</h4>
<a name='inherited_methods'><!-- --></a>
<!-- =========== Summary =========== -->
<p>Inherited From <span class="classname"><a href="../../davical/Principal/Principal.html">Principal</a></span></p>
<blockquote>
<img src="../../media/images/Constructor.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#method__construct">Principal::__construct()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodbyEmail">Principal::byEmail()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodcacheDelete">Principal::cacheDelete()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodcacheFlush">Principal::cacheFlush()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodCreate">Principal::Create()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methoddav_name">Principal::dav_name()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methoddefault_calendar">Principal::default_calendar()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodemail">Principal::email()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodExists">Principal::Exists()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodFetchCollections">Principal::FetchCollections()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodFetchDeadProperties">Principal::FetchDeadProperties()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodinternal_url">Principal::internal_url()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodprincipal_id">Principal::principal_id()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodsetUsername">Principal::setUsername()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodunCache">Principal::unCache()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodUpdate">Principal::Update()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodupdateableFields">Principal::updateableFields()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodurl">Principal::url()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methodusername">Principal::username()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#methoduser_no">Principal::user_no()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#method__get">Principal::__get()</a></span><br>
<img src="../../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../../davical/Principal/Principal.html#method__isset">Principal::__isset()</a></span><br>
</blockquote>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Wed, 04 Jul 2012 10:13:07 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
</p>
</div></body>
</html>

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More