public function GetHomeCollectionUrl($siteId, $account, $arPath) { if (is_null($siteId)) { return ""; } $url = "/" . $siteId; if (is_null($account)) { if (is_null($arPath) || count($arPath) == 0) { return ""; } return $url . "/calendar/" . $arPath[0] . "/"; } $arAccount = CDavAccount::GetAccountById($account); if (is_null($arAccount)) { return ""; } return $url . "/" . $arAccount["CODE"] . "/calendar/"; }
private function ParsePath($path) { $path = trim($path, "/"); if (strlen($path) <= 0) { $siteId = $this->request->GetSiteId(); $this->response->SetEncoding($siteId); return array("site" => $siteId, "account" => null, "accountPrefix" => "/" . $siteId, "application" => null, "path" => null, "id" => null); } $arParts = explode('/', trim($path, "/")); // /ru/admin/calendar/25/1.ics // /ru/group-7/calendar/43/4.ics // /ru/calendar/12/48/3.ics $part = array_shift($arParts); $arSite = null; try { $dbSite = CSite::GetList($o, $b, array("LID" => $part, "ACTIVE" => "Y")); if (!($arSite = $dbSite->Fetch())) { $arSite = null; } } catch (Exception $e) { $arSite = null; } $site = null; if (!is_null($arSite)) { $site = $arSite["ID"]; $part = array_shift($arParts); } if (is_null($site)) { $site = $this->request->GetSiteId(); } $this->response->SetEncoding($site); try { $arAccount = CDavAccount::GetAccountByName($part); if (!$arAccount) { $arAccount = CDavAccount::GetAccountByName(urldecode($part)); } } catch (Exception $e) { $arAccount = null; } $account = null; $accountPrefix = "/" . $site; if (!is_null($arAccount)) { $account = array($arAccount["TYPE"], $arAccount["ID"]); $accountPrefix .= '/' . $part; $part = array_shift($arParts); } $application = $part; $arPath = array(); $id = null; while (count($arParts) > 0) { $part = array_shift($arParts); if (count($arParts) > 0 || strcasecmp(".ics", substr($part, -4)) && strcasecmp(".vcf", substr($part, -4))) { $arPath[] = $part; } else { $id = substr($part, 0, -4); } } return array("site" => $site, "account" => $account, "accountPrefix" => $accountPrefix, "application" => $application, "path" => $arPath, "id" => $id); }
public function Read($collectionId, $id) { $arContacts = CDavAccount::GetAddressbookContactsList($collectionId, array("ID" => $id)); if (count($arContacts) <= 0) { return null; } $request = $this->groupdav->GetRequest(); if (!$this->CheckPrivileges('DAV:read', $request->GetPrincipal(), $collectionId)) { return false; } $contact = $arContacts[0]; return $contact; }
protected function PropfindUsers(&$arResources, $siteId, $account, $arPath, $id = null, $depth = 0) { $request = $this->groupdav->GetRequest(); if (is_null($account)) { $resource = new CDavResource("/principals/user/"); $resource->AddProperty('current-user-principal', array('href', $request->GetPrincipalUrl())); $resource->AddProperty('resourcetype', array(array('collection', ''), array('principal', '', CDavGroupDav::DAV))); $arResources[] = $resource; if ($depth) { $arUsers = CDavAccount::GetAccountsList("user"); foreach ($arUsers as $u) { $this->AddUser($arResources, $siteId, $u); } } } else { $arUser = CDavAccount::GetAccountById($account); if (!$arUser) { return '404 Not Found'; } $this->AddUser($arResources, $siteId, $arUser); } return true; }