public static function TruncateHistory($arDocType, $docID) { $maxCount = COption::GetOptionInt("webdav", "bp_history_size", 50); if ($maxCount <= 0) { return; } $documentId = array($arDocType[0], $arDocType[1], $docID); $history = new CBPHistoryService(); $db_res = $history->GetHistoryList(array("ID" => "DESC"), array("DOCUMENT_ID" => $documentId), false, false, array("ID")); $count = 1; if ($db_res) { while ($arr = $db_res->Fetch()) { if ($count++ > $maxCount) { CBPHistoryService::Delete($arr["ID"], $documentId); } } } }
/******************************************************************** 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")); } } 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"));
$history = new CBPHistoryService(); if ($arID = $lAdmin->GroupAction()) { if ($_REQUEST['action_target'] == 'selected') { $arID = array(); $dbResultList = $history->GetHistoryList(array($by => $order), $arFilter, false, false, array("ID")); while ($arResult = $dbResultList->Fetch()) { $arID[] = $arResult['ID']; } } foreach ($arID as $ID) { if (strlen($ID) <= 0) { continue; } switch ($_REQUEST['action']) { case "delete": CBPHistoryService::Delete($ID, $documentId); break; case "recover": try { if (CBPHistoryService::RecoverDocumentFromHistory($ID)) { $lAdmin->AddActionSuccessMessage(GetMessage("BPADH_RECOVERY_SUCCESS")); } else { $lAdmin->AddGroupError(GetMessage("BPADH_RECOVERY_ERROR"), $ID); } } catch (Exception $e) { $lAdmin->AddGroupError($e->getMessage(), $ID); } break; } } }