mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-09-01 18:48:17 +00:00
Merge branch 'master' of git+ssh://repo.or.cz/srv/git/davical
This commit is contained in:
commit
388dd8c1e3
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,3 +14,4 @@ built-po
|
||||
*~
|
||||
testing/dumps
|
||||
testing/regression.conf
|
||||
subdav
|
||||
|
||||
24
ChangeLog
24
ChangeLog
@ -1,7 +1,29 @@
|
||||
2009-10-07 Andrew McMillan <andrew@morphoss.com>
|
||||
* Release 0.9.7.4
|
||||
* Fix setting of relationships in user administration.
|
||||
* Add option to make freebusy information public.
|
||||
* Correct structure of supported-privilege-set response.
|
||||
* Move server-specific properties from CalDAVPrincipal to CalDAVRequest.
|
||||
|
||||
2009-10-06 Andrew McMillan <andrew@morphoss.com>
|
||||
* Release 0.9.7.3
|
||||
|
||||
2009-09-25 Andrew McMillan <andrew@morphoss.com>
|
||||
* Fix overzealous URL encoding of mailto:username@domain.com
|
||||
* Expand permissions on both sides of the group expansion.
|
||||
* Update licensing to note external LGPL sources
|
||||
* Add a 'Delete User' option.
|
||||
* Add facility to create collection without uploading VCALENDAR
|
||||
* Add ability to set calendar as public on creation.
|
||||
|
||||
2009-09-14 Andrew McMillan <andrew@morphoss.com>
|
||||
* Allow admin access to be restricted to a particular domain.
|
||||
|
||||
2009-09-11 Andrew McMillan <andrew@morphoss.com>
|
||||
* Add support for /principals/user/username so iPhone (& possibly
|
||||
* Add support for /principals/users/username so iPhone (& possibly
|
||||
also iCal) users have a simpler setup experience.
|
||||
* Expand privileges to work with iPhone OS 3.1
|
||||
* Release 0.9.7.2
|
||||
|
||||
2009-09-05 Andrew McMillan <andrew@morphoss.com>
|
||||
* Fix call-time pass by reference warnings.
|
||||
|
||||
@ -162,6 +162,9 @@ $c->collections_always_exist = false;
|
||||
* and he used to authenticate the user should be at least 'password,user_no'
|
||||
* awl/inc/AuthPlugins.php is a sample file not used by showing what could be
|
||||
* a hook
|
||||
*
|
||||
* $c->authenticate_hook['optional'] = true; can be set to try default authentication
|
||||
* as well in case the configured hook should report a failure.
|
||||
*/
|
||||
|
||||
/********************************/
|
||||
|
||||
@ -30,11 +30,11 @@ GRANT SELECT,INSERT,UPDATE,DELETE
|
||||
ON role_member
|
||||
ON session
|
||||
ON tmp_password
|
||||
ON dav_resource
|
||||
ON group_member
|
||||
ON principal
|
||||
ON privilege
|
||||
ON relationship_type
|
||||
ON sync_tokens
|
||||
ON sync_changes
|
||||
|
||||
GRANT SELECT,UPDATE
|
||||
ON relationship_type_rt_id_seq
|
||||
@ -42,9 +42,9 @@ GRANT SELECT,UPDATE
|
||||
ON usr_user_no_seq
|
||||
ON roles_role_no_seq
|
||||
ON session_session_id_seq
|
||||
ON dav_resource_type_resource_type_id_seq
|
||||
ON principal_principal_id_seq
|
||||
ON principal_type_principal_type_id_seq
|
||||
ON sync_tokens_sync_token_seq
|
||||
|
||||
GRANT SELECT,INSERT
|
||||
ON time_zone
|
||||
@ -52,6 +52,5 @@ GRANT SELECT,INSERT
|
||||
GRANT SELECT
|
||||
ON supported_locales
|
||||
ON awl_db_revision
|
||||
ON dav_resource_type
|
||||
ON principal_type
|
||||
|
||||
|
||||
371
dba/better_perms.sql
Normal file
371
dba/better_perms.sql
Normal file
@ -0,0 +1,371 @@
|
||||
CREATE or REPLACE FUNCTION legacy_privilege_to_bits( TEXT ) RETURNS BIT(24) AS $$
|
||||
DECLARE
|
||||
in_priv ALIAS FOR $1;
|
||||
out_bits BIT(24);
|
||||
BEGIN
|
||||
out_bits := 0::BIT(24);
|
||||
IF in_priv ~* 'A' THEN
|
||||
out_bits = ~ out_bits;
|
||||
RETURN out_bits;
|
||||
END IF;
|
||||
|
||||
-- The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:read privilege.
|
||||
-- 1 DAV:read
|
||||
-- 512 CalDAV:read-free-busy
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
IF in_priv ~* 'R' THEN
|
||||
out_bits := out_bits | 4609::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- DAV:write => DAV:write MUST contain DAV:bind, DAV:unbind, DAV:write-properties and DAV:write-content
|
||||
-- 2 DAV:write-properties
|
||||
-- 4 DAV:write-content
|
||||
-- 64 DAV:bind
|
||||
-- 128 DAV:unbind
|
||||
IF in_priv ~* 'W' THEN
|
||||
out_bits := out_bits | 198::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 64 DAV:bind
|
||||
IF in_priv ~* 'B' THEN
|
||||
out_bits := out_bits | 64::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 128 DAV:unbind
|
||||
IF in_priv ~* 'U' THEN
|
||||
out_bits := out_bits | 128::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 512 CalDAV:read-free-busy
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
IF in_priv ~* 'F' THEN
|
||||
out_bits := out_bits | 4608::BIT(24);
|
||||
END IF;
|
||||
|
||||
RETURN out_bits;
|
||||
END
|
||||
$$
|
||||
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.
|
||||
--
|
||||
-- NOTE: Round-trip through this and then back through legacy_privilege_to_bits
|
||||
-- function is lossy! Through legacy_privilege_to_bits() and back through
|
||||
-- this one is not.
|
||||
--
|
||||
CREATE or REPLACE FUNCTION bits_to_legacy_privilege( BIT(24) ) RETURNS TEXT AS $$
|
||||
DECLARE
|
||||
in_bits ALIAS FOR $1;
|
||||
out_priv TEXT;
|
||||
BEGIN
|
||||
out_priv := '';
|
||||
IF in_bits = (~ 0::BIT(24)) THEN
|
||||
out_priv = 'A';
|
||||
RETURN out_priv;
|
||||
END IF;
|
||||
|
||||
-- The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:read privilege.
|
||||
-- 1 DAV:read
|
||||
-- 512 CalDAV:read-free-busy
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
IF (in_bits & 4609::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 1::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := 'R';
|
||||
ELSE
|
||||
out_priv := 'F';
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- DAV:write => DAV:write MUST contain DAV:bind, DAV:unbind, DAV:write-properties and DAV:write-content
|
||||
-- 2 DAV:write-properties
|
||||
-- 4 DAV:write-content
|
||||
-- 64 DAV:bind
|
||||
-- 128 DAV:unbind
|
||||
IF (in_bits & 198::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 6::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || 'W';
|
||||
ELSE
|
||||
IF (in_bits & 64::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || 'B';
|
||||
END IF;
|
||||
IF (in_bits & 128::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || 'U';
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
RETURN out_priv;
|
||||
END
|
||||
$$
|
||||
LANGUAGE 'PlPgSQL' IMMUTABLE STRICT;
|
||||
|
||||
CREATE or REPLACE FUNCTION get_permissions( INT, INT ) RETURNS TEXT AS $$
|
||||
DECLARE
|
||||
in_from ALIAS FOR $1;
|
||||
in_to ALIAS FOR $2;
|
||||
out_confers TEXT;
|
||||
bit_confers BIT(24);
|
||||
group_role_no INT;
|
||||
tmp_txt TEXT;
|
||||
dbg TEXT DEFAULT '';
|
||||
r RECORD;
|
||||
counter INT;
|
||||
BEGIN
|
||||
-- Self can always have full access
|
||||
IF in_from = in_to THEN
|
||||
RETURN 'A';
|
||||
END IF;
|
||||
|
||||
-- dbg := 'S-';
|
||||
SELECT bits_to_legacy_privilege(r1.confers) INTO out_confers FROM relationship r1
|
||||
WHERE r1.from_user = in_from AND r1.to_user = in_to AND NOT usr_is_role(r1.to_user,'Group');
|
||||
IF FOUND THEN
|
||||
RETURN dbg || out_confers;
|
||||
END IF;
|
||||
-- RAISE NOTICE 'No simple relationships between % and %', in_from, in_to;
|
||||
|
||||
SELECT bit_or(r1.confers & r2.confers) INTO bit_confers
|
||||
FROM relationship r1
|
||||
JOIN relationship r2 ON r1.to_user=r2.from_user
|
||||
WHERE r1.from_user=in_from AND r2.to_user=in_to
|
||||
AND r2.from_user IN (SELECT user_no FROM roles LEFT JOIN role_member USING(role_no) WHERE role_name='Group');
|
||||
IF bit_confers != 0::BIT(24) THEN
|
||||
RETURN dbg || bits_to_legacy_privilege(bit_confers);
|
||||
END IF;
|
||||
|
||||
RETURN '';
|
||||
-- RAISE NOTICE 'No complex relationships between % and %', in_from, in_to;
|
||||
|
||||
SELECT bits_to_legacy_privilege(r1.confers) INTO out_confers FROM relationship r1 LEFT OUTER JOIN relationship r2 ON(r1.to_user = r2.to_user)
|
||||
WHERE r1.from_user = in_from AND r2.from_user = in_to AND r1.from_user != r2.from_user
|
||||
AND NOT EXISTS( SELECT 1 FROM relationship r3 WHERE r3.from_user = r1.to_user ) ;
|
||||
|
||||
IF FOUND THEN
|
||||
-- dbg := 'H-';
|
||||
-- RAISE NOTICE 'Permissions to shared group % ', out_confers;
|
||||
RETURN dbg || out_confers;
|
||||
END IF;
|
||||
|
||||
-- RAISE NOTICE 'No common group relationships between % and %', in_from, in_to;
|
||||
|
||||
RETURN '';
|
||||
END;
|
||||
$$ 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;
|
||||
|
||||
CREATE or REPLACE FUNCTION has_legacy_privilege( INT, TEXT, INT ) RETURNS BOOLEAN AS $$
|
||||
DECLARE
|
||||
in_from ALIAS FOR $1;
|
||||
in_legacy_privilege ALIAS FOR $2;
|
||||
in_to ALIAS FOR $3;
|
||||
in_confers BIT(24);
|
||||
group_role_no INT;
|
||||
BEGIN
|
||||
-- Self can always have full access
|
||||
IF in_from = in_to THEN
|
||||
RETURN TRUE;
|
||||
END IF;
|
||||
|
||||
SELECT get_group_role_no() INTO group_role_no;
|
||||
SELECT legacy_privilege_to_bits(in_legacy_privilege) INTO in_confers;
|
||||
|
||||
IF EXISTS(SELECT 1 FROM relationship WHERE from_user = in_from AND to_user = in_to
|
||||
AND (in_confers & confers) = in_confers
|
||||
AND NOT EXISTS(SELECT 1 FROM role_member WHERE to_user = user_no AND role_no = group_role_no) ) THEN
|
||||
-- A direct relationship from A to B that grants sufficient
|
||||
-- RAISE NOTICE 'Permissions directly granted';
|
||||
RETURN TRUE;
|
||||
END IF;
|
||||
|
||||
IF EXISTS( SELECT 1 FROM relationship r1 JOIN relationship r2 ON r1.to_user=r2.from_user
|
||||
WHERE (in_confers & r1.confers & r2.confers) = in_confers
|
||||
AND r1.from_user=in_from AND r2.to_user=in_to
|
||||
AND r2.from_user IN (SELECT user_no FROM role_member WHERE role_no=group_role_no) ) THEN
|
||||
-- An indirect relationship from A to B via group G that grants sufficient
|
||||
-- RAISE NOTICE 'Permissions mediated via group';
|
||||
RETURN TRUE;
|
||||
END IF;
|
||||
|
||||
IF EXISTS( SELECT 1 FROM relationship r1 JOIN relationship r2 ON r1.to_user=r2.to_user
|
||||
WHERE (in_confers & r1.confers & r2.confers) = in_confers
|
||||
AND r1.from_user=in_from AND r2.from_user=in_to
|
||||
AND r2.to_user IN (SELECT user_no FROM role_member WHERE role_no=group_role_no)
|
||||
AND NOT EXISTS(SELECT 1 FROM relationship WHERE from_user=r2.to_user) ) THEN
|
||||
-- An indirect reflexive relationship from both A & B to group G which grants sufficient
|
||||
-- RAISE NOTICE 'Permissions to shared group';
|
||||
RETURN TRUE;
|
||||
END IF;
|
||||
|
||||
-- RAISE NOTICE 'No common group relationships between % and %', in_from, in_to;
|
||||
|
||||
RETURN FALSE;
|
||||
END;
|
||||
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
|
||||
|
||||
|
||||
-- Given a verbose DAV: or CalDAV: privilege name return the bitmask
|
||||
CREATE or REPLACE FUNCTION privilege_to_bits( TEXT ) RETURNS BIT(24) AS $$
|
||||
DECLARE
|
||||
raw_priv ALIAS FOR $1;
|
||||
in_priv TEXT;
|
||||
BEGIN
|
||||
in_priv := trim(lower(regexp_replace(raw_priv, '^.*:', '')));
|
||||
IF in_priv = 'all' THEN
|
||||
RETURN ~ 0::BIT(24);
|
||||
END IF;
|
||||
|
||||
RETURN (CASE
|
||||
WHEN in_priv = 'read' THEN 4609 -- 1 + 512 + 4096
|
||||
WHEN in_priv = 'write' THEN 198 -- 2 + 4 + 64 + 128
|
||||
WHEN in_priv = 'write-properties' THEN 2
|
||||
WHEN in_priv = 'write-content' THEN 4
|
||||
WHEN in_priv = 'unlock' THEN 8
|
||||
WHEN in_priv = 'read-acl' THEN 16
|
||||
WHEN in_priv = 'read-current-user-privilege-set' THEN 32
|
||||
WHEN in_priv = 'bind' THEN 64
|
||||
WHEN in_priv = 'unbind' THEN 128
|
||||
WHEN in_priv = 'write-acl' THEN 256
|
||||
WHEN in_priv = 'read-free-busy' THEN 4608 -- 512 + 4096
|
||||
WHEN in_priv = 'schedule-deliver' THEN 7168 -- 1024 + 2048 + 4096
|
||||
WHEN in_priv = 'schedule-deliver-invite' THEN 1024
|
||||
WHEN in_priv = 'schedule-deliver-reply' THEN 2048
|
||||
WHEN in_priv = 'schedule-query-freebusy' THEN 4096
|
||||
WHEN in_priv = 'schedule-send' THEN 57344 -- 8192 + 16384 + 32768
|
||||
WHEN in_priv = 'schedule-send-invite' THEN 8192
|
||||
WHEN in_priv = 'schedule-send-reply' THEN 16384
|
||||
WHEN in_priv = 'schedule-send-freebusy' THEN 32768
|
||||
ELSE 0 END)::BIT(24);
|
||||
END
|
||||
$$
|
||||
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 $$
|
||||
DECLARE
|
||||
raw_privs ALIAS FOR $1;
|
||||
in_priv TEXT;
|
||||
out_bits BIT(24);
|
||||
i INT;
|
||||
all BIT(24);
|
||||
start INT;
|
||||
finish INT;
|
||||
BEGIN
|
||||
out_bits := 0::BIT(24);
|
||||
all := ~ out_bits;
|
||||
SELECT array_lower(raw_privs,1) INTO start;
|
||||
SELECT array_upper(raw_privs,1) INTO finish;
|
||||
FOR i IN start .. finish LOOP
|
||||
SELECT out_bits | privilege_to_bits(raw_privs[i]) INTO out_bits;
|
||||
IF out_bits = all THEN
|
||||
RETURN all;
|
||||
END IF;
|
||||
END LOOP;
|
||||
RETURN out_bits;
|
||||
END
|
||||
$$
|
||||
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.
|
||||
--
|
||||
-- NOTE: Round-trip through this and then back through privilege_to_bits
|
||||
-- function is lossy! Through privilege_to_bits() and back through
|
||||
-- this one is not.
|
||||
--
|
||||
CREATE or REPLACE FUNCTION bits_to_privilege( BIT(24) ) RETURNS TEXT[] AS $$
|
||||
DECLARE
|
||||
in_bits ALIAS FOR $1;
|
||||
out_priv TEXT[];
|
||||
BEGIN
|
||||
out_priv := ARRAY[]::text[];
|
||||
IF in_bits = (~ 0::BIT(24)) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:all'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 513::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 1::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:read'];
|
||||
END IF;
|
||||
IF (in_bits & 512::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:read-free-busy'];
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 198::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 198::BIT(24)) = 198::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:write'];
|
||||
ELSE
|
||||
IF (in_bits & 2::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:write-properties'];
|
||||
END IF;
|
||||
IF (in_bits & 4::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:write-content'];
|
||||
END IF;
|
||||
IF (in_bits & 64::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:bind'];
|
||||
END IF;
|
||||
IF (in_bits & 128::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:unbind'];
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 8::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:unlock'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 16::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:read-acl'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 32::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:read-current-user-privilege-set'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 256::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:write-acl'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 7168::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 7168::BIT(24)) = 7168::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-deliver'];
|
||||
ELSE
|
||||
IF (in_bits & 1024::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-deliver-invite'];
|
||||
END IF;
|
||||
IF (in_bits & 2048::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-deliver-reply'];
|
||||
END IF;
|
||||
IF (in_bits & 4096::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-query-freebusy'];
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 57344::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 57344::BIT(24)) = 57344::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-send'];
|
||||
ELSE
|
||||
IF (in_bits & 8192::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-send-invite'];
|
||||
END IF;
|
||||
IF (in_bits & 16384::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-send-reply'];
|
||||
END IF;
|
||||
IF (in_bits & 32768::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-send-freebusy'];
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
RETURN out_priv;
|
||||
END
|
||||
$$
|
||||
LANGUAGE 'PlPgSQL' IMMUTABLE STRICT;
|
||||
633
dba/patches/1.2.6.sql
Normal file
633
dba/patches/1.2.6.sql
Normal file
@ -0,0 +1,633 @@
|
||||
|
||||
-- This database update converts the permissions into a bitmap stored
|
||||
-- as an integer to make calculation of merged permissions simpler
|
||||
-- through simple binary 'AND'
|
||||
|
||||
CREATE or REPLACE FUNCTION legacy_privilege_to_bits( TEXT ) RETURNS BIT(24) AS $$
|
||||
DECLARE
|
||||
in_priv ALIAS FOR $1;
|
||||
out_bits BIT(24);
|
||||
BEGIN
|
||||
out_bits := 0::BIT(24);
|
||||
IF in_priv ~* 'A' THEN
|
||||
out_bits = ~ out_bits;
|
||||
RETURN out_bits;
|
||||
END IF;
|
||||
|
||||
-- The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:read privilege.
|
||||
-- 1 DAV:read
|
||||
-- 512 CalDAV:read-free-busy
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
IF in_priv ~* 'R' THEN
|
||||
out_bits := out_bits | 4609::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- DAV:write => DAV:write MUST contain DAV:bind, DAV:unbind, DAV:write-properties and DAV:write-content
|
||||
-- 2 DAV:write-properties
|
||||
-- 4 DAV:write-content
|
||||
-- 64 DAV:bind
|
||||
-- 128 DAV:unbind
|
||||
IF in_priv ~* 'W' THEN
|
||||
out_bits := out_bits | 198::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 64 DAV:bind
|
||||
IF in_priv ~* 'B' THEN
|
||||
out_bits := out_bits | 64::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 128 DAV:unbind
|
||||
IF in_priv ~* 'U' THEN
|
||||
out_bits := out_bits | 128::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 512 CalDAV:read-free-busy
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
IF in_priv ~* 'F' THEN
|
||||
out_bits := out_bits | 4608::BIT(24);
|
||||
END IF;
|
||||
|
||||
RETURN out_bits;
|
||||
END
|
||||
$$
|
||||
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.
|
||||
--
|
||||
-- NOTE: Round-trip through this and then back through legacy_privilege_to_bits
|
||||
-- function is lossy! Through legacy_privilege_to_bits() and back through
|
||||
-- this one is not.
|
||||
--
|
||||
CREATE or REPLACE FUNCTION bits_to_legacy_privilege( BIT(24) ) RETURNS TEXT AS $$
|
||||
DECLARE
|
||||
in_bits ALIAS FOR $1;
|
||||
out_priv TEXT;
|
||||
BEGIN
|
||||
out_priv := '';
|
||||
IF in_bits = (~ 0::BIT(24)) THEN
|
||||
out_priv = 'A';
|
||||
RETURN out_priv;
|
||||
END IF;
|
||||
|
||||
-- The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:read privilege.
|
||||
-- 1 DAV:read
|
||||
-- 512 CalDAV:read-free-busy
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
IF (in_bits & 4609::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 1::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := 'R';
|
||||
ELSE
|
||||
out_priv := 'F';
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- DAV:write => DAV:write MUST contain DAV:bind, DAV:unbind, DAV:write-properties and DAV:write-content
|
||||
-- 2 DAV:write-properties
|
||||
-- 4 DAV:write-content
|
||||
-- 64 DAV:bind
|
||||
-- 128 DAV:unbind
|
||||
IF (in_bits & 198::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 6::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || 'W';
|
||||
ELSE
|
||||
IF (in_bits & 64::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || 'B';
|
||||
END IF;
|
||||
IF (in_bits & 128::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || 'U';
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
RETURN out_priv;
|
||||
END
|
||||
$$
|
||||
LANGUAGE 'PlPgSQL' IMMUTABLE STRICT;
|
||||
|
||||
CREATE or REPLACE FUNCTION get_permissions( INT, INT ) RETURNS TEXT AS $$
|
||||
DECLARE
|
||||
in_from ALIAS FOR $1;
|
||||
in_to ALIAS FOR $2;
|
||||
out_confers TEXT;
|
||||
bit_confers BIT(24);
|
||||
group_role_no INT;
|
||||
tmp_txt TEXT;
|
||||
dbg TEXT DEFAULT '';
|
||||
r RECORD;
|
||||
counter INT;
|
||||
BEGIN
|
||||
-- Self can always have full access
|
||||
IF in_from = in_to THEN
|
||||
RETURN 'A';
|
||||
END IF;
|
||||
|
||||
-- dbg := 'S-';
|
||||
SELECT bits_to_legacy_privilege(r1.confers) INTO out_confers FROM relationship r1
|
||||
WHERE r1.from_user = in_from AND r1.to_user = in_to AND NOT usr_is_role(r1.to_user,'Group');
|
||||
IF FOUND THEN
|
||||
RETURN dbg || out_confers;
|
||||
END IF;
|
||||
-- RAISE NOTICE 'No simple relationships between % and %', in_from, in_to;
|
||||
|
||||
SELECT bit_or(r1.confers & r2.confers) INTO bit_confers
|
||||
FROM relationship r1
|
||||
JOIN relationship r2 ON r1.to_user=r2.from_user
|
||||
WHERE r1.from_user=in_from AND r2.to_user=in_to
|
||||
AND r2.from_user IN (SELECT user_no FROM roles LEFT JOIN role_member USING(role_no) WHERE role_name='Group');
|
||||
IF bit_confers != 0::BIT(24) THEN
|
||||
RETURN dbg || bits_to_legacy_privilege(bit_confers);
|
||||
END IF;
|
||||
|
||||
RETURN '';
|
||||
-- RAISE NOTICE 'No complex relationships between % and %', in_from, in_to;
|
||||
|
||||
SELECT bits_to_legacy_privilege(r1.confers) INTO out_confers FROM relationship r1 LEFT OUTER JOIN relationship r2 ON(r1.to_user = r2.to_user)
|
||||
WHERE r1.from_user = in_from AND r2.from_user = in_to AND r1.from_user != r2.from_user
|
||||
AND NOT EXISTS( SELECT 1 FROM relationship r3 WHERE r3.from_user = r1.to_user ) ;
|
||||
|
||||
IF FOUND THEN
|
||||
-- dbg := 'H-';
|
||||
-- RAISE NOTICE 'Permissions to shared group % ', out_confers;
|
||||
RETURN dbg || out_confers;
|
||||
END IF;
|
||||
|
||||
-- RAISE NOTICE 'No common group relationships between % and %', in_from, in_to;
|
||||
|
||||
RETURN '';
|
||||
END;
|
||||
$$ 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;
|
||||
|
||||
CREATE or REPLACE FUNCTION has_legacy_privilege( INT, TEXT, INT ) RETURNS BOOLEAN AS $$
|
||||
DECLARE
|
||||
in_from ALIAS FOR $1;
|
||||
in_legacy_privilege ALIAS FOR $2;
|
||||
in_to ALIAS FOR $3;
|
||||
in_confers BIT(24);
|
||||
group_role_no INT;
|
||||
BEGIN
|
||||
-- Self can always have full access
|
||||
IF in_from = in_to THEN
|
||||
RETURN TRUE;
|
||||
END IF;
|
||||
|
||||
SELECT get_group_role_no() INTO group_role_no;
|
||||
SELECT legacy_privilege_to_bits(in_legacy_privilege) INTO in_confers;
|
||||
|
||||
IF EXISTS(SELECT 1 FROM relationship WHERE from_user = in_from AND to_user = in_to
|
||||
AND (in_confers & confers) = in_confers
|
||||
AND NOT EXISTS(SELECT 1 FROM role_member WHERE to_user = user_no AND role_no = group_role_no) ) THEN
|
||||
-- A direct relationship from A to B that grants sufficient
|
||||
-- RAISE NOTICE 'Permissions directly granted';
|
||||
RETURN TRUE;
|
||||
END IF;
|
||||
|
||||
IF EXISTS( SELECT 1 FROM relationship r1 JOIN relationship r2 ON r1.to_user=r2.from_user
|
||||
WHERE (in_confers & r1.confers & r2.confers) = in_confers
|
||||
AND r1.from_user=in_from AND r2.to_user=in_to
|
||||
AND r2.from_user IN (SELECT user_no FROM role_member WHERE role_no=group_role_no) ) THEN
|
||||
-- An indirect relationship from A to B via group G that grants sufficient
|
||||
-- RAISE NOTICE 'Permissions mediated via group';
|
||||
RETURN TRUE;
|
||||
END IF;
|
||||
|
||||
IF EXISTS( SELECT 1 FROM relationship r1 JOIN relationship r2 ON r1.to_user=r2.to_user
|
||||
WHERE (in_confers & r1.confers & r2.confers) = in_confers
|
||||
AND r1.from_user=in_from AND r2.from_user=in_to
|
||||
AND r2.to_user IN (SELECT user_no FROM role_member WHERE role_no=group_role_no)
|
||||
AND NOT EXISTS(SELECT 1 FROM relationship WHERE from_user=r2.to_user) ) THEN
|
||||
-- An indirect reflexive relationship from both A & B to group G which grants sufficient
|
||||
-- RAISE NOTICE 'Permissions to shared group';
|
||||
RETURN TRUE;
|
||||
END IF;
|
||||
|
||||
-- RAISE NOTICE 'No common group relationships between % and %', in_from, in_to;
|
||||
|
||||
RETURN FALSE;
|
||||
END;
|
||||
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
|
||||
|
||||
|
||||
-- Given a verbose DAV: or CalDAV: privilege name return the bitmask
|
||||
CREATE or REPLACE FUNCTION privilege_to_bits( TEXT ) RETURNS BIT(24) AS $$
|
||||
DECLARE
|
||||
raw_priv ALIAS FOR $1;
|
||||
in_priv TEXT;
|
||||
BEGIN
|
||||
in_priv := trim(lower(regexp_replace(raw_priv, '^.*:', '')));
|
||||
IF in_priv = 'all' THEN
|
||||
RETURN ~ 0::BIT(24);
|
||||
END IF;
|
||||
|
||||
RETURN (CASE
|
||||
WHEN in_priv = 'read' THEN 4609 -- 1 + 512 + 4096
|
||||
WHEN in_priv = 'write' THEN 198 -- 2 + 4 + 64 + 128
|
||||
WHEN in_priv = 'write-properties' THEN 2
|
||||
WHEN in_priv = 'write-content' THEN 4
|
||||
WHEN in_priv = 'unlock' THEN 8
|
||||
WHEN in_priv = 'read-acl' THEN 16
|
||||
WHEN in_priv = 'read-current-user-privilege-set' THEN 32
|
||||
WHEN in_priv = 'bind' THEN 64
|
||||
WHEN in_priv = 'unbind' THEN 128
|
||||
WHEN in_priv = 'write-acl' THEN 256
|
||||
WHEN in_priv = 'read-free-busy' THEN 4608 -- 512 + 4096
|
||||
WHEN in_priv = 'schedule-deliver' THEN 7168 -- 1024 + 2048 + 4096
|
||||
WHEN in_priv = 'schedule-deliver-invite' THEN 1024
|
||||
WHEN in_priv = 'schedule-deliver-reply' THEN 2048
|
||||
WHEN in_priv = 'schedule-query-freebusy' THEN 4096
|
||||
WHEN in_priv = 'schedule-send' THEN 57344 -- 8192 + 16384 + 32768
|
||||
WHEN in_priv = 'schedule-send-invite' THEN 8192
|
||||
WHEN in_priv = 'schedule-send-reply' THEN 16384
|
||||
WHEN in_priv = 'schedule-send-freebusy' THEN 32768
|
||||
ELSE 0 END)::BIT(24);
|
||||
END
|
||||
$$
|
||||
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 $$
|
||||
DECLARE
|
||||
raw_privs ALIAS FOR $1;
|
||||
in_priv TEXT;
|
||||
out_bits BIT(24);
|
||||
i INT;
|
||||
all BIT(24);
|
||||
start INT;
|
||||
finish INT;
|
||||
BEGIN
|
||||
out_bits := 0::BIT(24);
|
||||
all := ~ out_bits;
|
||||
SELECT array_lower(raw_privs,1) INTO start;
|
||||
SELECT array_upper(raw_privs,1) INTO finish;
|
||||
FOR i IN start .. finish LOOP
|
||||
SELECT out_bits | privilege_to_bits(raw_privs[i]) INTO out_bits;
|
||||
IF out_bits = all THEN
|
||||
RETURN all;
|
||||
END IF;
|
||||
END LOOP;
|
||||
RETURN out_bits;
|
||||
END
|
||||
$$
|
||||
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.
|
||||
--
|
||||
-- NOTE: Round-trip through this and then back through privilege_to_bits
|
||||
-- function is lossy! Through privilege_to_bits() and back through
|
||||
-- this one is not.
|
||||
--
|
||||
CREATE or REPLACE FUNCTION bits_to_privilege( BIT(24) ) RETURNS TEXT[] AS $$
|
||||
DECLARE
|
||||
in_bits ALIAS FOR $1;
|
||||
out_priv TEXT[];
|
||||
BEGIN
|
||||
out_priv := ARRAY[]::text[];
|
||||
IF in_bits = (~ 0::BIT(24)) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:all'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 513::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 1::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:read'];
|
||||
END IF;
|
||||
IF (in_bits & 512::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:read-free-busy'];
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 198::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 198::BIT(24)) = 198::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:write'];
|
||||
ELSE
|
||||
IF (in_bits & 2::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:write-properties'];
|
||||
END IF;
|
||||
IF (in_bits & 4::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:write-content'];
|
||||
END IF;
|
||||
IF (in_bits & 64::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:bind'];
|
||||
END IF;
|
||||
IF (in_bits & 128::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:unbind'];
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 8::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:unlock'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 16::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:read-acl'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 32::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:read-current-user-privilege-set'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 256::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['DAV:write-acl'];
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 7168::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 7168::BIT(24)) = 7168::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-deliver'];
|
||||
ELSE
|
||||
IF (in_bits & 1024::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-deliver-invite'];
|
||||
END IF;
|
||||
IF (in_bits & 2048::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-deliver-reply'];
|
||||
END IF;
|
||||
IF (in_bits & 4096::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-query-freebusy'];
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF (in_bits & 57344::BIT(24)) != 0::BIT(24) THEN
|
||||
IF (in_bits & 57344::BIT(24)) = 57344::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-send'];
|
||||
ELSE
|
||||
IF (in_bits & 8192::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-send-invite'];
|
||||
END IF;
|
||||
IF (in_bits & 16384::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-send-reply'];
|
||||
END IF;
|
||||
IF (in_bits & 32768::BIT(24)) != 0::BIT(24) THEN
|
||||
out_priv := out_priv || ARRAY['caldav:schedule-send-freebusy'];
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
RETURN out_priv;
|
||||
END
|
||||
$$
|
||||
LANGUAGE 'PlPgSQL' IMMUTABLE STRICT;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BEGIN;
|
||||
SELECT check_db_revision(1,2,5);
|
||||
|
||||
|
||||
-- DAV Privileges implementation
|
||||
--
|
||||
-- RFC 3744 - DAV ACLs
|
||||
-- 1 DAV:read
|
||||
-- DAV:write (aggregate = 198)
|
||||
-- 2 DAV:write-properties
|
||||
-- 4 DAV:write-content
|
||||
-- 8 DAV:unlock
|
||||
-- 16 DAV:read-acl
|
||||
-- 32 DAV:read-current-user-privilege-set
|
||||
-- 64 DAV:bind
|
||||
-- 128 DAV:unbind
|
||||
-- 256 DAV:write-acl
|
||||
|
||||
-- RFC 4791 - CalDAV
|
||||
-- 512 CalDAV:read-free-busy
|
||||
|
||||
-- RFC ???? - Scheduling Extensions for CalDAV
|
||||
-- CALDAV:schedule-deliver (aggregate) => 7168
|
||||
-- 1024 CALDAV:schedule-deliver-invite
|
||||
-- 2048 CALDAV:schedule-deliver-reply
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
-- CALDAV:schedule-send (aggregate) => 57344
|
||||
-- 8192 CALDAV:schedule-send-invite
|
||||
-- 16384 CALDAV:schedule-send-reply
|
||||
-- 32768 CALDAV:schedule-send-freebusy
|
||||
|
||||
-- RFC 3744 - DAV ACLs
|
||||
-- DAV:all => all of the above and any new ones someone might invent!
|
||||
|
||||
-- DAV:read-acl MUST NOT contain DAV:read, DAV:write, DAV:write-acl, DAV:write-properties, DAV:write-content, or DAV:read-current-user-privilege-set.
|
||||
-- DAV:write-acl MUST NOT contain DAV:write, DAV:read, DAV:read-acl, DAV:read-current-user-privilege-set.
|
||||
-- DAV:read-current-user-privilege-set MUST NOT contain DAV:write, DAV:read, DAV:read-acl, or DAV:write-acl.
|
||||
-- DAV:write MUST NOT contain DAV:read, DAV:read-acl, or DAV:read-current-user-privilege-set.
|
||||
-- DAV:read MUST NOT contain DAV:write, DAV:write-acl, DAV:write-properties, or DAV:write-content.
|
||||
-- DAV:write-acl COULD contain DAV:write-properties DAV:write-content DAV:unlock DAV:bind DAV:unbind BUT why would it?
|
||||
|
||||
-- DAV:write => DAV:bind, DAV:unbind, DAV:write-properties and DAV:write-content
|
||||
|
||||
-- RFC 4791 - CalDAV
|
||||
-- The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:read privilege.
|
||||
|
||||
-- RFC ???? - Scheduling Extensions for CalDAV
|
||||
-- DAV:all MUST contain CALDAV:schedule-send and CALDAV:schedule-deliver
|
||||
-- CALDAV:schedule-send MUST contain CALDAV:schedule-send-invite, CALDAV:schedule-send-reply, and CALDAV:schedule-send-freebusy;
|
||||
-- CALDAV:schedule-deliver MUST contain CALDAV:schedule-deliver-invite, CALDAV:schedule-deliver-reply, and CALDAV:schedule-query-freebusy.
|
||||
|
||||
|
||||
-- Me!!!
|
||||
-- CalDAV:read-free-busy privilege SHOULD contain CALDAV:schedule-query-freebusy
|
||||
-- => DAV:read privilege SHOULD contain CALDAV:schedule-query-freebusy
|
||||
|
||||
|
||||
-- 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.
|
||||
CREATE or REPLACE FUNCTION legacy_privilege_to_bits( TEXT ) RETURNS BIT(24) AS $$
|
||||
DECLARE
|
||||
in_priv ALIAS FOR $1;
|
||||
out_bits BIT(24);
|
||||
BEGIN
|
||||
out_bits := 0::BIT(24);
|
||||
IF in_priv ~* 'A' THEN
|
||||
out_bits = ~ out_bits;
|
||||
RETURN out_bits;
|
||||
END IF;
|
||||
|
||||
-- The CALDAV:read-free-busy privilege MUST be aggregated in the DAV:read privilege.
|
||||
-- 1 DAV:read
|
||||
-- 512 CalDAV:read-free-busy
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
IF in_priv ~* 'R' THEN
|
||||
out_bits := out_bits | 4609::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- DAV:write => DAV:write MUST contain DAV:bind, DAV:unbind, DAV:write-properties and DAV:write-content
|
||||
-- 2 DAV:write-properties
|
||||
-- 4 DAV:write-content
|
||||
-- 64 DAV:bind
|
||||
-- 128 DAV:unbind
|
||||
IF in_priv ~* 'W' THEN
|
||||
out_bits := out_bits | 198::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 64 DAV:bind
|
||||
IF in_priv ~* 'B' THEN
|
||||
out_bits := out_bits | 64::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 128 DAV:unbind
|
||||
IF in_priv ~* 'U' THEN
|
||||
out_bits := out_bits | 128::BIT(24);
|
||||
END IF;
|
||||
|
||||
-- 512 CalDAV:read-free-busy
|
||||
-- 4096 CALDAV:schedule-query-freebusy
|
||||
IF in_priv ~* 'F' THEN
|
||||
out_bits := out_bits | 4608::BIT(24);
|
||||
END IF;
|
||||
|
||||
RETURN out_bits;
|
||||
END
|
||||
$$
|
||||
LANGUAGE 'PlPgSQL' IMMUTABLE STRICT;
|
||||
|
||||
|
||||
ALTER TABLE relationship_type ADD COLUMN bit_confers BIT(24) DEFAULT legacy_privilege_to_bits('RW');
|
||||
UPDATE relationship_type SET bit_confers = legacy_privilege_to_bits(confers);
|
||||
|
||||
ALTER TABLE relationship ADD COLUMN confers BIT(24) DEFAULT legacy_privilege_to_bits('F');
|
||||
UPDATE relationship r SET confers = bit_confers FROM relationship_type rt WHERE rt.rt_id=r.rt_id;
|
||||
|
||||
ALTER TABLE collection ADD COLUMN default_privileges BIT(24) DEFAULT legacy_privilege_to_bits('F');
|
||||
|
||||
INSERT INTO principal_type (principal_type_id, principal_type_desc) VALUES( 1, 'Person' );
|
||||
INSERT INTO principal_type (principal_type_id, principal_type_desc) VALUES( 2, 'Resource' );
|
||||
INSERT INTO principal_type (principal_type_id, principal_type_desc) VALUES( 3, 'Group' );
|
||||
|
||||
-- web needs SELECT,INSERT,UPDATE,DELETE
|
||||
DROP TABLE principal CASCADE;
|
||||
CREATE TABLE principal (
|
||||
principal_id SERIAL PRIMARY KEY,
|
||||
type_id INT8 NOT NULL REFERENCES principal_type(principal_type_id) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE,
|
||||
user_no INT8 NULL REFERENCES usr(user_no) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE,
|
||||
displayname TEXT,
|
||||
active BOOLEAN,
|
||||
default_privileges BIT(24)
|
||||
);
|
||||
|
||||
INSERT INTO principal (type_id, user_no, displayname, active, default_privileges)
|
||||
SELECT 1, user_no, fullname, active, privilege_to_bits(ARRAY['read-free-busy','schedule-send','schedule-deliver']) FROM usr
|
||||
WHERE NOT EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Group' AND role_member.user_no = usr.user_no)
|
||||
AND NOT EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Resource' AND role_member.user_no = usr.user_no) ;
|
||||
|
||||
INSERT INTO principal (type_id, user_no, displayname, active, default_privileges)
|
||||
SELECT 2, user_no, fullname, active, privilege_to_bits(ARRAY['read','schedule-send','schedule-deliver']) FROM usr
|
||||
WHERE EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Resource' AND role_member.user_no = usr.user_no);
|
||||
|
||||
INSERT INTO principal (type_id, user_no, displayname, active, default_privileges)
|
||||
SELECT 3, user_no, fullname, active, privilege_to_bits(ARRAY['read-free-busy','schedule-send','schedule-deliver']) FROM usr
|
||||
WHERE EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Group' AND role_member.user_no = usr.user_no);
|
||||
|
||||
UPDATE collection SET default_privileges = CASE
|
||||
WHEN publicly_readable THEN privilege_to_bits(ARRAY['read'])
|
||||
ELSE (SELECT default_privileges FROM principal WHERE principal.user_no = collection.user_no)
|
||||
END;
|
||||
|
||||
-- Allowing identification of group members.
|
||||
DROP TABLE group_member CASCADE;
|
||||
CREATE TABLE group_member (
|
||||
group_id INT8 REFERENCES principal(principal_id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE,
|
||||
member_id INT8 REFERENCES principal(principal_id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE
|
||||
);
|
||||
CREATE UNIQUE INDEX group_member_pk ON group_member(group_id,member_id);
|
||||
CREATE INDEX group_member_sk ON group_member(member_id);
|
||||
INSERT INTO group_member ( group_id, member_id)
|
||||
SELECT g.principal_id, m.principal_id
|
||||
FROM relationship JOIN principal g ON(to_user=g.user_no AND g.type_id = 3) -- Group
|
||||
JOIN principal m ON(from_user=m.user_no AND m.type_id = 1); -- Person
|
||||
|
||||
DROP TABLE dav_resource_type CASCADE;
|
||||
DROP TABLE dav_resource CASCADE;
|
||||
DROP TABLE privilege CASCADE;
|
||||
|
||||
CREATE TABLE grants (
|
||||
by_principal INT8 REFERENCES principal(principal_id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE,
|
||||
dav_name TEXT,
|
||||
to_principal INT8 REFERENCES principal(principal_id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE,
|
||||
privileges BIT(24),
|
||||
is_group BOOLEAN,
|
||||
PRIMARY KEY (dav_name, to_principal)
|
||||
) WITHOUT OIDS;
|
||||
|
||||
|
||||
INSERT INTO grants ( by_principal, dav_name, to_principal, privileges, is_group )
|
||||
SELECT pby.principal_id AS by_principal, '/' ||t.username||'/' AS dav_name, pto.principal_id AS to_principal,
|
||||
confers AS privileges, pto.type_id > 2 AS is_group
|
||||
FROM relationship r JOIN usr f ON(f.user_no=r.from_user)
|
||||
JOIN usr t ON(t.user_no=r.to_user)
|
||||
JOIN principal pby ON(t.user_no=pby.user_no)
|
||||
JOIN principal pto ON(pto.user_no=f.user_no)
|
||||
WHERE rt_id < 4 AND pby.type_id < 3;
|
||||
|
||||
|
||||
CREATE or REPLACE FUNCTION get_permissions_new( INT, INT ) RETURNS BIT(24) AS $$
|
||||
DECLARE
|
||||
in_accessor ALIAS FOR $1;
|
||||
in_grantor ALIAS FOR $2;
|
||||
out_conferred BIT(24);
|
||||
BEGIN
|
||||
out_conferred := 0::BIT(24);
|
||||
-- Self can always have full access
|
||||
IF in_grantor = in_accessor THEN
|
||||
RETURN ~ out_conferred;
|
||||
END IF;
|
||||
|
||||
SELECT bit_or(subquery.privileges) INTO out_conferred FROM
|
||||
(SELECT privileges FROM grants WHERE by_principal = in_grantor AND to_principal = in_accessor AND NOT is_group
|
||||
UNION
|
||||
SELECT privileges FROM grants JOIN group_member ON (to_principal=group_id AND member_id=in_accessor)
|
||||
WHERE by_principal = in_grantor AND is_group
|
||||
) AS subquery ;
|
||||
IF out_conferred IS NULL THEN
|
||||
SELECT default_privileges INTO out_conferred FROM principal WHERE principal_id = in_grantor;
|
||||
END IF;
|
||||
|
||||
RETURN out_conferred;
|
||||
END;
|
||||
$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
|
||||
|
||||
-- A list of the principals who can proxy to this principal
|
||||
CREATE or REPLACE FUNCTION i_proxy_to( INT ) RETURNS SETOF grants AS $$
|
||||
SELECT by_principal, dav_name, to_principal, privileges, is_group FROM grants WHERE by_principal = $1 AND NOT is_group
|
||||
UNION
|
||||
SELECT by_principal, dav_name, member_id, privileges, is_group FROM grants
|
||||
JOIN group_member ON (to_principal=group_id) where by_principal = $1 and is_group;
|
||||
$$ LANGUAGE 'SQL' STRICT;
|
||||
|
||||
-- A list of the principals who this principal can proxy
|
||||
CREATE or REPLACE FUNCTION proxied_by( INT ) RETURNS SETOF grants AS $$
|
||||
SELECT by_principal, dav_name, to_principal, privileges, is_group FROM grants WHERE to_principal = $1 AND NOT is_group
|
||||
UNION
|
||||
SELECT by_principal, dav_name, member_id, privileges, is_group FROM grants
|
||||
JOIN group_member ON (to_principal=group_id) where member_id = $1 and is_group;
|
||||
$$ LANGUAGE 'SQL' STRICT;
|
||||
|
||||
CREATE or REPLACE FUNCTION proxy_list( INT ) RETURNS SETOF grants AS $$
|
||||
SELECT by_principal, dav_name, to_principal, privileges, is_group FROM grants WHERE by_principal = $1 AND NOT is_group
|
||||
UNION
|
||||
SELECT by_principal, dav_name, member_id, privileges, is_group FROM grants
|
||||
JOIN group_member ON (to_principal=group_id) where by_principal = $1 and is_group
|
||||
UNION
|
||||
SELECT by_principal, dav_name, to_principal, privileges, is_group FROM grants WHERE to_principal = $1 AND NOT is_group
|
||||
UNION
|
||||
SELECT by_principal, dav_name, member_id, privileges, is_group FROM grants
|
||||
JOIN group_member ON (to_principal=group_id) where member_id = $1 and is_group;
|
||||
$$ LANGUAGE 'SQL' STRICT;
|
||||
|
||||
SELECT new_db_revision(1,2,6, 'Juin' );
|
||||
|
||||
COMMIT;
|
||||
ROLLBACK;
|
||||
|
||||
69
dba/patches/1.2.7.sql
Normal file
69
dba/patches/1.2.7.sql
Normal file
@ -0,0 +1,69 @@
|
||||
|
||||
-- This database update refines the constraint on usr in order to try and be
|
||||
-- able to actually DELETE FROM usr WHERE user_no = x; and have the database
|
||||
-- do the right thing...
|
||||
|
||||
BEGIN;
|
||||
SELECT check_db_revision(1,2,6);
|
||||
|
||||
CREATE TABLE sync_tokens (
|
||||
sync_token SERIAL PRIMARY KEY,
|
||||
collection_id INT8 REFERENCES collection(collection_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
modification_time TIMESTAMP WITH TIME ZONE DEFAULT current_timestamp
|
||||
);
|
||||
|
||||
CREATE TABLE sync_changes (
|
||||
sync_time TIMESTAMP WITH TIME ZONE DEFAULT current_timestamp,
|
||||
collection_id INT8 REFERENCES collection(collection_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
sync_status INT,
|
||||
dav_id INT8 REFERENCES calendar_item(dav_id) ON DELETE SET NULL ON UPDATE RESTRICT,
|
||||
dav_name TEXT
|
||||
);
|
||||
|
||||
SELECT new_db_revision(1,2,7, 'Juli' );
|
||||
|
||||
COMMIT;
|
||||
ROLLBACK;
|
||||
|
||||
|
||||
CREATE or REPLACE FUNCTION write_sync_change( INT8, INT, TEXT ) RETURNS BOOLEAN AS $$
|
||||
DECLARE
|
||||
in_collection_id ALIAS FOR $1;
|
||||
in_status ALIAS FOR $2;
|
||||
in_dav_name ALIAS FOR $3;
|
||||
tmp_int INT8;
|
||||
BEGIN
|
||||
SELECT 1 INTO tmp_int FROM sync_tokens
|
||||
WHERE collection_id = in_collection_id
|
||||
LIMIT 1;
|
||||
IF NOT FOUND THEN
|
||||
RETURN FALSE;
|
||||
END IF;
|
||||
SELECT dav_id INTO tmp_int FROM calendar_item WHERE dav_name = in_dav_name;
|
||||
INSERT INTO sync_changes ( collection_id, sync_status, dav_id, dav_name)
|
||||
VALUES( in_collection_id, in_status, tmp_int, in_dav_name);
|
||||
RETURN TRUE;
|
||||
END
|
||||
$$ LANGUAGE 'PlPgSQL' VOLATILE STRICT;
|
||||
|
||||
|
||||
CREATE or REPLACE FUNCTION new_sync_token( INT8, INT8 ) RETURNS INT8 AS $$
|
||||
DECLARE
|
||||
in_old_sync_token ALIAS FOR $1;
|
||||
in_collection_id ALIAS FOR $2;
|
||||
tmp_int INT8;
|
||||
BEGIN
|
||||
IF in_old_sync_token > 0 THEN
|
||||
SELECT 1 INTO tmp_int FROM sync_changes
|
||||
WHERE collection_id = in_collection_id
|
||||
AND sync_time > (SELECT modification_time FROM sync_tokens WHERE sync_token = in_old_sync_token)
|
||||
LIMIT 1;
|
||||
IF NOT FOUND THEN
|
||||
RETURN in_old_sync_token;
|
||||
END IF;
|
||||
END IF;
|
||||
SELECT nextval('sync_tokens_sync_token_seq') INTO tmp_int;
|
||||
INSERT INTO sync_tokens(collection_id, sync_token) VALUES( in_collection_id, tmp_int );
|
||||
RETURN tmp_int;
|
||||
END
|
||||
$$ LANGUAGE 'PlPgSQL' STRICT;
|
||||
12
debian/changelog
vendored
12
debian/changelog
vendored
@ -1,3 +1,15 @@
|
||||
davical (0.9.7.4-0) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Andrew McMillan <debian@mcmillan.net.nz> Wed, 07 Oct 2009 17:03:14 -0700
|
||||
|
||||
davical (0.9.7.3-0) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Andrew McMillan <debian@mcmillan.net.nz> Tue, 06 Oct 2009 12:41:48 -0700
|
||||
|
||||
davical (0.9.7.2-0) unstable; urgency=low
|
||||
|
||||
* New upstream version.
|
||||
|
||||
9
debian/control
vendored
9
debian/control
vendored
@ -2,7 +2,7 @@ Source: davical
|
||||
Section: web
|
||||
Priority: extra
|
||||
Maintainer: Andrew McMillan <debian@mcmillan.net.nz>
|
||||
Standards-Version: 3.8.1
|
||||
Standards-Version: 3.8.3
|
||||
Build-Depends: debhelper (>= 5)
|
||||
Vcs-git: git://repo.or.cz/davical.git
|
||||
Vcs-browser: http://repo.or.cz/w/davical.git
|
||||
@ -10,13 +10,14 @@ Homepage: http://davical.org/
|
||||
|
||||
Package: davical
|
||||
Architecture: all
|
||||
Depends: debconf (>= 1.0.32), php5-pgsql, postgresql-client-8.4 | postgresql-client-8.3 | postgresql-client-8.2 | postgresql-client-8.1, libawl-php (=0.37), libdbd-pg-perl, libyaml-perl
|
||||
Depends: debconf (>= 1.0.32), php5-pgsql, postgresql-client-8.4 | postgresql-client-8.3 | postgresql-client-8.2 | postgresql-client-8.1, libawl-php (= 0.38-0), libdbd-pg-perl, libyaml-perl
|
||||
Conflicts: rscds
|
||||
Description: The DAViCal CalDAV Server
|
||||
The DAViCal CalDAV Server is designed to trivially store
|
||||
CalDAV calendars, such as those from Evolution, Sunbird/Lightning,
|
||||
Mulberry, iCal or SOHO Organizer, in a central location, providing
|
||||
shared calendars, free/busy publication and basic administration
|
||||
Mulberry, iCal, iPhone or SOHO Organizer, in a central location,
|
||||
providing shared calendars, free/busy publication and a basic
|
||||
administration interface.
|
||||
|
||||
Package: davical-doc
|
||||
Section: doc
|
||||
|
||||
@ -569,7 +569,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -309,7 +309,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -298,7 +298,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -89,7 +89,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -1271,7 +1271,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:56 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:05 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -170,7 +170,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -74,7 +74,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:56 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:05 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -943,7 +943,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -38,7 +38,7 @@
|
||||
<li><a href="awl/caldav/RRule.html">RRule</a></li></ul>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:56 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:05 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
@ -54,7 +54,7 @@
|
||||
<li><a href="davical/DAViCalUser/DAViCalUser.html">DAViCalUser</a></li></ul>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:56 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:04 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
@ -187,7 +187,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:01 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:12 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
236
docs/api/davical/DAViCalSession/DAViCalSession.html
Normal file
236
docs/api/davical/DAViCalSession/DAViCalSession.html
Normal file
@ -0,0 +1,236 @@
|
||||
<?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-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">50</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre>Session
|
||||
|
|
||||
--DAViCalSession</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">DAViCalSession</span>
|
||||
<a href="#DAViCalSession" title="details" class="method-name">DAViCalSession</a>
|
||||
([<span class="var-type">string</span> <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> <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="#GetRelationships" title="details" class="method-name">GetRelationships</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">boolean</span>
|
||||
<a href="#LoginRequired" title="details" class="method-name">LoginRequired</a>
|
||||
([<span class="var-type">string</span> <span class="var-name">$roles</span> = <span class="var-default">''</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="methodDAViCalSession" id="DAViCalSession"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Constructor.png" />
|
||||
<span class="method-title">Constructor DAViCalSession</span> (line <span class="line-number">61</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 RSCDS related information.</p></p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">DAViCalSession</span>
|
||||
<span class="method-name">
|
||||
DAViCalSession
|
||||
</span>
|
||||
([<span class="var-type">string</span> <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="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">AssignSessionDetails</span> (line <span class="line-number">70</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> <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="methodGetRelationships" id="GetRelationships"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">GetRelationships</span> (line <span class="line-number">98</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Method used to get the user's relationships</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
GetRelationships
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</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">83</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="methodLoginRequired" id="LoginRequired"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">LoginRequired</span> (line <span class="line-number">120</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> <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 Tue, 06 Oct 2009 02:03:08 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
181
docs/api/davical/DAViCalSession/Tools.html
Normal file
181
docs/api/davical/DAViCalSession/Tools.html
Normal file
@ -0,0 +1,181 @@
|
||||
<?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">36</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/Method.png" alt=" "/>
|
||||
<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/Method.png" alt=" "/>
|
||||
<span class="method-result">void</span>
|
||||
<a href="#render" title="details" class="method-name">render</a>
|
||||
()
|
||||
</div>
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<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/Method.png" alt=" "/>
|
||||
<span class="method-result">void</span>
|
||||
<a href="#renderSyncLDAP" title="details" class="method-name">renderSyncLDAP</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="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">importFromDirectory</span> (line <span class="line-number">97</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="methodrender" id="render"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">render</span> (line <span class="line-number">38</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
render
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodrenderImportFromDirectory" id="renderImportFromDirectory"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">renderImportFromDirectory</span> (line <span class="line-number">70</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/Method.png" />
|
||||
<span class="method-title">renderSyncLDAP</span> (line <span class="line-number">46</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
renderSyncLDAP
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:12 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
193
docs/api/davical/DAViCalSession/_htdocs---tools.php.html
Normal file
193
docs/api/davical/DAViCalSession/_htdocs---tools.php.html
Normal file
@ -0,0 +1,193 @@
|
||||
<?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 <<a href="mailto:mdelorme@tennaxia.com">mdelorme@tennaxia.com</a>></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-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">32</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<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">154</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_DataEntry_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">"DataEntry.php"</span>)
|
||||
(line <span class="line-number">16</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="___/inc/always_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/_inc---always.php.html">"../inc/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 <<a href="mailto:mdelorme@tennaxia.com">mdelorme@tennaxia.com</a>></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="_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="_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="_DAViCalSession_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/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 Tue, 06 Oct 2009 02:03:12 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
192
docs/api/davical/DAViCalSession/_inc---DAViCalSession.php.html
Normal file
192
docs/api/davical/DAViCalSession/_inc---DAViCalSession.php.html
Normal file
@ -0,0 +1,192 @@
|
||||
<?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 <<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>></li>
|
||||
<li><span class="field">copyright:</span> Catalyst .Net Ltd, Morphoss Ltd <http://www.morphoss.com/></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="_PgQuery_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">'PgQuery.php'</span>)
|
||||
(line <span class="line-number">15</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">All session data is held in the database.</p>
|
||||
|
||||
</div>
|
||||
<a name="_Session_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">'Session.php'</span>)
|
||||
(line <span class="line-number">41</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">
|
||||
<a name="global$session
|
||||
The session object is global." id="global$session
|
||||
The session object is global."><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<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">22</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="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">local_session_sql</span> (line <span class="line-number">31</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 Tue, 06 Oct 2009 02:03:08 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
478
docs/api/davical/DAViCalUser/DAViCalUser.html
Normal file
478
docs/api/davical/DAViCalUser/DAViCalUser.html
Normal file
@ -0,0 +1,478 @@
|
||||
<?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 DAViCalUser</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"> DAViCalUser</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 viewing and maintaining DAViCal User records</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_inc---DAViCalUser.php.html">/inc/DAViCalUser.php</a> (line <span class="field">25</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre>User
|
||||
|
|
||||
--DAViCalUser</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="#$delete_collection_confirmation_required" title="details" class="var-name">$delete_collection_confirmation_required</a>
|
||||
</div>
|
||||
<div class="var-title">
|
||||
<img src="../../media/images/Variable.png" alt=" " />
|
||||
<span class="var-type">mixed</span>
|
||||
<a href="#$delete_user_confirmation_required" title="details" class="var-name">$delete_user_confirmation_required</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">DAViCalUser</span>
|
||||
<a href="#DAViCalUser" title="details" class="method-name">DAViCalUser</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$id</span>, [<span class="var-type"></span> <span class="var-name">$prefix</span> = <span class="var-default">''</span>])
|
||||
</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> <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="#HandleAction" title="details" class="method-name">HandleAction</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$action</span>)
|
||||
</div>
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<span class="method-result">string</span>
|
||||
<a href="#Render" title="details" class="method-name">Render</a>
|
||||
([<span class="var-type"></span> <span class="var-name">$title</span> = <span class="var-default">''</span>])
|
||||
</div>
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<span class="method-result">string</span>
|
||||
<a href="#RenderCollections" title="details" class="method-name">RenderCollections</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$ef</span>, [<span class="var-type"></span> <span class="var-name">$title</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<span class="method-result">string</span>
|
||||
<a href="#RenderRelationshipsFrom" title="details" class="method-name">RenderRelationshipsFrom</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$ef</span>, [<span class="var-type"></span> <span class="var-name">$title</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<span class="method-result">string</span>
|
||||
<a href="#RenderRelationshipsTo" title="details" class="method-name">RenderRelationshipsTo</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$ef</span>, [<span class="var-type"></span> <span class="var-name">$title</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="#Validate" title="details" class="method-name">Validate</a>
|
||||
()
|
||||
</div>
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<span class="method-result">void</span>
|
||||
<a href="#Write" title="details" class="method-name">Write</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$delete_collection_confirmation_required" id="$delete_collection_confirmation_required"><!-- --></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">$delete_collection_confirmation_required</span>
|
||||
(line <span class="line-number">28</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<a name="var$delete_user_confirmation_required" id="$delete_user_confirmation_required"><!-- --></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">$delete_user_confirmation_required</span>
|
||||
(line <span class="line-number">29</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</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="methodDAViCalUser" id="DAViCalUser"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Constructor.png" />
|
||||
<span class="method-title">Constructor DAViCalUser</span> (line <span class="line-number">34</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Constructor - nothing fancy as yet.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">DAViCalUser</span>
|
||||
<span class="method-name">
|
||||
DAViCalUser
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$id</span>, [<span class="var-type"></span> <span class="var-name">$prefix</span> = <span class="var-default">''</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">$prefix</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</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">319</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Extend parent definition of what the current user is allowed to do</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> Whether they are allowed to.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">boolean</span>
|
||||
<span class="method-name">
|
||||
AllowedTo
|
||||
</span>
|
||||
(<span class="var-type">string</span> <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">: What the user wants to do</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodHandleAction" id="HandleAction"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">HandleAction</span> (line <span class="line-number">347</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Handle any unusual actions we might invent</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
HandleAction
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$action</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$action</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodRender" id="Render"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">Render</span> (line <span class="line-number">50</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Render the form / viewer as HTML to show the user</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> An HTML fragment to display in the page.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">string</span>
|
||||
<span class="method-name">
|
||||
Render
|
||||
</span>
|
||||
([<span class="var-type"></span> <span class="var-name">$title</span> = <span class="var-default">''</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$title</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodRenderCollections" id="RenderCollections"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">RenderCollections</span> (line <span class="line-number">240</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Render the user's collections</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> The string of html to be output</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">string</span>
|
||||
<span class="method-name">
|
||||
RenderCollections
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$ef</span>, [<span class="var-type"></span> <span class="var-name">$title</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$ef</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$title</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodRenderRelationshipsFrom" id="RenderRelationshipsFrom"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">RenderRelationshipsFrom</span> (line <span class="line-number">107</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Render the user's relationships to other users & resources</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> The string of html to be output</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">string</span>
|
||||
<span class="method-name">
|
||||
RenderRelationshipsFrom
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$ef</span>, [<span class="var-type"></span> <span class="var-name">$title</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$ef</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$title</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodRenderRelationshipsTo" id="RenderRelationshipsTo"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">RenderRelationshipsTo</span> (line <span class="line-number">156</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Render the user's relationships to other users & resources</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> The string of html to be output</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">string</span>
|
||||
<span class="method-name">
|
||||
RenderRelationshipsTo
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$ef</span>, [<span class="var-type"></span> <span class="var-name">$title</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$ef</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$title</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodValidate" id="Validate"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">Validate</span> (line <span class="line-number">309</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Validate the information the user submitted</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> Whether the form data validated OK.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">boolean</span>
|
||||
<span class="method-name">
|
||||
Validate
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodWrite" id="Write"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">Write</span> (line <span class="line-number">422</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Write the record to the file</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
Write
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:08 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
148
docs/api/davical/DAViCalUser/_inc---DAViCalUser.php.html
Normal file
148
docs/api/davical/DAViCalUser/_inc---DAViCalUser.php.html
Normal file
@ -0,0 +1,148 @@
|
||||
<?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 DAViCalUser.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/DAViCalUser.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">User maintain / view with DAViCal specific associated tables</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">author:</span> Andrew McMillan <<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>></li>
|
||||
<li><span class="field">copyright:</span> Catalyst .Net Ltd, Morphoss Ltd <http://www.morphoss.com/></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/DAViCalUser/DAViCalUser.html">DAViCalUser</a>
|
||||
</td>
|
||||
<td>
|
||||
A class for viewing and maintaining DAViCal User records
|
||||
</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="_User_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">'User.php'</span>)
|
||||
(line <span class="line-number">12</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">User maintain / view with DAViCal specific associated tables</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">author:</span> Andrew McMillan <<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>></li>
|
||||
<li><span class="field">copyright:</span> Catalyst .Net Ltd, Morphoss Ltd <http://www.morphoss.com/></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="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Page.png" alt=" " />
|
||||
<span class="include-title">
|
||||
<span class="include-type">include</span>
|
||||
(<span class="include-name">'classBrowser.php'</span>)
|
||||
(line <span class="line-number">13</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</span>
|
||||
(<span class="include-name"><a href="../../davical/_inc---check_UTF8.php.html">'check_UTF8.php'</a></span>)
|
||||
(line <span class="line-number">14</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">include</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">15</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:08 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -143,7 +143,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">AllowedTo</span> (line <span class="line-number">244</span>)
|
||||
<span class="method-title">AllowedTo</span> (line <span class="line-number">252</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -174,7 +174,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">AssignSessionDetails</span> (line <span class="line-number">267</span>)
|
||||
<span class="method-title">AssignSessionDetails</span> (line <span class="line-number">275</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -303,7 +303,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">GetRoles</span> (line <span class="line-number">252</span>)
|
||||
<span class="method-title">GetRoles</span> (line <span class="line-number">260</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -354,7 +354,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -473,7 +473,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">AsCollection</span> (line <span class="line-number">294</span>)
|
||||
<span class="method-title">AsCollection</span> (line <span class="line-number">295</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -522,7 +522,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">RenderAsXML</span> (line <span class="line-number">335</span>)
|
||||
<span class="method-title">RenderAsXML</span> (line <span class="line-number">336</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -561,7 +561,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">RenderPrivileges</span> (line <span class="line-number">314</span>)
|
||||
<span class="method-title">RenderPrivileges</span> (line <span class="line-number">315</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -591,7 +591,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">UsernameFromEMail</span> (line <span class="line-number">280</span>)
|
||||
<span class="method-title">UsernameFromEMail</span> (line <span class="line-number">281</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -618,7 +618,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">UsernameFromPath</span> (line <span class="line-number">246</span>)
|
||||
<span class="method-title">UsernameFromPath</span> (line <span class="line-number">247</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -649,7 +649,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
139
docs/api/davical/PublicSession/PublicSession.html
Normal file
139
docs/api/davical/PublicSession/PublicSession.html
Normal file
@ -0,0 +1,139 @@
|
||||
<?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 PublicSession</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"> PublicSession</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 a public (anonymous) session</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_inc---PublicSession.php.html">/inc/PublicSession.php</a> (line <span class="field">17</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">PublicSession</span>
|
||||
<a href="#PublicSession" title="details" class="method-name">PublicSession</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> <span class="var-name">$whatever</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="methodPublicSession" id="PublicSession"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Constructor.png" />
|
||||
<span class="method-title">Constructor PublicSession</span> (line <span class="line-number">50</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">The constructor, which just calls the actual type configured</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">PublicSession</span>
|
||||
<span class="method-name">
|
||||
PublicSession
|
||||
</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">71</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> <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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
69
docs/api/davical/PublicSession/_inc---PublicSession.php.html
Normal file
69
docs/api/davical/PublicSession/_inc---PublicSession.php.html
Normal file
@ -0,0 +1,69 @@
|
||||
<?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 PublicSession.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/PublicSession.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 faking sessions which are anonymous access to a resource</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">author:</span> Andrew McMillan <<a href="mailto:andrew@morphoss.com">andrew@morphoss.com</a>></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>
|
||||
</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/PublicSession/PublicSession.html">PublicSession</a>
|
||||
</td>
|
||||
<td>
|
||||
A Class for handling a public (anonymous) session
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -295,7 +295,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:01 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -116,7 +116,7 @@
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
<div class="method-definition">
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Constructor.png" alt=" "/>
|
||||
<span class="method-result">CalDAVRequest</span>
|
||||
<a href="#CalDAVRequest" title="details" class="method-name">CalDAVRequest</a>
|
||||
@ -165,6 +165,12 @@
|
||||
(<span class="var-type"></span> <span class="var-name">$lock_token</span>, <span class="var-type">string</span> <span class="var-name">$dav_name</span>)
|
||||
</div>
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<span class="method-result">void</span>
|
||||
<a href="#IsCalendar" title="details" class="method-name">IsCalendar</a>
|
||||
()
|
||||
</div>
|
||||
<div class="method-definition">
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<span class="method-result">void</span>
|
||||
<a href="#IsCollection" title="details" class="method-name">IsCollection</a>
|
||||
@ -501,7 +507,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">AllowedTo</span> (line <span class="line-number">716</span>)
|
||||
<span class="method-title">AllowedTo</span> (line <span class="line-number">736</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -529,7 +535,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">DepthRegexTail</span> (line <span class="line-number">548</span>)
|
||||
<span class="method-title">DepthRegexTail</span> (line <span class="line-number">559</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -551,7 +557,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">DoResponse</span> (line <span class="line-number">810</span>)
|
||||
<span class="method-title">DoResponse</span> (line <span class="line-number">830</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -584,7 +590,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">FailIfLocked</span> (line <span class="line-number">630</span>)
|
||||
<span class="method-title">FailIfLocked</span> (line <span class="line-number">641</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -609,7 +615,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">GetDepthName</span> (line <span class="line-number">539</span>)
|
||||
<span class="method-title">GetDepthName</span> (line <span class="line-number">550</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -631,7 +637,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">GetLockDetails</span> (line <span class="line-number">616</span>)
|
||||
<span class="method-title">GetLockDetails</span> (line <span class="line-number">627</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -658,7 +664,7 @@
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">GetLockRow</span> (line <span class="line-number">559</span>)
|
||||
<span class="method-title">GetLockRow</span> (line <span class="line-number">570</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -683,12 +689,34 @@
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodIsCollection" id="IsCollection"><!-- --></a>
|
||||
<a name="methodIsCalendar" id="IsCalendar"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">IsCollection</span> (line <span class="line-number">665</span>)
|
||||
<span class="method-title">IsCalendar</span> (line <span class="line-number">687</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Returns true if the URL referenced by this request points at a calendar collection.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
IsCalendar
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodIsCollection" id="IsCollection"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">IsCollection</span> (line <span class="line-number">676</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -706,11 +734,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodIsInfiniteDepth" id="IsInfiniteDepth"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">IsInfiniteDepth</span> (line <span class="line-number">698</span>)
|
||||
<span class="method-title">IsInfiniteDepth</span> (line <span class="line-number">718</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -728,11 +756,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodIsLocked" id="IsLocked"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">IsLocked</span> (line <span class="line-number">496</span>)
|
||||
<span class="method-title">IsLocked</span> (line <span class="line-number">507</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -753,11 +781,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodIsPrincipal" id="IsPrincipal"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">IsPrincipal</span> (line <span class="line-number">676</span>)
|
||||
<span class="method-title">IsPrincipal</span> (line <span class="line-number">696</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -775,11 +803,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodIsProxyRequest" id="IsProxyRequest"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">IsProxyRequest</span> (line <span class="line-number">687</span>)
|
||||
<span class="method-title">IsProxyRequest</span> (line <span class="line-number">707</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -797,11 +825,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodIsPublic" id="IsPublic"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">IsPublic</span> (line <span class="line-number">528</span>)
|
||||
<span class="method-title">IsPublic</span> (line <span class="line-number">539</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -819,11 +847,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodsetPermissions" id="setPermissions"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">setPermissions</span> (line <span class="line-number">416</span>)
|
||||
<span class="method-title">setPermissions</span> (line <span class="line-number">427</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -849,11 +877,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodSupportedPrivileges" id="SupportedPrivileges"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">SupportedPrivileges</span> (line <span class="line-number">847</span>)
|
||||
<span class="method-title">SupportedPrivileges</span> (line <span class="line-number">867</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -874,11 +902,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodUnsupportedRequest" id="UnsupportedRequest"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">UnsupportedRequest</span> (line <span class="line-number">775</span>)
|
||||
<span class="method-title">UnsupportedRequest</span> (line <span class="line-number">795</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -901,11 +929,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodUserFromPath" id="UserFromPath"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">UserFromPath</span> (line <span class="line-number">372</span>)
|
||||
<span class="method-title">UserFromPath</span> (line <span class="line-number">383</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -923,11 +951,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodValidateLockToken" id="ValidateLockToken"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">ValidateLockToken</span> (line <span class="line-number">585</span>)
|
||||
<span class="method-title">ValidateLockToken</span> (line <span class="line-number">596</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -950,11 +978,11 @@
|
||||
|
||||
</div>
|
||||
<a name="methodXMLResponse" id="XMLResponse"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<img src="../../media/images/Method.png" />
|
||||
<span class="method-title">XMLResponse</span> (line <span class="line-number">795</span>)
|
||||
<span class="method-title">XMLResponse</span> (line <span class="line-number">815</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -985,7 +1013,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:58 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -75,7 +75,7 @@
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="_XMLElement_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Page.png" alt=" " />
|
||||
@ -98,7 +98,7 @@
|
||||
|
||||
</div>
|
||||
<a name="_CalDAVPrincipal_php"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Page.png" alt=" " />
|
||||
@ -126,7 +126,7 @@
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="defineDEPTH_INFINITY"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Constant.png" />
|
||||
@ -146,7 +146,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:58 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -34,7 +34,7 @@
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="_page-header_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
@ -49,7 +49,7 @@
|
||||
|
||||
</div>
|
||||
<a name="_page-footer_php"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
@ -64,7 +64,7 @@
|
||||
|
||||
</div>
|
||||
<a name="_page-header_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
@ -79,7 +79,7 @@
|
||||
|
||||
</div>
|
||||
<a name="_page-footer_php"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
@ -94,7 +94,7 @@
|
||||
|
||||
</div>
|
||||
<a name="___/inc/always_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
@ -109,7 +109,7 @@
|
||||
|
||||
</div>
|
||||
<a name="_classBrowser_php"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
@ -124,7 +124,7 @@
|
||||
|
||||
</div>
|
||||
<a name="_interactive-page_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
@ -139,7 +139,7 @@
|
||||
|
||||
</div>
|
||||
<a name="_DAViCalSession_php"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
@ -160,7 +160,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:58 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:08 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -103,7 +103,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -115,7 +115,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -131,7 +131,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -160,7 +160,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -130,7 +130,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
76
docs/api/davical/_htdocs---testpdo.php.html
Normal file
76
docs/api/davical/_htdocs---testpdo.php.html
Normal file
@ -0,0 +1,76 @@
|
||||
<?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 testpdo.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/testpdo.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-includes">Includes</a>
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</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> |
|
||||
<span class="disabled">Includes</span>
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="_PdoQuery_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"><a href="../awl/PdoQuery/_inc---PdoQuery.php.html">PdoQuery.php</a></span>)
|
||||
(line <span class="line-number">4</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="___/inc/always_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/_inc---always.php.html">"../inc/always.php"</a></span>)
|
||||
(line <span class="line-number">2</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:12 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -33,19 +33,20 @@
|
||||
<span class="disabled">Includes</span>
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="_caldav-PUT-functions_php"><!-- --></a>
|
||||
<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/caldav/_inc---caldav-PUT-functions.php.html">caldav-PUT-functions.php</a></span>)
|
||||
(line <span class="line-number">55</span>)
|
||||
(<span class="include-name"><a href="../davical/_inc---page-header.php.html">page-header.php</a></span>)
|
||||
(line <span class="line-number">66</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Handle any actions, such as 'delete_relation'</p>
|
||||
|
||||
</div>
|
||||
<a name="_page-footer_php"><!-- --></a>
|
||||
@ -56,45 +57,12 @@
|
||||
<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">94</span>)
|
||||
(line <span class="line-number">68</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_check_UTF8_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---check_UTF8.php.html">check_UTF8.php</a></span>)
|
||||
(line <span class="line-number">52</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">If the user has uploaded a .ics file as a calendar, we fake this out</p>
|
||||
<p class="description"><p>as if it were a "PUT" request against a collection. This is something of a hack. It works though :-)</p></p>
|
||||
|
||||
</div>
|
||||
<a name="_page-header_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-header.php.html">page-header.php</a></span>)
|
||||
(line <span class="line-number">92</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Handle any actions, such as 'delete_relation'</p>
|
||||
|
||||
</div>
|
||||
<a name="___/inc/always_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
@ -110,6 +78,36 @@
|
||||
|
||||
<!-- ========== 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">3</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_DAViCalUser_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/DAViCalUser/_inc---DAViCalUser.php.html">DAViCalUser.php</a></span>)
|
||||
(line <span class="line-number">9</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_interactive-page_php"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
@ -125,36 +123,6 @@
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_DAViCalSession_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/DAViCalSession/_inc---DAViCalSession.php.html">DAViCalSession.php</a></span>)
|
||||
(line <span class="line-number">3</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_DAViCalUser_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/DAViCalUser/_inc---DAViCalUser.php.html">DAViCalUser.php</a></span>)
|
||||
(line <span class="line-number">9</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -163,7 +131,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:01 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:12 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -40,37 +40,7 @@
|
||||
| <a href="#sec-functions">Functions</a>
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="___/config/config_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">"../config/config.php"</span>)
|
||||
(line <span class="line-number">82</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_/etc/davical/config_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name">"/etc/davical/config.php"</span>)
|
||||
(line <span class="line-number">79</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_davical_configuration_missing_php"><!-- --></a>
|
||||
<a name="_davical_configuration_missing_php"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
@ -78,27 +48,26 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../davical/_inc---davical_configuration_missing.php.html">"davical_configuration_missing.php"</a></span>)
|
||||
(line <span class="line-number">85</span>)
|
||||
(line <span class="line-number">92</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_PgQuery_php"><!-- --></a>
|
||||
<a name="___/config/config_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name">"PgQuery.php"</span>)
|
||||
(line <span class="line-number">127</span>)
|
||||
(<span class="include-name">"../config/config.php"</span>)
|
||||
(line <span class="line-number">89</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Force the domain name to what was in the configuration file</p>
|
||||
|
||||
</div>
|
||||
<a name="_/etc/davical/_$_SERVER[SERVER_NAME]_-conf_php"><!-- --></a>
|
||||
@ -109,7 +78,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name">"/etc/davical/".$_SERVER['SERVER_NAME']."-conf.php"</span>)
|
||||
(line <span class="line-number">73</span>)
|
||||
(line <span class="line-number">83</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -117,34 +86,55 @@
|
||||
<p class="short-description">We use @file_exists because things like open_basedir might noisily deny access which could break DAViCal completely by causing output to start too early.</p>
|
||||
|
||||
</div>
|
||||
<a name="_/etc/rscds/_$_SERVER[SERVER_NAME]_-conf_php"><!-- --></a>
|
||||
<a name="_/etc/davical/config_php"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Page.png" alt=" " />
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name">"/etc/rscds/".$_SERVER['SERVER_NAME']."-conf.php"</span>)
|
||||
(line <span class="line-number">76</span>)
|
||||
(<span class="include-name">"/etc/davical/config.php"</span>)
|
||||
(line <span class="line-number">86</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
</div>
|
||||
<a name="_AWLUtilities_php"><!-- --></a>
|
||||
<a name="_PgQuery_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">"PgQuery.php"</span>)
|
||||
(line <span class="line-number">134</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Force the domain name to what was in the configuration file</p>
|
||||
|
||||
</div>
|
||||
<a name="_AWLUtilities_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">"AWLUtilities.php"</span>)
|
||||
(line <span class="line-number">44</span>)
|
||||
(line <span class="line-number">54</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<ul class="tags">
|
||||
<li><span class="field">author:</span> Andrew McMillan <<a href="mailto:andrew@mcmillan.net.nz">andrew@mcmillan.net.nz</a>></li>
|
||||
<li><span class="field">copyright:</span> Catalyst .Net Ltd, Morphoss Ltd <http://www.morphoss.com/></li>
|
||||
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@ -162,11 +152,11 @@
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="functionConstructURL" id="functionConstructURL"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Function.png" />
|
||||
<span class="method-title">ConstructURL</span> (line <span class="line-number">245</span>)
|
||||
<span class="method-title">ConstructURL</span> (line <span class="line-number">252</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -191,11 +181,11 @@
|
||||
|
||||
</div>
|
||||
<a name="functiongetStatusMessage" id="functiongetStatusMessage"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Function.png" />
|
||||
<span class="method-title">getStatusMessage</span> (line <span class="line-number">188</span>)
|
||||
<span class="method-title">getStatusMessage</span> (line <span class="line-number">195</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -220,11 +210,11 @@
|
||||
|
||||
</div>
|
||||
<a name="functiongetUserByID" id="functiongetUserByID"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Function.png" />
|
||||
<span class="method-title">getUserByID</span> (line <span class="line-number">167</span>)
|
||||
<span class="method-title">getUserByID</span> (line <span class="line-number">174</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -249,11 +239,11 @@
|
||||
|
||||
</div>
|
||||
<a name="functiongetUserByName" id="functiongetUserByName"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Function.png" />
|
||||
<span class="method-title">getUserByName</span> (line <span class="line-number">146</span>)
|
||||
<span class="method-title">getUserByName</span> (line <span class="line-number">153</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -278,11 +268,11 @@
|
||||
|
||||
</div>
|
||||
<a name="functionISODateToHTTPDate" id="functionISODateToHTTPDate"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Function.png" />
|
||||
<span class="method-title">ISODateToHTTPDate</span> (line <span class="line-number">272</span>)
|
||||
<span class="method-title">ISODateToHTTPDate</span> (line <span class="line-number">279</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -307,7 +297,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:56 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:05 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -56,7 +56,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -143,7 +143,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -71,7 +71,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -31,7 +31,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -37,7 +37,7 @@
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="functioncheck_string" id="functioncheck_string"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Function.png" />
|
||||
@ -62,7 +62,7 @@
|
||||
|
||||
</div>
|
||||
<a name="functionunicodeToUtf8" id="functionunicodeToUtf8"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Function.png" />
|
||||
@ -89,7 +89,7 @@
|
||||
|
||||
</div>
|
||||
<a name="functionutf8ToUnicode" id="functionutf8ToUnicode"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
<div class="oddrow">
|
||||
|
||||
<div>
|
||||
<img src="../media/images/Function.png" />
|
||||
@ -119,7 +119,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:58 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:08 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -70,7 +70,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:09 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -70,7 +70,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -55,7 +55,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -85,7 +85,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -100,7 +100,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:01 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -98,7 +98,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">AuthExternalAWL</span> (line <span class="line-number">142</span>)
|
||||
<span class="method-title">AuthExternalAWL</span> (line <span class="line-number">161</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -208,7 +208,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:56 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:05 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -47,7 +47,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-OPTIONS.php.html">caldav-OPTIONS.php</a></span>)
|
||||
(line <span class="line-number">52</span>)
|
||||
(line <span class="line-number">48</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -62,7 +62,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-GET.php.html">caldav-GET.php</a></span>)
|
||||
(line <span class="line-number">61</span>)
|
||||
(line <span class="line-number">57</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-REPORT.php.html">caldav-REPORT.php</a></span>)
|
||||
(line <span class="line-number">53</span>)
|
||||
(line <span class="line-number">49</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/propfind/_inc---caldav-PROPFIND.php.html">caldav-PROPFIND.php</a></span>)
|
||||
(line <span class="line-number">54</span>)
|
||||
(line <span class="line-number">50</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -107,7 +107,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-MKCALENDAR.php.html">caldav-MKCALENDAR.php</a></span>)
|
||||
(line <span class="line-number">56</span>)
|
||||
(line <span class="line-number">52</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-PROPPATCH.php.html">caldav-PROPPATCH.php</a></span>)
|
||||
(line <span class="line-number">55</span>)
|
||||
(line <span class="line-number">51</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -137,7 +137,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-PUT.php.html">caldav-PUT.php</a></span>)
|
||||
(line <span class="line-number">58</span>)
|
||||
(line <span class="line-number">54</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -152,7 +152,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-MKCALENDAR.php.html">caldav-MKCALENDAR.php</a></span>)
|
||||
(line <span class="line-number">57</span>)
|
||||
(line <span class="line-number">53</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -167,7 +167,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/_inc---caldav-LOCK.php.html">caldav-LOCK.php</a></span>)
|
||||
(line <span class="line-number">64</span>)
|
||||
(line <span class="line-number">60</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -182,7 +182,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-GET.php.html">caldav-GET.php</a></span>)
|
||||
(line <span class="line-number">60</span>)
|
||||
(line <span class="line-number">56</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -197,7 +197,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-DELETE.php.html">caldav-DELETE.php</a></span>)
|
||||
(line <span class="line-number">62</span>)
|
||||
(line <span class="line-number">58</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -212,7 +212,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/caldav/_inc---caldav-POST.php.html">caldav-POST.php</a></span>)
|
||||
(line <span class="line-number">59</span>)
|
||||
(line <span class="line-number">55</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -227,7 +227,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/_inc---caldav-LOCK.php.html">caldav-LOCK.php</a></span>)
|
||||
(line <span class="line-number">63</span>)
|
||||
(line <span class="line-number">59</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -242,7 +242,7 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">include_once</span>
|
||||
(<span class="include-name"><a href="../../davical/_inc---test-RRULE.php.html">test-RRULE.php</a></span>)
|
||||
(line <span class="line-number">66</span>)
|
||||
(line <span class="line-number">62</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -293,13 +293,13 @@
|
||||
<span class="include-title">
|
||||
<span class="include-type">require_once</span>
|
||||
(<span class="include-name"><a href="../../davical/Request/_inc---CalDAVRequest.php.html">CalDAVRequest.php</a></span>)
|
||||
(line <span class="line-number">33</span>)
|
||||
(line <span class="line-number">29</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">From reading the "Scheduling Extensions to CalDAV" draft I don't think that we will be doing 'calendar-schedule' any time soon. The current spec is at: http://www.ietf.org/internet-drafts/draft-desruisseaux-caldav-sched-03.txt</p>
|
||||
<p class="description"><p>access-control is rfc3744, so we will say we do it, but I doubt if we do it in all (or even much of) it's glory really.</p></p>
|
||||
<p class="short-description">access-control is rfc3744, we do some of it, but no way to say that.</p>
|
||||
<p class="description"><p>calendar-schedule is another one we do some of, but the spec is not final yet either.</p></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@ -309,7 +309,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -188,7 +188,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:00 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:11 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -34,7 +34,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -67,7 +67,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -67,7 +67,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -34,7 +34,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -69,6 +69,12 @@
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">CalDAV Server - handle PUT method</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">author:</span> Andrew McMillan <<a href="mailto:andrew@morphoss.com">andrew@morphoss.com</a>></li>
|
||||
<li><span class="field">copyright:</span> Morphoss Ltd - http://www.morphoss.com/</li>
|
||||
<li><span class="field">license:</span> <a href="http://gnu.org/copyleft/gpl.html">GNU GPL v2</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<a name="_iCalendar_php"><!-- --></a>
|
||||
@ -154,7 +160,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -34,7 +34,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -77,7 +77,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">controlRequestContainer</span> (line <span class="line-number">57</span>)
|
||||
<span class="method-title">controlRequestContainer</span> (line <span class="line-number">58</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -87,7 +87,7 @@
|
||||
<span class="method-name">
|
||||
controlRequestContainer
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$username</span>, <span class="var-type">int</span> <span class="var-name">$user_no</span>, <span class="var-type">string</span> <span class="var-name">$path</span>, <span class="var-type">boolean</span> <span class="var-name">$caldav_context</span>)
|
||||
(<span class="var-type">string</span> <span class="var-name">$username</span>, <span class="var-type">int</span> <span class="var-name">$user_no</span>, <span class="var-type">string</span> <span class="var-name">$path</span>, <span class="var-type">boolean</span> <span class="var-name">$caldav_context</span>, [<span class="var-type">boolean</span> <span class="var-name">$public</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
@ -103,6 +103,9 @@
|
||||
<li>
|
||||
<span class="var-type">boolean</span>
|
||||
<span class="var-name">$caldav_context</span><span class="var-description">: Whether we are responding via CalDAV or interactively</span> </li>
|
||||
<li>
|
||||
<span class="var-type">boolean</span>
|
||||
<span class="var-name">$public</span><span class="var-description">: Whether the collection will be public, should we need to create it</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -112,7 +115,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">create_scheduling_requests</span> (line <span class="line-number">144</span>)
|
||||
<span class="method-title">create_scheduling_requests</span> (line <span class="line-number">148</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -141,7 +144,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">import_collection</span> (line <span class="line-number">209</span>)
|
||||
<span class="method-title">import_collection</span> (line <span class="line-number">213</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -176,7 +179,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">public_events_only</span> (line <span class="line-number">106</span>)
|
||||
<span class="method-title">public_events_only</span> (line <span class="line-number">110</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -208,7 +211,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">putCalendarResource</span> (line <span class="line-number">391</span>)
|
||||
<span class="method-title">putCalendarResource</span> (line <span class="line-number">396</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -284,7 +287,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">simple_write_resource</span> (line <span class="line-number">661</span>)
|
||||
<span class="method-title">simple_write_resource</span> (line <span class="line-number">666</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -319,7 +322,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">update_scheduling_requests</span> (line <span class="line-number">174</span>)
|
||||
<span class="method-title">update_scheduling_requests</span> (line <span class="line-number">178</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -348,7 +351,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">write_resource</span> (line <span class="line-number">483</span>)
|
||||
<span class="method-title">write_resource</span> (line <span class="line-number">488</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -404,7 +407,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">write_scheduling_request</span> (line <span class="line-number">136</span>)
|
||||
<span class="method-title">write_scheduling_request</span> (line <span class="line-number">140</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -438,7 +441,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -67,7 +67,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -187,7 +187,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:07 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -113,7 +113,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">getStaticLdap</span> (line <span class="line-number">199</span>)
|
||||
<span class="method-title">getStaticLdap</span> (line <span class="line-number">209</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -134,7 +134,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">LDAP_check</span> (line <span class="line-number">246</span>)
|
||||
<span class="method-title">LDAP_check</span> (line <span class="line-number">256</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -163,7 +163,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">sync_LDAP</span> (line <span class="line-number">316</span>)
|
||||
<span class="method-title">sync_LDAP</span> (line <span class="line-number">325</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -184,7 +184,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">sync_user_from_LDAP</span> (line <span class="line-number">216</span>)
|
||||
<span class="method-title">sync_user_from_LDAP</span> (line <span class="line-number">226</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -218,7 +218,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:09 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -141,7 +141,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:09 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -68,7 +68,7 @@
|
||||
<img src="../../media/images/Method.png" alt=" "/>
|
||||
<span class="method-result">array</span>
|
||||
<a href="#requestUser" title="details" class="method-name">requestUser</a>
|
||||
(<span class="var-type">string</span> <span class="var-name">$filter</span>, [<span class="var-type">array</span> <span class="var-name">$attributes</span> = <span class="var-default">NULL</span>], <span class="var-type">string</span> <span class="var-name">$passwd</span>)
|
||||
(<span class="var-type">string</span> <span class="var-name">$filter</span>, [<span class="var-type">array</span> <span class="var-name">$attributes</span> = <span class="var-default">NULL</span>], <span class="var-type"></span> <span class="var-name">$username</span>, <span class="var-type">string</span> <span class="var-name">$passwd</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -185,7 +185,7 @@
|
||||
<span class="method-name">
|
||||
requestUser
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$filter</span>, [<span class="var-type">array</span> <span class="var-name">$attributes</span> = <span class="var-default">NULL</span>], <span class="var-type">string</span> <span class="var-name">$passwd</span>)
|
||||
(<span class="var-type">string</span> <span class="var-name">$filter</span>, [<span class="var-type">array</span> <span class="var-name">$attributes</span> = <span class="var-default">NULL</span>], <span class="var-type"></span> <span class="var-name">$username</span>, <span class="var-type">string</span> <span class="var-name">$passwd</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
@ -198,6 +198,9 @@
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$passwd</span><span class="var-description">: password to check</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$username</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
@ -208,7 +211,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:09 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -133,7 +133,7 @@
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:59 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:09 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
94
docs/api/davical/logging/_inc---log_caldav_action.php.html
Normal file
94
docs/api/davical/logging/_inc---log_caldav_action.php.html
Normal file
@ -0,0 +1,94 @@
|
||||
<?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 log_caldav_action.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/log_caldav_action.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-functions">Functions</a>
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Allows logging of CalDAV actions (PUT/DELETE) for possible export or sync through some other glue.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">author:</span> Andrew McMillan <<a href="mailto:andrew@morphoss.com">andrew@morphoss.com</a>></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
|
||||
|
||||
This file is intended to be used as a template, perhaps the user of this service
|
||||
will want to log actions in a very different manner and this can be used as an
|
||||
example of how to go about doing that.</a></li>
|
||||
</ul>
|
||||
|
||||
</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> |
|
||||
<span class="disabled">Functions</span>
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<a name="functionlog_caldav_action" id="functionlog_caldav_action"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">log_caldav_action</span> (line <span class="line-number">26</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Log the action</p>
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
log_caldav_action
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$action_type</span>, <span class="var-type">string</span> <span class="var-name">$uid</span>, <span class="var-type">integer</span> <span class="var-name">$user_no</span>, <span class="var-type">integer</span> <span class="var-name">$collection_id</span>, <span class="var-type">string</span> <span class="var-name">$dav_name</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$action_type</span><span class="var-description">: INSERT / UPDATE or DELETE</span> </li>
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$uid</span><span class="var-description">: The UID of the modified item</span> </li>
|
||||
<li>
|
||||
<span class="var-type">integer</span>
|
||||
<span class="var-name">$user_no</span><span class="var-description">: The user owning the containing collection.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">integer</span>
|
||||
<span class="var-name">$collection_id</span><span class="var-description">: The ID of the containing collection.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$dav_name</span><span class="var-description">: The DAV path of the item, relative to the DAViCal base path</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:10 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -282,7 +282,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">get_collection</span> (line <span class="line-number">677</span>)
|
||||
<span class="method-title">get_collection</span> (line <span class="line-number">678</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -347,7 +347,7 @@
|
||||
|
||||
<div>
|
||||
<img src="../../media/images/Function.png" />
|
||||
<span class="method-title">get_item</span> (line <span class="line-number">752</span>)
|
||||
<span class="method-title">get_item</span> (line <span class="line-number">753</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
@ -453,7 +453,7 @@
|
||||
</div>
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:11:57 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:06 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
@ -109,15 +109,7 @@
|
||||
<span class="method-title">AllowedTo</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/Request/CalDAVRequest.html#methodAllowedTo">CalDAVRequest::AllowedTo()</a> in CalDAVRequest.php</div>
|
||||
<div class="index-item-description">Are we allowed to do the requested activity</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">AllowedTo</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/PublicSession/PublicSession.html#methodAllowedTo">PublicSession::AllowedTo()</a> in PublicSession.php</div>
|
||||
<div class="index-item-details"><a href="davical/HTTPAuthSession/HTTPAuthSession.html#methodAllowedTo">HTTPAuthSession::AllowedTo()</a> in HTTPAuthSession.php</div>
|
||||
<div class="index-item-description">Checks whether a user is allowed to do something.</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
@ -133,11 +125,19 @@
|
||||
<span class="method-title">AllowedTo</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/HTTPAuthSession/HTTPAuthSession.html#methodAllowedTo">HTTPAuthSession::AllowedTo()</a> in HTTPAuthSession.php</div>
|
||||
<div class="index-item-details"><a href="davical/PublicSession/PublicSession.html#methodAllowedTo">PublicSession::AllowedTo()</a> in PublicSession.php</div>
|
||||
<div class="index-item-description">Checks whether a user is allowed to do something.</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">AllowedTo</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/Request/CalDAVRequest.html#methodAllowedTo">CalDAVRequest::AllowedTo()</a> in CalDAVRequest.php</div>
|
||||
<div class="index-item-description">Are we allowed to do the requested activity</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">ApplyBySetPos</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
@ -192,13 +192,6 @@
|
||||
<div class="index-item-details"><a href="davical/HTTPAuthSession/HTTPAuthSession.html#methodAuthFailedResponse">HTTPAuthSession::AuthFailedResponse()</a> in HTTPAuthSession.php</div>
|
||||
<div class="index-item-description">Authorisation failed, so we send some headers to say so.</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Function.png" alt="Function" title="Function" />
|
||||
<span class="method-title">AuthFamjama</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/_inc---auth-famjama.php.html#functionAuthFamjama">AuthFamjama()</a> in auth-famjama.php</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Page.png" alt="Page" title="Page" />
|
||||
<span class="include-title">always.php</span>
|
||||
@ -208,13 +201,6 @@
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Page.png" alt="Page" title="Page" />
|
||||
<span class="include-title">auth-famjama.php</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/_inc---auth-famjama.php.html">auth-famjama.php</a> in auth-famjama.php</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Page.png" alt="Page" title="Page" />
|
||||
<span class="include-title">auth-functions.php</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
@ -627,6 +613,13 @@
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Variable.png" alt="Variable" title="Variable" />
|
||||
<span class="var-title">$delete_user_confirmation_required</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#var$delete_user_confirmation_required">DAViCalUser::$delete_user_confirmation_required</a> in DAViCalUser.php</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Variable.png" alt="Variable" title="Variable" />
|
||||
<span class="var-title">$depth</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
@ -1316,6 +1309,14 @@
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">IsCalendar</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/Request/CalDAVRequest.html#methodIsCalendar">CalDAVRequest::IsCalendar()</a> in CalDAVRequest.php</div>
|
||||
<div class="index-item-description">Returns true if the URL referenced by this request points at a calendar collection.</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">IsCollection</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
@ -1797,6 +1798,14 @@
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">Render</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#methodRender">DAViCalUser::Render()</a> in DAViCalUser.php</div>
|
||||
<div class="index-item-description">Render the form / viewer as HTML to show the user</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">render</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
@ -1812,14 +1821,6 @@
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">Render</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#methodRender">DAViCalUser::Render()</a> in DAViCalUser.php</div>
|
||||
<div class="index-item-description">Render the form / viewer as HTML to show the user</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">RenderAsXML</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
@ -1851,14 +1852,6 @@
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">RenderImportIcs</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#methodRenderImportIcs">DAViCalUser::RenderImportIcs()</a> in DAViCalUser.php</div>
|
||||
<div class="index-item-description">Render input file to import ics in calendar user</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">RenderPrivileges</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
|
||||
@ -78,13 +78,6 @@
|
||||
<div class="index-item-details"><a href="davical/_inc---caldav-REPORT-calquery.php.html#functionapply_filter">apply_filter()</a> in caldav-REPORT-calquery.php</div>
|
||||
<div class="index-item-description">While we can construct our SQL to apply some filters in the query, other filters need to be checked against the retrieved record. This is for handling those ones.</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Function.png" alt="Function" title="Function" />
|
||||
<span class="method-title">AuthFamjama</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/_inc---auth-famjama.php.html#functionAuthFamjama">AuthFamjama()</a> in auth-famjama.php</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Page.png" alt="Page" title="Page" />
|
||||
<span class="include-title">always.php</span>
|
||||
@ -92,13 +85,6 @@
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/_inc---always.php.html">always.php</a> in always.php</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Page.png" alt="Page" title="Page" />
|
||||
<span class="include-title">auth-famjama.php</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/_inc---auth-famjama.php.html">auth-famjama.php</a> in auth-famjama.php</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Function.png" alt="Function" title="Function" />
|
||||
<span class="method-title">AuthExternalAWL</span>
|
||||
@ -599,12 +585,11 @@
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#var$delete_collection_confirmation_required">DAViCalUser::$delete_collection_confirmation_required</a> in DAViCalUser.php</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Constructor.png" alt="Method" title="Method" />
|
||||
<span class="method-title">DAViCalUser</span>
|
||||
<img src="media/images/Variable.png" alt="Variable" title="Variable" />
|
||||
<span class="var-title">$delete_user_confirmation_required</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#methodDAViCalUser">DAViCalUser::DAViCalUser()</a> in DAViCalUser.php</div>
|
||||
<div class="index-item-description">Constructor - nothing fancy as yet.</div>
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#var$delete_user_confirmation_required">DAViCalUser::$delete_user_confirmation_required</a> in DAViCalUser.php</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Class.png" alt="Class" title="Class" />
|
||||
@ -614,6 +599,14 @@
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html">DAViCalUser</a> in DAViCalUser.php</div>
|
||||
<div class="index-item-description">A class for viewing and maintaining DAViCal User records</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Constructor.png" alt="Method" title="Method" />
|
||||
<span class="method-title">DAViCalUser</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#methodDAViCalUser">DAViCalUser::DAViCalUser()</a> in DAViCalUser.php</div>
|
||||
<div class="index-item-description">Constructor - nothing fancy as yet.</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Page.png" alt="Page" title="Page" />
|
||||
<span class="include-title">DAViCalUser.php</span>
|
||||
@ -969,6 +962,14 @@
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">IsCalendar</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/Request/CalDAVRequest.html#methodIsCalendar">CalDAVRequest::IsCalendar()</a> in CalDAVRequest.php</div>
|
||||
<div class="index-item-description">Returns true if the URL referenced by this request points at a calendar collection.</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">IsCollection</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
@ -1317,14 +1318,6 @@
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">RenderImportIcs</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
<div class="index-item-details"><a href="davical/DAViCalUser/DAViCalUser.html#methodRenderImportIcs">DAViCalUser::RenderImportIcs()</a> in DAViCalUser.php</div>
|
||||
<div class="index-item-description">Render input file to import ics in calendar user</div>
|
||||
</dd>
|
||||
<dt class="field">
|
||||
<img src="media/images/Method.png" alt="Method" title="Method" />
|
||||
<span class="method-title">RenderRelationshipsFrom</span>
|
||||
</dt>
|
||||
<dd class="index-item-body">
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
</head>
|
||||
<body>
|
||||
<a href="#Post-parsing">Post-parsing</a><br />
|
||||
<a href="#auth-famjama.php">auth-famjama.php</a><br />
|
||||
<a href="#auth-functions.php">auth-functions.php</a><br />
|
||||
<a href="#caldav-GET.php">caldav-GET.php</a><br />
|
||||
<a href="#caldav-LOCK.php">caldav-LOCK.php</a><br />
|
||||
@ -51,16 +50,14 @@
|
||||
<a name="Post-parsing"></a>
|
||||
<h1>Post-parsing</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning</b> - Class DAViCalUser parent User not found<br />
|
||||
<b>Warning</b> - Class DAViCalSession parent Session not found<br />
|
||||
<b>Warning</b> - Class DAViCalUser parent User not found<br />
|
||||
<a name="always.php"></a>
|
||||
<h1>always.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 43</b> - Page-level DocBlock precedes "require_once "AWLUtilities.php"", use another DocBlock to document the source element<br />
|
||||
<a name="auth-famjama.php"></a>
|
||||
<h1>auth-famjama.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 52</b> - File "/home/andrew/projects/davical/inc/auth-famjama.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 53</b> - Page-level DocBlock precedes "require_once "AWLUtilities.php"", use another DocBlock to document the source element<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 53</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<a name="auth-functions.php"></a>
|
||||
<h1>auth-functions.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
@ -78,25 +75,28 @@
|
||||
<a name="caldav-LOCK.php"></a>
|
||||
<h1>caldav-LOCK.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 136</b> - File "/home/andrew/projects/davical/inc/caldav-LOCK.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 136</b> - File "/home/karora/Desktop/Projects/davical/inc/caldav-LOCK.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="caldav-MKCALENDAR.php"></a>
|
||||
<h1>caldav-MKCALENDAR.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 30</b> - Page-level DocBlock precedes "require_once "XMLDocument.php"", use another DocBlock to document the source element<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 30</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<b>Error on line 30</b> - "include" require_once's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage caldav"<br />
|
||||
<b>Error on line 30</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<a name="caldav-POST.php"></a>
|
||||
<h1>caldav-POST.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 12</b> - Page-level DocBlock precedes "require_once "XMLDocument.php"", use another DocBlock to document the source element<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 12</b> - "include" require_once's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage caldav"<br />
|
||||
<b>Error on line 12</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<a name="caldav-PROPFIND.php"></a>
|
||||
<h1>caldav-PROPFIND.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 16</b> - Page-level DocBlock precedes "require_once 'iCalendar.php'", use another DocBlock to document the source element<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 16</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<b>Error on line 16</b> - "include" require_once's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage propfind"<br />
|
||||
<b>Error on line 16</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<a name="caldav-PUT-functions.php"></a>
|
||||
<h1>caldav-PUT-functions.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
@ -106,25 +106,26 @@
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 24</b> - Page-level DocBlock precedes "include_once 'caldav-PUT-functions.php'", use another DocBlock to document the source element<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 24</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<b>Error on line 24</b> - "include" include_once's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage caldav"<br />
|
||||
<b>Error on line 24</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<a name="caldav-REPORT-calquery.php"></a>
|
||||
<h1>caldav-REPORT-calquery.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 32</b> - no @package tag was used in a DocBlock for file /home/andrew/projects/davical/inc/caldav-REPORT-calquery.php<br />
|
||||
<b>Warning on line 32</b> - no @package tag was used in a DocBlock for file /home/karora/Desktop/Projects/davical/inc/caldav-REPORT-calquery.php<br />
|
||||
<b>Warning on line 32</b> - package davical is already in category Technical, will now replace with category Documentation<br />
|
||||
<a name="caldav-REPORT-freebusy.php"></a>
|
||||
<h1>caldav-REPORT-freebusy.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 95</b> - File "/home/andrew/projects/davical/inc/caldav-REPORT-freebusy.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 95</b> - File "/home/karora/Desktop/Projects/davical/inc/caldav-REPORT-freebusy.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="caldav-REPORT-multiget.php"></a>
|
||||
<h1>caldav-REPORT-multiget.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 11</b> - no @package tag was used in a DocBlock for file /home/andrew/projects/davical/inc/caldav-REPORT-multiget.php<br />
|
||||
<b>Warning on line 11</b> - package davical is already in category Technical, will now replace with category Documentation<br />
|
||||
<b>Warning on line 11</b> - no @package tag was used in a DocBlock for file /home/karora/Desktop/Projects/davical/inc/caldav-REPORT-multiget.php<br />
|
||||
<a name="caldav-REPORT-principal.php"></a>
|
||||
<h1>caldav-REPORT-principal.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 33</b> - no @package tag was used in a DocBlock for file /home/andrew/projects/davical/inc/caldav-REPORT-principal.php<br />
|
||||
<b>Warning on line 33</b> - no @package tag was used in a DocBlock for file /home/karora/Desktop/Projects/davical/inc/caldav-REPORT-principal.php<br />
|
||||
<a name="caldav-REPORT.php"></a>
|
||||
<h1>caldav-REPORT.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
@ -136,7 +137,7 @@
|
||||
<h1>caldav.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 10</b> - Page-level DocBlock precedes "require_once "../inc/always.php"", use another DocBlock to document the source element<br />
|
||||
<b>Warning on line 39</b> - Unknown tag "@TODO:" used<br />
|
||||
<b>Warning on line 35</b> - Unknown tag "@TODO:" used<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 10</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<b>Error on line 10</b> - "include" require_once's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage caldav"<br />
|
||||
@ -145,27 +146,27 @@
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 16</b> - Page-level DocBlock precedes "require_once "XMLElement.php"", use another DocBlock to document the source element<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 16</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<b>Error on line 16</b> - "include" require_once's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage Request"<br />
|
||||
<b>Error on line 16</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<a name="check_UTF8.php"></a>
|
||||
<h1>check_UTF8.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 227</b> - File "/home/andrew/projects/davical/inc/check_UTF8.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 227</b> - File "/home/karora/Desktop/Projects/davical/inc/check_UTF8.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="collection.php"></a>
|
||||
<h1>collection.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 48</b> - File "/home/andrew/projects/davical/htdocs/collection.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 47</b> - File "/home/karora/Desktop/Projects/davical/htdocs/collection.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="DAViCalUser.php"></a>
|
||||
<h1>DAViCalUser.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 11</b> - Page-level DocBlock precedes "require "User.php"", use another DocBlock to document the source element<br />
|
||||
<b>Warning on line 11</b> - Page-level DocBlock precedes "include 'User.php'", use another DocBlock to document the source element<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 11</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<b>Error on line 11</b> - "include" require's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage DAViCalUser"<br />
|
||||
<b>Error on line 11</b> - "include" include's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage DAViCalUser"<br />
|
||||
<a name="davical_configuration_missing.php"></a>
|
||||
<h1>davical_configuration_missing.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 30</b> - File "/home/andrew/projects/davical/inc/davical_configuration_missing.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 30</b> - File "/home/karora/Desktop/Projects/davical/inc/davical_configuration_missing.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="drivers_ldap.php"></a>
|
||||
<h1>drivers_ldap.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
@ -180,40 +181,40 @@
|
||||
<b>Warning on line 12</b> - Page-level DocBlock precedes "require_once "auth-functions.php"", use another DocBlock to document the source element<br />
|
||||
<b>Warning on line 15</b> - no @package tag was used in a DocBlock for class squidPamDrivers<br />
|
||||
<h2>Errors:</h2><br />
|
||||
<b>Error on line 12</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<b>Error on line 12</b> - "include" require_once's DocBlock has @subpackage tags, illegal. ignoring tag "@subpackage ldap"<br />
|
||||
<b>Error on line 12</b> - DocBlock has multiple @package tags, illegal. ignoring additional tag "@package davical"<br />
|
||||
<a name="freebusy-GET.php"></a>
|
||||
<h1>freebusy-GET.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 117</b> - File "/home/andrew/projects/davical/inc/freebusy-GET.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 117</b> - File "/home/karora/Desktop/Projects/davical/inc/freebusy-GET.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="freebusy.php"></a>
|
||||
<h1>freebusy.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 50</b> - File "/home/andrew/projects/davical/htdocs/freebusy.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 50</b> - File "/home/karora/Desktop/Projects/davical/htdocs/freebusy.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="help.php"></a>
|
||||
<h1>help.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 19</b> - File "/home/andrew/projects/davical/htdocs/help.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 19</b> - File "/home/karora/Desktop/Projects/davical/htdocs/help.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="index.php"></a>
|
||||
<h1>index.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 68</b> - File "/home/andrew/projects/davical/htdocs/index.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 68</b> - File "/home/karora/Desktop/Projects/davical/htdocs/index.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="interactive-page.php"></a>
|
||||
<h1>interactive-page.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 20</b> - File "/home/andrew/projects/davical/inc/interactive-page.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 20</b> - File "/home/karora/Desktop/Projects/davical/inc/interactive-page.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="other_translated_strings.php"></a>
|
||||
<h1>other_translated_strings.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 44</b> - File "/home/andrew/projects/davical/inc/other_translated_strings.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 44</b> - File "/home/karora/Desktop/Projects/davical/inc/other_translated_strings.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="page-footer.php"></a>
|
||||
<h1>page-footer.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 7</b> - File "/home/andrew/projects/davical/inc/page-footer.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 7</b> - File "/home/karora/Desktop/Projects/davical/inc/page-footer.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="page-header.php"></a>
|
||||
<h1>page-header.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 90</b> - File "/home/andrew/projects/davical/inc/page-header.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 90</b> - File "/home/karora/Desktop/Projects/davical/inc/page-header.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="PdoQuery.php"></a>
|
||||
<h1>PdoQuery.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
@ -228,24 +229,23 @@
|
||||
<a name="relationship_types.php"></a>
|
||||
<h1>relationship_types.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 107</b> - File "/home/andrew/projects/davical/htdocs/relationship_types.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 107</b> - File "/home/karora/Desktop/Projects/davical/htdocs/relationship_types.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="roles.php"></a>
|
||||
<h1>roles.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 39</b> - File "/home/andrew/projects/davical/htdocs/roles.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 39</b> - File "/home/karora/Desktop/Projects/davical/htdocs/roles.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="test-RRULE.php"></a>
|
||||
<h1>test-RRULE.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 10</b> - no @package tag was used in a DocBlock for class RRuleTest<br />
|
||||
<b>Warning on line 94</b> - File "/home/andrew/projects/davical/inc/test-RRULE.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 94</b> - File "/home/karora/Desktop/Projects/davical/inc/test-RRULE.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="testpdo.php"></a>
|
||||
<h1>testpdo.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 3</b> - File "/home/andrew/projects/davical/htdocs/testpdo.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 3</b> - File "/home/karora/Desktop/Projects/davical/htdocs/testpdo.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<a name="tools.php"></a>
|
||||
<h1>tools.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 11</b> - package davical is already in category Technical, will now replace with category Documentation<br />
|
||||
<b>Warning on line 11</b> - Page-level DocBlock precedes "require_once "../inc/always.php"", use another DocBlock to document the source element<br />
|
||||
<b>Warning on line 35</b> - no @package tag was used in a DocBlock for class Tools<br />
|
||||
<h2>Errors:</h2><br />
|
||||
@ -261,9 +261,9 @@
|
||||
<a name="usr.php"></a>
|
||||
<h1>usr.php</h1>
|
||||
<h2>Warnings:</h2><br />
|
||||
<b>Warning on line 93</b> - File "/home/andrew/projects/davical/htdocs/usr.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<b>Warning on line 67</b> - File "/home/karora/Desktop/Projects/davical/htdocs/usr.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br />
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:01 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:12 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
@ -4,7 +4,7 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- Generated by phpDocumentor on Sat, 12 Sep 2009 00:11:56 +1200 -->
|
||||
<!-- Generated by phpDocumentor on Tue, 06 Oct 2009 02:03:04 -0700 -->
|
||||
<title>DAViCal</title>
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
|
||||
@ -26,7 +26,6 @@
|
||||
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='davical/RRuleTest.html' target='right'>RRuleTest</a></dd>
|
||||
<dt class="folder-title"><img class="tree-icon" src="media/images/function_folder.png" alt=" ">Functions</dt>
|
||||
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='davical/_inc---caldav-REPORT-calquery.php.html#functionapply_filter' target='right'>apply_filter</a></dd>
|
||||
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='davical/_inc---auth-famjama.php.html#functionAuthFamjama' target='right'>AuthFamjama</a></dd>
|
||||
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='davical/_inc---caldav-REPORT-calquery.php.html#functionBuildSqlFilter' target='right'>BuildSqlFilter</a></dd>
|
||||
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='davical/_inc---check_UTF8.php.html#functioncheck_string' target='right'>check_string</a></dd>
|
||||
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='davical/_inc---always.php.html#functionConstructURL' target='right'>ConstructURL</a></dd>
|
||||
@ -41,7 +40,6 @@
|
||||
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='davical/_inc---check_UTF8.php.html#functionutf8ToUnicode' target='right'>utf8ToUnicode</a></dd>
|
||||
<dt class="folder-title"><img class="tree-icon" src="media/images/folder.png" alt=" ">Files</dt>
|
||||
<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='davical/_inc---always.php.html' target='right'>always.php</a></dd>
|
||||
<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='davical/_inc---auth-famjama.php.html' target='right'>auth-famjama.php</a></dd>
|
||||
<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='davical/_inc---caldav-LOCK.php.html' target='right'>caldav-LOCK.php</a></dd>
|
||||
<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='davical/_inc---caldav-REPORT-calquery.php.html' target='right'>caldav-REPORT-calquery.php</a></dd>
|
||||
<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='davical/_inc---caldav-REPORT-freebusy.php.html' target='right'>caldav-REPORT-freebusy.php</a></dd>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<li>Make this a defined constant</li>
|
||||
</ul>
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Sat, 12 Sep 2009 00:12:01 +1200 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
Documentation generated on Tue, 06 Oct 2009 02:03:12 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
33
htdocs/.htaccess
Normal file
33
htdocs/.htaccess
Normal file
@ -0,0 +1,33 @@
|
||||
|
||||
# SetHandler php-script
|
||||
|
||||
#<LimitExcept MOVE COPY CONNECT>
|
||||
# Order allow,deny
|
||||
# Allow from all
|
||||
#</LimitExcept>
|
||||
#
|
||||
#<Limit MOVE COPY CONNECT>
|
||||
# Order deny,allow
|
||||
# Deny from all
|
||||
#</Limit>
|
||||
|
||||
# RewriteEngine On
|
||||
|
||||
# # 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, stylesheet or image
|
||||
# RewriteCond %{REQUEST_URI} !\.(php|css|js|png|gif|jpg)
|
||||
|
||||
# # Everything else gets rewritten to /caldav.php/...
|
||||
# RewriteRule ^(.*)$ /caldav.php$1 [NC,L]
|
||||
|
||||
# # php_value include_path /usr/share/awl/inc
|
||||
# php_value magic_quotes_gpc 0
|
||||
# php_value register_globals 0
|
||||
# php_value open_basedir 1
|
||||
# php_value error_reporting "E_ALL & ~E_NOTICE"
|
||||
# php_value default_charset "utf-8"
|
||||
|
||||
@ -2,8 +2,14 @@
|
||||
require_once("../inc/always.php");
|
||||
dbg_error_log( "freebusy", " User agent: %s", ((isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "Unfortunately Mulberry and Chandler don't send a 'User-agent' header with their requests :-(")) );
|
||||
dbg_log_array( "headers", '_SERVER', $_SERVER, true );
|
||||
require_once("HTTPAuthSession.php");
|
||||
$session = new HTTPAuthSession();
|
||||
if ( isset($c->public_freebusy_url) && $c->public_freebusy_url ) {
|
||||
require_once("PublicSession.php");
|
||||
$session = new PublicSession();
|
||||
}
|
||||
else {
|
||||
require_once("HTTPAuthSession.php");
|
||||
$session = new HTTPAuthSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* Submission parameters recommended by calconnect, plus some generous alternatives
|
||||
|
||||
@ -309,21 +309,6 @@ class CalDAVPrincipal
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the array of privilege names converted into XMLElements
|
||||
*/
|
||||
function RenderPrivileges($privilege_names, $container='privilege') {
|
||||
global $reply;
|
||||
$privileges = array();
|
||||
foreach( $privilege_names AS $k => $v ) {
|
||||
$privilege = new XMLElement($container);
|
||||
$reply->NSElement($privilege,$k);
|
||||
$privileges[] = $privilege;
|
||||
}
|
||||
return $privileges;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render XML for a single Principal (user) from the DB
|
||||
*
|
||||
@ -368,6 +353,13 @@ class CalDAVPrincipal
|
||||
$prop->NewElement('creationdate', $this->created );
|
||||
break;
|
||||
|
||||
case 'DAV::getcontentlanguage':
|
||||
/** Use the principal's locale by preference, otherwise system default */
|
||||
$locale = (isset($c->current_locale) ? $c->current_locale : '');
|
||||
if ( isset($this->locale) && $this->locale != '' ) $locale = $this->locale;
|
||||
$prop->NewElement('getcontentlanguage', $locale );
|
||||
break;
|
||||
|
||||
case 'DAV::group-member-set':
|
||||
$prop->NewElement('group-member-set', $reply->href($this->group_member_set) );
|
||||
break;
|
||||
@ -400,72 +392,38 @@ class CalDAVPrincipal
|
||||
$reply->CalDAVElement($prop, 'calendar-user-address-set', $reply->href($this->user_address_set) );
|
||||
break;
|
||||
|
||||
// case 'urn:ietf:params:xml:ns:caldav:supported-calendar-component-set':
|
||||
// // Note that this won't appear on a PROPFIND against a Principal URL, since this routine is only called for a collection
|
||||
// $components = array();
|
||||
// $set_of_components = array( 'VEVENT', 'VTODO', 'VJOURNAL', 'VTIMEZONE', 'VFREEBUSY' );
|
||||
// foreach( $set_of_components AS $v ) {
|
||||
// $components[] = $reply->NewXMLElement( 'comp', '', array('name' => $v), 'urn:ietf:params:xml:ns:caldav');
|
||||
// }
|
||||
// $reply->CalDAVElement($prop, 'supported-calendar-component-set', $components );
|
||||
// break;
|
||||
|
||||
case 'DAV::getcontentlanguage':
|
||||
$locale = (isset($c->current_locale) ? $c->current_locale : '');
|
||||
if ( isset($this->locale) && $this->locale != '' ) $locale = $this->locale;
|
||||
$prop->NewElement('getcontentlanguage', $locale );
|
||||
case 'DAV::owner':
|
||||
// After a careful reading of RFC3744 we see that this must be the principal-URL of the owner
|
||||
$reply->DAVElement( $prop, 'owner', $reply->href( $this->principal_url ) );
|
||||
break;
|
||||
|
||||
case 'DAV::supportedlock':
|
||||
$prop->NewElement('supportedlock',
|
||||
new XMLElement( 'lockentry',
|
||||
array(
|
||||
new XMLElement('lockscope', new XMLElement('exclusive')),
|
||||
new XMLElement('locktype', new XMLElement('write')),
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
case 'DAV::principal-collection-set':
|
||||
$reply->DAVElement( $prop, 'principal-collection-set', $reply->href( ConstructURL('/') ) );
|
||||
break;
|
||||
|
||||
case 'DAV::acl':
|
||||
/**
|
||||
* @todo This information is semantically valid but presents an incorrect picture.
|
||||
*/
|
||||
$principal = new XMLElement('principal');
|
||||
$principal->NewElement('authenticated');
|
||||
$grant = new XMLElement( 'grant', array($this->RenderPrivileges($request->permissions)) );
|
||||
$prop->NewElement('acl', new XMLElement( 'ace', array( $principal, $grant ) ) );
|
||||
break;
|
||||
|
||||
case 'DAV::current-user-privilege-set':
|
||||
$prop->NewElement('current-user-privilege-set', $this->RenderPrivileges($request->permissions) );
|
||||
break;
|
||||
|
||||
case 'DAV::supported-privilege-set':
|
||||
$prop->NewElement('supported-privilege-set', $this->RenderPrivileges( $request->SupportedPrivileges(), 'supported-privilege') );
|
||||
break;
|
||||
|
||||
|
||||
// Empty tag responses.
|
||||
case 'DAV::alternate-URI-set':
|
||||
case 'DAV::getcontentlength':
|
||||
$prop->NewElement( $reply->Tag($tag));
|
||||
break;
|
||||
|
||||
// case 'http://calendarserver.org/ns/:getctag':
|
||||
// $reply->CalendarServerElement( $prop, 'getctag', '"'.md5($this->username . $this->updated).'"' );
|
||||
// break;
|
||||
// case 'DAV::getetag':
|
||||
// $reply->DAVElement( $prop, 'getetag', '"'.md5($this->username . $this->updated).'"' );
|
||||
// break;
|
||||
|
||||
case 'SOME-DENIED-PROPERTY': /** @todo indicating the style for future expansion */
|
||||
$denied[] = $reply->Tag($tag);
|
||||
break;
|
||||
|
||||
default:
|
||||
dbg_error_log( 'principal', 'Request for unsupported property "%s" of principal "%s".', $tag, $this->username );
|
||||
case 'http://calendarserver.org/ns/:getctag':
|
||||
case 'DAV::getetag':
|
||||
case 'urn:ietf:params:xml:ns:caldav:supported-calendar-component-set':
|
||||
// These will 404 on a Principal, since they don't apply
|
||||
$not_found[] = $reply->Tag($tag);
|
||||
break;
|
||||
|
||||
default:
|
||||
if ( ! $request->ServerProperty( $tag, $prop, $reply ) ) {
|
||||
dbg_error_log( 'principal', 'Request for unsupported property "%s" of principal "%s".', $tag, $this->username );
|
||||
$not_found[] = $reply->Tag($tag);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -77,12 +77,33 @@ class CalDAVRequest
|
||||
*/
|
||||
var $collection_type;
|
||||
|
||||
/**
|
||||
* A static structure of supported privileges.
|
||||
*/
|
||||
var $supported_privileges;
|
||||
|
||||
/**
|
||||
* Create a new CalDAVRequest object.
|
||||
*/
|
||||
function CalDAVRequest( $options = array() ) {
|
||||
global $session, $c, $debugging;
|
||||
|
||||
$this->supported_privileges = array(
|
||||
'all' => array(
|
||||
'read' => 'Read the content of a resource or collection',
|
||||
'write' => array(
|
||||
'bind' => 'Create a resource or collection',
|
||||
'unbind' => 'Delete a resource or collection',
|
||||
'write-content' => 'Write content',
|
||||
'write-properties' => 'Write properties'
|
||||
),
|
||||
'urn:ietf:params:xml:ns:caldav:read-free-busy' => 'Read the free/busy information for a calendar collection',
|
||||
'read-acl' => 'Read ACLs for a resource or collection',
|
||||
'write-acl' => 'Write ACLs for a resource or collection',
|
||||
'unlock' => 'Remove a lock'
|
||||
)
|
||||
);
|
||||
|
||||
$this->options = $options;
|
||||
if ( !isset($this->options['allow_by_email']) ) $this->options['allow_by_email'] = false;
|
||||
$this->principal = (object) array( 'username' => $session->username, 'user_no' => $session->user_no );
|
||||
@ -350,6 +371,81 @@ EOSQL;
|
||||
*/
|
||||
$this->setPermissions();
|
||||
|
||||
$this->supported_methods = array(
|
||||
'OPTIONS' => '',
|
||||
'PROPFIND' => '',
|
||||
'REPORT' => '',
|
||||
'DELETE' => '',
|
||||
'LOCK' => '',
|
||||
'UNLOCK' => ''
|
||||
);
|
||||
if ( $this->IsCollection() ) {
|
||||
$this->supported_methods = array_merge(
|
||||
$this->supported_methods,
|
||||
array(
|
||||
'MKCOL' => '',
|
||||
'GET' => '',
|
||||
'HEAD' => '',
|
||||
'PUT' => ''
|
||||
)
|
||||
);
|
||||
if ( $this->IsPrincipal() ) {
|
||||
$this->supported_methods = array_merge(
|
||||
$this->supported_methods,
|
||||
array(
|
||||
'MKCALENDAR' => ''
|
||||
)
|
||||
);
|
||||
}
|
||||
switch ( $this->collection_type ) {
|
||||
case 'root':
|
||||
case 'email':
|
||||
// We just override the list completely here.
|
||||
$this->supported_methods = array(
|
||||
'OPTIONS' => '',
|
||||
'GET' => '',
|
||||
'HEAD' => '',
|
||||
'PROPFIND' => '',
|
||||
'REPORT' => ''
|
||||
);
|
||||
break;
|
||||
case 'schedule-inbox':
|
||||
case 'schedule-outbox':
|
||||
$this->supported_methods = array_merge(
|
||||
$this->supported_methods,
|
||||
array(
|
||||
'POST' => ''
|
||||
)
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->supported_methods = array_merge(
|
||||
$this->supported_methods,
|
||||
array(
|
||||
'GET' => '',
|
||||
'HEAD' => '',
|
||||
'PUT' => ''
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$this->supported_reports = array(
|
||||
'DAV::principal-property-search' => ''
|
||||
);
|
||||
if ( $this->IsCalendar() ) {
|
||||
$this->supported_reports = array_merge(
|
||||
$this->supported_reports,
|
||||
array(
|
||||
'urn:ietf:params:xml:ns:caldav:calendar-query' => '',
|
||||
'urn:ietf:params:xml:ns:caldav:calendar-multiget' => '',
|
||||
'urn:ietf:params:xml:ns:caldav:free-busy-query' => ''
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* If the content we are receiving is XML then we parse it here. RFC2518 says we
|
||||
* should reasonably expect to see either text/xml or application/xml
|
||||
@ -426,7 +522,7 @@ EOSQL;
|
||||
*
|
||||
*/
|
||||
function setPermissions() {
|
||||
global $session;
|
||||
global $c, $session;
|
||||
|
||||
if ( $this->path == '/' || $this->path == '' ) {
|
||||
$this->permissions = array("read" => 'read' );
|
||||
@ -435,25 +531,31 @@ EOSQL;
|
||||
}
|
||||
|
||||
if ( $session->AllowedTo("Admin") || $session->user_no == $this->user_no ) {
|
||||
$this->permissions = array('all' => 'all' );
|
||||
$this->permissions['urn:ietf:params:xml:ns:caldav:read-free-busy'] = 'urn:ietf:params:xml:ns:caldav:read-free-busy';
|
||||
$this->permissions['read'] = 'read';
|
||||
$this->permissions['write'] = 'write';
|
||||
$this->permissions['bind'] = 'bind'; // PUT of new content (i.e. Create)
|
||||
$this->permissions['unbind'] = 'unbind'; // DELETE
|
||||
$this->permissions['write-content'] = 'write-content'; // PUT Modify
|
||||
$this->permissions['write-properties'] = 'write-properties'; // PROPPATCH
|
||||
$this->permissions['lock'] = 'lock';
|
||||
$this->permissions['unlock'] = 'unlock';
|
||||
$this->permissions['read-acl'] = 'read-acl';
|
||||
$this->permissions['read-current-user-privilege-set'] = 'read-current-user-privilege-set';
|
||||
$this->permissions = array('all' => 'abstract' );
|
||||
$this->permissions['urn:ietf:params:xml:ns:caldav:read-free-busy'] = 'real';
|
||||
$this->permissions['read'] = 'real';
|
||||
$this->permissions['write'] = 'aggregate';
|
||||
$this->permissions['bind'] = 'real'; // PUT of new content (i.e. Create)
|
||||
$this->permissions['unbind'] = 'real'; // DELETE
|
||||
$this->permissions['write-content'] = 'real'; // PUT Modify
|
||||
$this->permissions['write-properties'] = 'real'; // PROPPATCH
|
||||
$this->permissions['lock'] = 'real';
|
||||
$this->permissions['unlock'] = 'real';
|
||||
$this->permissions['read-acl'] = 'real';
|
||||
$this->permissions['read-current-user-privilege-set'] = 'real';
|
||||
dbg_error_log( "caldav", "Full permissions for %s", ( $session->user_no == $this->user_no ? "user accessing their own hierarchy" : "a systems administrator") );
|
||||
return;
|
||||
}
|
||||
|
||||
$this->permissions = array();
|
||||
|
||||
if ( $this->IsPublic() ) $this->permissions['read'] = 'read';
|
||||
if ( $this->IsPublic() ) {
|
||||
$this->permissions['read'] = 'real';
|
||||
$this->permissions['urn:ietf:params:xml:ns:caldav:read-free-busy'] = 'real';
|
||||
}
|
||||
else if ( isset($c->public_freebusy_url) && $c->public_freebusy_url ) {
|
||||
$this->permissions['urn:ietf:params:xml:ns:caldav:read-free-busy'] = 'real';
|
||||
}
|
||||
|
||||
/**
|
||||
* In other cases we need to query the database for permissions
|
||||
@ -462,35 +564,35 @@ EOSQL;
|
||||
if ( $qry->Exec("caldav") && $permission_result = $qry->Fetch() ) {
|
||||
$permission_result = "!".$permission_result->perm; // We prepend something to ensure we get a non-zero position.
|
||||
if ( strpos($permission_result,"A") ) {
|
||||
$this->permissions['all'] = 'all';
|
||||
$this->permissions['urn:ietf:params:xml:ns:caldav:read-free-busy'] = 'urn:ietf:params:xml:ns:caldav:read-free-busy';
|
||||
$this->permissions['read'] = 'read';
|
||||
$this->permissions['write'] = 'write';
|
||||
$this->permissions['bind'] = 'bind'; // PUT of new content (i.e. Create)
|
||||
$this->permissions['unbind'] = 'unbind'; // DELETE
|
||||
$this->permissions['write-content'] = 'write-content'; // PUT Modify
|
||||
$this->permissions['write-properties'] = 'write-properties'; // PROPPATCH
|
||||
$this->permissions['lock'] = 'lock';
|
||||
$this->permissions['unlock'] = 'unlock';
|
||||
$this->permissions['read-acl'] = 'read-acl';
|
||||
$this->permissions['read-current-user-privilege-set'] = 'read-current-user-privilege-set';
|
||||
$this->permissions['all'] = 'abstract';
|
||||
$this->permissions['urn:ietf:params:xml:ns:caldav:read-free-busy'] = 'real';
|
||||
$this->permissions['read'] = 'real';
|
||||
$this->permissions['write'] = 'aggregate';
|
||||
$this->permissions['bind'] = 'real'; // PUT of new content (i.e. Create)
|
||||
$this->permissions['unbind'] = 'real'; // DELETE
|
||||
$this->permissions['write-content'] = 'real'; // PUT Modify
|
||||
$this->permissions['write-properties'] = 'real'; // PROPPATCH
|
||||
$this->permissions['lock'] = 'real';
|
||||
$this->permissions['unlock'] = 'real';
|
||||
$this->permissions['read-acl'] = 'real';
|
||||
$this->permissions['read-current-user-privilege-set'] = 'real';
|
||||
}
|
||||
else {
|
||||
if ( strpos($permission_result,"F") ) $this->permissions['urn:ietf:params:xml:ns:caldav:read-free-busy'] = 'urn:ietf:params:xml:ns:caldav:read-free-busy';
|
||||
if ( strpos($permission_result,"R") ) $this->permissions['read'] = 'read';
|
||||
if ( strpos($permission_result,"F") ) $this->permissions['urn:ietf:params:xml:ns:caldav:read-free-busy'] = 'real';
|
||||
if ( strpos($permission_result,"R") ) $this->permissions['read'] = 'real';
|
||||
if ( strpos($permission_result,"W") ) {
|
||||
$this->permissions['write'] = 'write';
|
||||
$this->permissions['bind'] = 'bind'; // PUT of new content (i.e. Create)
|
||||
$this->permissions['unbind'] = 'unbind'; // DELETE
|
||||
$this->permissions['write-content'] = 'write-content'; // PUT Modify
|
||||
$this->permissions['write-properties'] = 'write-properties'; // PROPPATCH
|
||||
$this->permissions['lock'] = 'lock';
|
||||
$this->permissions['unlock'] = 'unlock';
|
||||
$this->permissions['write'] = 'aggregate';
|
||||
$this->permissions['bind'] = 'real'; // PUT of new content (i.e. Create)
|
||||
$this->permissions['unbind'] = 'real'; // DELETE
|
||||
$this->permissions['write-content'] = 'real'; // PUT Modify
|
||||
$this->permissions['write-properties'] = 'real'; // PROPPATCH
|
||||
$this->permissions['lock'] = 'real';
|
||||
$this->permissions['unlock'] = 'real';
|
||||
}
|
||||
else {
|
||||
if ( strpos($permission_result,"C") ) $this->permissions['bind'] = 'bind'; // PUT of new content (i.e. Create)
|
||||
if ( strpos($permission_result,"D") ) $this->permissions['unbind'] = 'unbind'; // DELETE
|
||||
if ( strpos($permission_result,"M") ) $this->permissions['write-content'] = 'write-content'; // PUT Modify
|
||||
if ( strpos($permission_result,"C") ) $this->permissions['bind'] = 'real'; // PUT of new content (i.e. Create)
|
||||
if ( strpos($permission_result,"D") ) $this->permissions['unbind'] = 'real'; // DELETE
|
||||
if ( strpos($permission_result,"M") ) $this->permissions['write-content'] = 'real'; // PUT Modify
|
||||
}
|
||||
}
|
||||
dbg_error_log( "caldav", "Restricted permissions for user accessing someone elses hierarchy: %s", implode( ", ", $this->permissions ) );
|
||||
@ -682,6 +784,15 @@ EOSQL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if the URL referenced by this request points at a calendar collection.
|
||||
*/
|
||||
function IsCalendar( ) {
|
||||
if ( !$this->IsCollection() ) return false;
|
||||
return $this->collection->is_calendar;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if the URL referenced by this request points at a principal.
|
||||
*/
|
||||
@ -712,6 +823,141 @@ EOSQL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the ID of the collection of, or containing this request
|
||||
*/
|
||||
function CollectionId( ) {
|
||||
return $this->collection_id;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the array of supported privileges converted into XMLElements
|
||||
*/
|
||||
function RenderSupportedPrivileges( $privs = null ) {
|
||||
global $reply;
|
||||
$privileges = array();
|
||||
if ( $privs === null ) $privs = $this->supported_privileges;
|
||||
foreach( $privs AS $k => $v ) {
|
||||
dbg_error_log( 'caldav', 'Adding privilege "%s" which is "%s".', $k, $v );
|
||||
$privilege = new XMLElement('privilege');
|
||||
$reply->NSElement($privilege,$k);
|
||||
$privset = array($privilege);
|
||||
if ( is_array($v) ) {
|
||||
dbg_error_log( 'caldav', '"%s" is a container of sub-privileges.', $k );
|
||||
$privset = array_merge($privset, $this->RenderSupportedPrivileges($v));
|
||||
}
|
||||
else if ( $v == 'abstract' ) {
|
||||
dbg_error_log( 'caldav', '"%s" is an abstract privilege.', $v );
|
||||
$privset[] = new XMLElement('abstract');
|
||||
}
|
||||
else if ( strlen($v) > 1 ) {
|
||||
$privset[] = new XMLElement('description', $v);
|
||||
}
|
||||
$privileges[] = new XMLElement('supported-privilege',$privset);
|
||||
}
|
||||
return $privileges;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the array of privilege names converted into XMLElements
|
||||
*/
|
||||
function RenderPrivileges($privilege_names) {
|
||||
global $reply;
|
||||
$privileges = array();
|
||||
foreach( $privilege_names AS $k => $v ) {
|
||||
dbg_error_log( 'caldav', 'Adding privilege "%s" which is "%s".', $k, $v );
|
||||
$privilege = new XMLElement('privilege');
|
||||
$reply->NSElement($privilege,$k);
|
||||
$privileges[] = $privilege;
|
||||
}
|
||||
return $privileges;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the array of supported methods converted into XMLElements
|
||||
*/
|
||||
function RenderSupportedMethods( ) {
|
||||
global $reply;
|
||||
$methods = array();
|
||||
foreach( $this->supported_methods AS $k => $v ) {
|
||||
dbg_error_log( 'caldav', 'Adding method "%s" which is "%s".', $k, $v );
|
||||
$method = new XMLElement('method');
|
||||
$reply->NSElement($method,$k);
|
||||
$methods[] = new XMLElement('supported-method',$method);
|
||||
}
|
||||
return $methods;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return general server-related properties for this URL
|
||||
*/
|
||||
function ServerProperty( $tag, $prop, $reply = null ) {
|
||||
global $c, $session;
|
||||
|
||||
if ( $reply === null ) $reply = $GLOBALS['reply'];
|
||||
|
||||
dbg_error_log( 'caldav', 'Processing "%s" on "%s".', $tag, $this->path );
|
||||
|
||||
switch( $tag ) {
|
||||
case 'DAV::current-user-principal':
|
||||
$reply->DAVElement( $prop, 'current-user-principal', $this->current_user_principal_xml);
|
||||
break;
|
||||
|
||||
case 'DAV::getcontentlanguage':
|
||||
$locale = (isset($c->current_locale) ? $c->current_locale : '');
|
||||
if ( isset($session->locale) && $session->locale != '' ) $locale = $session->locale;
|
||||
$prop->NewElement('getcontentlanguage', $locale );
|
||||
break;
|
||||
|
||||
case 'DAV::supportedlock':
|
||||
$prop->NewElement('supportedlock',
|
||||
new XMLElement( 'lockentry',
|
||||
array(
|
||||
new XMLElement('lockscope', new XMLElement('exclusive')),
|
||||
new XMLElement('locktype', new XMLElement('write')),
|
||||
)
|
||||
)
|
||||
);
|
||||
break;
|
||||
|
||||
case 'DAV::acl':
|
||||
/**
|
||||
* @todo This information is semantically valid but presents an incorrect picture.
|
||||
*/
|
||||
$principal = new XMLElement('principal');
|
||||
$principal->NewElement('authenticated');
|
||||
$grant = new XMLElement( 'grant', array($this->RenderPrivileges($this->permissions)) );
|
||||
$prop->NewElement('acl', new XMLElement( 'ace', array( $principal, $grant ) ) );
|
||||
break;
|
||||
|
||||
case 'DAV::current-user-privilege-set':
|
||||
$prop->NewElement('current-user-privilege-set', $this->RenderPrivileges($this->permissions) );
|
||||
break;
|
||||
|
||||
case 'DAV::supported-privilege-set':
|
||||
$prop->NewElement('supported-privilege-set', $this->RenderSupportedPrivileges() );
|
||||
break;
|
||||
|
||||
case 'DAV::supported-method-set':
|
||||
$prop->NewElement('supported-method-set', $this->RenderSupportedMethods() );
|
||||
break;
|
||||
|
||||
case 'DAV::supported-report-set':
|
||||
$prop->NewElement('supported-report-set', $this->RenderSupportedReports() );
|
||||
break;
|
||||
|
||||
default:
|
||||
dbg_error_log( 'caldav', 'Request for unsupported property "%s" of path "%s".', $tag, $this->path );
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Are we allowed to do the requested activity
|
||||
*
|
||||
@ -726,6 +972,11 @@ EOSQL;
|
||||
* @param string $activity The activity we want to do.
|
||||
*/
|
||||
function AllowedTo( $activity ) {
|
||||
global $session;
|
||||
dbg_error_log('session', 'Checking whether "%s" is allowed to "%s"', $session->username, $activity);
|
||||
foreach( $this->permissions AS $k => $v ) {
|
||||
dbg_error_log('session', 'Permissions "%s" is "%s"', $k, $v);
|
||||
}
|
||||
if ( isset($this->permissions['all']) ) return true;
|
||||
switch( $activity ) {
|
||||
case "CALDAV:schedule-send-freebusy":
|
||||
@ -857,8 +1108,11 @@ EOSQL;
|
||||
* @return array The supported privileges.
|
||||
*/
|
||||
function SupportedPrivileges() {
|
||||
$privs = array( "all"=>1, "read"=>1, "write"=>1, "bind"=>1, "unbind"=>1, "write-content"=>1,
|
||||
"write-properties"=>1, 'urn:ietf:params:xml:ns:caldav:read-free-busy' => 1);
|
||||
$privs = array( 'all'=>'abstract', 'read'=>'real',
|
||||
'write'=>'real', 'bind'=>'real',
|
||||
'unbind'=>'real', 'write-content'=>'real',
|
||||
'write-properties'=>'real',
|
||||
'urn:ietf:params:xml:ns:caldav:read-free-busy' => 'real');
|
||||
return $privs;
|
||||
}
|
||||
}
|
||||
|
||||
287
inc/DAVResource.php
Normal file
287
inc/DAVResource.php
Normal file
@ -0,0 +1,287 @@
|
||||
<?php
|
||||
/**
|
||||
* An object representing a DAV 'resource'
|
||||
*
|
||||
* @package davical
|
||||
* @subpackage Resource
|
||||
* @author Andrew McMillan <andrew@mcmillan.net.nz>
|
||||
* @copyright Morphoss Ltd
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL v2 or later
|
||||
*/
|
||||
|
||||
/**
|
||||
* A class for things to do with a DAV Resource
|
||||
*
|
||||
* @package davical
|
||||
*/
|
||||
class DAVResource
|
||||
{
|
||||
/**
|
||||
* @var The URL of the resource
|
||||
*/
|
||||
protected $href;
|
||||
|
||||
/**
|
||||
* @var The principal URL of the owner of the resource
|
||||
*/
|
||||
protected $principal_url;
|
||||
|
||||
/**
|
||||
* @var The unique etag associated with the current version of the resource
|
||||
*/
|
||||
protected $unique_tag;
|
||||
|
||||
/**
|
||||
* @var The actual resource content
|
||||
*/
|
||||
protected $content;
|
||||
|
||||
/**
|
||||
* @var The type of the resource, possibly multiple
|
||||
*/
|
||||
protected $resourcetype;
|
||||
|
||||
/**
|
||||
* @var The type of the content
|
||||
*/
|
||||
protected $contenttype;
|
||||
|
||||
/**
|
||||
* @var True if this resource is a collection
|
||||
*/
|
||||
private $_is_collection;
|
||||
|
||||
/**
|
||||
* @var True if this resource is a principal-URL
|
||||
*/
|
||||
private $_is_principal;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param mixed $parameters If null, an empty Resourced is created.
|
||||
* If it is an object then it is expected to be a record that was
|
||||
* read elsewhere.
|
||||
*/
|
||||
function __construct( $parameters = null ) {
|
||||
$this->_is_principal = false;
|
||||
$this->_is_collection = false;
|
||||
if ( isset($parameters) && is_object($parameters) ) {
|
||||
$this->FromRow($parameters);
|
||||
}
|
||||
else if ( isset($parameters) && is_array($parameters) ) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initialise from a database row
|
||||
* @param object $row The row from the DB.
|
||||
*/
|
||||
function FromRow($row) {
|
||||
global $c;
|
||||
|
||||
foreach( $row AS $k => $v ) {
|
||||
dbg_error_log( 'resource', 'Processing resource property "%s" has "%s".', $row->dav_name, $k );
|
||||
switch ( $k ) {
|
||||
case 'dav_etag':
|
||||
$this->unique_tag = '"'.$v.'"';
|
||||
break;
|
||||
|
||||
default:
|
||||
$this->{$k} = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return general server-related properties for this URL
|
||||
*/
|
||||
function ResourceProperty( $tag, $prop, $reply = null ) {
|
||||
global $c, $session;
|
||||
|
||||
if ( $reply === null ) $reply = $GLOBALS['reply'];
|
||||
|
||||
dbg_error_log( 'resource', 'Processing "%s" on "%s".', $tag, $this->dav_name );
|
||||
|
||||
switch( $tag ) {
|
||||
case 'DAV::href':
|
||||
$prop->NewElement('href', ConstructURL($this->dav_name) );
|
||||
break;
|
||||
|
||||
case 'DAV::getcontenttype':
|
||||
$prop->NewElement('getcontenttype', $this->contenttype );
|
||||
break;
|
||||
|
||||
case 'DAV::resourcetype':
|
||||
$prop->NewElement('resourcetype', $this->resourcetype );
|
||||
break;
|
||||
|
||||
case 'DAV::displayname':
|
||||
$prop->NewElement('displayname', $this->displayname );
|
||||
break;
|
||||
|
||||
// case 'DAV::getlastmodified':
|
||||
// $prop->NewElement('getlastmodified', $this->modified );
|
||||
// break;
|
||||
|
||||
// case 'DAV::creationdate':
|
||||
// $prop->NewElement('creationdate', $this->created );
|
||||
// break;
|
||||
|
||||
case 'DAV::getcontentlanguage':
|
||||
$locale = (isset($c->current_locale) ? $c->current_locale : '');
|
||||
if ( isset($this->locale) && $this->locale != '' ) $locale = $this->locale;
|
||||
$prop->NewElement('getcontentlanguage', $locale );
|
||||
break;
|
||||
|
||||
// case 'DAV::owner':
|
||||
// // After a careful reading of RFC3744 we see that this must be the principal-URL of the owner
|
||||
// $reply->DAVElement( $prop, 'owner', $reply->href( $this->principal_url) ) );
|
||||
// break;
|
||||
|
||||
// Empty tag responses.
|
||||
case 'DAV::alternate-URI-set':
|
||||
case 'DAV::getcontentlength':
|
||||
$prop->NewElement( $reply->Tag($tag));
|
||||
break;
|
||||
|
||||
case 'DAV::getetag':
|
||||
if ( $this->_is_collection ) {
|
||||
$not_found[] = $reply->Tag($tag);
|
||||
}
|
||||
else {
|
||||
$prop->NewElement('getetag', $this->unique_tag );
|
||||
}
|
||||
break;
|
||||
|
||||
case 'SOME-DENIED-PROPERTY': /** @todo indicating the style for future expansion */
|
||||
$denied[] = $reply->Tag($tag);
|
||||
break;
|
||||
|
||||
case 'http://calendarserver.org/ns/:getctag':
|
||||
if ( $this->_is_collection ) {
|
||||
$prop->NewElement('http://calendarserver.org/ns/:getctag', $this->etag );
|
||||
}
|
||||
else {
|
||||
$not_found[] = $reply->Tag($tag);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'urn:ietf:params:xml:ns:caldav:calendar-data':
|
||||
if ( isset($this->caldav_data) ) {
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
dbg_error_log( 'resource', 'Request for unsupported property "%s" of path "%s".', $tag, $this->href );
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Construct XML propstat fragment for this resource
|
||||
*
|
||||
* @param array $properties The requested properties for this resource
|
||||
*
|
||||
* @return string An XML fragment with the requested properties for this resource
|
||||
*/
|
||||
function GetPropStat( $properties ) {
|
||||
global $session, $c, $request, $reply;
|
||||
|
||||
dbg_error_log('resource',': GetPropStat: href "%s"', $this->dav_name );
|
||||
|
||||
$prop = new XMLElement('prop');
|
||||
$denied = array();
|
||||
$not_found = array();
|
||||
foreach( $properties AS $k => $tag ) {
|
||||
dbg_error_log( 'resource', 'Looking at resource "%s" for property [%s]"%s".', $this->href, $k, $tag );
|
||||
if ( ! $this->ResourceProperty($tag, $prop, $reply) ) {
|
||||
dbg_error_log( 'resource', 'Request for unsupported property "%s" of resource "%s".', $tag, $this->href );
|
||||
$not_found[] = $reply->Tag($tag);
|
||||
}
|
||||
}
|
||||
$status = new XMLElement('status', 'HTTP/1.1 200 OK' );
|
||||
|
||||
$elements = array( new XMLElement( 'propstat', array($prop,$status) ) );
|
||||
|
||||
if ( count($denied) > 0 ) {
|
||||
$status = new XMLElement('status', 'HTTP/1.1 403 Forbidden' );
|
||||
$noprop = new XMLElement('prop');
|
||||
foreach( $denied AS $k => $v ) {
|
||||
$noprop->NewElement( $v );
|
||||
}
|
||||
$elements[] = new XMLElement( 'propstat', array( $noprop, $status) );
|
||||
}
|
||||
|
||||
if ( count($not_found) > 0 ) {
|
||||
$status = new XMLElement('status', 'HTTP/1.1 404 Not Found' );
|
||||
$noprop = new XMLElement('prop');
|
||||
foreach( $not_found AS $k => $v ) {
|
||||
$noprop->NewElement( $v );
|
||||
}
|
||||
$elements[] = new XMLElement( 'propstat', array( $noprop, $status) );
|
||||
}
|
||||
return $elements;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render XML for this resource
|
||||
*
|
||||
* @param array $properties The requested properties for this principal
|
||||
* @param reference $reply A reference to the XMLDocument being used for the reply
|
||||
* @param boolean $props_only Default false. If true will only return the fragment with the properties, not a full response fragment.
|
||||
*
|
||||
* @return string An XML fragment with the requested properties for this principal
|
||||
*/
|
||||
function RenderAsXML( $properties, &$reply, $props_only = false ) {
|
||||
global $session, $c, $request;
|
||||
|
||||
dbg_error_log('principal',': RenderAsXML: Principal "%s"', $this->username );
|
||||
|
||||
$prop = new XMLElement('prop');
|
||||
$denied = array();
|
||||
$not_found = array();
|
||||
foreach( $properties AS $k => $tag ) {
|
||||
if ( ! $this->ResourceProperty($tag, $prop, $reply) ) {
|
||||
dbg_error_log( 'principal', 'Request for unsupported property "%s" of principal "%s".', $tag, $this->username );
|
||||
$not_found[] = $reply->Tag($tag);
|
||||
}
|
||||
}
|
||||
|
||||
if ( $props_only ) return $prop;
|
||||
|
||||
$status = new XMLElement('status', 'HTTP/1.1 200 OK' );
|
||||
|
||||
$propstat = new XMLElement( 'propstat', array( $prop, $status) );
|
||||
$href = $reply->href($this->url );
|
||||
|
||||
$elements = array($href,$propstat);
|
||||
|
||||
if ( count($denied) > 0 ) {
|
||||
$status = new XMLElement('status', 'HTTP/1.1 403 Forbidden' );
|
||||
$noprop = new XMLElement('prop');
|
||||
foreach( $denied AS $k => $v ) {
|
||||
$noprop->NewElement( $v );
|
||||
}
|
||||
$elements[] = new XMLElement( 'propstat', array( $noprop, $status) );
|
||||
}
|
||||
|
||||
if ( count($not_found) > 0 ) {
|
||||
$status = new XMLElement('status', 'HTTP/1.1 404 Not Found' );
|
||||
$noprop = new XMLElement('prop');
|
||||
foreach( $not_found AS $k => $v ) {
|
||||
$noprop->NewElement( $v );
|
||||
}
|
||||
$elements[] = new XMLElement( 'propstat', array( $noprop, $status) );
|
||||
}
|
||||
|
||||
$response = new XMLElement( 'response', $elements );
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
}
|
||||
@ -431,7 +431,7 @@ EOSQL;
|
||||
}
|
||||
if ( isset($_POST['relate_to']) && $_POST['relate_to'] != '' && isset($_POST['relate_as']) && $_POST['relate_as'] != '' && isset($_POST['submit']) && $_POST['submit'] == htmlspecialchars(translate('Add Relationship')) ) {
|
||||
dbg_error_log('User',':Write: Adding relationship as %d to %d', $_POST['relate_as'], isset($_POST['relate_to'] ) );
|
||||
$qry = new PgQuery('INSERT INTO relationship (from_user, to_user, rt_id ) VALUES( ?, $this->user_no, ? )', $_POST['relate_to'], $_POST['relate_as'] );
|
||||
$qry = new PgQuery('INSERT INTO relationship (from_user, to_user, rt_id ) VALUES( ?, ?, ? )', $_POST['relate_to'], $this->user_no, $_POST['relate_as'] );
|
||||
if ( $qry->Exec() ) {
|
||||
$c->messages[] = i18n('Relationship added.');
|
||||
}
|
||||
|
||||
@ -221,7 +221,15 @@ class HTTPAuthSession {
|
||||
* It can expect that:
|
||||
* - Configuration data will be in $c->authenticate_hook['config'], which might be an array, or whatever is needed.
|
||||
*/
|
||||
return call_user_func( $c->authenticate_hook['call'], $username, $password );
|
||||
$hook_response = call_user_func( $c->authenticate_hook['call'], $username, $password );
|
||||
/**
|
||||
* make the authentication hook optional: if the flag is set, ignore a return value of 'false'
|
||||
*/
|
||||
if (isset($c->authenticate_hook['optional']) && $c->authenticate_hook['optional']) {
|
||||
if ($hook_response !== false) { return $hook_response; }
|
||||
} else {
|
||||
return $hook_response;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $usr = getUserByName($username) ) {
|
||||
|
||||
@ -69,7 +69,8 @@ class PublicSession {
|
||||
* @return boolean Whether or not the user has the specified role.
|
||||
*/
|
||||
function AllowedTo ( $whatever ) {
|
||||
return ( $this->logged_in && isset($this->roles[$whatever]) && $this->roles[$whatever] );
|
||||
dbg_error_log('session', 'Checking whether "Public" is allowed to "%s"', $whatever);
|
||||
return ( isset($this->roles[$whatever]) && $this->roles[$whatever] );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ awl_set_locale($c->default_locale);
|
||||
*
|
||||
*/
|
||||
$c->code_version = 0;
|
||||
$c->version_string = '0.9.7.3'; // The actual version # is replaced into that during the build /release process
|
||||
$c->version_string = '0.9.7.4'; // The actual version # is replaced into that during the build /release process
|
||||
if ( isset($c->version_string) && preg_match( '/(\d+)\.(\d+)\.(\d+)(.*)/', $c->version_string, $matches) ) {
|
||||
$c->code_major = $matches[1];
|
||||
$c->code_minor = $matches[2];
|
||||
|
||||
@ -15,7 +15,7 @@ unset($session); unset($request); unset($dbconn);
|
||||
// Default some of the configurable values
|
||||
$c->sysabbr = 'davical';
|
||||
$c->admin_email = 'admin@davical.example.com';
|
||||
$c->system_name = "DAViCal CalDAV Server";
|
||||
$c->system_name = 'DAViCal CalDAV Server';
|
||||
$c->domain_name = (isset($_SERVER['SERVER_NAME'])?$_SERVER['SERVER_NAME']:$_SERVER['SERVER_ADDR']);
|
||||
$c->save_time_zone_defs = true;
|
||||
$c->collections_always_exist = false;
|
||||
@ -25,12 +25,12 @@ $c->enable_row_linking = true;
|
||||
$c->http_auth_mode = 'Basic';
|
||||
// $c->default_locale = array('es_MX', 'es_AR', 'es', 'pt'); // An array of locales to try, or just a single locale
|
||||
// $c->local_tzid = 'Pacific/Auckland'; // Perhaps we should read from /etc/timezone - I wonder how standard that is?
|
||||
$c->default_locale = "en";
|
||||
$c->base_url = preg_replace("#/[^/]+\.php.*$#", "", $_SERVER['SCRIPT_NAME']);
|
||||
$c->base_directory = preg_replace("#/[^/]*$#", "", $_SERVER['DOCUMENT_ROOT']);
|
||||
$c->default_locale = 'en';
|
||||
$c->base_url = preg_replace('#/[^/]+\.php.*$#', '', $_SERVER['SCRIPT_NAME']);
|
||||
$c->base_directory = preg_replace('#/[^/]*$#', '', $_SERVER['DOCUMENT_ROOT']);
|
||||
|
||||
$c->stylesheets = array( $c->base_url."/davical.css" );
|
||||
$c->images = $c->base_url . "/images";
|
||||
$c->stylesheets = array( $c->base_url.'/davical.css' );
|
||||
$c->images = $c->base_url . '/images';
|
||||
|
||||
// Add a default for newly created users
|
||||
$c->template_usr = array( 'active' => true,
|
||||
@ -51,17 +51,17 @@ $c->total_query_time = 0;
|
||||
$c->dbg = array();
|
||||
|
||||
// Utilities
|
||||
require_once("AWLUtilities.php");
|
||||
require_once('AWLUtilities.php');
|
||||
|
||||
/** We actually discovered this and worked around it earlier, but we can't log it until the utilties are loaded */
|
||||
if ( !isset($_SERVER['SERVER_NAME']) ) {
|
||||
@dbg_error_log( "WARN", "Your webserver is not setting the SERVER_NAME parameter. You may need to set \$c->domain_name in your configuration. Using IP address meanhwhile..." );
|
||||
@dbg_error_log( 'WARN', "Your webserver is not setting the SERVER_NAME parameter. You may need to set \$c->domain_name in your configuration. Using IP address meanhwhile..." );
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the simplest form of reference to this page, excluding the PATH_INFO following the script name.
|
||||
*/
|
||||
$c->protocol_server_port_script = sprintf( "%s://%s%s%s",
|
||||
$c->protocol_server_port_script = sprintf( '%s://%s%s%s',
|
||||
(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'? 'https' : 'http'),
|
||||
$_SERVER['SERVER_NAME'],
|
||||
(
|
||||
@ -79,21 +79,21 @@ init_gettext( 'davical', '../locale' );
|
||||
* access which could break DAViCal completely by causing output to start
|
||||
* too early.
|
||||
*/
|
||||
if ( @file_exists("/etc/davical/".$_SERVER['SERVER_NAME']."-conf.php") ) {
|
||||
include_once("/etc/davical/".$_SERVER['SERVER_NAME']."-conf.php");
|
||||
if ( @file_exists('/etc/davical/'.$_SERVER['SERVER_NAME'].'-conf.php') ) {
|
||||
include_once('/etc/davical/'.$_SERVER['SERVER_NAME'].'-conf.php');
|
||||
}
|
||||
else if ( @file_exists("/etc/davical/config.php") ) {
|
||||
include_once("/etc/davical/config.php");
|
||||
else if ( @file_exists('/etc/davical/config.php') ) {
|
||||
include_once('/etc/davical/config.php');
|
||||
}
|
||||
else if ( @file_exists("../config/config.php") ) {
|
||||
include_once("../config/config.php");
|
||||
else if ( @file_exists('../config/config.php') ) {
|
||||
include_once('../config/config.php');
|
||||
}
|
||||
else {
|
||||
include_once("davical_configuration_missing.php");
|
||||
include_once('davical_configuration_missing.php');
|
||||
exit;
|
||||
}
|
||||
if ( isset($c->deny_put_collection) ) {
|
||||
@dbg_error_log( "WARN", "Deprecated 'deny_put_collection' configuration item renamed to 'readonly_webdav_collections'" );
|
||||
@dbg_error_log( 'WARN', 'Deprecated "deny_put_collection" configuration item renamed to "readonly_webdav_collections"' );
|
||||
$c->readonly_webdav_collections = $c->deny_put_collection;
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ if ( !isset($c->page_title) ) $c->page_title = $c->system_name;
|
||||
|
||||
if ( count($c->dbg) > 0 ) {
|
||||
// Only log this if debugging of some sort is turned on, somewhere
|
||||
@dbg_error_log( "LOG", "==========> method =%s= =%s= =%s= =%s= =%s=",
|
||||
@dbg_error_log( 'LOG', '==========> method =%s= =%s= =%s= =%s= =%s=',
|
||||
$_SERVER['REQUEST_METHOD'], $c->protocol_server_port_script, $_SERVER['PATH_INFO'], $c->base_url, $c->base_directory );
|
||||
}
|
||||
|
||||
@ -121,9 +121,9 @@ if ( isset($c->version_string) && preg_match( '/(\d+)\.(\d+)\.(\d+)(.*)/', $c->v
|
||||
$c->code_major = $matches[1];
|
||||
$c->code_minor = $matches[2];
|
||||
$c->code_patch = $matches[3];
|
||||
$c->code_version = (($c->code_major * 1000) + $c->code_minor).".".$c->code_patch;
|
||||
dbg_error_log("caldav", "Version (%d.%d.%d) == %s", $c->code_major, $c->code_minor, $c->code_patch, $c->code_version);
|
||||
header( sprintf("Server: %d.%d", $c->code_major, $c->code_minor) );
|
||||
$c->code_version = (($c->code_major * 1000) + $c->code_minor).'.'.$c->code_patch;
|
||||
dbg_error_log('caldav', 'Version (%d.%d.%d) == %s', $c->code_major, $c->code_minor, $c->code_patch, $c->code_version);
|
||||
header( sprintf('Server: %d.%d', $c->code_major, $c->code_minor) );
|
||||
}
|
||||
|
||||
/**
|
||||
@ -131,12 +131,12 @@ if ( isset($c->version_string) && preg_match( '/(\d+)\.(\d+)\.(\d+)(.*)/', $c->v
|
||||
*/
|
||||
$_SERVER['SERVER_NAME'] = $c->domain_name;
|
||||
|
||||
include_once("PgQuery.php");
|
||||
include_once('PgQuery.php');
|
||||
|
||||
$c->schema_version = 0;
|
||||
$qry = new PgQuery( "SELECT schema_major, schema_minor, schema_patch FROM awl_db_revision ORDER BY schema_id DESC LIMIT 1;" );
|
||||
if ( $qry->Exec("always") && $row = $qry->Fetch() ) {
|
||||
$c->schema_version = doubleval( sprintf( "%d%03d.%03d", $row->schema_major, $row->schema_minor, $row->schema_patch) );
|
||||
$qry = new PgQuery( 'SELECT schema_major, schema_minor, schema_patch FROM awl_db_revision ORDER BY schema_id DESC LIMIT 1;' );
|
||||
if ( $qry->Exec('always') && $row = $qry->Fetch() ) {
|
||||
$c->schema_version = doubleval( sprintf( '%d%03d.%03d', $row->schema_major, $row->schema_minor, $row->schema_patch) );
|
||||
$c->schema_major = $row->schema_major;
|
||||
$c->schema_minor = $row->schema_minor;
|
||||
$c->schema_patch = $row->schema_patch;
|
||||
@ -194,51 +194,51 @@ function getUserByID( $user_no, $use_cache = true ) {
|
||||
*/
|
||||
function getStatusMessage($status) {
|
||||
switch( $status ) {
|
||||
case 100: $ans = "Continue"; break;
|
||||
case 101: $ans = "Switching Protocols"; break;
|
||||
case 200: $ans = "OK"; break;
|
||||
case 201: $ans = "Created"; break;
|
||||
case 202: $ans = "Accepted"; break;
|
||||
case 203: $ans = "Non-Authoritative Information"; break;
|
||||
case 204: $ans = "No Content"; break;
|
||||
case 205: $ans = "Reset Content"; break;
|
||||
case 206: $ans = "Partial Content"; break;
|
||||
case 207: $ans = "Multi-Status"; break;
|
||||
case 300: $ans = "Multiple Choices"; break;
|
||||
case 301: $ans = "Moved Permanently"; break;
|
||||
case 302: $ans = "Found"; break;
|
||||
case 303: $ans = "See Other"; break;
|
||||
case 304: $ans = "Not Modified"; break;
|
||||
case 305: $ans = "Use Proxy"; break;
|
||||
case 307: $ans = "Temporary Redirect"; break;
|
||||
case 400: $ans = "Bad Request"; break;
|
||||
case 401: $ans = "Unauthorized"; break;
|
||||
case 402: $ans = "Payment Required"; break;
|
||||
case 403: $ans = "Forbidden"; break;
|
||||
case 404: $ans = "Not Found"; break;
|
||||
case 405: $ans = "Method Not Allowed"; break;
|
||||
case 406: $ans = "Not Acceptable"; break;
|
||||
case 407: $ans = "Proxy Authentication Required"; break;
|
||||
case 408: $ans = "Request Timeout"; break;
|
||||
case 409: $ans = "Conflict"; break;
|
||||
case 410: $ans = "Gone"; break;
|
||||
case 411: $ans = "Length Required"; break;
|
||||
case 412: $ans = "Precondition Failed"; break;
|
||||
case 413: $ans = "Request Entity Too Large"; break;
|
||||
case 414: $ans = "Request-URI Too Long"; break;
|
||||
case 415: $ans = "Unsupported Media Type"; break;
|
||||
case 416: $ans = "Requested Range Not Satisfiable"; break;
|
||||
case 417: $ans = "Expectation Failed"; break;
|
||||
case 422: $ans = "Unprocessable Entity"; break;
|
||||
case 423: $ans = "Locked"; break;
|
||||
case 424: $ans = "Failed Dependency"; break;
|
||||
case 500: $ans = "Internal Server Error"; break;
|
||||
case 501: $ans = "Not Implemented"; break;
|
||||
case 502: $ans = "Bad Gateway"; break;
|
||||
case 503: $ans = "Service Unavailable"; break;
|
||||
case 504: $ans = "Gateway Timeout"; break;
|
||||
case 505: $ans = "HTTP Version Not Supported"; break;
|
||||
default: $ans = "Unknown HTTP Status Code '$status'";
|
||||
case 100: $ans = 'Continue'; break;
|
||||
case 101: $ans = 'Switching Protocols'; break;
|
||||
case 200: $ans = 'OK'; break;
|
||||
case 201: $ans = 'Created'; break;
|
||||
case 202: $ans = 'Accepted'; break;
|
||||
case 203: $ans = 'Non-Authoritative Information'; break;
|
||||
case 204: $ans = 'No Content'; break;
|
||||
case 205: $ans = 'Reset Content'; break;
|
||||
case 206: $ans = 'Partial Content'; break;
|
||||
case 207: $ans = 'Multi-Status'; break;
|
||||
case 300: $ans = 'Multiple Choices'; break;
|
||||
case 301: $ans = 'Moved Permanently'; break;
|
||||
case 302: $ans = 'Found'; break;
|
||||
case 303: $ans = 'See Other'; break;
|
||||
case 304: $ans = 'Not Modified'; break;
|
||||
case 305: $ans = 'Use Proxy'; break;
|
||||
case 307: $ans = 'Temporary Redirect'; break;
|
||||
case 400: $ans = 'Bad Request'; break;
|
||||
case 401: $ans = 'Unauthorized'; break;
|
||||
case 402: $ans = 'Payment Required'; break;
|
||||
case 403: $ans = 'Forbidden'; break;
|
||||
case 404: $ans = 'Not Found'; break;
|
||||
case 405: $ans = 'Method Not Allowed'; break;
|
||||
case 406: $ans = 'Not Acceptable'; break;
|
||||
case 407: $ans = 'Proxy Authentication Required'; break;
|
||||
case 408: $ans = 'Request Timeout'; break;
|
||||
case 409: $ans = 'Conflict'; break;
|
||||
case 410: $ans = 'Gone'; break;
|
||||
case 411: $ans = 'Length Required'; break;
|
||||
case 412: $ans = 'Precondition Failed'; break;
|
||||
case 413: $ans = 'Request Entity Too Large'; break;
|
||||
case 414: $ans = 'Request-URI Too Long'; break;
|
||||
case 415: $ans = 'Unsupported Media Type'; break;
|
||||
case 416: $ans = 'Requested Range Not Satisfiable'; break;
|
||||
case 417: $ans = 'Expectation Failed'; break;
|
||||
case 422: $ans = 'Unprocessable Entity'; break;
|
||||
case 423: $ans = 'Locked'; break;
|
||||
case 424: $ans = 'Failed Dependency'; break;
|
||||
case 500: $ans = 'Internal Server Error'; break;
|
||||
case 501: $ans = 'Not Implemented'; break;
|
||||
case 502: $ans = 'Bad Gateway'; break;
|
||||
case 503: $ans = 'Service Unavailable'; break;
|
||||
case 504: $ans = 'Gateway Timeout'; break;
|
||||
case 505: $ans = 'HTTP Version Not Supported'; break;
|
||||
default: $ans = 'Unknown HTTP Status Code '.$status;
|
||||
}
|
||||
return $ans;
|
||||
}
|
||||
|
||||
@ -66,15 +66,22 @@ else {
|
||||
/**
|
||||
* We read the resource first, so we can check if it matches (or does not match)
|
||||
*/
|
||||
$qry = new PgQuery( "SELECT cd.dav_etag, ci.uid FROM caldav_data cd JOIN calendar_item ci USING (dav_id) WHERE cd.user_no = ? AND cd.dav_name = ?;", $request->user_no, $request->path );
|
||||
$escaped_path = qpg($request->path);
|
||||
$qry = new PgQuery( "SELECT cd.dav_etag, ci.uid, cd.collection_id FROM caldav_data cd JOIN calendar_item ci USING (dav_id) WHERE cd.user_no = ? AND cd.dav_name = $escaped_path;", $request->user_no );
|
||||
if ( $qry->Exec("DELETE") && $qry->rows == 1 ) {
|
||||
$delete_row = $qry->Fetch();
|
||||
if ( (isset($request->etag_if_match) && $request->etag_if_match != $delete_row->dav_etag) ) {
|
||||
$request->DoResponse( 412, translate("Resource has changed on server - not deleted") );
|
||||
}
|
||||
$qry = new PgQuery( "DELETE FROM caldav_data WHERE user_no = ? AND dav_name = ?;", $request->user_no, $request->path );
|
||||
|
||||
$collection_id = $delete_row->collection_id;
|
||||
$sql = <<<EOSQL
|
||||
DELETE FROM caldav_data WHERE collection_id = $collection_id AND dav_name = $escaped_path;
|
||||
SELECT write_sync_change( $collection_id, 404, $escaped_path);
|
||||
EOSQL;
|
||||
$qry = new PgQuery( $sql );
|
||||
if ( $qry->Exec("DELETE") ) {
|
||||
$qry = new PgQuery( "DELETE FROM property WHERE dav_name = ?;", $request->path ); $qry->Exec("DELETE"); /** @todo we should write a trigger to delete property records when caldav_data or collection is deleted */
|
||||
$qry = new PgQuery( "DELETE FROM property WHERE dav_name = $escaped_path;" ); $qry->Exec("DELETE"); /** @todo we should write a trigger to delete property records when caldav_data or collection is deleted */
|
||||
@dbg_error_log( "DELETE", "DELETE: User: %d, ETag: %s, Path: %s", $session->user_no, $request->etag_if_match, $request->path);
|
||||
if ( function_exists('log_caldav_action') ) {
|
||||
log_caldav_action( 'DELETE', $delete_row->uid, $request->user_no, $request->collection_id, $request->path );
|
||||
|
||||
@ -17,14 +17,21 @@ if ( ! $request->AllowedTo('freebusy') ) {
|
||||
}
|
||||
|
||||
if ( $request->IsCollection() ) {
|
||||
/**
|
||||
* The CalDAV specification does not define GET on a collection, but typically this is
|
||||
* used as a .ics download for the whole collection, which is what we do also.
|
||||
*
|
||||
* @todo Change this to reference the collection_id of the collection at this location.
|
||||
*/
|
||||
$order_clause = ( isset($c->strict_result_ordering) && $c->strict_result_ordering ? " ORDER BY dav_id" : "");
|
||||
$qry = new PgQuery( "SELECT caldav_data, class, caldav_type, calendar_item.user_no, logged_user FROM caldav_data INNER JOIN calendar_item USING ( dav_id ) WHERE caldav_data.user_no = ? AND caldav_data.dav_name ~ ? $order_clause", $request->user_no, $request->path.'[^/]+$');
|
||||
if ( $request->IsCalendar() ) {
|
||||
/**
|
||||
* The CalDAV specification does not define GET on a collection, but typically this is
|
||||
* used as a .ics download for the whole collection, which is what we do also.
|
||||
*
|
||||
* @todo Change this to reference the collection_id of the collection at this location.
|
||||
*/
|
||||
$order_clause = ( isset($c->strict_result_ordering) && $c->strict_result_ordering ? " ORDER BY dav_id" : "");
|
||||
$qry = new PgQuery( "SELECT caldav_data, class, caldav_type, calendar_item.user_no, logged_user FROM caldav_data INNER JOIN calendar_item USING ( dav_id ) WHERE caldav_data.user_no = ? AND caldav_data.dav_name ~ ? $order_clause", $request->user_no, $request->path.'[^/]+$');
|
||||
}
|
||||
else {
|
||||
/** RFC2616 says we must send an Allow header if we send a 405 */
|
||||
header("Allow: PROPFIND,PROPPATCH,OPTIONS,MKCOL,REPORT,DELETE");
|
||||
$request->DoResponse( 405, translate("GET requests are only handled on calendar collections.") );
|
||||
}
|
||||
}
|
||||
else {
|
||||
$qry = new PgQuery( "SELECT caldav_data, caldav_data.dav_etag, class, caldav_type, calendar_item.user_no, logged_user FROM caldav_data INNER JOIN calendar_item USING ( dav_id ) WHERE caldav_data.user_no = ? AND caldav_data.dav_name = ? ;", $request->user_no, $request->path);
|
||||
@ -80,7 +87,7 @@ else if ( $qry->rows == 1 && ! $request->IsCollection() ) {
|
||||
|
||||
header( "Etag: \"$event->dav_etag\"" );
|
||||
header( "Content-Length: ".strlen($event->caldav_data) );
|
||||
$request->DoResponse( 200, ($request->method == "HEAD" ? "" : $event->caldav_data), "text/calendar" );
|
||||
$request->DoResponse( 200, ($request->method == "HEAD" ? "" : $event->caldav_data), "text/calendar; charset=\"utf-8\"" );
|
||||
}
|
||||
else if ( $qry->rows < 1 && ! $request->IsCollection() ) {
|
||||
$request->DoResponse( 404, translate("Calendar Resource Not Found.") );
|
||||
@ -166,6 +173,6 @@ else {
|
||||
$response = $vcal->Render();
|
||||
header( "Content-Length: ".strlen($response) );
|
||||
header( 'Etag: "'.$request->collection->dav_etag.'"' );
|
||||
$request->DoResponse( 200, ($request->method == "HEAD" ? "" : $response), "text/calendar" );
|
||||
$request->DoResponse( 200, ($request->method == "HEAD" ? "" : $response), "text/calendar; charset=\"utf-8\"" );
|
||||
}
|
||||
|
||||
|
||||
42
inc/caldav-MOVE.php
Normal file
42
inc/caldav-MOVE.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* CalDAV Server - handle MOVE method
|
||||
*
|
||||
* @package davical
|
||||
* @subpackage caldav
|
||||
* @author Andrew McMillan <andrew@morphoss.com>
|
||||
* @copyright Morphoss Ltd
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL v2
|
||||
*/
|
||||
dbg_error_log("MOVE", "method handler");
|
||||
|
||||
if ( ! $request->AllowedTo("read") ) {
|
||||
$request->DoResponse(403);
|
||||
}
|
||||
|
||||
if ( ! ini_get('open_basedir') && (isset($c->dbg['ALL']) || (isset($c->dbg['put']) && $c->dbg['put'])) ) {
|
||||
$fh = fopen('/tmp/MOVE.txt','w');
|
||||
if ( $fh ) {
|
||||
fwrite($fh,$request->raw_post);
|
||||
fclose($fh);
|
||||
}
|
||||
}
|
||||
|
||||
include_once('caldav-PUT-functions.php');
|
||||
controlRequestContainer( $request->username, $request->user_no, $request->path, true);
|
||||
|
||||
$lock_opener = $request->FailIfLocked();
|
||||
|
||||
|
||||
if ( $request->IsCollection() ) {
|
||||
/**
|
||||
* CalDAV does not define the result of a PUT on a collection. We treat that
|
||||
* as an import. The code is in caldav-PUT-functions.php
|
||||
*/
|
||||
import_collection($request->raw_post,$request->user_no,$request->path,true);
|
||||
$request->DoResponse( 200 );
|
||||
return;
|
||||
}
|
||||
|
||||
$put_action_type = putCalendarResource( $request, $session->user_no, true );
|
||||
$request->DoResponse( ($put_action_type == 'INSERT' ? 201 : 204) );
|
||||
@ -588,7 +588,7 @@ function item_to_xml( $item ) {
|
||||
* a list of calendars for the user which are parented by this path.
|
||||
*/
|
||||
function get_collection_contents( $depth, $user_no, $collection ) {
|
||||
global $session, $request, $reply, $prop_list, $arbitrary;
|
||||
global $c, $session, $request, $reply, $prop_list, $arbitrary;
|
||||
|
||||
dbg_error_log('PROPFIND','Getting collection contents: Depth %d, User: %d, Path: %s', $depth, $user_no, $collection->dav_name );
|
||||
|
||||
@ -658,7 +658,7 @@ function get_collection_contents( $depth, $user_no, $collection ) {
|
||||
$sql .= 'summary AS dav_displayname ';
|
||||
$sql .= 'FROM caldav_data JOIN calendar_item USING( dav_id, user_no, dav_name) ';
|
||||
$sql .= 'WHERE dav_name ~ '.qpg('^'.$collection->dav_name.'[^/]+$'). $privacy_clause;
|
||||
$sql .= 'ORDER BY dav_name';
|
||||
if ( isset($c->strict_result_ordering) && $c->strict_result_ordering ) $sql .= " ORDER BY dav_id";
|
||||
$qry = new PgQuery($sql, PgQuery::Plain(iCalendar::HttpDateFormat()), PgQuery::Plain(iCalendar::HttpDateFormat()));
|
||||
if( $qry->Exec('PROPFIND',__LINE__,__FILE__) && $qry->rows > 0 ) {
|
||||
while( $item = $qry->Fetch() ) {
|
||||
|
||||
@ -25,7 +25,7 @@ $tz_regex = ':^(Africa|America|Antarctica|Arctic|Asia|Atlantic|Australia|Brazil|
|
||||
/**
|
||||
* This function launches an error
|
||||
* @param boolean $caldav_context Whether we are responding via CalDAV or interactively
|
||||
* @param int $user_no the user wich will receive this ics file
|
||||
* @param int $user_no the user who will receive this ics file
|
||||
* @param string $path the $path where the PUT failed to store such as /user_foo/home/
|
||||
* @param string $message An optional error message to return to the client
|
||||
* @param int $error_no An optional value for the HTTP error code
|
||||
@ -517,7 +517,7 @@ function write_resource( $user_no, $path, $caldav_data, $collection_id, $author,
|
||||
}
|
||||
|
||||
$dtend = $first->GetPValue('DTEND');
|
||||
if ( (!isset($dtend) || "$dtend" == "") ) {
|
||||
if ( (!isset($dtend) || $dtend == "") ) {
|
||||
if ( $first->GetPValue('DURATION') != "" AND $dtstart != "" ) {
|
||||
$duration = preg_replace( '#[PT]#', ' ', $first->GetPValue('DURATION') );
|
||||
$dtend = '('.qpg($dtstart).'::timestamp with time zone + '.qpg($duration).'::interval)';
|
||||
@ -625,26 +625,43 @@ function write_resource( $user_no, $path, $caldav_data, $collection_id, $author,
|
||||
}
|
||||
}
|
||||
|
||||
$escaped_path = qpg($path);
|
||||
if ( $put_action_type != 'INSERT' ) {
|
||||
$sql .= "DELETE FROM calendar_item WHERE user_no=$user_no AND dav_name=".qpg($path).";";
|
||||
}
|
||||
$sql .= <<<EOSQL
|
||||
INSERT INTO calendar_item (user_no, dav_name, dav_etag, uid, dtstamp, dtstart, dtend, summary, location, class, transp,
|
||||
description, rrule, tz_id, last_modified, url, priority, created, due, percent_complete, status, collection_id )
|
||||
VALUES ( ?, ?, ?, ?, ?, ?, $dtend, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
|
||||
COMMIT;
|
||||
$sql .= <<<EOSQL
|
||||
UPDATE calendar_item SET dav_etag=?, uid=?, dtstamp=?,
|
||||
dtstart=?, dtend=$dtend, summary=?, location=?, class=?, transp=?,
|
||||
description=?, rrule=?, tz_id=?, last_modified=?, url=?, priority=?,
|
||||
created=?, due=?, percent_complete=?, status=?
|
||||
WHERE user_no=$user_no AND dav_name=$escaped_path;
|
||||
SELECT write_sync_change( $collection_id, 200, $escaped_path);
|
||||
COMMIT;
|
||||
EOSQL;
|
||||
}
|
||||
else {
|
||||
$sql .= <<<EOSQL
|
||||
INSERT INTO calendar_item (user_no, dav_name, dav_etag, uid, dtstamp,
|
||||
dtstart, dtend, summary, location, class, transp,
|
||||
description, rrule, tz_id, last_modified, url, priority,
|
||||
created, due, percent_complete, status, collection_id )
|
||||
VALUES ( $user_no, $escaped_path, ?, ?, ?,
|
||||
?, $dtend, ?, ?, ?, ?,
|
||||
?, ?, ?, ?, ?, ?,
|
||||
?, ?, ?, ?, $collection_id );
|
||||
SELECT write_sync_change( $collection_id, 201, $escaped_path);
|
||||
COMMIT;
|
||||
EOSQL;
|
||||
}
|
||||
|
||||
if ( $log_action && function_exists('log_caldav_action') ) {
|
||||
log_caldav_action( $put_action_type, $first->GetPValue('UID'), $user_no, $collection_id, $path );
|
||||
}
|
||||
|
||||
$qry = new PgQuery( $sql, $user_no, $path, $etag, $first->GetPValue('UID'), $dtstamp,
|
||||
$first->GetPValue('DTSTART'), $first->GetPValue('SUMMARY'), $first->GetPValue('LOCATION'),
|
||||
$class, $first->GetPValue('TRANSP'), $first->GetPValue('DESCRIPTION'), $first->GetPValue('RRULE'), $tzid,
|
||||
$last_modified, $first->GetPValue('URL'), $first->GetPValue('PRIORITY'), $first->GetPValue('CREATED'),
|
||||
$first->GetPValue('DUE'), $first->GetPValue('PERCENT-COMPLETE'), $first->GetPValue('STATUS'), $collection_id
|
||||
);
|
||||
$qry = new PgQuery( $sql, $etag, $first->GetPValue('UID'), $dtstamp,
|
||||
$first->GetPValue('DTSTART'), $first->GetPValue('SUMMARY'), $first->GetPValue('LOCATION'), $class, $first->GetPValue('TRANSP'),
|
||||
$first->GetPValue('DESCRIPTION'), $first->GetPValue('RRULE'), $tzid,
|
||||
$last_modified, $first->GetPValue('URL'), $first->GetPValue('PRIORITY'),
|
||||
$first->GetPValue('CREATED'), $first->GetPValue('DUE'), $first->GetPValue('PERCENT-COMPLETE'), $first->GetPValue('STATUS')
|
||||
);
|
||||
if ( !$qry->Exec("PUT") ) {
|
||||
rollback_on_error( $caldav_context, $user_no, $path);
|
||||
return false;
|
||||
|
||||
32
inc/caldav-REPORT-expand-property.php
Normal file
32
inc/caldav-REPORT-expand-property.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
$responses = array();
|
||||
|
||||
/**
|
||||
* Build the array of properties to include in the report output
|
||||
*/
|
||||
$props = $xmltree->GetPath('/DAV::expand-property/DAV::property');
|
||||
$proplist = array();
|
||||
foreach( $props AS $k => $v ) {
|
||||
$proplist[] = $v->GetContent();
|
||||
}
|
||||
function display_status( $status_code ) {
|
||||
return sprintf( 'HTTP/1.1 %03d %s', $status_code, getStatusMessage($status_code) );
|
||||
}
|
||||
|
||||
$sql = "SELECT * FROM sync_changes LEFT JOIN calendar_item USING (dav_id) LEFT JOIN caldav_data USING (dav_id) WHERE sync_time > (SELECT modification_time FROM sync_tokens WHERE sync_token = ?)";
|
||||
$qry = new PgQuery($sql);
|
||||
|
||||
if ( $qry->Exec("REPORT",__LINE__,__FILE__) && $qry->rows > 0 ) {
|
||||
while( $object = $qry->Fetch() ) {
|
||||
$href = new XMLElement( 'dav_name', ConstructURL($change->href) );
|
||||
$status = new XMLElement( 'status', display_status($change->status) );
|
||||
if ( $status != 404 ) {
|
||||
$propstat = $request->ObjectPropStat($proplist, $object);
|
||||
}
|
||||
$responses[] = new XMLElement( 'sync-response', array() );
|
||||
}
|
||||
}
|
||||
|
||||
$multistatus = new XMLElement( "multistatus", $responses, $reply->GetXmlNsArray() );
|
||||
|
||||
$request->XMLResponse( 207, $multistatus );
|
||||
75
inc/caldav-REPORT-sync-collection.php
Normal file
75
inc/caldav-REPORT-sync-collection.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
require("DAVResource.php");
|
||||
$responses = array();
|
||||
|
||||
/**
|
||||
* Build the array of properties to include in the report output
|
||||
*/
|
||||
$sync_tokens = $xmltree->GetPath('/DAV::sync-collection/DAV::sync-token');
|
||||
$sync_token = $sync_tokens[0]->GetContent();
|
||||
if ( !isset($sync_token) ) $sync_token = 0;
|
||||
$sync_token = intval($sync_token);
|
||||
dbg_error_log( 'sync', " sync-token: %s", $sync_token );
|
||||
|
||||
|
||||
$props = $xmltree->GetElements('DAV::prop');
|
||||
$v = $props[0];
|
||||
$props = $v->GetContent();
|
||||
$proplist = array();
|
||||
foreach( $props AS $k => $v ) {
|
||||
$proplist[] = $v->GetTag();
|
||||
}
|
||||
|
||||
function display_status( $status_code ) {
|
||||
return sprintf( 'HTTP/1.1 %03d %s', intval($status_code), getStatusMessage($status_code) );
|
||||
}
|
||||
|
||||
$sql = "SELECT new_sync_token(?,?)";
|
||||
$qry = new PgQuery($sql, $sync_token, $request->CollectionId());
|
||||
if ( !$qry->Exec("REPORT",__LINE__,__FILE__) || $qry->rows <= 0 ) {
|
||||
$request->DoResponse( 500, translate("Database error") );
|
||||
}
|
||||
$row = $qry->Fetch();
|
||||
$new_token = $row->new_sync_token;
|
||||
|
||||
if ( $sync_token == 0 ) {
|
||||
$sql = <<<EOSQL
|
||||
SELECT *, 201 AS sync_status FROM collection
|
||||
LEFT JOIN caldav_data USING (collection_id)
|
||||
LEFT JOIN calendar_item USING (dav_id)
|
||||
WHERE collection.collection_id = ?
|
||||
EOSQL;
|
||||
$qry = new PgQuery($sql, $request->CollectionId());
|
||||
}
|
||||
else {
|
||||
$sql = <<<EOSQL
|
||||
SELECT * FROM collection LEFT JOIN sync_changes USING(collection_id)
|
||||
LEFT JOIN calendar_item USING (dav_id)
|
||||
LEFT JOIN caldav_data USING (dav_id)
|
||||
WHERE collection.collection_id = ?
|
||||
AND sync_time > (SELECT modification_time FROM sync_tokens WHERE sync_token = ?)
|
||||
EOSQL;
|
||||
$qry = new PgQuery($sql, $request->CollectionId(), $sync_token);
|
||||
}
|
||||
|
||||
if ( $qry->Exec("REPORT",__LINE__,__FILE__) ) {
|
||||
while( $object = $qry->Fetch() ) {
|
||||
$resultset = array(
|
||||
new XMLElement( 'href', ConstructURL($object->dav_name) ),
|
||||
new XMLElement( 'status', display_status($object->sync_status) )
|
||||
);
|
||||
if ( $status != 404 ) {
|
||||
$dav_resource = new DAVResource($object);
|
||||
$resultset = array_merge( $resultset, $dav_resource->GetPropStat($proplist) );
|
||||
}
|
||||
$responses[] = new XMLElement( 'sync-response', $resultset );
|
||||
}
|
||||
$responses[] = new XMLElement( 'sync-token', $new_token );
|
||||
}
|
||||
else {
|
||||
$request->DoResponse( 500, translate("Database error") );
|
||||
}
|
||||
|
||||
$multistatus = new XMLElement( "multistatus", $responses, $reply->GetXmlNsArray() );
|
||||
|
||||
$request->XMLResponse( 207, $multistatus );
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user