Exemple #1
0
 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;
Exemple #4
0
     $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
Exemple #5
0
 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_")) {