%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/components/bitrix/bizproc.document.history/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/components/bitrix/bizproc.document.history/component.php |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); if (!CModule::IncludeModule('bizproc')): return false; endif; if (!CModule::IncludeModule("webdav")): ShowError(GetMessage("W_WEBDAV_IS_NOT_INSTALLED")); return 0; endif; require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/components/bitrix/webdav/functions.php"); CUtil::InitJSCore(array('window')); if (!function_exists("BPWSInitParam")) { function BPWSInitParam(&$arParams, $name) { $arParams[$name] = trim($arParams[$name]); if ($arParams[$name] <= 0) $arParams[$name] = trim($_REQUEST[$name]); if ($arParams[$name] <= 0) $arParams[$name] = trim($_REQUEST[strtolower($name)]); } } global $order, $by; if (empty($_REQUEST["by"])): $by = "modified"; $order = "desc"; endif; /******************************************************************** Input params ********************************************************************/ /***************** BASE ********************************************/ $arParams["MODULE_ID"] = trim(empty($arParams["MODULE_ID"]) ? $_REQUEST["module_id"] : $arParams["MODULE_ID"]); $arParams["ENTITY"] = trim(empty($arParams["ENTITY"]) ? $_REQUEST["entity"] : $arParams["ENTITY"]); $arParams["DOCUMENT_TYPE"] = trim(empty($arParams["DOCUMENT_TYPE"]) ? $_REQUEST["document_type"] : $arParams["DOCUMENT_TYPE"]); $arParams["DOCUMENT_ID"] = trim(empty($arParams["DOCUMENT_ID"]) ? $_REQUEST["document_id"] : $arParams["DOCUMENT_ID"]); //***************** URL ********************************************/ $URL_NAME_DEFAULT = array( "document" => "PAGE_NAME=bizproc_document&ID=#ID#"); $arResult["back_url"] = urlencode(empty($_REQUEST["back_url"]) ? $APPLICATION->GetCurPageParam() : $_REQUEST["back_url"]); foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE) { $arParams[strToUpper($URL)."_URL"] = trim($arParams[strToUpper($URL)."_URL"]); if (empty($arParams[strToUpper($URL)."_URL"])): $arParams[strToUpper($URL)."_URL"] = $APPLICATION->GetCurPage(); endif; $arParams["~".strToUpper($URL)."_URL"] = $arParams[strToUpper($URL)."_URL"]; $arParams[strToUpper($URL)."_URL"] = htmlspecialcharsbx($arParams["~".strToUpper($URL)."_URL"]); } /***************** ADDITIONAL **************************************/ $arParams["PAGE_ELEMENTS"] = intVal(intVal($arParams["PAGE_ELEMENTS"]) > 0 ? $arParams["PAGE_ELEMENTS"] : 50); $arParams["PAGE_NAVIGATION_TEMPLATE"] = trim($arParams["PAGE_NAVIGATION_TEMPLATE"]); $arParams["GRID_ID"] = "bizproc_history_".$arParams["DOCUMENT_ID"][2]; $arParams["ACTION"] = (isset($_REQUEST["action"]) ? strtolower($_REQUEST["action"]) : ''); $arParams["ACTION"] = (in_array($arParams["ACTION"], array("recover", "delete")) ? $arParams["ACTION"] : ''); $arResult["NOTIFICATIONS"] = array( "recover" => GetMessage("BPADH_RECOVERY_OK"), "delete" => GetMessage("BPADH_DELETE_OK"), ); if (!empty($_REQUEST["result"]) && array_key_exists($_REQUEST["result"], $arResult["NOTIFICATIONS"])) $arResult["OK_MESSAGE"] = $arResult["NOTIFICATIONS"][$_REQUEST["result"]]; if (isset($arParams["OBJECT"]) && (! is_object($arParams["OBJECT"]))) unset($arParams["OBJECT"]); /***************** STANDART ****************************************/ $arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y"); $arParams['NAME_TEMPLATE'] = empty($arParams['NAME_TEMPLATE']) ? COption::GetOptionString("bizproc", "name_template", CSite::GetNameFormat(false), SITE_ID) : str_replace(array("#NOBR#","#/NOBR#"), array("",""), $arParams["NAME_TEMPLATE"]); /******************************************************************** /Input params ********************************************************************/ /******************************************************************** Main data ********************************************************************/ $arError = array(); if (strlen($arParams["MODULE_ID"]) <= 0) $arError[] = array( "id" => "empty_module_id", "text" => GetMessage("BPATT_NO_MODULE_ID")); if (strlen($arParams["ENTITY"]) <= 0) $arError[] = array( "id" => "empty_entity", "text" => GetMessage("BPABS_EMPTY_ENTITY")); if (strlen($arParams["DOCUMENT_TYPE"]) <= 0) $arError[] = array( "id" => "empty_document_type", "text" => GetMessage("BPABS_EMPTY_DOC_TYPE")); if (strlen($arParams["DOCUMENT_ID"]) <= 0) $arError[] = array( "id" => "empty_document_id", "text" => GetMessage("BPABS_EMPTY_DOC_ID")); $arParams["DOCUMENT_TYPE"] = array($arParams["MODULE_ID"], $arParams["ENTITY"], $arParams["DOCUMENT_TYPE"]); $arParams["DOCUMENT_ID"] = array($arParams["MODULE_ID"], $arParams["ENTITY"], $arParams["DOCUMENT_ID"]); if (empty($arError)) { if (!CBPDocument::CanUserOperateDocument( CBPWebDavCanUserOperateOperation::WriteDocument, $GLOBALS["USER"]->GetID(), $arParams["DOCUMENT_ID"], array("UserGroups" => $GLOBALS["USER"]->GetUserGroupArray()))): $arError[] = array( "id" => "access_denied", "text" => GetMessage("BPADH_NO_PERMS")); endif; } if (!empty($arError)) { $e = new CAdminException($arError); ShowError($e->GetString()); return false; } /******************************************************************** /Main data ********************************************************************/ $arResult["VERSIONS"] = array(); $arResult["GRID_VERSIONS"] = array(); $arResult["ERROR_MESSAGE"] = ""; /******************************************************************** Action ********************************************************************/ if (!empty($arParams['ACTION']) && !empty($_REQUEST["ID"]) && check_bitrix_sessid()) { $arError = array(); $ID = $_REQUEST["ID"]; switch ($arParams['ACTION']) { case "delete": if ($arParams["MODULE_ID"] == "webdav") { if (CBPDocument::CanUserOperateDocument( CBPWebDavCanUserOperateOperation::DeleteDocument, $GLOBALS["USER"]->GetID(), $arParams["DOCUMENT_ID"], array("UserGroups" => $GLOBALS["USER"]->GetUserGroupArray()))): CBPHistoryService::Delete($ID, $arParams["DOCUMENT_ID"]); else: $arError[] = array( "id" => "access_denied", "text" => GetMessage("BPADH_NO_PERMS")); endif; } else { CBPHistoryService::Delete($ID, $arParams["DOCUMENT_ID"]); } break; case "recover": if ($arParams["MODULE_ID"] == "webdav" && isset($arParams["OBJECT"])) { $arParams['OBJECT']->IsDir(array('element_id' => $arParams["DOCUMENT_ID"][2])); if (($arParams["OBJECT"]->workflow == 'bizproc' || $arParams["OBJECT"]->workflow == 'bizproc_limited') && $arParams['OBJECT']->arParams['not_found'] == false) { CBPDocument::AddDocumentToHistory($arParams['DOCUMENT_ID'], $arParams['OBJECT']->arParams["element_name"], $GLOBALS["USER"]->GetID()); if (method_exists('CIBlockDocumentWebdav', 'TruncateHistory')) CIBlockDocumentWebdav::TruncateHistory($arParams['OBJECT']->wfParams['DOCUMENT_TYPE'], $arParams["DOCUMENT_ID"][2]); } } try { if (!CBPHistoryService::RecoverDocumentFromHistory($ID)) { $arError[] = array( "id" => "not recover", "text" => GetMessage("BPADH_RECOVERY_ERROR")); } } catch (Exception $e) { $arError[] = array( "id" => "not recover", "text" => $e->getMessage()); } break; } if (!empty($arError)): $e = new CAdminException($arError); $arResult["ERROR_MESSAGE"] = $e->GetString(); else: LocalRedirect($APPLICATION->GetCurPageParam("result=".$arParams["ACTION"], array("action", "ID", "sessid", "result"))); endif; } /******************************************************************** /Action ********************************************************************/ /******************************************************************** Data ********************************************************************/ $history = new CBPHistoryService(); $db_res = $history->GetHistoryList( array(strtoupper($by) => strtoupper($order)), array("DOCUMENT_ID" => $arParams["DOCUMENT_ID"]), false, false, array("ID", "DOCUMENT_ID", "NAME", "MODIFIED", "USER_ID", "USER_NAME", "USER_LAST_NAME", "USER_LOGIN", "DOCUMENT", "USER_SECOND_NAME") ); if ($db_res) { $db_res->NavStart($arParams["PAGE_ELEMENTS"], false); $arResult["NAV_RESULT"] = $db_res; $arResult["NAV_STRING"] = $db_res->GetPageNavStringEx($navComponentObject, GetMessage("BPADH_NAV_TITLE"), $arParams["PAGE_NAVIGATION_TEMPLATE"], true); if ($this->__parent) $this->__parent->arResult["HISTORY_LENGTH"] = $db_res->NavRecordCount; while ($res = $db_res->GetNext()) { if ($arParams['MODULE_ID'] == 'webdav' && isset($arParams['OBJECT'])) { if (isset($res["DOCUMENT"]["PROPERTIES"]['WEBDAV_SIZE']['VALUE'])) $res['FILE_SIZE'] = CFile::FormatSize($res['DOCUMENT']['PROPERTIES']['WEBDAV_SIZE']['VALUE']); } $res["USER"] = CUser::FormatName($arParams["NAME_TEMPLATE"], array("NAME" => $res["USER_NAME"], "LAST_NAME" => $res["USER_LAST_NAME"], "SECOND_NAME" => $res["USER_SECOND_NAME"], "LOGIN" => $res["USER_LOGIN"]), true); $res["URL"] = array( "VIEW" => CComponentEngine::MakePathFromTemplate($arParams["~DOCUMENT_URL"], $res), "RECOVER" => $APPLICATION->GetCurPageParam("ID=".$res["ID"]."&action=recover&".bitrix_sessid_get(), array("ID", "action", "sessid", "result")), "DELETE" => $APPLICATION->GetCurPageParam("ID=".$res["ID"]."&action=delete&".bitrix_sessid_get(), array("ID", "action", "sessid", "result"))); foreach ($res["URL"] as $key => $val): $res["URL"]["~".$key] = $val; $res["URL"][$key] = htmlspecialcharsbx($val); endforeach; $arResult["VERSIONS"][$res["ID"]] = $res; $hintLink = __make_hint($res["DOCUMENT"]["FIELDS"]); $arResult["GRID_VERSIONS"][$res["ID"]] = array( "id" => $res["ID"], "data" => $res, "actions" => array( array( "ICONCLASS" => "bizproc-history-action-recover", "TEXT" => GetMessage("BPADH_RECOVERY_DOC"), "ONCLICK" => "jsUtils.Redirect([], '".CUtil::JSEscape($res["URL"]["~RECOVER"])."');"), array( "ICONCLASS" => "bizproc-history-action-delete", "TEXT" => GetMessage("BPADH_DELETE_DOC"), "ONCLICK" => 'if (confirm(\''. CUtil::JSEscape(GetMessage("BPADH_DELETE_DOC_CONFIRM")).'\')) {jsUtils.Redirect([], \''.CUtil::JSEscape($res["URL"]["~DELETE"]).'\');}')), "columns" => array( "NAME" => $res["DOCUMENT"]["FIELDS"]["HINT"].'<a href="'.$res["URL"]["VIEW"].'" '.$hintLink.'>'.$res["NAME"].'</a>', //"NAME" => $res["DOCUMENT"]["FIELDS"]["HINT"].'<a href="'.$res["URL"]["VIEW"].'" title="'.GetMessage("BPADH_VIEW_DOC").'" '.$hintLink.'>'.$res["NAME"].'</a>', //"TAGS" => $res["DOCUMENT"]["FIELDS"]["TAGS"], //"DESCRIPTION" => $res["DOCUMENT"]["FIELDS"]["PREVIEW_TEXT"], ), "editable" => false); } } /******************************************************************** /Data ********************************************************************/ $this->IncludeComponentTemplate(); /******************************************************************** Standart operations ********************************************************************/ if($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle(GetMessage("BPADH_TITLE")); } /******************************************************************** /Standart operations ********************************************************************/ ?>