function GetDropDownList($SHOW_ALL = "N", $strOrder = "desc", $arFilter = array()) { global $USER; if (strtolower($strOrder) != "asc") { $strOrder = "desc"; } else { $strOrder = "asc"; } $arFilter["!=ACTIVE"] = "N"; if (!(CWorkflow::IsAdmin() || $SHOW_ALL == "Y")) { $arGroups = $USER->GetUserGroupArray(); if (!is_array($arGroups)) { $arGroups = array(2); } $arFilter["GROUP_ID"] = $arGroups; $arFilter["PERMISSION_TYPE_1"] = 1; } return CWorkflowStatus::GetList($by = "s_c_sort", $strOrder, $arFilter, $is_filtered, array("REFERENCE_ID", "REFERENCE", "IS_FINAL", "C_SORT")); }
function CheckFields() { global $DB, $strError, $FILENAME, $APPLICATION, $ID, $BODY, $USER, $SITE_ID, $STATUS_ID, $DOC_ROOT; $str = ""; $arMsg = array(); $SCRIPT_FILE_TYPE = GetFileType($FILENAME); $FILENAME = trim($FILENAME); $FILENAME = "/" . ltrim(_normalizePath($FILENAME), "/"); $io = CBXVirtualIo::GetInstance(); if (strlen($FILENAME) <= 0) { $arMsg[] = array("id" => "FILENAME", "text" => GetMessage("FLOW_FORGOT_FILENAME")); } elseif (!$io->ValidatePathString($FILENAME)) { $arMsg[] = array("id" => "FILENAME", "text" => GetMessage("FLOW_FILE_NAME_NOT_VALID")); } elseif ($SCRIPT_FILE_TYPE != "SOURCE") { $arMsg[] = array("id" => "FILENAME", "text" => GetMessage("FLOW_INCORRECT_FILETYPE")); } else { $SITE_ID = CWorkflow::__CheckSite($SITE_ID); if (!$SITE_ID) { $SITE_ID = CSite::GetSiteByFullPath($_SERVER['DOCUMENT_ROOT'] . $FILENAME); } if (!$USER->CanDoFileOperation('fm_edit_in_workflow', array($SITE_ID, $FILENAME))) { $s = str_replace("#FILENAME#", "{$FILENAME}", GetMessage("FLOW_ACCESS_DENIED")); $arMsg[] = array("id" => "FILENAME", "text" => $s . ": " . GetMessage("FLOW_MIN_RIGHTS")); } elseif ($STATUS_ID == 1 && !($USER->CanDoFileOperation('fm_edit_existent_file', array($SITE_ID, $FILENAME)) && $USER->CanDoFileOperation('fm_create_new_file', array($SITE_ID, $FILENAME)))) { $arMsg[] = array("id" => "FILENAME", "text" => GetMessage("FLOW_ACCESS_DENIED_FOR_FILE_WRITE", array("#FILENAME#" => $FILENAME))); } else { $z = CWorkflow::GetByFilename($FILENAME, $SITE_ID); if ($zr = $z->Fetch()) { if ($zr["ID"] != $ID && $zr["STATUS_ID"] != 1) { $arMsg[] = array("id" => "FILENAME", "text" => str_replace("#FILENAME#", $FILENAME, GetMessage("FLOW_FILENAME_EXIST"))); } } } } if (!CWorkflow::IsAdmin()) { $arGroups = $USER->GetUserGroupArray(); if (!is_array($arGroups)) { $arGroups = array(2); } $arFilter = array("GROUP_ID" => $arGroups, "PERMISSION_TYPE_1" => 1, "ID_EXACT_MATCH" => "Y", "ID" => $STATUS_ID); $rsStatuses = CWorkflowStatus::GetList($by = "s_c_sort", $strOrder, $arFilter, $is_filtered, array("ID")); if (!$rsStatuses->Fetch()) { $arMsg[] = array("id" => "STATUS_ID", "text" => GetMessage("FLOW_ERROR_WRONG_STATUS")); } } $bIsPhp = IsPHP($BODY); if ($bIsPhp) { if ($USER->CanDoFileOperation('fm_lpa', array($SITE_ID, $FILENAME)) && !$USER->CanDoOperation('edit_php')) { if (CModule::IncludeModule("fileman")) { $old_res = CFileman::ParseFileContent($APPLICATION->GetFileContent($DOC_ROOT . $FILENAME), true); $old_BODY = $old_res["CONTENT"]; $BODY = CMain::ProcessLPA($BODY, $old_BODY); } else { $arMsg[] = array("id" => "BODY", "text" => "Error! Fileman is not included!"); } } else { if (!$USER->CanDoOperation('edit_php')) { $arMsg[] = array("id" => "BODY", "text" => GetMessage("FLOW_PHP_IS_NOT_AVAILABLE")); } } } if (!empty($arMsg)) { $e = new CAdminException($arMsg); $GLOBALS["APPLICATION"]->ThrowException($e); return false; } return true; }
if (check_bitrix_sessid() && $_REQUEST["delete"] == "Y" && $arResult["CAN_DELETE"]) { $arParams["ID"] = intval($_REQUEST["CODE"]); // try to get element with id, for user and for iblock $rsElement = CIBLockElement::GetList(array(), array_merge($arFilter, array("ID" => $arParams["ID"]))); if ($arElement = $rsElement->GetNext()) { // delete one $DB->StartTransaction(); if (!CIBlockElement::Delete($arElement["ID"])) { $DB->Rollback(); } else { $DB->Commit(); } } } if ($bWorkflowIncluded) { $rsWFStatus = CWorkflowStatus::GetList($by = "c_sort", $order = "asc", array("ACTIVE" => "Y"), $is_filtered); $arResult["WF_STATUS"] = array(); while ($arStatus = $rsWFStatus->GetNext()) { $arResult["WF_STATUS"][$arStatus["ID"]] = $arStatus["TITLE"]; } } else { $arResult["ACTIVE_STATUS"] = array("Y" => GetMessage("IBLOCK_FORM_STATUS_ACTIVE"), "N" => GetMessage("IBLOCK_FORM_STATUS_INACTIVE")); } // get elements list using generated filter //echo "<pre>"; print_r($arParams); echo "</pre>"; //echo "<pre>"; print_r($arFilter); echo "</pre>"; $rsIBlockElements = CIBlockElement::GetList(array("SORT" => "ASC"), $arFilter); $arResult["ELEMENTS_COUNT"] = $rsIBlockElements->SelectedRowsCount(); //$page_split = intval(COption::GetOptionString("iblock", "RESULTS_PAGEN")); $arParams["NAV_ON_PAGE"] = intval($arParams["NAV_ON_PAGE"]); $arParams["NAV_ON_PAGE"] = $arParams["NAV_ON_PAGE"] > 0 ? $arParams["NAV_ON_PAGE"] : 10;
$rsElement = CIBLockElement::GetList(array(), array_merge($arFilter, array("ID" => $arParams["ID"]))); if ($arElement = $rsElement->GetNext()) { // delete one $DB->StartTransaction(); if (!CIBlockElement::Delete($arElement["ID"])) { $DB->Rollback(); } else { $DB->Commit(); } } } if ($bWorkflowIncluded) { $by = "c_sort"; $order = "asc"; $is_filtered = false; $rsWFStatus = CWorkflowStatus::GetList($by, $order, array("ACTIVE" => "Y"), $is_filtered); $arResult["WF_STATUS"] = array(); while ($arStatus = $rsWFStatus->GetNext()) { $arResult["WF_STATUS"][$arStatus["ID"]] = $arStatus["TITLE"]; } } else { $arResult["ACTIVE_STATUS"] = array("Y" => GetMessage("IBLOCK_FORM_STATUS_ACTIVE"), "N" => GetMessage("IBLOCK_FORM_STATUS_INACTIVE")); } // get elements list using generated filter $rsIBlockElements = CIBlockElement::GetList(array("SORT" => "ASC"), $arFilter); $arResult["ELEMENTS_COUNT"] = $rsIBlockElements->SelectedRowsCount(); //$page_split = intval(COption::GetOptionString("iblock", "RESULTS_PAGEN")); $arParams["NAV_ON_PAGE"] = intval($arParams["NAV_ON_PAGE"]); $arParams["NAV_ON_PAGE"] = $arParams["NAV_ON_PAGE"] > 0 ? $arParams["NAV_ON_PAGE"] : 10; $rsIBlockElements->NavStart($arParams["NAV_ON_PAGE"]); // get paging to component result
public static function GetEditLink($FILENAME, &$status_id, &$status_title, $template = "", $lang = LANGUAGE_ID, $return_url = "") { $err_mess = CAllWorkflow::err_mess() . "<br>Function: GetEditLink<br>Line: "; global $DB, $APPLICATION, $USER; $link = ''; CMain::InitPathVars($SITE_ID, $FILENAME); if ($USER->CanDoFileOperation('fm_edit_in_workflow', array($SITE_ID, $FILENAME))) { //Check if user have access at least to one status if (!CWorkflow::IsAdmin()) { $arGroups = $USER->GetUserGroupArray(); if (!is_array($arGroups)) { $arGroups = array(2); } $arFilter = array("GROUP_ID" => $arGroups, "PERMISSION_TYPE_1" => 1); $rsStatuses = CWorkflowStatus::GetList($by = "s_c_sort", $strOrder, $arFilter, $is_filtered, array("ID")); if (!$rsStatuses->Fetch()) { return ""; } } $link = "/bitrix/admin/workflow_edit.php?lang=" . $lang . "&site=" . $SITE_ID . "&fname=" . $FILENAME; if (strlen($template) > 0) { $link .= "&template=" . urlencode($template); } if (strlen($return_url) > 0) { $link .= "&return_url=" . urlencode($return_url); } $z = CWorkflow::GetByFilename($FILENAME, $SITE_ID); if ($zr = $z->Fetch()) { $status_id = $zr["STATUS_ID"]; $status_title = $zr["STATUS_TITLE"]; if ($status_id != 1) { $DOCUMENT_ID = $zr["ID"]; if (CWorkflow::IsHaveEditRights($DOCUMENT_ID)) { $link .= "&ID=" . $DOCUMENT_ID; } else { return ""; } } } } return $link; }
$DB->Query("DELETE FROM b_workflow_status2group WHERE STATUS_ID='" . $ID . "'", false, $err_mess . __LINE__); $DB->Commit(); } } } break; case "activate": case "deactivate": $obWorkflowStatus = new CWorkflowStatus(); $arFields = array("~TIMESTAMP_X" => $DB->GetNowFunction(), "ACTIVE" => $_REQUEST['action'] == "activate" ? "Y" : "N"); $obWorkflowStatus->Update($ID, $arFields); break; } } } $rsData = CWorkflowStatus::GetList($by, $order, $arFilter, $is_filtered); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(50); // navigation setup $lAdmin->NavText($rsData->GetNavPrint(GetMessage("FLOW_PAGES"))); $arHeaders = array(); $arHeaders[] = array("id" => "ID", "content" => "ID", "default" => true, "sort" => "s_id"); $arHeaders[] = array("id" => "TIMESTAMP_X", "content" => GetMessage("FLOW_TIMESTAMP"), "default" => true, "sort" => "s_timestamp"); $arHeaders[] = array("id" => "ACTIVE", "content" => GetMessage("FLOW_ACTIVE"), "default" => true, "sort" => "s_active"); $arHeaders[] = array("id" => "C_SORT", "content" => GetMessage("FLOW_C_SORT"), "default" => true, "sort" => "s_c_sort"); $arHeaders[] = array("id" => "TITLE", "content" => GetMessage("FLOW_TITLE"), "default" => true, "sort" => "s_title"); $arHeaders[] = array("id" => "DESCRIPTION", "content" => GetMessage("FLOW_DESCRIPTION"), "default" => false, "sort" => "s_description"); $arHeaders[] = array("id" => "DOCUMENTS", "content" => GetMessage("FLOW_DOCUMENTS"), "default" => true, "sort" => "s_documents"); $lAdmin->AddHeaders($arHeaders); // list fill while ($arRes = $rsData->NavNext(true, "f_")) {