public function SetCurrentEncoding($siteId = null) { $this->encoding = CDav::GetCharset($siteId); if (is_null($this->encoding) || empty($this->encoding)) { $this->encoding = "utf-8"; } }
public function GetPrincipalUrl(CDavRequest $request) { if (strlen($this->principalURL) > 0) { return $this->principalURL; } if (strpos($request->GetBaseUri(), 'http') === 0) { $this->principalURL = CDav::CheckIfRightSlashAdded($request->GetBaseUri()); } else { $this->principalURL = ($request->GetParameter("HTTPS") === "on" ? "https" : "http") . '://' . $request->GetParameter('HTTP_HOST') . $request->GetParameter('SCRIPT_NAME') . '/'; } $this->principalURL .= 'principals/user/' . $this->Login() . '/'; if (!$request->IsUrlRequired()) { $this->principalURL = parse_url($this->principalURL, PHP_URL_PATH); } return $this->principalURL; }
/** * Process WebDAV HTTP request. * * @param void * @return void */ public function ProcessRequest() { /** @var CDavRequest $request */ $request = $this->request; $response = $this->response; if (strstr($request->GetParameter("REQUEST_URI"), '#')) { $response->SetHttpStatus("400 Bad Request"); $response->Render(); return; } $response->AddHeader("X-Dav-Powered-By: " . $this->davPoweredBy); // skip auth check for OPTIONS requests on "/" - http://pear.php.net/bugs/bug.php?id=5363 if (($request->GetParameter('REQUEST_METHOD') != 'OPTIONS' || $request->GetPath() != "/") && !$this->CheckAuthWrapper()) { $response->SetHttpStatus('401 Unauthorized'); $response->AddHeader('WWW-Authenticate: Basic realm="' . $this->davPoweredBy . '"'); if ($this instanceof CDavWebDavServer && CDav::isDigestEnabled() && COption::GetOptionString("main", "use_digest_auth", "N") == "Y") { // On first try we found that we don't know user digest hash. Let ask only Basic auth first. if ($_SESSION["BX_HTTP_DIGEST_ABSENT"] !== true) { $response->AddHeader('WWW-Authenticate: Digest realm="' . $this->davPoweredBy . '", nonce="' . uniqid() . '"'); } } $response->Render(); return; } if (!$this->CheckIfHeaderConditions()) { return; } $method = strtolower($request->GetParameter("REQUEST_METHOD")); $wrapper = $method . "Wrapper"; if ($method == "head" && !method_exists($this, "head")) { $method = "get"; } if (method_exists($this, $wrapper) && ($method == "options" || method_exists($this, $method))) { $this->{$wrapper}(); $response->Render(); } else { if ($request->GetParameter("REQUEST_METHOD") == "LOCK") { $error = '412 Precondition failed'; } else { $error = '405 Method not allowed'; $response->AddHeader("Allow: " . join(",", $this->GetAllowableMethods())); } $response->GenerateError($error); $response->Render(); } }
public static function DataSync($paramUserId = 0) { $exchangeScheme = COption::GetOptionString("dav", "exchange_scheme", "http"); $exchangeServer = COption::GetOptionString("dav", "exchange_server", ""); $exchangePort = COption::GetOptionString("dav", "exchange_port", "80"); $exchangeUsername = COption::GetOptionString("dav", "exchange_username", ""); $exchangePassword = COption::GetOptionString("dav", "exchange_password", ""); if (empty($exchangeServer)) { CAgent::RemoveAgent("CDavExchangeTasks::DataSync();", "dav"); COption::SetOptionString("dav", "agent_tasks", "N"); return ""; } $exchange = new CDavExchangeTasks($exchangeScheme, $exchangeServer, $exchangePort, $exchangeUsername, $exchangePassword); $exchangeMailbox = COption::GetOptionString("dav", "exchange_mailbox", ""); $exchangeUseLogin = COption::GetOptionString("dav", "exchange_use_login", "Y"); self::InitUserEntity(); $maxNumber = 5; $index = 0; $paramUserId = intval($paramUserId); $arUserFilter = array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false); if ($paramUserId > 0) { $arUserFilter["ID_EQUAL_EXACT"] = $paramUserId; } if ($exchangeUseLogin == "N") { $arUserFilter["!UF_BXDAVEX_MAILBOX"] = false; } $arAdditionalExtendedProperties = array(array('DistinguishedPropertySetId' => 'PublicStrings', 'PropertyName' => 'BX_TASKS_GUID', 'PropertyType' => 'String'), array('DistinguishedPropertySetId' => 'PublicStrings', 'PropertyName' => 'BX_TASKS_SERIALIZED_DATA', 'PropertyType' => 'String')); $dbUserList = CUser::GetList($by = "UF_BXDAVEX_TSKSYNC", $order = "asc", $arUserFilter, array("SELECT" => array("ID", "LOGIN", "UF_BXDAVEX_MAILBOX", "UF_BXDAVEX_TSKSYNC"))); while ($arUser = $dbUserList->Fetch()) { $index++; if ($index > $maxNumber) { break; } $GLOBALS["USER_FIELD_MANAGER"]->Update("USER", $arUser["ID"], array("UF_BXDAVEX_TSKSYNC" => ConvertTimeStamp(time(), FULL))); $mailbox = $exchangeUseLogin == "Y" ? $arUser["LOGIN"] . $exchangeMailbox : $arUser["UF_BXDAVEX_MAILBOX"]; if (empty($mailbox)) { continue; } $arFoldersList = $exchange->GetFoldersList(array("mailbox" => $mailbox)); if (!is_array($arFoldersList)) { if (DAV_CALDAV_DEBUG) { CDav::WriteToLog('Error during tasks exchange: $exchange->GetFoldersList() returns unexpected result', ''); } return; } $arUserFolders = array("tasks" => GetMessage("DAV_EC_TASKS")); foreach ($arFoldersList as $value) { $arUserFolders[$value["XML_ID"]] = $value["NAME"]; } $arUserTaskItems = array(); $arUserTaskItemsFolder = array(); foreach ($arUserFolders as $userFolderXmlId => $userFolder) { $arTaskItemsList = $exchange->GetList(array("mailbox" => $mailbox, "FolderId" => $userFolderXmlId), array("ItemShape" => "IdOnly"), $arAdditionalExtendedProperties); if (!is_array($arTaskItemsList)) { if (DAV_CALDAV_DEBUG) { CDav::WriteToLog('Error during tasks exchange: $exchange->GetList() returns unexpected result', ''); } return; } foreach ($arTaskItemsList as $value) { $arUserTaskItems[] = array("XML_ID" => $value["XML_ID"], "MODIFICATION_LABEL" => $value["MODIFICATION_LABEL"]); $arUserTaskItemsFolder[$value["XML_ID"]] = $userFolderXmlId; } } $arModifiedUserTaskItems = CTaskSync::SyncTaskItems("exchange", $arUser["ID"], $arUserTaskItems); foreach ($arModifiedUserTaskItems as $value) { $arModifiedTaskItem = $exchange->GetById($value["XML_ID"], $arAdditionalExtendedProperties); if (is_array($arModifiedTaskItem) && count($arModifiedTaskItem) > 0) { $arModifiedTaskItem = $arModifiedTaskItem[0]; $arModifyEventArray = array_merge($arModifiedTaskItem, array("ID" => $value["ID"], "USER_ID" => $arUser["ID"], "FOLDER_ID" => $arUserFolders[$arUserTaskItemsFolder[$arModifiedTaskItem["XML_ID"]]])); //XML_ID, MODIFICATION_LABEL, SUBJECT, BODY, BODY_TYPE, DATE_CREATE, IMPORTANCE, REMINDER_MINUTES_BEFORE_START, ACTUAL_WORK, BILLING_INFORMATION, MILEAGE, START_DATE, DUE_DATE, IS_COMPLETE, IS_RECURRING, PERCENT_COMPLETE, STATUS, STATUS_DESCRIPTION, TOTAL_WORK, OWNER, RECURRING_TYPE, RECURRING_INTERVAL, RECURRING_DAYOFMONTH, RECURRING_DAYSOFWEEK, RECURRING_DAYOFWEEKINDEX, RECURRING_MONTH, RECURRING_STARTDATE, RECURRING_NUMBEROFOCCURRENCES, RECURRING_ENDDATE CTaskSync::SyncModifyTaskItem($arModifyEventArray); } } } return "CDavExchangeTasks::DataSync();"; }
<?php define("STOP_STATISTICS", true); define("STOP_WEBDAV", true); define("NOT_CHECK_PERMISSIONS", true); define('NO_AGENT_CHECK', true); define("DisableEventsCheck", true); if (isset($_REQUEST["help"]) && ($_REQUEST["help"] === "Y" || $_REQUEST["help"] === "y")) { require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/dav/help.php"; die; } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; CModule::IncludeModule("dav"); CDav::Report("<<<<<<<<<<<<<< REQUEST >>>>>>>>>>>>>>>>", "\n" . print_r(array("REQUEST_METHOD" => $_SERVER["REQUEST_METHOD"], "REQUEST_URI" => $_SERVER["REQUEST_URI"], "PATH_INFO" => $_SERVER["PATH_INFO"], "HTTP_DEPTH" => $_SERVER["HTTP_DEPTH"], "AUTH_TYPE" => $_SERVER["AUTH_TYPE"], "PHP_AUTH_USER" => $_SERVER["PHP_AUTH_USER"]), true) . "\n", "UNDEFINED", true); CDav::ProcessRequest(); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
public function Delete($id, $siteId, $account, $arPath) { $calendarId = $this->GetCalendarId($siteId, $account, $arPath); if ($calendarId == null) { return '404 Not Found'; } $request = $this->groupdav->GetRequest(); $oldEvent = $this->GetEntry('DELETE', $id, $calendarId); if (!is_array($oldEvent)) { return $oldEvent; } CDav::Report("CDavCalendarHandler::Delete", "id", $id); return CCalendar::DeleteCalendarEvent($calendarId, $oldEvent["ID"], $request->GetPrincipal()->Id()); }
public static function GetList($arOrder = array("ID" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "PATH", "EXPIRES", "LOCK_OWNER", "LOCK_DEPTH", "LOCK_TYPE", "LOCK_SCOPE", "CREATED", "MODIFIED"); } static $arFields = array("ID" => array("FIELD" => "L.ID", "TYPE" => "string"), "PATH" => array("FIELD" => "L.PATH", "TYPE" => "string"), "EXPIRES" => array("FIELD" => "L.EXPIRES", "TYPE" => "int"), "LOCK_OWNER" => array("FIELD" => "L.LOCK_OWNER", "TYPE" => "string"), "LOCK_DEPTH" => array("FIELD" => "L.LOCK_DEPTH", "TYPE" => "string"), "LOCK_TYPE" => array("FIELD" => "L.LOCK_TYPE", "TYPE" => "string"), "LOCK_SCOPE" => array("FIELD" => "L.LOCK_SCOPE", "TYPE" => "string"), "CREATED" => array("FIELD" => "L.CREATED", "TYPE" => "datetime"), "MODIFIED" => array("FIELD" => "L.MODIFIED", "TYPE" => "datetime")); $arSqls = CDav::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_dav_locks L " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return False; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_dav_locks L " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_dav_locks L " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { // рнкэйн дкъ MYSQL!!! дкъ ORACLE дпсцни йнд $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $dbRes = new CDavVirtualFileSystemResult($dbRes); return $dbRes; }
} if (!$_SERVER['PHP_AUTH_USER'] || !$_SERVER['PHP_AUTH_USER']) { $res = !empty($_SERVER['REDIRECT_REMOTE_USER']) ? $_SERVER['REDIRECT_REMOTE_USER'] : $_SERVER['REMOTE_USER']; if (!empty($res) && preg_match('/(?<=(basic\\s))(.*)$/is', $res, $matches)) { $res = trim($matches[0]); list($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"]) = explode(':', base64_decode($res)); } } if (!is_array($GLOBALS["APPLICATION"]->arComponentMatch)) { $GLOBALS["APPLICATION"]->arComponentMatch = array(); } $GLOBALS["APPLICATION"]->arComponentMatch[] = 'dav'; $GLOBALS["APPLICATION"]->arComponentMatch[] = 'disk'; $GLOBALS["APPLICATION"]->arComponentMatch[] = 'socialnetwork'; define("STOP_STATISTICS", true); define("NO_AGENT_STATISTIC", "Y"); define("NO_AGENT_CHECK", true); $GLOBALS["APPLICATION"]->ShowPanel = false; if (CModule::IncludeModule("dav") && CModule::IncludeModule("disk")) { //CDav::OnBeforePrologWebDav(); CDav::Report("<<<<<<<<<<<<<< REQUEST >>>>>>>>>>>>>>>>", "\n" . print_r(array("REQUEST_METHOD" => $_SERVER["REQUEST_METHOD"], "REQUEST_URI" => $_SERVER["REQUEST_URI"], "PATH_INFO" => $_SERVER["PATH_INFO"], "HTTP_DEPTH" => $_SERVER["HTTP_DEPTH"], "AUTH_TYPE" => $_SERVER["AUTH_TYPE"], "PHP_AUTH_USER" => $_SERVER["PHP_AUTH_USER"]), true) . "\n", "UNDEFINED", true); CDav::ProcessWebDavRequest(); //OnBeforePrologWebDav(); die; } } } $app = $GLOBALS["USER"]->GetParam("APPLICATION_ID"); if ($app == "caldav" || $app == "carddav" || $app == "webdav") { die; }
public function Put($id, $siteId, $account, $arPath) { $collectionId = $this->GetCollectionId($siteId, $account, $arPath); if ($collectionId == null) { return '404 Not Found'; } $request = $this->groupdav->GetRequest(); $oldCard = $this->GetEntry('PUT', $id, $collectionId); if (!is_null($oldCard) && !is_array($oldCard)) { return $oldCard; } $charset = "utf-8"; $arContentParameters = $request->GetContentParameters(); if (!empty($arContentParameters['CONTENT_TYPE'])) { $arContentType = explode(';', $arContentParameters['CONTENT_TYPE']); if (count($arContentType) > 1) { array_shift($arContentType); foreach ($arContentType as $attribute) { $attribute = trim($attribute); list($key, $value) = explode('=', $attribute); if (strtolower($key) == 'charset') { $charset = strtolower($value); } } } } $content = $request->GetRequestBody(); $content = htmlspecialcharsback($content); if (is_array($oldCard)) { $contactId = $oldCard['ID']; } else { $contactId = 0; } $cs = CDav::GetCharset($siteId); if (is_null($cs) || empty($cs)) { $cs = "utf-8"; } $content = $GLOBALS["APPLICATION"]->ConvertCharset($content, $charset, $cs); // Create record return "201 Created"; }
public function GetRequestBody() { if ($this->rawRequestBody == null) { $this->rawRequestBody = file_get_contents('php://input'); CDav::Report("<<<<<<<<<<<<<< REQUEST BODY >>>>>>>>>>>>>>>>", "\n" . $this->rawRequestBody . "\n", "UNDEFINED", true); } return $this->rawRequestBody; }
public static function DoCheckCalDAVServer($scheme, $host = null, $port = null, $username = null, $password = null, $path = null) { if ($scheme . "!" == intval($scheme) . "!") { $scheme = intval($scheme); if ($scheme <= 0) { return false; } $arConnection = CDavConnection::GetById($scheme); if (!is_array($arConnection)) { return false; } $scheme = $arConnection["SERVER_SCHEME"]; $host = $arConnection["SERVER_HOST"]; $port = $arConnection["SERVER_PORT"]; $username = $arConnection["SERVER_USERNAME"]; $password = $arConnection["SERVER_PASSWORD"]; $path = $arConnection["SERVER_PATH"]; } $client = new CDavGroupdavClientCalendar($scheme, $host, $port, $username, $password); if (CDav::UseProxy()) { $arProxy = CDav::GetProxySettings(); $client->SetProxy($arProxy["PROXY_SCHEME"], $arProxy["PROXY_HOST"], $arProxy["PROXY_PORT"], $arProxy["PROXY_USERNAME"], $arProxy["PROXY_PASSWORD"]); } return $client->CheckWebdavServer($path); }
public static function GetList($arOrder = array("ID" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "ENTITY_TYPE", "ENTITY_ID", "ACCOUNT_TYPE", "NAME", "SERVER_SCHEME", "SERVER_HOST", "SERVER_PORT", "SERVER_USERNAME", "SERVER_PASSWORD", "SERVER_PATH", "CREATED", "MODIFIED", "SYNCHRONIZED", "LAST_RESULT"); } static $arFields = array("ID" => array("FIELD" => "N.ID", "TYPE" => "int"), "ENTITY_TYPE" => array("FIELD" => "N.ENTITY_TYPE", "TYPE" => "string"), "ENTITY_ID" => array("FIELD" => "N.ENTITY_ID", "TYPE" => "int"), "ACCOUNT_TYPE" => array("FIELD" => "N.ACCOUNT_TYPE", "TYPE" => "string"), "NAME" => array("FIELD" => "N.NAME", "TYPE" => "string"), "SERVER_SCHEME" => array("FIELD" => "N.SERVER_SCHEME", "TYPE" => "string"), "SERVER_HOST" => array("FIELD" => "N.SERVER_HOST", "TYPE" => "string"), "SERVER_PORT" => array("FIELD" => "N.SERVER_PORT", "TYPE" => "int"), "SERVER_USERNAME" => array("FIELD" => "N.SERVER_USERNAME", "TYPE" => "string"), "SERVER_PASSWORD" => array("FIELD" => "N.SERVER_PASSWORD", "TYPE" => "string"), "SERVER_PATH" => array("FIELD" => "N.SERVER_PATH", "TYPE" => "string"), "CREATED" => array("FIELD" => "N.CREATED", "TYPE" => "datetime"), "MODIFIED" => array("FIELD" => "N.MODIFIED", "TYPE" => "datetime"), "SYNCHRONIZED" => array("FIELD" => "N.SYNCHRONIZED", "TYPE" => "datetime"), "LAST_RESULT" => array("FIELD" => "N.LAST_RESULT", "TYPE" => "string")); $arSqls = CDav::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_dav_connections N " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return False; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_dav_connections N " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_dav_connections N " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { // рнкэйн дкъ MYSQL!!! дкъ ORACLE дпсцни йнд $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $dbRes = new CDavConnectionResult($dbRes); return $dbRes; }
public static function PrepareSql(&$arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields) { global $DB; $strSqlSelect = ""; $strSqlFrom = ""; $strSqlWhere = ""; $strSqlGroupBy = ""; $strSqlOrderBy = ""; $arGroupByFunct = array("COUNT", "AVG", "MIN", "MAX", "SUM"); $arAlreadyJoined = array(); // GROUP BY --> if (is_array($arGroupBy) && count($arGroupBy) > 0) { $arSelectFields = $arGroupBy; foreach ($arGroupBy as $key => $val) { $val = strtoupper($val); $key = strtoupper($key); if (array_key_exists($val, $arFields) && !in_array($key, $arGroupByFunct)) { if (strlen($strSqlGroupBy) > 0) { $strSqlGroupBy .= ", "; } $strSqlGroupBy .= $arFields[$val]["FIELD"]; if (isset($arFields[$val]["FROM"]) && strlen($arFields[$val]["FROM"]) > 0 && !in_array($arFields[$val]["FROM"], $arAlreadyJoined)) { if (strlen($strSqlFrom) > 0) { $strSqlFrom .= " "; } $strSqlFrom .= $arFields[$val]["FROM"]; $arAlreadyJoined[] = $arFields[$val]["FROM"]; } } } } // <-- GROUP BY // SELECT --> $arFieldsKeys = array_keys($arFields); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSqlSelect = "COUNT(%%_DISTINCT_%% " . $arFields[$arFieldsKeys[0]]["FIELD"] . ") as CNT "; } else { if (isset($arSelectFields) && !is_array($arSelectFields) && is_string($arSelectFields) && strlen($arSelectFields) > 0 && array_key_exists($arSelectFields, $arFields)) { $arSelectFields = array($arSelectFields); } if (!isset($arSelectFields) || !is_array($arSelectFields) || count($arSelectFields) <= 0 || in_array("*", $arSelectFields)) { for ($i = 0, $n = count($arFieldsKeys); $i < $n; $i++) { if (isset($arFields[$arFieldsKeys[$i]]["WHERE_ONLY"]) && $arFields[$arFieldsKeys[$i]]["WHERE_ONLY"] == "Y") { continue; } if (strlen($strSqlSelect) > 0) { $strSqlSelect .= ", "; } if ($arFields[$arFieldsKeys[$i]]["TYPE"] == "datetime") { if (array_key_exists($arFieldsKeys[$i], $arOrder)) { $strSqlSelect .= $arFields[$arFieldsKeys[$i]]["FIELD"] . " as " . $arFieldsKeys[$i] . "_X1, "; } $strSqlSelect .= $DB->DateToCharFunction($arFields[$arFieldsKeys[$i]]["FIELD"], "FULL") . " as " . $arFieldsKeys[$i]; } elseif ($arFields[$arFieldsKeys[$i]]["TYPE"] == "date") { if (array_key_exists($arFieldsKeys[$i], $arOrder)) { $strSqlSelect .= $arFields[$arFieldsKeys[$i]]["FIELD"] . " as " . $arFieldsKeys[$i] . "_X1, "; } $strSqlSelect .= $DB->DateToCharFunction($arFields[$arFieldsKeys[$i]]["FIELD"], "SHORT") . " as " . $arFieldsKeys[$i]; } else { $strSqlSelect .= $arFields[$arFieldsKeys[$i]]["FIELD"] . " as " . $arFieldsKeys[$i]; } if (isset($arFields[$arFieldsKeys[$i]]["FROM"]) && strlen($arFields[$arFieldsKeys[$i]]["FROM"]) > 0 && !in_array($arFields[$arFieldsKeys[$i]]["FROM"], $arAlreadyJoined)) { if (strlen($strSqlFrom) > 0) { $strSqlFrom .= " "; } $strSqlFrom .= $arFields[$arFieldsKeys[$i]]["FROM"]; $arAlreadyJoined[] = $arFields[$arFieldsKeys[$i]]["FROM"]; } } } else { foreach ($arSelectFields as $key => $val) { $val = strtoupper($val); $key = strtoupper($key); if (array_key_exists($val, $arFields)) { if (strlen($strSqlSelect) > 0) { $strSqlSelect .= ", "; } if (in_array($key, $arGroupByFunct)) { $strSqlSelect .= $key . "(" . $arFields[$val]["FIELD"] . ") as " . $val; } else { if ($arFields[$val]["TYPE"] == "datetime") { if (array_key_exists($val, $arOrder)) { $strSqlSelect .= $arFields[$val]["FIELD"] . " as " . $val . "_X1, "; } $strSqlSelect .= $DB->DateToCharFunction($arFields[$val]["FIELD"], "FULL") . " as " . $val; } elseif ($arFields[$val]["TYPE"] == "date") { if (array_key_exists($val, $arOrder)) { $strSqlSelect .= $arFields[$val]["FIELD"] . " as " . $val . "_X1, "; } $strSqlSelect .= $DB->DateToCharFunction($arFields[$val]["FIELD"], "SHORT") . " as " . $val; } else { $strSqlSelect .= $arFields[$val]["FIELD"] . " as " . $val; } } if (isset($arFields[$val]["FROM"]) && strlen($arFields[$val]["FROM"]) > 0 && !in_array($arFields[$val]["FROM"], $arAlreadyJoined)) { if (strlen($strSqlFrom) > 0) { $strSqlFrom .= " "; } $strSqlFrom .= $arFields[$val]["FROM"]; $arAlreadyJoined[] = $arFields[$val]["FROM"]; } } } } if (strlen($strSqlGroupBy) > 0) { if (strlen($strSqlSelect) > 0) { $strSqlSelect .= ", "; } $strSqlSelect .= "COUNT(%%_DISTINCT_%% " . $arFields[$arFieldsKeys[0]]["FIELD"] . ") as CNT"; } else { $strSqlSelect = "%%_DISTINCT_%% " . $strSqlSelect; } } // <-- SELECT // WHERE --> $arSqlSearch = array(); if (!is_array($arFilter)) { $filter_keys = array(); } else { $filter_keys = array_keys($arFilter); } for ($i = 0, $n = count($filter_keys); $i < $n; $i++) { $vals = $arFilter[$filter_keys[$i]]; if (!is_array($vals)) { $vals = array($vals); } $key = $filter_keys[$i]; $key_res = CDav::GetFilterOperation($key); $key = $key_res["FIELD"]; $strNegative = $key_res["NEGATIVE"]; $strOperation = $key_res["OPERATION"]; $strOrNull = $key_res["OR_NULL"]; if (array_key_exists($key, $arFields)) { $arSqlSearch_tmp = array(); for ($j = 0, $n1 = count($vals); $j < $n1; $j++) { $val = $vals[$j]; if (isset($arFields[$key]["WHERE"])) { $arSqlSearch_tmp1 = call_user_func_array($arFields[$key]["WHERE"], array($val, $key, $strOperation, $strNegative, $arFields[$key]["FIELD"], $arFields, $arFilter)); if ($arSqlSearch_tmp1 !== false) { $arSqlSearch_tmp[] = $arSqlSearch_tmp1; } } else { if ($arFields[$key]["TYPE"] == "int") { if (IntVal($val) == 0 && strpos($strOperation, "=") !== False) { $arSqlSearch_tmp[] = "(" . $arFields[$key]["FIELD"] . " IS " . ($strNegative == "Y" ? "NOT " : "") . "NULL) " . ($strNegative == "Y" ? "AND" : "OR") . " " . ($strNegative == "Y" ? "NOT " : "") . "(" . $arFields[$key]["FIELD"] . " " . $strOperation . " 0)"; } else { $arSqlSearch_tmp[] = ($strNegative == "Y" ? " " . $arFields[$key]["FIELD"] . " IS NULL OR NOT " : "") . "(" . $arFields[$key]["FIELD"] . " " . $strOperation . " " . IntVal($val) . " )"; } } elseif ($arFields[$key]["TYPE"] == "double") { $val = str_replace(",", ".", $val); if (DoubleVal($val) == 0 && strpos($strOperation, "=") !== False) { $arSqlSearch_tmp[] = "(" . $arFields[$key]["FIELD"] . " IS " . ($strNegative == "Y" ? "NOT " : "") . "NULL) " . ($strNegative == "Y" ? "AND" : "OR") . " " . ($strNegative == "Y" ? "NOT " : "") . "(" . $arFields[$key]["FIELD"] . " " . $strOperation . " 0)"; } else { $arSqlSearch_tmp[] = ($strNegative == "Y" ? " " . $arFields[$key]["FIELD"] . " IS NULL OR NOT " : "") . "(" . $arFields[$key]["FIELD"] . " " . $strOperation . " " . DoubleVal($val) . " )"; } } elseif ($arFields[$key]["TYPE"] == "string" || $arFields[$key]["TYPE"] == "char") { if ($strOperation == "QUERY") { $arSqlSearch_tmp[] = GetFilterQuery($arFields[$key]["FIELD"], $val, "Y"); } else { if (strlen($val) == 0 && strpos($strOperation, "=") !== False) { $arSqlSearch_tmp[] = "(" . $arFields[$key]["FIELD"] . " IS " . ($strNegative == "Y" ? "NOT " : "") . "NULL) " . ($strNegative == "Y" ? "AND NOT" : "OR") . " (" . $DB->Length($arFields[$key]["FIELD"]) . " <= 0) " . ($strNegative == "Y" ? "AND NOT" : "OR") . " (" . $arFields[$key]["FIELD"] . " " . $strOperation . " '" . $DB->ForSql($val) . "' )"; } else { $arSqlSearch_tmp[] = ($strNegative == "Y" ? " " . $arFields[$key]["FIELD"] . " IS NULL OR NOT " : "") . "(" . $arFields[$key]["FIELD"] . " " . $strOperation . " '" . $DB->ForSql($val) . "' )"; } } } elseif ($arFields[$key]["TYPE"] == "datetime") { if (strlen($val) <= 0) { $arSqlSearch_tmp[] = ($strNegative == "Y" ? "NOT" : "") . "(" . $arFields[$key]["FIELD"] . " IS NULL)"; } else { $arSqlSearch_tmp[] = ($strNegative == "Y" ? " " . $arFields[$key]["FIELD"] . " IS NULL OR NOT " : "") . "(" . $arFields[$key]["FIELD"] . " " . $strOperation . " " . $DB->CharToDateFunction($DB->ForSql($val), "FULL") . ")"; } } elseif ($arFields[$key]["TYPE"] == "date") { if (strlen($val) <= 0) { $arSqlSearch_tmp[] = ($strNegative == "Y" ? "NOT" : "") . "(" . $arFields[$key]["FIELD"] . " IS NULL)"; } else { $arSqlSearch_tmp[] = ($strNegative == "Y" ? " " . $arFields[$key]["FIELD"] . " IS NULL OR NOT " : "") . "(" . $arFields[$key]["FIELD"] . " " . $strOperation . " " . $DB->CharToDateFunction($DB->ForSql($val), "SHORT") . ")"; } } } } if (isset($arFields[$key]["FROM"]) && strlen($arFields[$key]["FROM"]) > 0 && !in_array($arFields[$key]["FROM"], $arAlreadyJoined)) { if (strlen($strSqlFrom) > 0) { $strSqlFrom .= " "; } $strSqlFrom .= $arFields[$key]["FROM"]; $arAlreadyJoined[] = $arFields[$key]["FROM"]; } $strSqlSearch_tmp = ""; for ($j = 0, $n2 = count($arSqlSearch_tmp); $j < $n2; $j++) { if ($j > 0) { $strSqlSearch_tmp .= $strNegative == "Y" ? " AND " : " OR "; } $strSqlSearch_tmp .= "(" . $arSqlSearch_tmp[$j] . ")"; } if ($strOrNull == "Y") { if (strlen($strSqlSearch_tmp) > 0) { $strSqlSearch_tmp .= $strNegative == "Y" ? " AND " : " OR "; } $strSqlSearch_tmp .= "(" . $arFields[$key]["FIELD"] . " IS " . ($strNegative == "Y" ? "NOT " : "") . "NULL)"; if (strlen($strSqlSearch_tmp) > 0) { $strSqlSearch_tmp .= $strNegative == "Y" ? " AND " : " OR "; } if ($arFields[$key]["TYPE"] == "int" || $arFields[$key]["TYPE"] == "double") { $strSqlSearch_tmp .= "(" . $arFields[$key]["FIELD"] . " " . ($strNegative == "Y" ? "<>" : "=") . " 0)"; } elseif ($arFields[$key]["TYPE"] == "string" || $arFields[$key]["TYPE"] == "char") { $strSqlSearch_tmp .= "(" . $arFields[$key]["FIELD"] . " " . ($strNegative == "Y" ? "<>" : "=") . " '')"; } } if ($strSqlSearch_tmp != "") { $arSqlSearch[] = "(" . $strSqlSearch_tmp . ")"; } } } for ($i = 0, $n = count($arSqlSearch); $i < $n; $i++) { if (strlen($strSqlWhere) > 0) { $strSqlWhere .= " AND "; } $strSqlWhere .= "(" . $arSqlSearch[$i] . ")"; } // <-- WHERE // ORDER BY --> $arSqlOrder = array(); foreach ($arOrder as $by => $order) { $by = strtoupper($by); $order = strtoupper($order); if ($order != "ASC") { $order = "DESC"; } else { $order = "ASC"; } if (array_key_exists($by, $arFields)) { if ($arFields[$by]["TYPE"] == "datetime" || $arFields[$by]["TYPE"] == "date") { $arSqlOrder[] = " " . $by . "_X1 " . $order . " "; } else { $arSqlOrder[] = " " . $arFields[$by]["FIELD"] . " " . $order . " "; } if (isset($arFields[$by]["FROM"]) && strlen($arFields[$by]["FROM"]) > 0 && !in_array($arFields[$by]["FROM"], $arAlreadyJoined)) { if (strlen($strSqlFrom) > 0) { $strSqlFrom .= " "; } $strSqlFrom .= $arFields[$by]["FROM"]; $arAlreadyJoined[] = $arFields[$by]["FROM"]; } } } $strSqlOrderBy = ""; DelDuplicateSort($arSqlOrder); for ($i = 0, $n = count($arSqlOrder); $i < $n; $i++) { if (strlen($strSqlOrderBy) > 0) { $strSqlOrderBy .= ", "; } if (strtoupper($DB->type) == "ORACLE") { if (substr($arSqlOrder[$i], -3) == "ASC") { $strSqlOrderBy .= $arSqlOrder[$i] . " NULLS FIRST"; } else { $strSqlOrderBy .= $arSqlOrder[$i] . " NULLS LAST"; } } else { $strSqlOrderBy .= $arSqlOrder[$i]; } } // <-- ORDER BY return array("SELECT" => $strSqlSelect, "FROM" => $strSqlFrom, "WHERE" => $strSqlWhere, "GROUPBY" => $strSqlGroupBy, "ORDERBY" => $strSqlOrderBy); }
public function Render() { $status = $this->httpStatus; if (strlen($status) <= 0) { $status = "200 OK"; } static::sendStatus($status); foreach ($this->arHeaders as $header) { static::sendHeader($header); } static::sendStatus($status); if ($this->outputType == DAV_XML_OUTPUT && !empty($this->body)) { echo "<" . "?xml version=\"1.0\" encoding=\"utf-8\"?" . ">\n"; } echo $this->body; CDav::Report("<<<<<<<<<<<<<< RESPONSE >>>>>>>>>>>>>>>>", "\nheaders:\n" . print_r(headers_list(), true) . "\noutput:\n" . $this->body . "\n", "UNDEFINED", true); }
public static function DataSync($paramUserId = 0) { if (DAV_EXCH_DEBUG) { CDav::WriteToLog("Starting EXCHANGE contacts sync...", "SC"); } $exchangeScheme = COption::GetOptionString("dav", "exchange_scheme", "http"); $exchangeServer = COption::GetOptionString("dav", "exchange_server", ""); $exchangePort = COption::GetOptionString("dav", "exchange_port", "80"); $exchangeUsername = COption::GetOptionString("dav", "exchange_username", ""); $exchangePassword = COption::GetOptionString("dav", "exchange_password", ""); if (empty($exchangeServer)) { CAgent::RemoveAgent("CDavExchangeContacts::DataSync();", "dav"); COption::SetOptionString("dav", "agent_contacts", "N"); return ""; } $exchange = new CDavExchangeContacts($exchangeScheme, $exchangeServer, $exchangePort, $exchangeUsername, $exchangePassword); if (GW_DEBUG) { $exchange->Debug(); } $exchangeMailbox = COption::GetOptionString("dav", "exchange_mailbox", ""); $exchangeUseLogin = COption::GetOptionString("dav", "exchange_use_login", "Y"); self::InitUserEntity(); $maxNumber = 5; $index = 0; $rootStructureName = null; $paramUserId = intval($paramUserId); $arUserFilter = array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false); if ($paramUserId > 0) { $arUserFilter["ID_EQUAL_EXACT"] = $paramUserId; } if ($exchangeUseLogin == "N") { $arUserFilter["!UF_BXDAVEX_MAILBOX"] = false; } $dbUserList = CUser::GetList($by = "UF_BXDAVEX_CNTSYNC", $order = "asc", $arUserFilter, array("SELECT" => array("ID", "LOGIN", "UF_BXDAVEX_MAILBOX", "UF_BXDAVEX_CNTSYNC"))); while ($arUser = $dbUserList->Fetch()) { $index++; if ($index > $maxNumber) { break; } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("Processing user [" . $arUser["ID"] . "] " . $arUser["LOGIN"], "SC"); } $lastSyncDate = $arUser["UF_BXDAVEX_CNTSYNC"]; if (empty($lastSyncDate)) { $lastSyncDate = ConvertTimeStamp(mktime(0, 0, 0, 1, 1, 2000), FULL); } $GLOBALS["USER_FIELD_MANAGER"]->Update("USER", $arUser["ID"], array("UF_BXDAVEX_CNTSYNC" => ConvertTimeStamp(time(), FULL))); $mailbox = $exchangeUseLogin == "Y" ? $arUser["LOGIN"] . $exchangeMailbox : $arUser["UF_BXDAVEX_MAILBOX"]; if (empty($mailbox)) { continue; } $tmpNumItems = 0; $arAddressbookCache = null; $dbUserListTmp = CUser::GetList($by = "ID", $order = "asc", array("TIMESTAMP_X_1" => $lastSyncDate, "ACTIVE" => "Y", "!UF_DEPARTMENT" => false)); if ($arUserTmp = $dbUserListTmp->Fetch()) { if (is_null($rootStructureName)) { $iblockStructure = COption::GetOptionInt("intranet", 'iblock_structure', 0); $db = CIBlockSection::GetList(array("LEFT_MARGIN" => "ASC"), array("IBLOCK_ID" => $iblockStructure)); if ($ar = $db->Fetch()) { $rootStructureName = $ar["NAME"]; } } if (is_null($rootStructureName)) { if (DAV_EXCH_DEBUG) { CDav::WriteToLog("ERROR: Root structure is not found", "SC"); } break; } $arAddressbooksList = $exchange->GetAddressbooksList(array("mailbox" => $mailbox)); $arErrorsTmp = $exchange->GetErrors(); if (count($arErrorsTmp) > 0) { $txt = ''; foreach ($arErrorsTmp as $v) { if (!empty($txt)) { $txt .= ", "; } $txt .= "[" . $v[0] . "] " . $v[1]; } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("ERROR: " . $txt, "SC"); } continue; } $arAddressbook = null; foreach ($arAddressbooksList as $value) { if ($value["NAME"] == $rootStructureName) { $arAddressbook = $value; break; } } if (is_null($arAddressbook)) { $arAddressbook = $exchange->AddAddressbook(array("mailbox" => $mailbox, "NAME" => $rootStructureName)); } if (!is_array($arAddressbook) || !isset($arAddressbook["XML_ID"])) { if (DAV_EXCH_DEBUG) { CDav::WriteToLog("ERROR: Addressbook '" . $rootStructureName . "' for mailbox '" . $mailbox . "' is not found", "SC"); } continue; } if (is_null($arAddressbookCache)) { $arAddressbookCache = array(); $arPrs = $exchange->GetList(array("Mailbox" => $mailbox, "AddressbookId" => $arAddressbook["XML_ID"]), array("ItemShape" => "IdOnly", "AdditionalProperties" => array("contacts:GivenName", "contacts:MiddleName", "contacts:Surname"))); foreach ($arPrs as $prs) { $s = $prs["NAME"] . "/" . $prs["SECOND_NAME"] . "/" . $prs["LAST_NAME"]; $arAddressbookCache[$s] = array("XML_ID" => $prs["XML_ID"], "MODIFICATION_LABEL" => $prs["MODIFICATION_LABEL"]); } } do { $s = $arUserTmp["NAME"] . "/" . $arUserTmp["SECOND_NAME"] . "/" . $arUserTmp["LAST_NAME"]; if (array_key_exists($s, $arAddressbookCache)) { $exchange->Update($arAddressbookCache[$s], array_merge($arUserTmp, array("Mailbox" => $mailbox, "AddressbookId" => $arAddressbook["XML_ID"]))); } else { $exchange->Add(array_merge($arUserTmp, array("Mailbox" => $mailbox, "AddressbookId" => $arAddressbook["XML_ID"]))); } $arErrorsTmp = $exchange->GetErrors(); if (count($arErrorsTmp) > 0) { $txt = ''; foreach ($arErrorsTmp as $v) { if (!empty($txt)) { $txt .= ", "; } $txt .= "[" . $v[0] . "] " . $v[1]; } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("ERROR: " . $txt, "SC"); } } $tmpNumItems++; } while ($arUserTmp = $dbUserListTmp->Fetch()); } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("Sync " . intval($tmpNumItems) . " items", "SC"); } } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("EXCHANGE contacts sync finished", "SC"); } return "CDavExchangeContacts::DataSync();"; }
public static function DoDeleteCalendar($userId, $itemXmlId) { if (DAV_EXCH_DEBUG) { CDav::WriteToLog("EXCHANGE DoDeleteCalendar called for user " . $userId, "MDFE"); } $exchangeScheme = COption::GetOptionString("dav", "exchange_scheme", "http"); $exchangeServer = COption::GetOptionString("dav", "exchange_server", ""); $exchangePort = COption::GetOptionString("dav", "exchange_port", "80"); $exchangeUsername = COption::GetOptionString("dav", "exchange_username", ""); $exchangePassword = COption::GetOptionString("dav", "exchange_password", ""); if (empty($exchangeServer)) { return ""; } $exchange = new CDavExchangeCalendar($exchangeScheme, $exchangeServer, $exchangePort, $exchangeUsername, $exchangePassword); if (GW_DEBUG) { $exchange->Debug(); } $exchangeMailbox = COption::GetOptionString("dav", "exchange_mailbox", ""); $exchangeUseLogin = COption::GetOptionString("dav", "exchange_use_login", "Y"); self::InitUserEntity(); if ($itemXmlId == "calendar_" . $userId) { return ''; } $userId = intval($userId); $dbUserList = CUser::GetList($by = "", $order = "", array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false, "ID_EQUAL_EXACT" => $userId), array("SELECT" => array("ID", "LOGIN", "UF_BXDAVEX_MAILBOX", "UF_BXDAVEX_CALSYNC"))); if ($arUser = $dbUserList->Fetch()) { $mailbox = $exchangeUseLogin == "Y" ? $arUser["LOGIN"] . $exchangeMailbox : $arUser["UF_BXDAVEX_MAILBOX"]; if (!empty($mailbox)) { $arResult = $exchange->DeleteCalendar($itemXmlId); if ($arResult) { return $arResult; } } } return $exchange->GetErrors(); }
private function RenderPropertyValue($value) { if (is_array($value)) { $request = $this->request; $response = $this->response; if (isset($value[0]['ns'])) { $value = CDavResource::EncodeHierarchicalProp($value, null, $xmlnsDefs = null, $xmlnsHash = null, $response, $request); } $value = htmlspecialcharsbx(CDav::ToString($value)); } elseif (preg_match('/\\<(D:)?href\\>[^<]+\\<\\/(D:)?href\\>/i', $value)) { $value = preg_replace('/\\<(D:)?href\\>([^<]+)\\<\\/(D:)?href\\>/i', '<\\1href><a href="\\2">\\2</a></\\3href><br />', $value); } else { $value = htmlspecialcharsbx($value); } return $value; }
public function ExtractFromLock($path, $arLock) { $this->path = CDav::CheckIfRightSlashAdded($path); $this->arProperties = array(self::MakeProp("displayname", $path), self::MakeProp("creationdate", $arLock['CREATED']), self::MakeProp("getlastmodified", $arLock['MODIFIED']), self::MakeProp("resourcetype", ""), self::MakeProp("getcontenttype", ""), self::MakeProp("getcontentlength", 0)); }