Пример #1
0
 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);
             }
         }
     }
 }
Пример #2
0
/********************************************************************
				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"));
Пример #3
0
$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;
        }
    }
}