/** * @param string $principalUri * @return int|null */ function dav_compat_principal2uid($principalUri = "") { if (strlen($principalUri) == 0) { return null; } if ($principalUri[0] == "/") { $principalUri = substr($principalUri, 1); } if (strpos($principalUri, "principals/users/") !== 0) { return null; } $username = substr($principalUri, strlen("principals/users/")); return dav_compat_username2id($username); }
/** * Returns a list of calendars for a principal. * * Every project is an array with the following keys: * * id, a unique id that will be used by other functions to modify the * calendar. This can be the same as the uri or a database key. * * uri, which the basename of the uri with which the calendar is * accessed. * * principaluri. The owner of the calendar. Almost always the same as * principalUri passed to this method. * * Furthermore it can contain webdav properties in clark notation. A very * common one is '{DAV:}displayname'. * * @param string $principalUri * @return array */ public function getCalendarsForUser($principalUri) { list(, $name) = Sabre_DAV_URLUtil::splitPath($principalUri); $user_id = dav_compat_username2id($name); $cals = q("SELECT * FROM %s%scalendars WHERE `uid`=%d AND `namespace` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $user_id, $this->getNamespace()); $ret = array(); foreach ($cals as $cal) { $dat = array("id" => $cal["namespace"] . "-" . $cal["namespace_id"], "uri" => $this->getCalUrlPrefix() . "-" . $cal["namespace_id"], "principaluri" => $principalUri, '{' . Sabre_CalDAV_Plugin::NS_CALENDARSERVER . '}getctag' => $cal['ctag'] ? $cal['ctag'] : '0', "calendar_class" => "Sabre_CalDAV_Calendar"); foreach ($this->propertyMap as $key => $field) { $dat[$key] = $cal[$field]; } $ret[] = $dat; } return $ret; }
/** * @param string $principalUri * @return array|null */ function dav_compat_principal2namespace($principalUri = "") { if (strlen($principalUri) == 0) { return null; } if ($principalUri[0] == "/") { $principalUri = substr($principalUri, 1); } if (strpos($principalUri, "principals/users/") !== 0) { return null; } $username = substr($principalUri, strlen("principals/users/")); return array("namespace" => CALDAV_NAMESPACE_PRIVATE, "namespace_id" => dav_compat_username2id($username)); }