function WDRenderCellCreateDoc() { $docx = GetMessage('WDUF_CREATE_DOCX'); $xlsx = GetMessage('WDUF_CREATE_XLSX'); $pptx = GetMessage('WDUF_CREATE_PPTX'); $dropdown = GetMessage('WDUF_CREATE_IN_SERVICE', array('#SERVICE#' => '<span class="wd-fa-add-file-editor"> <span class="wd-fa-add-file-editor-text" onclick="WDOpenMenuCreateService(this); return false;">' . CWebDavTools::getServiceEditNameForCurrentUser() . '</span> <span class="wd-fa-add-file-editor-arrow"></span> </span>')); return <<<HTML \t<td class="wd-fa-add-file-light-cell"> \t\t<span class="wd-fa-add-file-light wd-test-file-create"> \t\t\t<span class="wd-fa-add-file-light-text"> \t\t\t\t<span class="wd-fa-add-file-light-title"> \t\t\t\t\t<span class="wd-fa-add-file-light-title-text">{$dropdown}</span> \t\t\t\t</span> \t\t\t\t<span class="wd-fa-add-file-editor-file"> \t\t\t\t\t<a class="wd-fa-add-file-editor-link-block" href="javascript:void(0)" onclick="return WDCreateDocument('docx')"> \t\t\t\t\t\t<span class="wd-fa-add-file-editor-icon feed-file-icon-doc"></span> \t\t\t\t\t\t<span class="wd-fa-add-file-editor-link">{$docx}</span> \t\t\t\t\t</a> \t\t\t\t\t<a class="wd-fa-add-file-editor-link-block" href="javascript:void(0)" onclick="return WDCreateDocument('xlsx');"> \t\t\t\t\t\t<span class="wd-fa-add-file-editor-icon feed-file-icon-csv"></span> \t\t\t\t\t\t<span class="wd-fa-add-file-editor-link">{$xlsx}</span> \t\t\t\t\t</a> \t\t\t\t\t<a class="wd-fa-add-file-editor-link-block" href="javascript:void(0)" onclick="return WDCreateDocument('pptx');"> \t\t\t\t\t\t<span class="wd-fa-add-file-editor-icon feed-file-icon-ppt"></span> \t\t\t\t\t\t<span class="wd-fa-add-file-editor-link">{$pptx}</span> \t\t\t\t\t</a> \t\t\t\t</span> \t\t\t</span> \t\t</span> \t</td> HTML; }
public function createFile(array $fileData) { $accessToken = $this->getAccessToken(); $mimeType = $fileData['mimeType']; $fileSrc = $fileData['src']; $fileName = $fileData['name']; CWebDavTools::convertToUtf8($fileName); $fileSize = $fileData['size'] ? $fileData['size'] : filesize($fileSrc); $content = file_get_contents($fileSrc); $http = new CHTTP(); $http->http_timeout = 10; $fileName = urlencode($fileName); $arUrl = $http->ParseURL("https://apis.live.net/v5.0/me/skydrive/files/{$fileName}?access_token=" . urlencode($accessToken)); if (!$http->Query('PUT', $arUrl['host'], $arUrl['port'], $arUrl['path_query'], $content, $arUrl['proto'], '')) { return false; } $this->checkHttpResponse($http); // error checking if ($http->status != '200' && $http->status != '201') { return false; } return json_decode($http->result, true); }
$arResult["URL"]["ELEMENT"]["BP_VIEW"] = CComponentEngine::MakePathFromTemplate($arParams["WEBDAV_BIZPROC_VIEW_URL"], array("ELEMENT_ID" => $arParams["ELEMENT_ID"])); $arResult["URL"]["HELP"] = CComponentEngine::MakePathFromTemplate($arParams["HELP_URL"], array()); $arResult["URL"]["CONNECTOR"] = CComponentEngine::MakePathFromTemplate($arParams["CONNECTOR_URL"], array()); $arResult["URL"]["SUBSCRIBE"] = CComponentEngine::MakePathFromTemplate($arParams["SECTIONS_URL"], array("PATH" => $path, "SECTION_ID" => $arParams["SECTION_ID"])); $arResult["URL"]["UNSUBSCRIBE"] = WDAddPageParams($arResult["URL"]["SUBSCRIBE"], array("subscribe_forum" => "N", "sessid" => bitrix_sessid())); $arResult["URL"]["SUBSCRIBE"] = WDAddPageParams($arResult["URL"]["SUBSCRIBE"], array("subscribe_forum" => "Y", "sessid" => bitrix_sessid())); /*************** For Custom components *****************************/ $arParams["USE_BIZPROC"] = $ob->workflow == "bizproc" ? "Y" : "N"; $arParams["USE_WORKFLOW"] = $ob->workflow == "workflow" ? "Y" : "N"; $arResult["URL"]["CHAIN"] = array(array("URL" => CComponentEngine::MakePathFromTemplate($arParams["SECTIONS_URL"], array("PATH" => "", "SECTION_ID" => 0)), "TITLE" => empty($arParams["STR_TITLE"]) ? GetMessage("WD_TITLE") : $arParams["STR_TITLE"])); $arResult['BP_PARAM_REQUIRED'] = 'N'; if ($ob->Type == 'iblock') { $arResult['BP_PARAM_REQUIRED'] = $ob->BPParameterRequired() ? 'Y' : 'N'; } /******************************************************************** /Data ********************************************************************/ $arResult['GROUP_DISK'] = array(); if ($ob->attributes['group_id'] && $ob->e_rights && $ob->GetPermission('SECTION', $ob->arParams['item_id'], 'section_edit') && CWebDavTools::isIntranetUser($USER->getId())) { $rootSectionDataForGroup = CWebDavIblock::getRootSectionDataForGroup($ob->attributes['group_id']); $arResult['GROUP_DISK']['CONNECTED'] = !\Bitrix\Webdav\FolderInviteTable::getRow(array('filter' => array('=INVITE_USER_ID' => $USER->getId(), '=USER_ID' => $USER->getId(), '=IS_APPROVED' => true, '=IBLOCK_ID' => $rootSectionDataForGroup['IBLOCK_ID'], '=SECTION_ID' => $rootSectionDataForGroup['SECTION_ID']))); $arResult['GROUP_DISK']['CONNECT_URL'] = $APPLICATION->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'connect', 'group' => $ob->attributes['group_id']))); $arResult['GROUP_DISK']['DISCONNECT_URL'] = $APPLICATION->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'disconnect', 'group' => $ob->attributes['group_id']))); $arResult['GROUP_DISK']['DETAIL_URL'] = $APPLICATION->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'detail_group_connect', 'group' => $ob->attributes['group_id']))); } $this->IncludeComponentTemplate(); if (!$ob->e_rights && $ob->CheckRight($arParams["PERMISSION"], "section_read") < "R") { ShowError(GetMessage("WD_ACCESS_DENIED")); return 0; } return array("PERMISSION" => $arParams["PERMISSION"]);
public static function UpdateUFRights($files, $rights, $ufEntity = array()) { static $arTasks = null; if (!is_array($rights) || sizeof($rights) <= 0) { return false; } if ($files === null || $files === false) { return false; } if (!is_array($files)) { $files = array($files); } if (sizeof($files) <= 0) { return false; } if (!CModule::IncludeModule('iblock') || !CModule::IncludeModule('webdav')) { return false; } $arFiles = array(); foreach ($files as $id) { $id = intval($id); if (intval($id) > 0) { $arFiles[] = $id; } } if (sizeof($arFiles) <= 0) { return false; } if ($arTasks == null) { $arTasks = CWebDavIblock::GetTasks(); } $arCodes = array(); foreach ($rights as $value) { if (substr($value, 0, 2) === 'SG') { $arCodes[] = $value . '_K'; } $arCodes[] = $value; } $arCodes = array_unique($arCodes); $i = 0; $arViewRights = $arEditRights = array(); $curUserID = 'U' . $GLOBALS['USER']->GetID(); foreach ($arCodes as $right) { if ($curUserID == $right) { // do not override owner's rights continue; } $key = 'n' . $i++; $arViewRights[$key] = array('GROUP_CODE' => $right, 'TASK_ID' => $arTasks['R']); } $ibe = new CIBlockElement(); $dbWDFile = $ibe->GetList(array(), array('ID' => $arFiles, 'SHOW_NEW' => 'Y'), false, false, array('ID', 'NAME', 'SECTION_ID', 'IBLOCK_ID', 'WF_NEW')); $iblockIds = array(); if ($dbWDFile) { while ($arWDFile = $dbWDFile->Fetch()) { $id = $arWDFile['ID']; if ($arWDFile['WF_NEW'] == 'Y') { $ibe->Update($id, array('BP_PUBLISHED' => 'Y')); } if (CIBlock::GetArrayByID($arWDFile['IBLOCK_ID'], "RIGHTS_MODE") === "E") { $ibRights = CWebDavIblock::_get_ib_rights_object('ELEMENT', $id, $arWDFile['IBLOCK_ID']); $ibRights->SetRights(CWebDavTools::appendRights($ibRights, $arViewRights, $arTasks)); if (empty($iblockIds[$arWDFile['IBLOCK_ID']])) { $iblockIds[$arWDFile['IBLOCK_ID']] = $arWDFile['IBLOCK_ID']; } } } global $CACHE_MANAGER; foreach ($iblockIds as $iblockId) { $CACHE_MANAGER->ClearByTag('iblock_id_' . $iblockId); } unset($iblockId); } }
function __build_item_info(&$res, $arParams, $WrapLongWords = false) { global $DB, $USER; static $bTheFirstTimeonPage = true; static $bShowWebdav = true; static $arBPTemplates = array(); static $arOfficeExtensions = false; static $checkParentSectionIsLink = array(); $nameTemplate = "#NOBR##LAST_NAME# #NAME##/NOBR#"; static $arNameFormats = array(); if (!isset($arNameFormats[SITE_ID])) { $arNameFormats[SITE_ID] = CSite::GetNameFormat(false); } if (isset($arNameFormats[SITE_ID])) { $nameTemplate = $arNameFormats[SITE_ID]; } if (!$arOfficeExtensions) { $arOfficeExtensions = __wd_get_office_extensions(); } if (!isset($arParams["OBJECT"])) { return; } $ob = $arParams["OBJECT"]; static $allowExtDocServices = null; if ($allowExtDocServices === null) { $allowExtDocServicesGlobal = CWebDavTools::allowUseExtServiceGlobal(); $allowExtDocServicesLocal = CWebDavTools::allowUseExtServiceLocal(); $allowExtDocServices = $allowExtDocServicesGlobal; if ($ob->arRootSection['UF_USE_EXT_SERVICES'] && $allowExtDocServicesLocal) { $allowExtDocServices = 'Y' == CWebDavIblock::resolveDefaultUseExtServices($ob->arRootSection['UF_USE_EXT_SERVICES']); } } static $rootDataForCurrentUser = null; static $isUserLib = null; if ($rootDataForCurrentUser === null && $USER->getId()) { $rootDataForCurrentUser = CWebDavIblock::getRootSectionDataForUser($USER->getId()); $isUserLib = $ob->attributes['user_id'] == $USER->getId() && !($ob->meta_state == CWebDavIblock::DROPPED); } static $isExtranetUser = null; if ($isExtranetUser === null) { $isExtranetUser = !$USER->getId() || !CWebDavTools::isIntranetUser($USER->getId()); } $bInTrash = "/" . $ob->meta_names["TRASH"]["alias"] == $ob->_udecode($ob->_path); if ($res["TYPE"] != "S" && $arBPTemplates != $arParams["TEMPLATES"]) { $bShowWebdav = true; $arBPTemplates = $arParams["TEMPLATES"]; if (is_array($arParams["TEMPLATES"]) && !empty($arParams["TEMPLATES"])) { foreach ($arParams["TEMPLATES"] as $key => $arTemplateState) { if (in_array($arTemplateState["AUTO_EXECUTE"], array(2, 3, 6, 7)) && (is_array($arTemplateState["PARAMETERS"]) || is_array($arTemplateState["TEMPLATE_PARAMETERS"]))) { $arTemplateState["TEMPLATE_PARAMETERS"] = is_array($arTemplateState["PARAMETERS"]) ? $arTemplateState["PARAMETERS"] : $arTemplateState["TEMPLATE_PARAMETERS"]; foreach ($arTemplateState["TEMPLATE_PARAMETERS"] as $val) { if ($val["Required"] == 1 && empty($val["Default"])) { $bShowWebdav = false; break; } } } } } } $res["bShowWebDav"] = $bShowWebdav; /************** Grid Data ******************************************/ $arActions = array(); if ($res["TYPE"] == "S") { $arActions["section_open"] = array("ICONCLASS" => "section_open", "TITLE" => GetMessage("WD_OPEN_SECTION"), "TEXT" => GetMessage("WD_OPEN"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~THIS"]) . "');", "DEFAULT" => true); if ($res["SHOW"]["UNDELETE"] == "Y") { $arActions["section_undelete"] = array("ICONCLASS" => "section_download", "TITLE" => GetMessage("WD_UNDELETE_SECTION"), "TEXT" => GetMessage("WD_UNDELETE"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape(WDAddPageParams($res["URL"]["~UNDELETE"], array("edit_section" => "Y", "sessid" => bitrix_sessid()), false)) . "');", "DEFAULT" => false); } if ($res["SHOW"]["EDIT"] == "Y") { if ($ob->Type == "iblock" && $arParams["OBJECT"]->CheckWebRights("", false, array("action" => "create"))) { //sharing with antoher user. Only user_lib files. global $USER; if (!empty($arParams["OBJECT"]->attributes['user_id']) && $arParams["OBJECT"]->attributes['user_id'] == $USER->getID() && !$isExtranetUser) { if (empty($res['LINK'])) { if (!empty($res['SHARED_SECTION'])) { //usage. Show list user $uriToShareSection = $GLOBALS['APPLICATION']->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'detail_user_share', 'shareSectionId' => $res["ID"]))); $arActions["section_share"] = array("ICONCLASS" => "section_share", "TITLE" => GetMessage("WD_SHARE_TITLE_2"), "TEXT" => GetMessage("WD_SHARE_NAME_2"), "ONCLICK" => "WDShareFolder('{$uriToShareSection}', {$res["ID"]}, null, '" . CUtil::JSEscape($res["NAME"]) . "')"); } else { if (!isset($checkParentSectionIsLink[$res['IBLOCK_SECTION_ID']])) { $checkParentSectionIsLink[$res['IBLOCK_SECTION_ID']] = CWebDavSymlinkHelper::isLink(CWebDavSymlinkHelper::ENTITY_TYPE_USER, $arParams["OBJECT"]->attributes['user_id'], array('ID' => $res['IBLOCK_SECTION_ID'], 'IBLOCK_ID' => $res['IBLOCK_ID'])); } //if element in link - don't share if (!$checkParentSectionIsLink[$res['IBLOCK_SECTION_ID']]) { $uriToShareSection = $GLOBALS['APPLICATION']->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'detail_user_share', 'shareSectionId' => $res["ID"]))); $arActions["section_share"] = array("ICONCLASS" => "section_share", "TITLE" => GetMessage("WD_SHARE_TITLE_2"), "TEXT" => GetMessage("WD_SHARE_NAME_2"), "ONCLICK" => "WDShareFolder('{$uriToShareSection}', {$res["ID"]}, null, '" . CUtil::JSEscape($res["NAME"]) . "')"); } } } else { //usage. Show list user $uriToShareSection = $GLOBALS['APPLICATION']->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'info_user_share', 'shareSectionId' => $res['LINK']['SECTION_ID']))); $arActions["section_share"] = array("ICONCLASS" => "section_share", "TITLE" => GetMessage("WD_MANAGE_SHARE_TITLE"), "TEXT" => GetMessage("WD_MANAGE_SHARE_NAME"), "ONCLICK" => "WDShareFolder('{$uriToShareSection}', {$res['LINK']['SECTION_ID']}, '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "', '" . CUtil::JSEscape($res["NAME"]) . "')"); } } elseif (CWebDavIblock::$possibleUseSymlinkByInternalSections && !$isExtranetUser) { if (empty($res['LINK'])) { if (!empty($res['SHARED_SECTION'])) { //usage. Show list user $uriToShareSection = $GLOBALS['APPLICATION']->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'info_user_share', 'shareSectionId' => $res["ID"]))); $uriToDisconnectSection = $GLOBALS['APPLICATION']->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'disconnect', 'shareSectionId' => $res["ID"]))); $arActions["section_share"] = array("ICONCLASS" => "section_share", "TITLE" => GetMessage("WD_MANAGE_SHARE_TITLE"), "TEXT" => GetMessage("WD_MANAGE_SHARE_TITLE"), "ONCLICK" => "WDShareFolderInSharedDocs('{$uriToShareSection}', {$res["ID"]}, '{$uriToDisconnectSection}', '" . CUtil::JSEscape($res["NAME"]) . "')"); } else { $uriToShareSection = $GLOBALS['APPLICATION']->GetCurUri(http_build_query(array('toWDController' => 1, 'wdaction' => 'connect', 'shareSectionId' => $res["ID"]))); $arActions["section_share"] = array("ICONCLASS" => "section_share", "TITLE" => GetMessage("WD_SHARE_SECTION_CONNECT_TITLE"), "TEXT" => GetMessage("WD_SHARE_SECTION_CONNECT_NAME"), "ONCLICK" => "showWebdavSharedSectionDiskPopup('{$uriToShareSection}', {$res["ID"]}, null, '" . CUtil::JSEscape($res["NAME"]) . "')"); } } } } $arActions["section_rename"] = array("ICONCLASS" => "section_rename", "TITLE" => GetMessage("WD_RENAME_SECTION_TITLE"), "TEXT" => GetMessage("WD_RENAME_NAME"), "ONCLICK" => "WDRename(BX('ID_" . $res["TYPE"] . $res["ID"] . "'), bxGrid_" . $arParams["GRID_ID"] . ", '" . $arParams["GRID_ID"] . "')"); if ($ob->Type == "iblock" && $arParams["OBJECT"]->CheckWebRights("", false, array("action" => "create"))) { $url = WDAddPageParams($res["URL"]["SECTIONS_DIALOG"], array("ACTION" => "COPY", "NAME" => urlencode($res["NAME"]), "ID" => "S" . $res["ID"]), false); $arActions["section_copy"] = array("ICONCLASS" => "section_copy", "TITLE" => GetMessage("WD_COPY_SECTION_TITLE"), "TEXT" => GetMessage("WD_COPY_NAME"), "ONCLICK" => "(new BX.CDialog({'width': 450, 'heght':400, 'content_url':'" . CUtil::JSEscape($url) . "'})).Show()"); $url = WDAddPageParams($res["URL"]["SECTIONS_DIALOG"], array("ACTION" => "MOVE", "NAME" => urlencode($res["NAME"]), "ID" => "S" . $res["ID"]), false); $arActions["section_move"] = array("ICONCLASS" => "section_move", "TITLE" => GetMessage("WD_MOVE_SECTION_TITLE"), "TEXT" => GetMessage("WD_MOVE_NAME"), "ONCLICK" => "(new BX.CDialog({'width': 450, 'heght':400, 'content_url':'" . CUtil::JSEscape($url) . "'})).Show()"); } } if ($res["SHOW"]["RIGHTS"] == "Y") { $urlParams = array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ENTITY_TYPE" => "SECTION", "ENTITY_ID" => $res['ID'], "back_url" => urlencode($GLOBALS['APPLICATION']->GetCurPage())); if (isset($ob->attributes['user_id'])) { $urlParams['SOCNET_TYPE'] = 'user'; $urlParams['SOCNET_ID'] = $ob->attributes['user_id']; } elseif (isset($ob->attributes['group_id'])) { $urlParams['SOCNET_TYPE'] = 'group'; $urlParams['SOCNET_ID'] = $ob->attributes['group_id']; } $url = WDAddPageParams("/bitrix/components/bitrix/webdav.section.list/templates/.default/iblock_e_rights.php", $urlParams, false); $arActions["section_permissions"] = array("ICONCLASS" => "section_permissions", "TITLE" => GetMessage("WD_SECTION_PERMISSIONS"), "TEXT" => GetMessage("WD_PERMISSIONS"), "ONCLICK" => "(new BX.CDialog({'width': 750, 'heght':400, 'content_url':'" . CUtil::JSEscape($url) . "'})).Show()"); } if ($res["SHOW"]["DELETE"] == "Y" && (!$bInTrash || $bInTrash && $arParams["PERMISSION"] > "W")) { if (!empty($res['LINK'])) { $arActions["section_unshare"] = array("ICONCLASS" => "section_drop", "TITLE" => GetMessage("WD_UNSHARE_SECTION"), "TEXT" => GetMessage("WD_UNSHARE"), "ONCLICK" => "WDConfirm('" . CUtil::JSEscape(GetMessage("WD_UNSHARE_TITLE")) . "', '" . CUtil::JSEscape(GetMessage("WD_UNSHARE_SECTION_CONFIRM", array('#NAME#' => $res['NAME']))) . "', function() {jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "')})"); } elseif (!empty($res['SHARED_SECTION']) && isset($arActions["section_share"])) { $arActions["section_drop"] = array("ICONCLASS" => "section_drop", "TITLE" => GetMessage("WD_DELETE_SECTION"), "TEXT" => GetMessage("WD_DELETE"), "ONCLICK" => "WDConfirm('" . CUtil::JSEscape(GetMessage("WD_DELETE_OWN_SHARE_SECTION_TITLE")) . "', '" . CUtil::JSEscape(GetMessage("WD_DELETE_OWN_SHARE_SECTION_CONFIRM", array('#NAME#' => $res['NAME']))) . "', function() {jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "')})"); } else { $forceDeleteUrl = CHTTP::urlAddParams($res["URL"]["~DELETE"], array('delete_without_trash' => 1)); $arActions["section_drop"] = array("ICONCLASS" => "section_drop", "TITLE" => GetMessage("WD_DELETE_SECTION"), "TEXT" => GetMessage("WD_DELETE")); if ($res["SHOW"]["UNDELETE"] == "Y") { $arActions["section_drop"]['ONCLICK'] = "WDConfirm('" . CUtil::JSEscape(GetMessage("WD_DELETE_TITLE")) . "', '" . CUtil::JSEscape(GetMessage($res["SHOW"]["UNDELETE"] == "Y" ? "WD_DESTROY_SECTION_CONFIRM" : "WD_DELETE_SECTION_CONFIRM", array('#NAME#' => $res['NAME']))) . "', function() {jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "')})"; } elseif ($arParams['OBJECT']->CheckRight($res["E_RIGHTS"], "iblock_edit") >= "X") { $arActions["section_drop"]['ONCLICK'] = "WDConfirmDelete('" . CUtil::JSEscape(GetMessage("WD_DELETE_TITLE")) . "', '" . CUtil::JSEscape(GetMessage("WD_TRASH_DELETE_DESTROY_SECTION_CONFIRM", array("#NAME#" => $res['NAME']))) . "'" . ", '" . CUtil::JSEscape(GetMessage("WD_TRASH_DELETE_BUTTON")) . "'" . ", '" . CUtil::JSEscape(GetMessage("WD_TRASH_DESTROY_BUTTON")) . "'" . ", '" . CUtil::JSEscape(GetMessage("WD_TRASH_CANCEL_DELETE_BUTTON")) . "'" . ", function() { var urlDelete = '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "'; jsUtils.Redirect([], urlDelete)}" . ", function() { var urlDelete = '" . CUtil::JSEscape($forceDeleteUrl) . "'; jsUtils.Redirect([], urlDelete)})"; } else { $arActions["section_drop"]['ONCLICK'] = "WDConfirm('" . CUtil::JSEscape(GetMessage("WD_DELETE_TITLE")) . "', '" . CUtil::JSEscape(GetMessage("WD_DELETE_SECTION_CONFIRM", array("#NAME#" => $res['NAME']))) . "', function() { var urlDelete = '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "'; jsUtils.Redirect([], urlDelete)})"; } } } $arActions['preview_launch'] = array('type' => 'folder', 'src' => $res["URL"]["~THIS"], 'title' => $res['NAME'], 'owner' => CUser::FormatName(CSite::GetNameFormat(false), array('LOGIN' => $res['CREATED_BY']['LOGIN'], 'NAME' => $res['CREATED_BY']['NAME'], 'SECOND_NAME' => $res['CREATED_BY']['SECOND_NAME'], 'LAST_NAME' => $res['CREATED_BY']['LAST_NAME']), true, false), 'size' => CFile::FormatSize($res['PROPERTY_WEBDAV_SIZE_VALUE']), 'dateModify' => FormatDate('FULL', MakeTimeStamp($res["TIMESTAMP_X"]))); } else { $arActions["element_open"] = array("ICONCLASS" => "element_open", "TITLE" => GetMessage("WD_OPEN_DOCUMENT"), "TEXT" => GetMessage("WD_OPEN"), "ONCLICK" => "OpenDoc('" . CUtil::JSEscape(htmlspecialcharsbx($res["URL"]["~THIS"])) . "', " . (in_array($res["FILE_EXTENTION"], $arOfficeExtensions) && $arParams['DEFAULT_EDIT'] === 'Y' ? "true" : "false") . ");", "DEFAULT" => true); if ($allowExtDocServices && CWebDavTools::allowPreviewFile($res["FILE_EXTENTION"], $res['PROPERTY_WEBDAV_SIZE_VALUE'])) { //showInViewer $downloadUrl = CUtil::JSEscape($res["URL"]["~DOWNLOAD"]); $editInUrl = $editrUrl = CUtil::JSEscape(($GLOBALS['APPLICATION']->IsHTTPS() ? 'https' : 'http') . '://' . str_replace("//", "/", $_SERVER['HTTP_HOST'] . "/" . $res["URL"]["THIS"])) . '?' . bitrix_sessid_get() . '&editIn=' . CWebDavLogOnlineEditBase::DEFAULT_SERVICE_NAME . '&start=1'; $downloadUrl .= (strpos($downloadUrl, "?") === false ? "?" : "&") . "ncc=1&force_download=1"; $viewerUrl = CUtil::JSEscape(($GLOBALS['APPLICATION']->IsHTTPS() ? 'https' : 'http') . '://' . str_replace("//", "/", $_SERVER['HTTP_HOST'] . "/" . $res["URL"]["THIS"])) . '?showInViewer=1'; $arActions['preview_launch'] = array('type' => 'iframe', 'src' => $viewerUrl, 'download' => $downloadUrl, 'history' => CHTTP::urlAddParams($res['URL']['VIEW'], array('webdavForm' . $res['IBLOCK_ID'] . '_active_tab' => 'tab_history')), 'edit' => $res['LOCK_STATUS'] == 'green' && CWebDavEditDocGoogle::isEditable($res["FILE_EXTENTION"]) && $res['E_RIGHTS']['element_edit'] ? $editInUrl : '', 'askConvert' => CWebDavEditDocGoogle::isNeedConvertExtension($res["FILE_EXTENTION"]), 'title' => $res['NAME'], 'inPersonalLib' => $isUserLib && $res['LOCK_STATUS'] == 'green' && $res['E_RIGHTS']['element_edit'] ? '1' : '', 'externalId' => $isUserLib ? "st{$rootDataForCurrentUser['IBLOCK_ID']}|{$rootDataForCurrentUser['SECTION_ID']}|f{$res['ID']}" : '', 'relativePath' => $res['PATH']); } elseif ($allowExtDocServices && CWebDavEditDocGoogle::isEditable($res["FILE_EXTENTION"])) { //showInViewer $downloadUrl = CUtil::JSEscape($res["URL"]["~DOWNLOAD"]); $editInUrl = $editrUrl = CUtil::JSEscape(($GLOBALS['APPLICATION']->IsHTTPS() ? 'https' : 'http') . '://' . str_replace("//", "/", $_SERVER['HTTP_HOST'] . "/" . $res["URL"]["THIS"])) . '?' . bitrix_sessid_get() . '&editIn=' . CWebDavLogOnlineEditBase::DEFAULT_SERVICE_NAME . '&start=1'; $downloadUrl .= (strpos($downloadUrl, "?") === false ? "?" : "&") . "ncc=1&force_download=1"; $viewerUrl = CUtil::JSEscape(($GLOBALS['APPLICATION']->IsHTTPS() ? 'https' : 'http') . '://' . str_replace("//", "/", $_SERVER['HTTP_HOST'] . "/" . $res["URL"]["THIS"])) . '?showInViewer=1'; $arActions['preview_launch'] = array('type' => 'onlyedit', 'src' => $viewerUrl, 'download' => $downloadUrl, 'history' => CHTTP::urlAddParams($res['URL']['VIEW'], array('webdavForm' . $res['IBLOCK_ID'] . '_active_tab' => 'tab_history')), 'edit' => $res['LOCK_STATUS'] == 'green' && CWebDavEditDocGoogle::isEditable($res["FILE_EXTENTION"]) && $res['E_RIGHTS']['element_edit'] ? $editInUrl : '', 'askConvert' => CWebDavEditDocGoogle::isNeedConvertExtension($res["FILE_EXTENTION"]), 'title' => $res['NAME'], 'owner' => CUser::FormatName(CSite::GetNameFormat(false), array('LOGIN' => $res['CREATED_BY']['LOGIN'], 'NAME' => $res['CREATED_BY']['NAME'], 'SECOND_NAME' => $res['CREATED_BY']['SECOND_NAME'], 'LAST_NAME' => $res['CREATED_BY']['LAST_NAME']), true, false), 'size' => CFile::FormatSize($res['PROPERTY_WEBDAV_SIZE_VALUE']), 'dateModify' => FormatDate('FULL', MakeTimeStamp($res["TIMESTAMP_X"])), 'tooBigSizeMsg' => true, 'inPersonalLib' => $isUserLib && $res['LOCK_STATUS'] == 'green' && $res['E_RIGHTS']['element_edit'] ? '1' : '', 'externalId' => $isUserLib ? "st{$rootDataForCurrentUser['IBLOCK_ID']}|{$rootDataForCurrentUser['SECTION_ID']}|f{$res['ID']}" : '', 'relativePath' => $res['PATH']); } elseif (CFile::IsImage($res['NAME'])) { $downloadUrl = CUtil::JSEscape($res["URL"]["~DOWNLOAD"]); $downloadUrl .= (strpos($downloadUrl, "?") === false ? "?" : "&") . "ncc=1&force_download=1"; $arActions['preview_launch'] = array('type' => 'image', 'src' => $downloadUrl, 'download' => $downloadUrl, 'title' => $res['NAME']); } else { $downloadUrl = CUtil::JSEscape($res["URL"]["~DOWNLOAD"]); $downloadUrl .= (strpos($downloadUrl, "?") === false ? "?" : "&") . "ncc=1&force_download=1"; $arActions['preview_launch'] = array('type' => 'unknown', 'src' => $downloadUrl, 'download' => $downloadUrl, 'title' => $res['NAME'], 'owner' => CUser::FormatName(CSite::GetNameFormat(false), array('LOGIN' => $res['CREATED_BY']['LOGIN'], 'NAME' => $res['CREATED_BY']['NAME'], 'SECOND_NAME' => $res['CREATED_BY']['SECOND_NAME'], 'LAST_NAME' => $res['CREATED_BY']['LAST_NAME']), true, false), 'size' => CFile::FormatSize($res['PROPERTY_WEBDAV_SIZE_VALUE']), 'dateModify' => FormatDate('FULL', MakeTimeStamp($res["TIMESTAMP_X"])), 'tooBigSizeMsg' => $allowExtDocServices && CWebDavTools::allowPreviewFile($res["FILE_EXTENTION"], $res['PROPERTY_WEBDAV_SIZE_VALUE'], false), 'inPersonalLib' => $isUserLib && $res['LOCK_STATUS'] == 'green' && $res['E_RIGHTS']['element_edit'] ? '1' : '', 'externalId' => $isUserLib ? "st{$rootDataForCurrentUser['IBLOCK_ID']}|{$rootDataForCurrentUser['SECTION_ID']}|f{$res['ID']}" : '', 'relativePath' => $res['PATH']); } $downloadUrl = CUtil::JSEscape($res["URL"]["~DOWNLOAD"]); $downloadUrl .= (strpos($downloadUrl, "?") === false ? "?" : "&") . "ncc=1&force_download=1"; $arActions["element_download"] = array("ICONCLASS" => "element_download", "TITLE" => GetMessage("WD_DOWNLOAD_ELEMENT"), "TEXT" => GetMessage("WD_DOWNLOAD"), "ONCLICK" => "window.location.href = '" . $downloadUrl . "';", "DEFAULT" => false); if ($arParams["PERMISSION"] >= "U") { $urlT = CUtil::JSEscape(($GLOBALS['APPLICATION']->IsHTTPS() ? 'https' : 'http') . '://' . str_replace("//", "/", $_SERVER['HTTP_HOST'] . "/" . $res["URL"]["THIS"])); $arActions["copy_ext_link"] = array("ICONCLASS" => "element_ext_link", "TITLE" => GetMessage("WD_COPY_EXT_LINK_TITLE"), "TEXT" => GetMessage("WD_COPY_EXT_LINK"), "ONCLICK" => CWebDavExtLinks::InsertDialogCallText($urlT)); } if ($res["SHOW"]["UNDELETE"] == "Y") { $arActions["element_undelete"] = array("ICONCLASS" => "element_download", "TITLE" => GetMessage("WD_UNDELETE_ELEMENT"), "TEXT" => GetMessage("WD_UNDELETE"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape(WDAddPageParams($res["URL"]["~UNDELETE"], array("edit" => "Y", "sessid" => bitrix_sessid()), false)) . "');", "DEFAULT" => false); } if ($arParams["PERMISSION"] >= "U") { if ($res["SHOW"]["LOCK"] == "Y" || $res["SHOW"]["UNLOCK"] == "Y") { $arActions["element_upload"] = array("ICONCLASS" => "element_edit", "TITLE" => GetMessage("WD_UPLOAD_ELEMENT"), "TEXT" => GetMessage("WD_UPLOAD"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"][$arParams["OBJECT"]->Type == "folder" ? "EDIT" : "~VIEW"] . '#upload') . "');"); } if ($ob->Type == "iblock" && $res["SHOW"]["UNLOCK"] == "Y") { $arActions["element_unlock"] = array("ICONCLASS" => "element_unlock", "TITLE" => GetMessage("WD_UNLOCK_ELEMENT"), "TEXT" => GetMessage("WD_UNLOCK"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~UNLOCK"]) . "');"); } if ($ob->Type == "iblock" && $res["SHOW"]["LOCK"] == "Y") { $arActions["element_lock"] = array("ICONCLASS" => "element_unlock", "TITLE" => GetMessage("WD_LOCK_ELEMENT"), "TEXT" => GetMessage("WD_LOCK"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~LOCK"]) . "');"); } if (($res["SHOW"]["LOCK"] == "Y" || $res["SHOW"]["UNLOCK"] == "Y") && in_array($res["FILE_EXTENTION"], $arOfficeExtensions)) { $arActions["element_edit_office"] = array("ICONCLASS" => "element_edit", "TITLE" => GetMessage("WD_EDIT_MSOFFICE"), "TEXT" => GetMessage("WD_EDIT_MSOFFICE_MENU"), "OFFICECHECK" => true, "DISABLED" => !($bShowWebdav && $res["SHOW"]["EDIT"] == "Y"), "ONCLICK" => 'return EditDocWithProgID(\'' . CUtil::addslashes($res["URL"]["~THIS"]) . '\');'); } } $arActions["element_view"] = array("ICONCLASS" => "element_view", "TITLE" => GetMessage("WD_VIEW_ELEMENT"), "TEXT" => GetMessage($res["~TYPE"] == "FILE" ? "WD_PROPERTIES" : "WD_VIEW"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"][$res["~TYPE"] == "FILE" ? "EDIT" : "~VIEW"]) . "');"); if ($arParams["USE_COMMENTS"] == "Y" && IsModuleInstalled("forum")) { $arActions["element_comment"] = array("ICONCLASS" => "element_comment", "TITLE" => GetMessage("WD_ELEMENT_COMMENT_NAME"), "TEXT" => GetMessage("WD_ELEMENT_COMMENT_TITLE"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~VIEW"] . "?webdavForm" . $arParams["IBLOCK_ID"] . "_active_tab=tab_comments") . "');"); } if ($arParams["PERMISSION"] >= "U") { $arActions["copy_link"] = array("ICONCLASS" => "element_download", "TITLE" => GetMessage("WD_COPY_LINK_TITLE"), "TEXT" => GetMessage("WD_COPY_LINK"), "ONCLICK" => "WDCopyLinkDialog('" . CUtil::JSEscape(($GLOBALS['APPLICATION']->IsHTTPS() ? 'https' : 'http') . '://' . str_replace("//", "/", $_SERVER['HTTP_HOST'] . "/" . $res["URL"]["THIS"])) . "')"); /* $urlT = CUtil::JSEscape(($GLOBALS['APPLICATION']->IsHTTPS() ? 'https' : 'http').'://'.str_replace("//", "/", $_SERVER['HTTP_HOST']."/".$res["URL"]["THIS"])); $arActions["copy_ext_link"] = array( "ICONCLASS" => "element_download", "TITLE" => GetMessage("WD_COPY_EXT_LINK_TITLE"), "TEXT" => GetMessage("WD_COPY_EXT_LINK"), "ONCLICK" => CWebDavExtLinks::InsertDialogCallText($urlT) ); */ if ($res["SHOW"]["HISTORY"] == "Y") { $arActions["element_history"] = array("ICONCLASS" => "element_history" . ($res["SHOW"]["BP"] == "Y" ? " bizproc_history" : ""), "TITLE" => GetMessage("WD_HIST_ELEMENT_ALT"), "TEXT" => GetMessage("WD_HIST_ELEMENT"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~VIEW"] . "?webdavForm" . $arParams["IBLOCK_ID"] . "_active_tab=tab_history") . "');"); } if ($res["SHOW"]["LOCK"] == "Y" || $res["SHOW"]["UNLOCK"] == "Y") { if ($res["SHOW"]["BP_VIEW"] == "Y") { $arActionsBpTmp[] = array("ICONCLASS" => "bizproc_document", "TITLE" => GetMessage("IBLIST_A_BP_H"), "TEXT" => GetMessage("IBLIST_A_BP_H"), "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~BP"]) . "');"); } if ($res["SHOW"]["BP_START"] == "Y" && is_array($arParams["TEMPLATES"])) { $arr = array(); foreach ($arParams["TEMPLATES"] as $key => $arWorkflowTemplate) { if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $GLOBALS["USER"]->GetID(), $res["DOCUMENT_ID"], array("UserGroups" => $res["USER_GROUPS"], "DocumentStates" => $res["~arDocumentStates"], "WorkflowTemplateList" => $arTemplates, "WorkflowTemplateId" => $arWorkflowTemplate["ID"]))) { continue; } $url = $res["URL"]["~BP_START"]; $url .= (strpos($url, "?") === false ? "?" : "&") . "workflow_template_id=" . $arWorkflowTemplate["ID"] . '&' . bitrix_sessid_get(); $arr[] = array("ICONCLASS" => "", "TITLE" => $arWorkflowTemplate["DESCRIPTION"], "TEXT" => $arWorkflowTemplate["NAME"], "ONCLICK" => "jsUtils.Redirect([], '" . CUtil::JSEscape($url) . "');"); } if (!empty($arr)) { $arActionsBpTmp[] = array("ICONCLASS" => "bizproc_start", "TITLE" => GetMessage("WD_START_BP_TITLE"), "TEXT" => GetMessage("WD_START_BP"), "MENU" => $arr); } } //if ($res["SHOW"]["BP_CLONE"] == "Y") //{ //$arActionsBpTmp[] = array( //"ICONCLASS" => "bizproc_document", //"TITLE" => GetMessage("WD_CREATE_VERSION_ALT"), //"TEXT" => GetMessage("WD_CREATE_VERSION"), //"ONCLICK" => "jsUtils.Redirect([], '".CUtil::JSEscape($res["URL"]["~CLONE"])."');"); //$arActionsBpTmp[] = array( //"ICONCLASS" => "bizproc_document", //"TITLE" => GetMessage("WD_VERSIONS_ALT"), //"TEXT" => GetMessage("WD_VERSIONS"), //"ONCLICK" => "jsUtils.Redirect([], '".CUtil::JSEscape($res["URL"]["~VERSIONS"])."');"); //} if (!empty($arActionsBpTmp)) { $arActions += $arActionsBpTmp; } $arActions["separator_del"] = array("SEPARATOR" => true); if ($ob->Type == "folder" || $ob->Type == "iblock" && $res["WF_PARENT_ELEMENT_ID"] === null) { $arActions["element_rename"] = array("ICONCLASS" => "element_rename", "TITLE" => GetMessage("WD_RENAME_TITLE"), "TEXT" => GetMessage("WD_RENAME_NAME"), "ONCLICK" => "WDRename(BX('ID_" . $res["TYPE"] . $res["ID"] . "'), bxGrid_" . $arParams["GRID_ID"] . ", '" . $arParams["GRID_ID"] . "')"); } } if ($res["SHOW"]["COPY"] == 'Y') { $url = WDAddPageParams($res["URL"]["SECTIONS_DIALOG"], array("ACTION" => "COPY", "NAME" => urlencode($res["NAME"]), "ID" => "E" . $res["ID"]), false); $arActions["element_copy"] = array("ICONCLASS" => "element_copy", "TITLE" => GetMessage("WD_COPY_TITLE"), "TEXT" => GetMessage("WD_COPY_NAME"), "ONCLICK" => "(new BX.CDialog({'width': 450, 'heght':400, 'content_url':'" . CUtil::JSEscape($url) . "'})).Show()"); } if ($ob->Type == "iblock" && $res["WF_PARENT_ELEMENT_ID"] === null && $res["SHOW"]["EDIT"] == "Y") { $url = WDAddPageParams($res["URL"]["SECTIONS_DIALOG"], array("ACTION" => "MOVE", "NAME" => urlencode($res["NAME"]), "ID" => "E" . $res["ID"]), false); $arActions["element_move"] = array("ICONCLASS" => "element_move", "TITLE" => GetMessage("WD_MOVE_TITLE"), "TEXT" => GetMessage("WD_MOVE_NAME"), "ONCLICK" => "(new BX.CDialog({'width': 450, 'heght':400, 'content_url':'" . CUtil::JSEscape($url) . "'})).Show()"); } if ($res["SHOW"]["RIGHTS"] == "Y") { $urlParams = array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ENTITY_TYPE" => "ELEMENT", "ENTITY_ID" => $res['ID'], "back_url" => urlencode($GLOBALS['APPLICATION']->GetCurPageParam())); if (isset($ob->attributes['user_id'])) { $urlParams['SOCNET_TYPE'] = 'user'; $urlParams['SOCNET_ID'] = $ob->attributes['user_id']; } elseif (isset($ob->attributes['group_id'])) { $urlParams['SOCNET_TYPE'] = 'group'; $urlParams['SOCNET_ID'] = $ob->attributes['group_id']; } $url = WDAddPageParams("/bitrix/components/bitrix/webdav.section.list/templates/.default/iblock_e_rights.php", $urlParams, false); $arActions["element_permissions"] = array("ICONCLASS" => "element_permissions", "TITLE" => GetMessage("WD_ELEMENT_PERMISSIONS"), "TEXT" => GetMessage("WD_PERMISSIONS"), "ONCLICK" => "(new BX.CDialog({'width': 750, 'heght':400, 'content_url':'" . CUtil::JSEscape($url) . "'})).Show()"); } if ($res["SHOW"]["DELETE"] == "Y" && (!$bInTrash || $bInTrash && $arParams["PERMISSION"] >= "X")) { $forceDeleteUrl = CHTTP::urlAddParams($res["URL"]["~DELETE"], array('delete_without_trash' => 1)); $arActions["element_delete"] = array("ICONCLASS" => "element_delete", "TITLE" => GetMessage("WD_DELETE_ELEMENT"), "TEXT" => GetMessage("WD_DELETE")); if ($res["SHOW"]["UNDELETE"] == "Y") { $arActions["element_delete"]["ONCLICK"] = "WDConfirm('" . CUtil::JSEscape(GetMessage("WD_DELETE_TITLE")) . "', '" . CUtil::JSEscape(GetMessage($res["SHOW"]["UNDELETE"] == "Y" ? "WD_DESTROY_CONFIRM" : "WD_DELETE_CONFIRM", array("#NAME#" => $res['NAME']))) . "', function() {jsUtils.Redirect([], '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "')})"; } elseif ($arParams['OBJECT']->CheckRight($res["E_RIGHTS"], "iblock_edit") >= "X") { $arActions["element_delete"]['ONCLICK'] = "WDConfirmDelete('" . CUtil::JSEscape(GetMessage("WD_DELETE_TITLE")) . "', '" . CUtil::JSEscape(GetMessage("WD_TRASH_DELETE_DESTROY_ELEMENT_CONFIRM", array("#NAME#" => $res['NAME']))) . "'" . ", '" . CUtil::JSEscape(GetMessage("WD_TRASH_DELETE_BUTTON")) . "'" . ", '" . CUtil::JSEscape(GetMessage("WD_TRASH_DESTROY_BUTTON")) . "'" . ", '" . CUtil::JSEscape(GetMessage("WD_TRASH_CANCEL_DELETE_BUTTON")) . "'" . ", function() { var urlDelete = '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "'; jsUtils.Redirect([], urlDelete)}" . ", function() { var urlDelete = '" . CUtil::JSEscape($forceDeleteUrl) . "'; jsUtils.Redirect([], urlDelete)})"; } else { $arActions["element_delete"]['ONCLICK'] = "WDConfirm('" . CUtil::JSEscape(GetMessage("WD_DELETE_TITLE")) . "', '" . CUtil::JSEscape(GetMessage("WD_DELETE_CONFIRM", array("#NAME#" => $res['NAME']))) . "', function() { var urlDelete = '" . CUtil::JSEscape($res["URL"]["~DELETE"]) . "'; jsUtils.Redirect([], urlDelete)})"; } } } } foreach (array("MODIFIED_BY", "CREATED_BY", "WF_LOCKED_BY") as $user_key) { $aCols[$user_key] = is_array($res[$user_key]) ? $res[$user_key] : __parse_user($res[$user_key], $arParams["USER_VIEW_URL"], isset($arParams["NAME_TEMPLATE"]) ? $arParams["NAME_TEMPLATE"] : null); $aCols[$user_key] = "<div class=\"wd-user-link\">" . $aCols[$user_key]['main_user_link'] . "</div>"; } if ($res["TYPE"] == "S") { $classNameForIcon = !empty($res['LINK']) || !empty($res['SHARED_SECTION']) ? 'shared-section-icon' : 'section-icon'; $res["FTYPE"] = "folder"; $aCols["PLAIN_NAME"] = $res["NAME"]; $aCols["NAME"]['shared'] = $res["SHOW"]["SHARED"] ? '<div class="element-shared"></div>' : ''; $aCols["NAME"] = '<div class="section-name"> <div class="' . $classNameForIcon . '"></div>' . $aCols["NAME"]['shared'] . '<a class="section-title" id="sec' . $res['ID'] . '" href="' . $res["URL"]["THIS"] . '"' . 'data-bx-viewer="' . $arActions['preview_launch']['type'] . '" ' . 'data-bx-title="' . htmlspecialcharsbx($arActions['preview_launch']['title']) . '" ' . 'data-bx-src="' . $arActions['preview_launch']['src'] . '" ' . 'data-bx-size="' . $arActions['preview_launch']['size'] . '" ' . 'data-bx-owner="' . htmlspecialcharsbx($arActions['preview_launch']['owner']) . '" ' . 'data-bx-dateModify="' . htmlspecialcharsbx($arActions['preview_launch']['dateModify']) . '" ' . '>' . $res["NAME"] . '</a> </div>'; if ((!empty($res['LINK']) || !empty($res['SHARED_SECTION'])) && isset($arActions["section_share"])) { $aCols['FILE_SIZE'] = '<div id="sec' . $res['ID'] . '-share" class="wd-share-hotkey-share section-name" onclick="' . $arActions["section_share"]['ONCLICK'] . '">' . GetMessage('WD_ALREADY_SHARE_SECTION') . '</div></div> '; } elseif (!empty($arParams["OBJECT"]->attributes['user_id']) && $arParams["OBJECT"]->attributes['user_id'] == $USER->getId() && !empty($arActions["section_share"]) && !$isExtranetUser) { $aCols['FILE_SIZE'] = '<div id="sec' . $res['ID'] . '-share" class="wd-share-hotkey-potential-share section-name" onclick="' . $arActions["section_share"]['ONCLICK'] . '"><div class="shared-section-icon"></div> ' . GetMessage('WD_MAKE_SHARE_SECTION') . '</div> '; } elseif (empty($arParams["OBJECT"]->attributes['user_id']) && CWebDavIblock::$possibleUseSymlinkByInternalSections && !empty($arActions["section_share"]) && !$isExtranetUser) { $aCols['FILE_SIZE'] = '<div id="sec' . $res['ID'] . '-share" class="wd-share-hotkey-potential-share section-name" onclick="' . $arActions["section_share"]['ONCLICK'] . '"><div class="shared-section-icon"></div> ' . GetMessage('WD_SHARE_SECTION_CONNECT_IN_GRID') . '</div> '; } } else { $aCols["NAME"] = array(); $hintLink = __make_hint($res); if (!isset($arParams['MERGE_VIEW'])) { $aCols["NAME"]['hint'] = $res['HINT']; } else { $aCols["NAME"]['hint'] = ''; $hintLink = ''; } $aCols["NAME"]['icon'] = '<div class="element-icon icons icon-' . substr($res["FILE_EXTENTION"], 1) . '"></div>'; $aCols["NAME"]['shared'] = $res["SHOW"]["SHARED"] ? '<div class="element-shared"></div>' : ''; if (strlen($res["NAME"]) == 0) { $aCols["NAME"]["name"] = "<span> </span>"; } else { $resName = $WrapLongWords ? WrapLongWords(htmlspecialcharsbx($res["NAME"])) : htmlspecialcharsbx($res["NAME"]); if ($ob->Type != "iblock") { $aCols["NAME"]['name'] = '<a class="element-title ' . (strlen($hintLink) > 0 ? 'element-hint ' : ' ') . '" id="doc' . $res['ID'] . '" ' . $hintLink . 'href="' . htmlspecialcharsbx($res["URL"]["THIS"]) . '" onclick="return OpenDoc(this, ' . (in_array($res["FILE_EXTENTION"], $arOfficeExtensions) && $arParams['DEFAULT_EDIT'] == 'Y' ? "true" : "false") . ')"' . ' target="_blank"' . (strlen($hintLink) > 0 ? '' : ' title="' . GetMessage("WD_DOWNLOAD_ELEMENT") . '"') . '>' . $resName . '</a>'; } else { $aCols["NAME"]['name'] = '<a class="element-title ' . (strlen($hintLink) > 0 ? 'element-hint ' : ' ') . '" id="doc' . $res['ID'] . '" ' . $hintLink . ' ' . 'data-bx-viewer="' . $arActions['preview_launch']['type'] . '" ' . 'data-bx-title="' . htmlspecialcharsbx($arActions['preview_launch']['title']) . '" ' . 'data-bx-src="' . $arActions['preview_launch']['src'] . '" ' . 'data-bx-historyPage="' . $arActions['preview_launch']['history'] . '" ' . 'data-bx-edit="' . $arActions['preview_launch']['edit'] . '" ' . 'data-bx-isFromUserLib="' . $arActions['preview_launch']['inPersonalLib'] . '" ' . 'data-bx-externalId="' . $arActions['preview_launch']['externalId'] . '" ' . 'data-bx-relativePath="' . $arActions['preview_launch']['relativePath'] . '" ' . 'data-bx-askConvert="' . $arActions['preview_launch']['askConvert'] . '" ' . 'data-bx-download="' . $arActions['preview_launch']['download'] . '" ' . 'data-bx-size="' . $arActions['preview_launch']['size'] . '" ' . 'data-bx-owner="' . htmlspecialcharsbx($arActions['preview_launch']['owner']) . '" ' . 'data-bx-dateModify="' . htmlspecialcharsbx($arActions['preview_launch']['dateModify']) . '" ' . 'data-bx-tooBigSizeMsg="' . htmlspecialcharsbx($arActions['preview_launch']['tooBigSizeMsg']) . '" ' . '>' . $resName . '</a>'; } } $aCols["NAME"]['status'] = ''; if ($arParams["PERMISSION"] >= "U" && in_array($res['LOCK_STATUS'], array("red", "yellow"))) { $aCols["NAME"]['status'] .= '<div class="element-status-' . $res['LOCK_STATUS'] . '">'; if ($res['LOCK_STATUS'] == "yellow") { $aCols["NAME"]['status'] .= '[' . GetMessage("IBLOCK_YELLOW_MSG") . ']'; } else { if (!is_array($res['WF_LOCKED_BY']) && intval($res['WF_LOCKED_BY']) > 0) { $rUserLockedBy = CUser::GetByID($res['WF_LOCKED_BY']); $res['WF_LOCKED_BY'] = $rUserLockedBy->Fetch(); } if (isset($res['WF_LOCKED_BY']['ID']) && $res['WF_LOCKED_BY']['ID'] > 0) { $res['LOCKED_USER_NAME'] = CUser::FormatName($nameTemplate, $res['WF_LOCKED_BY']); $aCols["NAME"]['status'] .= '[' . trim(GetMessage("IBLOCK_RED_MSG", array('#NAME#' => $res['LOCKED_USER_NAME']))) . ']'; } else { $aCols["NAME"]['status'] .= '[' . GetMessage("IBLOCK_RED_MSG_OTHER") . ']'; } } $aCols["NAME"]['status'] .= '</div>'; } if ($arParams["USE_COMMENTS"] == "Y" && intVal($res["PROPERTY_FORUM_MESSAGE_CNT_VALUE"]) > 0) { $aCols["NAME"]['comments'] = '<a href="' . $res["URL"]["VIEW"] . '?webdavForm' . $arParams["IBLOCK_ID"] . '_active_tab=tab_comments" class="element-properties element-comments" title="' . GetMessage("WD_COMMENTS_FOR_DOCUMENT") . " " . intVal($res["PROPERTY_FORUM_MESSAGE_CNT_VALUE"]) . '">' . intVal($res["PROPERTY_FORUM_MESSAGE_CNT_VALUE"]) . '</a>'; } $aCols["PROPERTY_FORUM_MESSAGE_CNT"] = '<a href="' . $res["URL"]["VIEW"] . '">' . intVal($res["PROPERTY_FORUM_MESSAGE_CNT_VALUE"]) . '</a>'; $aCols["BP_PUBLISHED"] = "<div class=\"wd-bp-published wd-bp-published-" . ($res["BP_PUBLISHED"] != "Y" ? "n" : "y") . "\"></div>"; $aCols["NAME"]["version"] = ""; if ($arParams["WORKFLOW"] == "bizproc" && $res["WF_PARENT_ELEMENT_ID"] > 0) { $aCols["NAME"]["version"] = "<span class=\"wd-element-version\">" . GetMessage("WD_NAME_VERSION") . "</span>"; } $aCols["BIZPROC"] = ""; if ($arParams["WORKFLOW"] == "bizproc" && !empty($res["arDocumentStates"])) { $arDocumentStates = $res["arDocumentStates"]; if (count($arDocumentStates) == 1) { $arDocumentState = reset($arDocumentStates); $arTasksWorkflow = CBPDocument::GetUserTasksForWorkflow($GLOBALS["USER"]->GetID(), $arDocumentState["ID"]); $aColss["BIZPROC"] = '<div class="bizproc-item-title">' . (!empty($arDocumentState["TEMPLATE_NAME"]) ? htmlspecialcharsbx(htmlspecialcharsbx($arDocumentState["TEMPLATE_NAME"])) : GetMessage("IBLIST_BP")) . ': ' . '<span class="bizproc-item-title bizproc-state-title" style="">' . '<a href="' . $res["URL"]["BP"] . '">' . (strlen($arDocumentState["STATE_TITLE"]) > 0 ? htmlspecialcharsbx(htmlspecialcharsbx($arDocumentState["STATE_TITLE"])) : htmlspecialcharsbx(htmlspecialcharsbx($arDocumentState["STATE_NAME"]))) . '</a>' . '</span>' . '</div>'; $aColss["BIZPROC"] = str_replace("'", "\"", $aColss["BIZPROC"]); $aCols["NAME"]['bizproc'] = "<div class=\"element-bizproc-status bizproc-statuses " . (!(strlen($arDocumentState["ID"]) <= 0 || strlen($arDocumentState["WORKFLOW_STATUS"]) <= 0) ? 'bizproc-status-' . (empty($arTasksWorkflow) ? "inprogress" : "attention") : '') . "\" onmouseover='BX.hint(this, \"" . addslashes($aColss["BIZPROC"]) . "\")'></div>"; if (!empty($arTasksWorkflow)) { $tmp = array(); foreach ($arTasksWorkflow as $key => $val) { $url = CComponentEngine::MakePathFromTemplate($arParams["WEBDAV_TASK_URL"], array("ELEMENT_ID" => $res["ID"], "ID" => $val["ID"])); $url = WDAddPageParams($url, array("back_url" => urlencode($GLOBALS['APPLICATION']->GetCurPageParam())), false); $tmp[] = '<a href="' . $url . '">' . $val["NAME"] . '</a>'; } $aColss["BIZPROC"] .= '<div class="bizproc-tasks">' . implode(", ", $tmp) . '</div>'; } } else { $arTasks = array(); $bInprogress = false; $tmp = array(); foreach ($arDocumentStates as $key => $arDocumentState) { $arTasksWorkflow = CBPDocument::GetUserTasksForWorkflow($GLOBALS["USER"]->GetID(), $arDocumentState["ID"]); if (!$bInprogress) { $bInprogress = strlen($arDocumentState["ID"]) > 0 && strlen($arDocumentState["WORKFLOW_STATUS"]) > 0; } $tmp[$key] = '<li class="bizproc-item">' . '<div class="bizproc-item-title">' . '<div class="bizproc-statuses ' . (strlen($arDocumentState["ID"]) > 0 && strlen($arDocumentState["WORKFLOW_STATUS"]) > 0 ? 'bizproc-status-' . (empty($arTasksWorkflow) ? "inprogress" : "attention") : '') . '"></div>' . (!empty($arDocumentState["TEMPLATE_NAME"]) ? $arDocumentState["TEMPLATE_NAME"] : GetMessage("IBLIST_BP")) . '</div>' . '<div class="bizproc-item-title bizproc-state-title">' . (strlen($arDocumentState["STATE_TITLE"]) > 0 ? $arDocumentState["STATE_TITLE"] : $arDocumentState["STATE_NAME"]) . '</div>'; if (!empty($arTasksWorkflow)) { $tmp_tasks = array(); foreach ($arTasksWorkflow as $val) { $url = CComponentEngine::MakePathFromTemplate($arParams["WEBDAV_TASK_URL"], array("ELEMENT_ID" => $res["ID"], "ID" => $val["ID"])); $url = WDAddPageParams($url, array("back_url" => urlencode($GLOBALS['APPLICATION']->GetCurPageParam())), false); $tmp_tasks[] = '<a href="' . $url . '">' . $val["NAME"] . '</a>'; $arTasks[] = $val; } $tmp[$key] .= '<div class="bizproc-tasks">' . implode(", ", $tmp_tasks) . '</div>'; } $tmp[$key] .= '</li>'; } $aColss["BIZPROC"] = '<span class="bizproc-item-title">' . GetMessage("WD_BP_R_P") . ': <a href="' . $res["URL"]["BP"] . '" title="' . GetMessage("WD_BP_R_P_TITLE") . '">' . count($arDocumentStates) . '</a>' . '</span>' . (!empty($arTasks) ? '<br /><span class="bizproc-item-title">' . GetMessage("WD_TASKS") . ': <a href="' . $res["URL"]["BP_TASK"] . '" title="' . GetMessage("WD_TASKS_TITLE") . '">' . count($arTasks) . '</a></span>' : ''); $aCols["NAME"]['bizproc'] = "<div class=\"element-bizproc-status bizproc-statuses " . ($bInprogress ? ' bizproc-status-' . (empty($arTasks) ? "inprogress" : "attention") : '') . "\" onmouseover='BX.hint(this, \"" . addslashes($aColss['BIZPROC']) . "\")'></div>"; } $aCols['BIZPROC'] = $aColss['BIZPROC']; } } $aCols["ACTIVE"] = $res["ACTIVE"] == "Y" ? GetMessage("WD_Y") : GetMessage("WD_N"); $aCols["TIMESTAMP_X"] = "<div class='wd_column_date'>" . FormatDate('X', MakeTimeStamp($res["TIMESTAMP_X"])) . "</div>"; $aCols["DATE_CREATE"] = "<div class='wd_column_date'>" . FormatDate('X', MakeTimeStamp($res["DATE_CREATE"])) . "</div>"; $sName = ''; $sRating = ''; if ($res['TYPE'] != 'S') { if ($arParams["SHOW_RATING"] == 'Y' && $arParams["RATING_TAG"] == 'Y') { $sRating = "#RATING#"; } $aCols["NAME"] = $aCols["NAME"]["hint"] . "<div class=\"element-name\">" . $aCols["NAME"]["icon"] . $aCols["NAME"]["shared"] . "<div class=\"element-name-wrapper\">" . $aCols["NAME"]["name"] . $aCols["NAME"]["version"] . CWebDavExtLinks::$icoRepStr . $aCols["NAME"]["comments"] . $sRating . $aCols["NAME"]["status"] . "</div>" . $aCols["NAME"]["bizproc"] . "</div>"; } if ($bTheFirstTimeonPage == true && $res["PERMISSION"] >= "U") { $bTheFirstTimeonPage = false; ?> <script> try { if (/*@cc_on ! @*/ false && new ActiveXObject("SharePoint.OpenDocuments.2")) { BX.ready( function() { setTimeout( function () { try { var res = document.getElementsByTagName("A"); for (var ii = 0; ii < res.length; ii++) { if (res[ii].className.indexOf("element-edit-office") >= 0) { res[ii].style.display = 'block'; } } } catch(e) {} } , 10 ) } ); } } catch(e) {} BX.message({ 'wd_desktop_disk_is_installed': '<?php echo (bool) CWebDavTools::isDesktopDiskInstall(); ?> ' }); </script> <?php } return array("actions" => $arActions, "columns" => $aCols); }
public function sendJsonResponse($response, $httpStatusCode = null) { CWebDavTools::sendJsonResponse($response, $httpStatusCode); }
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; if (!CModule::IncludeModule('webdav')) { return; } global $USER, $APPLICATION; if (!$USER->IsAuthorized() || !check_bitrix_sessid() || $_SERVER['REQUEST_METHOD'] != 'POST') { return; } CUtil::JSPostUnescape(); if ($_POST['installDisk']) { CWebDavTools::setDesktopDiskInstalled(); if (\Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk')) { \Bitrix\Disk\Desktop::setDesktopDiskInstalled(); } CWebDavTools::sendJsonResponse(array('status' => 'success')); } if ($_POST['uninstallDisk']) { CWebDavTools::setDesktopDiskUninstalled(); if (\Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk')) { \Bitrix\Disk\Desktop::setDesktopDiskUninstalled(); } CWebDavTools::sendJsonResponse(array('status' => 'success')); } if ($_POST['reInstallDisk']) { CWebDavTools::setDesktopDiskUninstalled(); if (\Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk')) { \CUserOptions::setOption('disk', 'DesktopDiskReInstall', true, false, $USER->getId()); \Bitrix\Disk\Desktop::setDesktopDiskInstalled(); } CWebDavTools::sendJsonResponse(array('status' => 'success')); }
private function reformatUserRow(array $row) { $row['USER'] = array(); $row['USER']['ID'] = $row['ID']; $row['USER']['PHOTO_SRC'] = $this->getUserPictureSrc($row['PERSONAL_PHOTO']); $row['USER']['FORMATTED_NAME'] = \CWebDavTools::getUserName(array('ID' => $row['ID'], 'NAME' => $row['NAME'], 'LAST_NAME' => $row['LAST_NAME'], 'SECOND_NAME' => $row['SECOND_NAME'], 'EMAIL' => $row['EMAIL'])); $row['USER']['HREF'] = \CComponentEngine::makePathFromTemplate($this->params['pathToUser'], array('user_id' => $row['ID'])); return $row; }
/** * @return bool */ private function isExtranetUser() { static $really = null; if ($really === null) { $really = !CWebDavTools::isIntranetUser($this->getUser()->getId()) && CModule::includeModule("extranet"); } return $really; }
$componentPage = 'edit'; /******************************************************************** Input params ********************************************************************/ $arParams["EDIT"] = $arParams["EDIT"] == 'Y' ? $arParams["EDIT"] : 'N'; $arParams["PARAMS"] = is_array($arParams["PARAMS"]) ? $arParams["PARAMS"] : array(); $arParams["RESULT"] = is_array($arParams["RESULT"]) ? $arParams["RESULT"] : array(); $arParams["DATE_TIME_FORMAT"] = trim(empty($arParams["DATE_TIME_FORMAT"]) ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]); $arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? CSite::GetNameFormat(false) : str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]); $arParams["PARAMS"]['NAME_TEMPLATE'] = $arParams['NAME_TEMPLATE']; /******************************************************************** /Input params ********************************************************************/ $arResult['UID'] = strtolower($arParams['PARAMS']['arUserField']['ENTITY_ID']) . "_" . $this->randString(6); $arResult['allowExtDocServices'] = CWebDavTools::allowUseExtServiceGlobal(); $arResult['allowCreateDocByExtServices'] = CWebDavTools::allowCreateDocByExtServiceGlobal(); if (!empty($arParams['PARAMS']['arUserField']['ENTITY_ID'])) { if ($arParams['PARAMS']['arUserField']['ENTITY_ID'] == 'BLOG_COMMENT') { $arResult['URL_TO_POST'] = $arParams['PARAMS']['arUserField']['URL_TO_POST']; $arResult['ID_TO_POST'] = $arParams['PARAMS']['arUserField']['POST_ID']; if ($arResult['IS_HISTORY_DOC'] = $arParams['PARAMS']['arUserField']['USER_TYPE_ID'] == 'webdav_element_history') { $arResult['HISTORY_DOC'] = CUserTypeWebdavElementHistory::getDataFromValue($arParams['PARAMS']['arUserField']['VALUE']); $arResult['HISTORY_DOC'] = array_merge($arResult['HISTORY_DOC'][0], $arResult['HISTORY_DOC'][1]); } } if ($arParams['PARAMS']['arUserField']['ENTITY_ID'] == 'BLOG_POST') { $arResult['URL_TO_POST'] = $arParams['PARAMS']['arUserField']['URL_TO_POST']; $arResult['ID_TO_POST'] = $arParams['PARAMS']['arUserField']['POST_ID']; } } if ($arParams['EDIT'] == 'Y') {
function WDUFGetServiceEditDoc() { return CWebDavTools::getServiceEditDocForCurrentUser(); }
public static function getHashLink($arParams, $options, $userId = null) { $o = array_merge(array_intersect_key($arParams, array('IBLOCK_TYPE' => true, 'IBLOCK_ID' => true, 'FOLDER' => true, 'ROOT_SECTION_ID' => true)), array_intersect_key($options, array('PASSWORD' => true, 'URL' => true, 'BASE_URL' => true, 'F_SIZE' => true, 'DESCRIPTION' => true, 'LIFETIME_TYPE' => true, 'LIFETIME_NUMBER' => true, 'SINGLE_SESSION' => true, 'LINK_TYPE' => true, 'VERSION_ID' => true, 'FILE_ID' => true, 'ELEMENT_ID' => true)), array('USER_ID' => self::getUserID($userId), 'LIFETIME' => self::getLifeTime($options))); $fileName = str_replace(' ', '_', getFileName($o['URL'])); if (strlen($fileName) > 25) { $fileName = substr($fileName, 0, 25) . '...'; } $fileName = CWebDavTools::urlEncode($fileName); $hash = self::AddExtLink($o); return $hash != false ? self::getFullExternalURL() . $hash . '/' . $fileName : false; }
public static function sendJsonResponse($response, $httpStatusCode = null, $afterEchoCallback = null) { global $APPLICATION; $APPLICATION->restartBuffer(); while (ob_end_clean()) { } if ($httpStatusCode == 403) { header('HTTP/1.0 403 Forbidden', true, 403); } if ($httpStatusCode == 500) { header('HTTP/1.0 500 Internal Server Error', true, 500); } header('Content-Type:application/json; charset=UTF-8'); CWebDavTools::convertToUtf8($response); echo json_encode($response); if ($afterEchoCallback !== null && is_callable($afterEchoCallback)) { call_user_func_array($afterEchoCallback, array()); } require_once $_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/main/include/epilog_after.php'; die; }
public static final function removeRightsOnSections(array $sections, array $rights) { $tasks = CWebDavIblock::GetTasks(); $reformatRights = array(); $i = 0; foreach ($rights as $letter => $groupCodes) { if (!is_array($groupCodes)) { $groupCodes = array($groupCodes); } foreach ($groupCodes as $groupCode) { $reformatRights['n' . $i] = array('GROUP_CODE' => $groupCode, 'TASK_ID' => $tasks[$letter]); $i++; } unset($groupCode); } unset($right); foreach ($sections as $section) { $sectionId = (int) $section['ID']; if ($sectionId <= 0) { continue; } if (CIBlock::GetArrayByID($section['IBLOCK_ID'], "RIGHTS_MODE") === "E") { $rightObject = CWebDavIblock::_get_ib_rights_object('SECTION', $sectionId, $section['IBLOCK_ID']); $rightObject->SetRights(CWebDavTools::removeRights($rightObject, $reformatRights, $tasks)); } } unset($section); }
if ($successDeleteAllElements || $deleteCounter == 0) { $rs = CIBlockSection::GetList(array(), array('IBLOCK_ID' => $ob->IBLOCK_ID, 'SECTION_ID' => $arParams["SECTION_ID"]), false, array('ID')); $startTime = time(); while ($s = $rs->fetch()) { $ob->DELETE(array("section_id" => $s['ID'])); $deleteCounter++; if (time() - $startTime > $maxExecTime) { CWebDavTools::sendJsonResponse(array('status' => 'success', 'deleteItems' => $deleteCounter, 'limitTime' => true, 'finish' => false)); } } $successDeleteAllSections = true; } if ($successDeleteAllSections || $deleteCounter == 0) { CWebDavTools::sendJsonResponse(array('status' => 'success', 'finish' => true)); } else { CWebDavTools::sendJsonResponse(array('status' => 'success', 'deleteItems' => $deleteCounter, 'finish' => false)); } } $deleteOptions = array("section_id" => $arParams["SECTION_ID"]); if (!empty($_GET['delete_without_trash'])) { $deleteOptions["force"] = true; } $result = $ob->DELETE($deleteOptions); if (intVal($result) != 204) { $aMsg[] = array("id" => "not_delete", "text" => GetMessage("WD_ERROR_DELETE")); } else { WDClearComponentCache(array("webdav.element.edit", "webdav.element.hist", "webdav.element.upload", "webdav.element.view", "webdav.menu", "webdav.section.edit", "webdav.section.list")); $arNavChain = $arResult["NAV_CHAIN"]; array_pop($arNavChain); $url = CComponentEngine::MakePathFromTemplate($arParams["~SECTIONS_URL"], array("PATH" => implode("/", $arNavChain))); if ($_REQUEST["popupWindow"] == "Y") {
function SetUFRights($files, $rights) { static $arTasks = null; if (!CModule::IncludeModule('iblock') || !CModule::IncludeModule('webdav')) { return; } if (!is_array($rights) || count($rights) <= 0) { return false; } if ($files === null || $files === false) { return false; } if (!is_array($files)) { $files = array($files); } $arFiles = array(); foreach ($files as $id) { $id = intval($id); if (intval($id) > 0) { $arFiles[] = $id; } } if (count($arFiles) <= 0) { return false; } if ($arTasks == null) { $arTasks = CWebDavIblock::GetTasks(); } $arCodes = array(); foreach ($rights as $value) { if (substr($value, 0, 2) === 'SG') { $arCodes[] = $value . '_K'; } $arCodes[] = $value; } $arCodes = array_unique($arCodes); $i = 0; $arViewRights = array(); $curUserID = 'U' . $GLOBALS['USER']->GetID(); foreach ($arCodes as $right) { if ($curUserID == $right) { // do not override owner's rights continue; } $key = "n" . $i++; $arViewRights[$key] = array("GROUP_CODE" => $right, "TASK_ID" => $arTasks["R"]); } $ibe = new CIBlockElement(); $dbWDFile = $ibe->GetList(array(), array("ID" => $arFiles, "SHOW_NEW" => "Y"), false, false, array("ID", "NAME", "SECTION_ID", "IBLOCK_ID", "WF_NEW")); $iblockIds = array(); if ($dbWDFile) { while ($arWDFile = $dbWDFile->Fetch()) { $id = $arWDFile["ID"]; if ($arWDFile["WF_NEW"] == "Y") { $ibe->Update($id, array("BP_PUBLISHED" => "Y")); } if (CIBlock::GetArrayByID($arWDFile['IBLOCK_ID'], "RIGHTS_MODE") === "E") { $ibRights = CWebDavIblock::_get_ib_rights_object("ELEMENT", $id, $arWDFile["IBLOCK_ID"]); $ibRights->SetRights(CWebDavTools::appendRights($ibRights, $arViewRights, $arTasks)); if (empty($iblockIds[$arWDFile["IBLOCK_ID"]])) { $iblockIds[$arWDFile["IBLOCK_ID"]] = $arWDFile["IBLOCK_ID"]; } } } global $CACHE_MANAGER; foreach ($iblockIds as $iblockId) { $CACHE_MANAGER->ClearByTag("iblock_id_" . $iblockId); } unset($iblockId); } }
echo $user['INVITE_USER']['ID']; ?> )" class="bx-webdav-invite-us-set"></span><?php } ?> </span><?php } if ($arResult['PAGE'] != $arResult['TOTAL_PAGE']) { $portion = $arResult['TOTAL_COUNT'] - $arResult['PAGE'] * $arResult['ON_PAGE']; ?> <div class="bx-webdav-invite-us-place-for-users"></div> <div class="bx-webdav-invite-us-more"> <?php if ($portion > 0) { ?> <span class="bx-webdav-invite-us-more-link" onclick="wdLoadPortionUsersList(this, '<?php echo $arResult['USER_LIST_TYPE']; ?> ', <?php echo ++$arResult['PAGE']; ?> );"><?php echo CWebDavTools::getNumericCase($portion, GetMessage('WD_INVITE_MODAL_TAB_USERS_LOAD_MORE_COUNT_1', array('#COUNT#' => $portion)), GetMessage('WD_INVITE_MODAL_TAB_USERS_LOAD_MORE_COUNT_1_21', array('#COUNT#' => $portion)), GetMessage('WD_INVITE_MODAL_TAB_USERS_LOAD_MORE_COUNT_2_4', array('#COUNT#' => $portion)), GetMessage('WD_INVITE_MODAL_TAB_USERS_LOAD_MORE_COUNT_5_20', array('#COUNT#' => $portion))); ?> </span> <?php } ?> </div> <?php }
public function sendJsonResponse($response) { CWebDavTools::sendJsonResponse($response); }
echo htmlspecialcharsbx(CFile::FormatSize($arWDFile["FILE"]['FILE_SIZE'])); ?> "<?php ?> data-bx-owner="<?php echo htmlspecialcharsbx($arWDFile["CREATED_BY_FORMATTED"]); ?> "<?php ?> data-bx-dateModify="<?php echo htmlspecialcharsbx($arWDFile['FILE']["TIMESTAMP_X"]); ?> "<?php ?> data-bx-tooBigSizeMsg="<?php echo !empty($arResult['allowExtDocServices']) && CWebDavTools::allowPreviewFile($arWDFile["EXTENSION"], $arWDFile["FILE"]['FILE_SIZE'], false); ?> "<?php ?> alt="<?php echo htmlspecialcharsbx($arWDFile['NAME']); ?> "<?php ?> ><?php echo htmlspecialcharsbx($arWDFile['NAME']); ?> </a> <span class="feed-com-file-size"><?php echo $arWDFile['SIZE']; ?>
?> BX(function() { WDUploadDroppedFiles(); }); <?php } ?> BX(function() { var dropBoxNode = BX('<?php echo $arParams['GRID_ID']; ?> '); var dropbox = new BX.DD.dropFiles(dropBoxNode); if (dropbox && dropbox.supported()) { BX.addCustomEvent(dropbox, 'dropFiles', WDUploadDroppedFiles); //BX.addCustomEvent(dropbox, 'dragEnter', function() {BX.addClass(dropBoxNode, 'droptarget');}); //BX.addCustomEvent(dropbox, 'dragLeave', function() {BX.removeClass(dropBoxNode, 'droptarget');}); } }); </script> <script type="text/javascript"> BX.message({ 'wd_service_edit_doc_default': '<?php echo CUtil::JSEscape(CWebDavTools::getServiceEditDocForCurrentUser()); ?> ' }); </script>
public function executeComponent() { if (!CModule::IncludeModule('webdav')) { return false; } $isVisual = isset($this->arParams['VISUAL']) ? (bool) $this->arParams['VISUAL'] : true; $pathToAjax = isset($this->arParams['AJAX_PATH']) ? $this->arParams['AJAX_PATH'] : '/bitrix/components/bitrix/webdav.disk/ajax.php'; try { if ($isVisual) { $diskEnabled = \Bitrix\Main\Config\Option::get('disk', 'successfully_converted', false) && CModule::includeModule('disk'); $quota = CDiskQuota::GetDiskQuota(); $this->arResult['showDiskQuota'] = false; //$quota !== true; //now without quota $this->arResult['diskSpace'] = (double) COption::GetOptionInt('main', 'disk_space') * 1024 * 1024; $this->arResult['quota'] = $quota; $this->arResult['ajaxIndex'] = $pathToAjax; $this->arResult['ajaxStorageIndex'] = '/desktop_app/storage.php'; if ($diskEnabled) { $this->arResult['isInstalledDisk'] = \Bitrix\Disk\Desktop::isDesktopDiskInstall(); $this->arResult['personalLibIndex'] = '/company/personal/user/' . $this->getUser()->getId() . '/disk/path/'; } else { $this->arResult['isInstalledDisk'] = (bool) CWebDavTools::isDesktopDiskInstall(); $this->arResult['personalLibIndex'] = '/company/personal/user/' . $this->getUser()->getId() . '/files/lib/'; } $this->arResult['isInstalledPull'] = (bool) IsModuleInstalled('pull'); $this->arResult['currentUser'] = array('id' => $this->getUser()->getId(), 'formattedName' => $this->getUser()->getFormattedName()); $this->getApplication()->addHeadScript('/bitrix/components/bitrix/webdav.disk/disk.js'); $this->includeComponentTemplate(); return; } CTimeZone::Disable(); //decode from utf-8 to site LANG_CHARSET CUtil::decodeURIComponent($_POST); $this->checkUser()->runAction(); CTimeZone::Enable(); } catch (CWebDavBadStorageAfterMigrateException $e) { CTimeZone::Enable(); $this->sendJsonResponse(array('status' => CWebDavDiskDispatcher::STATUS_ERROR, 'message' => 'Could not get Disk\\Storage. Perhaps, it is old client, which does not reconnect. '), 500); } catch (CWebDavSymlinkMoveFakeErrorException $e) { CTimeZone::Enable(); $this->sendJsonResponse(array('status' => CWebDavDiskDispatcher::STATUS_ERROR, 'message' => 'This is not really error. Move symlink folders.')); } catch (CWebDavAccessDeniedException $e) { CTimeZone::Enable(); $this->sendJsonResponse(array('status' => CWebDavDiskDispatcher::STATUS_ACCESS_DENIED, 'message' => $e->getMessage())); } catch (Exception $e) { CTimeZone::Enable(); $response = array('status' => 'error', 'message' => $e->getMessage()); if ($this->dispatcher) { $errors = $this->dispatcher->getErrors(); if ($errors) { $response['detail'] = $errors; } } $this->sendJsonResponse($response); } return; }
} if (!$arF || !empty($_GET['notfoud'])) { $arResult["NAME"] = GetMessage("WD_MODULE_IS_FILE_NOT_FOUND"); $arResult["ICON"] = "nf.png"; $arResult["F_SIZE"] = 0; $arResult["DESCRIPTION"] = GetMessage("WD_MODULE_IS_FILE_NOT_FOUND_DESCRIPTION"); $arResult["FILE_NOT_FOUND"] = true; } if (!empty($_POST['checkViewByGoogle'])) { CWebDavTools::sendJsonResponse(array('viewByGoogle' => $arResult["DOWNLOAD_COUNT"] > 0)); } if (!empty($arF) && !empty($arF['LINK_TYPE']) && $arF['LINK_TYPE'] == CWebDavExtLinks::LINK_TYPE_AUTO) { CWebDavExtLinks::LoadFile($arGetListRes); } if (!empty($arF) && !empty($arF['SINGLE_SESSION'])) { CWebDavExtLinks::DeleteSingleSessionLink($hash); CWebDavExtLinks::LoadFile($arGetListRes); } $arResult["COMPANY_NAME"] = COption::GetOptionString("main", "site_name", ""); if (array_key_exists("LoadFile", $_REQUEST) && intval($_REQUEST["LoadFile"]) > 0 && $arResult["PASSWORD"] == "NOT" && $arGetListRes['LINK_TYPE'] != CWebDavExtLinks::LINK_TYPE_AUTO) { CWebDavExtLinks::LoadFile($arGetListRes); } $arResult['ALLOW_VIEWER'] = false; if ($arResult["PASSWORD"] == "NOT" && empty($arF['PASSWORD']) && CWebDavExtLinks::DEMO_HASH != $hash) { $allowExtDocServicesGlobal = CWebDavTools::allowUseExtServiceGlobal(); if ($allowExtDocServicesGlobal && CWebDavTools::allowPreviewFile($arF["URL"], $arResult["F_SIZE"])) { $arResult['ALLOW_VIEWER'] = true; } } $APPLICATION->RestartBuffer(); $this->IncludeComponentTemplate();
/** * Get numeric case for lang messages * @param $number * @param $once * @param $multi21 * @param $multi2_4 * @param $multi5_20 * @return string */ public static function getNumericCase($number, $once, $multi21, $multi2_4, $multi5_20) { return CWebDavTools::getNumericCase($number, $once, $multi21, $multi2_4, $multi5_20); }
?> </span> <span class="bx-webdav-invite-users-arrow"></span> </div> <div class="bx-webdav-invite-users-block"></div> </div> <?php } ?> <?php if ($arResult['DISCONNECTED_USERS_COUNT'] > 0) { ?> <div class="bx-webdav-invite-users-list" style="height: auto;"> <div onclick="wdOpenUsersList(this, 'disconnect');" class="bx-webdav-invite-users-title"> <span class="bx-webdav-invite-users-title-text"><?php echo CWebDavTools::getNumericCase($arResult['DISCONNECTED_USERS_COUNT'], GetMessage('WD_INVITE_MODAL_TAB_USERS_NOT_USAGE_COUNT_1', array('#COUNT#' => $arResult['DISCONNECTED_USERS_COUNT'])), GetMessage('WD_INVITE_MODAL_TAB_USERS_NOT_USAGE_COUNT_21', array('#COUNT#' => $arResult['DISCONNECTED_USERS_COUNT'])), GetMessage('WD_INVITE_MODAL_TAB_USERS_NOT_USAGE_COUNT_2_4', array('#COUNT#' => $arResult['DISCONNECTED_USERS_COUNT'])), GetMessage('WD_INVITE_MODAL_TAB_USERS_NOT_USAGE_COUNT_5_20', array('#COUNT#' => $arResult['DISCONNECTED_USERS_COUNT']))); ?> </span> <span class="bx-webdav-invite-users-arrow"></span> </div> <div class="bx-webdav-invite-users-block"></div> </div> <?php } ?> </div> <div class="bx-webdav-invite-footer"> <a href="javascript:void(0)" onclick="wdOpenConfirmUnlink();" class="webform-button"><span class="webform-button-left"></span><span class="webform-button-text"><?php echo GetMessage('WD_INVITE_MODAL_BTN_DIE_SELF_ACCESS'); ?> </span><span class="webform-button-right"></span></a>
$copyTmpFile = CFile::MakeFileArray($wdElement['element_array']['PROPERTY_FILE_VALUE']); $tmpFile->path = $copyTmpFile['tmp_name']; } $response = array(); try { $fileData = $storage->addFile($filename, $savedFolderId, $tmpFile); $savedName = CWebDavIblock::getSavedMetaData(); $pathToUserLib = str_replace(array('#USER_ID#', '#user_id#'), array($USER->GetID(), $USER->GetID()), CWebDavIblock::LibOptions('lib_paths', true, $data['IBLOCK_ID'])); $pathToUserLib = strstr($pathToUserLib, 'files/element', true) . 'files/lib'; $pathToUserLib = $pathToUserLib . '/' . $savedName['alias'] . '?result=doc' . $fileData['extra']['id']; $response = array('status' => 'success', 'newId' => $fileData['extra']['id'], 'viewUrl' => $pathToUserLib); } catch (Exception $e) { $response['status'] = 'error'; $fileData = array(); } CWebDavTools::sendJsonResponse($response); } } } } } elseif (!empty($_REQUEST['downloadHistory']) && !empty($_REQUEST['id'])) { $APPLICATION->RestartBuffer(); $APPLICATION->IncludeComponent('bitrix:webdav.element.history', '', array('webdav' => $ob, 'ajax' => false, 'elementId' => (int) $_REQUEST['id'], 'versionId' => (int) $_REQUEST['v'], 'fileId' => (int) $_REQUEST['f'])); include $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_after.php"; die; } elseif (!empty($_REQUEST['wdaction'])) { $wdAction = strtolower($_REQUEST['wdaction']); if ($wdAction == 'connect' || $wdAction == 'disconnect') { $attachObjectType = null; $attachObjectId = null; if (!empty($_REQUEST['group'])) {
protected static function appendRights(CIBlockElementRights $ibRights, array $appendRights, array $tasks) { return CWebDavTools::appendRights($ibRights, $appendRights, $tasks); }
public static function sendNotify(array $folderInvite) { $serverName = (CMain::IsHTTPS() ? "https" : "http") . "://" . (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", "")); if (empty($folderInvite['IS_DELETED']) && !empty($folderInvite['IS_APPROVED']) && $folderInvite['USER_ID'] != $folderInvite['INVITE_USER_ID'] && \Bitrix\Main\Loader::includeModule('im')) { $sectionToShare = CIBlockSection::getList(array(), array('ID' => $folderInvite['SECTION_ID'], 'IBLOCK_ID' => $folderInvite['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'), false, array('NAME'))->fetch(); if (empty($sectionToShare['NAME'])) { return; } $notifyFields = array(); $notifyFields['NOTIFY_MODULE'] = 'webdav'; $notifyFields['NOTIFY_EVENT'] = "invite"; $notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM; $notifyFields['FROM_USER_ID'] = $folderInvite['USER_ID']; $notifyFields['TO_USER_ID'] = $folderInvite['INVITE_USER_ID']; $notifyFields['NOTIFY_TAG'] = \Bitrix\Webdav\FolderInviteTable::getNotifyTag($folderInvite); $notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}"; $uriShow = \CComponentEngine::makePathFromTemplate(CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'), array('user_id' => $folderInvite['INVITE_USER_ID'])) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID']; $uriDisconnect = \CComponentEngine::makePathFromTemplate(CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'), array('user_id' => $folderInvite['INVITE_USER_ID'])) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'] . '#disconnect'; $notifyFields['NOTIFY_MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_APPROVE_N1', array('#FOLDERNAME#' => '<a href="' . $uriShow . '">' . $sectionToShare['NAME'] . '</a>', '#DISCONNECT_LINK#' => '<a href="' . $uriDisconnect . '">' . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . '</a>', '#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '')); $notifyFields['NOTIFY_MESSAGE_OUT'] = GetMessage('WD_SYMLINK_INVITE_TEXT_APPROVE_N1', array('#FOLDERNAME#' => $sectionToShare['NAME'] . " ({$uriShow})", '#DISCONNECT_LINK#' => "\n\n" . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . ': ' . $serverName . $uriDisconnect, '#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '')); \CIMNotify::Add($notifyFields); } elseif (empty($folderInvite['IS_DELETED']) && $folderInvite['USER_ID'] == $folderInvite['INVITE_USER_ID'] && \Bitrix\Main\Loader::includeModule('im')) { $sectionToShare = CIBlockSection::getList(array(), array('ID' => $folderInvite['SECTION_ID'], 'IBLOCK_ID' => $folderInvite['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'), false, array('NAME', 'SOCNET_GROUP_ID'))->fetch(); if (empty($sectionToShare['NAME']) || empty($sectionToShare['SOCNET_GROUP_ID'])) { return; } if (\Bitrix\Main\Loader::includeModule('socialnetwork')) { $group = CSocNetGroup::GetList(array(), array('ID' => $sectionToShare['SOCNET_GROUP_ID']), false, false, array('NAME'))->fetch(); } $notifyFields = array(); $notifyFields['NOTIFY_MODULE'] = 'webdav'; $notifyFields['NOTIFY_EVENT'] = "invite"; $notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM; $notifyFields['FROM_USER_ID'] = $folderInvite['USER_ID']; $notifyFields['TO_USER_ID'] = $folderInvite['INVITE_USER_ID']; $notifyFields['NOTIFY_TAG'] = \Bitrix\Webdav\FolderInviteTable::getNotifyTag($folderInvite); $notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}"; $uriShow = \CComponentEngine::makePathFromTemplate(CWebDavSymlinkHelper::getPathPattern('group', '/company/personal/user/#user_id#/'), array('user_id' => $folderInvite['INVITE_USER_ID'])) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID']; $uriDisconnect = \CComponentEngine::makePathFromTemplate(CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'), array('user_id' => $folderInvite['INVITE_USER_ID'])) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'] . '#disconnect'; if (\CWebDavTools::allowAutoconnectShareGroupFolder()) { $notifyFields['NOTIFY_MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_N1', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '', '#GROUPNAME#' => '<a href="' . $uriShow . '">' . $group['NAME'] . '</a>', '#DISCONNECT_LINK#' => '<a href="' . $uriDisconnect . '">' . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . '</a>')); $notifyFields['NOTIFY_MESSAGE_OUT'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_N1', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '', '#GROUPNAME#' => $group['NAME'], '#DISCONNECT_LINK#' => "\n\n" . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . ': ' . $serverName . $uriDisconnect)); } elseif (empty($folderInvite['IS_APPROVED'])) { $notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_CONFIRM; $notifyFields['NOTIFY_BUTTONS'] = array(array('TITLE' => GetMessage('WD_SYMLINK_INVITE_APPROVE_Y'), 'VALUE' => 'Y', 'TYPE' => 'accept'), array('TITLE' => GetMessage('WD_SYMLINK_INVITE_APPROVE_N'), 'VALUE' => 'N', 'TYPE' => 'cancel')); $notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_CONFIRM_N1', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#GROUPNAME#' => $group['NAME'])); } \CIMNotify::Add($notifyFields); } elseif (!empty($folderInvite['IS_DELETED']) && \Bitrix\Main\Loader::includeModule('im')) { $sectionToShare = CIBlockSection::getList(array(), array('ID' => $folderInvite['SECTION_ID'], 'IBLOCK_ID' => $folderInvite['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'), false, array('NAME'))->fetch(); if (empty($sectionToShare['NAME'])) { return; } $inviteUser = \CUser::getById($folderInvite['INVITE_USER_ID']); if ($inviteUser) { $inviteUser = $inviteUser->fetch(); } $notifyFields = array(); $notifyFields['NOTIFY_MODULE'] = 'webdav'; $notifyFields['NOTIFY_EVENT'] = "invite"; $notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM; $notifyFields['FROM_USER_ID'] = $folderInvite['INVITE_USER_ID']; $notifyFields['TO_USER_ID'] = $folderInvite['USER_ID']; $notifyFields['NOTIFY_TAG'] = \Bitrix\Webdav\FolderInviteTable::getNotifyTag($folderInvite); $notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}"; if (CWebDavTools::getUserGender($inviteUser['PERSONAL_GENDER']) == 'F') { $notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_F', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#USERNAME#' => CWebDavTools::getUserName($inviteUser))); } else { $notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_M', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#USERNAME#' => CWebDavTools::getUserName($inviteUser))); } \CIMNotify::Add($notifyFields); } }
public static function OnSocNetUserToGroupUpdate($ID, $arFields) { if (intval($ID) <= 0) { return false; } if (!CModule::IncludeModule('socialnetwork')) { return false; } if (!CModule::IncludeModule('webdav')) { return false; } if (isset($arFields['ROLE']) && ($arFields['ROLE'] == SONET_ROLES_USER || $arFields['ROLE'] == SONET_ROLES_MODERATOR || $arFields['ROLE'] == SONET_ROLES_OWNER)) { if (!isset($arFields['USER_ID'])) { $query = CSocNetUserToGroup::GetList(array(), array('ID' => $ID), false, false, array('USER_ID', 'GROUP_ID')); if ($query) { $row = $query->fetch(); if ($row) { $userId = $row['USER_ID']; $groupId = $row['GROUP_ID']; } } } if (!empty($userId) && !empty($groupId) && CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $groupId, 'files')) { $dispatcher = new \Bitrix\Webdav\InviteDispatcher(); $attachObjectType = CWebDavSymlinkHelper::ENTITY_TYPE_GROUP; $attachObjectId = (int) $groupId; $inviteComponentParams = array('attachObject' => array('id' => $attachObjectId, 'type' => $attachObjectType), 'attachToUserId' => $userId, 'inviteFromUserId' => $userId, 'canEdit' => true); $response = CWebDavTools::allowAutoconnectShareGroupFolder() ? $dispatcher->processActionConnect($inviteComponentParams) : $dispatcher->processActionInvite($inviteComponentParams); if ($response['status'] == $dispatcher::STATUS_SUCCESS) { } } } CIBlockWebdavSocnet::ClearTagCache('wd_socnet'); }
public function createBlankFile(array $fileData) { $accessToken = $this->getAccessToken(); $googleMimeType = $this->getInternalMimeTypeListByExtension(getFileExtension($fileData['name'])); $fileName = getFileNameWithoutExtension($fileData['name']); CWebDavTools::convertToUtf8($fileName); if (!$googleMimeType) { return false; } $http = new CHTTP(); $http->http_timeout = 10; $arUrl = $http->ParseURL('https://www.googleapis.com/drive/v2/files'); $http->SetAdditionalHeaders(array("Authorization" => "Bearer {$accessToken}")); $postFields = "{\"title\":\"{$fileName}\",\"mimeType\":\"{$googleMimeType}\"}"; $postContentType = 'application/json; charset=UTF-8'; if (!$http->Query('POST', $arUrl['host'], $arUrl['port'], $arUrl['path_query'], $postFields, $arUrl['proto'], $postContentType)) { return false; } $this->checkHttpResponse($http); // access token expired, let's get a new one and try again if ($http->status == "401") { //todo: invalid credential response return false; } // error checking if ($http->status != "200") { return false; } $finalOutput = json_decode($http->result); //last signed user must delete file from google drive $this->insertPermission(array('link' => $finalOutput->alternateLink, 'id' => $finalOutput->id)); return array('link' => $finalOutput->alternateLink, 'id' => $finalOutput->id); }