if ($ID > 0 && $WF == "Y") {
     // get ID of the last record in workflow
     $WF_ID = CIBlockElement::WF_GetLast($ID);
     // check for edit permissions
     $STATUS_ID = CIBlockElement::WF_GetCurrentStatus($WF_ID, $STATUS_TITLE);
     $STATUS_PERMISSION = CIBlockElement::WF_GetStatusPermission($STATUS_ID);
     if ($STATUS_ID > 1 && $STATUS_PERMISSION < 2) {
         $error = new _CIBlockError(1, "ACCESS_DENIED", GetMessage("IBLOCK_ACCESS_DENIED_STATUS"));
         break;
     } elseif ($STATUS_ID == 1) {
         $WF_ID = $ID;
         $STATUS_ID = CIBlockElement::WF_GetCurrentStatus($WF_ID, $STATUS_TITLE);
         $STATUS_PERMISSION = CIBlockElement::WF_GetStatusPermission($STATUS_ID);
     }
     // check if document is locked
     if (CIBlockElement::WF_IsLocked($ID, $locked_by, $date_lock)) {
         if ($locked_by > 0) {
             $by = "ID";
             $order = "ASC";
             $rsUser = CUser::GetList($by, $order, array("ID_EQUAL_EXACT" => $locked_by));
             if ($arUser = $rsUser->GetNext()) {
                 $locked_by = rtrim("[" . $arUser["ID"] . "] (" . $arUser["LOGIN"] . ") " . $arUser["NAME"] . " " . $arUser["LAST_NAME"]);
             }
         }
         $error = new _CIBlockError(2, "BLOCKED", GetMessage("IBLOCK_DOCUMENT_LOCKED", array("#ID#" => $locked_by, "#DATE#" => $date_lock)));
         break;
     }
 } elseif ($bBizproc) {
     $arDocumentStates = CBPDocument::GetDocumentStates(array(MODULE_ID, ENTITY, DOCUMENT_TYPE), $ID > 0 ? array(MODULE_ID, ENTITY, $ID) : null, "Y");
     $arCurrentUserGroups = $USER->GetUserGroupArray();
     if ($ID > 0 && is_array($arElement)) {
				);
				$canRead = false;
			}

			if (!$canWrite && !$canRead)
			{
				$error = new _CIBlockError(1, "ACCESS_DENIED", GetMessage("IBLOCK_ACCESS_DENIED_STATUS"));
				$errorTriger = true;
			}
		}
	}

	$denyAutosave = false;
	if ($bWorkflow)
	{
		$denyAutosave = CIBlockElement::WF_IsLocked($ID, $locked_by1, $date_lock1);
	}
	else
	{
		$denyAutosave = ($view=="Y")
			|| (
				(($ID <= 0) || $bCopy)
				&& !CIBlockSectionRights::UserHasRightTo($IBLOCK_ID, $MENU_SECTION_ID, "section_element_bind")
			)
			|| (
				(($ID > 0) && !$bCopy)
				&& !CIBlockElementRights::UserHasRightTo($IBLOCK_ID, $ID, "element_edit")
			)
			|| (
				$bBizproc
				&& !$canWrite
Beispiel #3
0
 function IsLocked($ID, $IBLOCK_ID, &$params)
 {
     $params = array("locked_by" => 0, "date_lock" => "");
     $bLocked = true;
     if ($ID <= 0 || $IBLOCK_ID <= 0) {
         $bLocked = false;
     } elseif (!CIBlockElement::WF_IsLocked($ID, $locked_by, $date_lock)) {
         $bLocked = false;
     } elseif (intVal($locked_by) == $GLOBALS["USER"]->GetID()) {
         $bLocked = false;
     } elseif (IsModuleInstalled("workflow")) {
         if (CModule::IncludeModule("workflow") && CIBlock::GetArrayByID($IBLOCK_ID, "WORKFLOW") != "N") {
             $bLocked = CWorkflow::IsAdmin() ? false : true;
         }
     }
     $db_res = CUser::GetByID($locked_by);
     if ($db_res && ($arUser = $db_res->GetNext())) {
         $locked_by = '[' . $arUser["ID"] . '] ' . trim($arUser["LAST_NAME"] . " " . $arUser["NAME"]);
     }
     $params = array("locked_by" => $locked_by, "date_lock" => $date_lock);
     return $bLocked;
 }