Example #1
0
 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/";
 }
Example #2
0
 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;
 }