- Модуль: dav
- Путь к файлу: ~/bitrix/modules/dav/classes/general/groupdav.php
- Класс: constCDavGroupDav
- Вызов: CDavGroupDav::ParsePath
private function ParsePath($path)
{
$path = trim($path, "/");
if ($path == '')
{
$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('', '', 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", mb_substr($part, -4)) && strcasecmp(".vcf", mb_substr($part, -4))))
$arPath[] = $part;
else
$id = mb_substr($part, 0, -4);
}
return array(
"site" => $site,
"account" => $account,
"accountPrefix" => $accountPrefix,
"application" => $application,
"path" => $arPath,
"id" => $id
);
}