コード例 #1
0
    if ($res) {
        $obWorkflowStatus->SetPermissions($ID, $arPERMISSION_M, 1);
        $obWorkflowStatus->SetPermissions($ID, $arPERMISSION_E, 2);
        if ($apply != "") {
            LocalRedirect("/bitrix/admin/workflow_status_edit.php?ID=" . $ID . "&lang=" . LANG . "&" . $tabControl->ActiveTabParam());
        } else {
            LocalRedirect("/bitrix/admin/workflow_status_list.php?lang=" . LANG);
        }
    } else {
        if ($e = $APPLICATION->GetException()) {
            $message = new CAdminMessage(GetMessage("FLOW_ERROR"), $e);
        }
    }
}
ClearVars();
$status = CWorkflowStatus::GetByID($ID);
if (!$status->ExtractFields()) {
    $ID = 0;
    $str_ACTIVE = "Y";
    $str_C_SORT = CWorkflowStatus::GetNextSort();
} else {
    $strSql = "\n\t\tSELECT\n\t\t\tGROUP_ID,\n\t\t\tPERMISSION_TYPE\n\t\tFROM\n\t\t\tb_workflow_status2group\n\t\tWHERE\n\t\t\tSTATUS_ID='{$ID}'\n\t\t";
    $z = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
    while ($zr = $z->Fetch()) {
        if ($zr["PERMISSION_TYPE"] == "1") {
            $arPERMISSION_M[] = $zr["GROUP_ID"];
        } elseif ($zr["PERMISSION_TYPE"] == "2") {
            $arPERMISSION_E[] = $zr["GROUP_ID"];
        }
    }
}
コード例 #2
0
ファイル: workflow.php プロジェクト: rasuldev/torino
 public static function SetMove($DOCUMENT_ID, $STATUS_ID, $OLD_STATUS_ID, $LOG_ID)
 {
     $err_mess = CAllWorkflow::err_mess() . "<br>Function: SetMove<br>Line: ";
     global $DB, $USER, $APPLICATION;
     $DOCUMENT_ID = intval($DOCUMENT_ID);
     $STATUS_ID = intval($STATUS_ID);
     $OLD_STATUS_ID = intval($OLD_STATUS_ID);
     $LOG_ID = intval($LOG_ID);
     $arFields = array("TIMESTAMP_X" => $DB->GetNowFunction(), "DOCUMENT_ID" => $DOCUMENT_ID, "OLD_STATUS_ID" => $OLD_STATUS_ID, "STATUS_ID" => $STATUS_ID, "LOG_ID" => $LOG_ID, "USER_ID" => intval($USER->GetID()));
     $DB->Insert("b_workflow_move", $arFields, $err_mess . __LINE__);
     if ($STATUS_ID != $OLD_STATUS_ID) {
         CTimeZone::Disable();
         $d = CWorkflow::GetByID($DOCUMENT_ID);
         CTimeZone::Enable();
         if ($dr = $d->Fetch()) {
             $STATUS_ID = $dr["STATUS_ID"];
             // document creator
             $ENTERED_BY_USER_ID = $dr["ENTERED_BY"];
             // gather email of the workflow admins
             $WORKFLOW_ADMIN_GROUP_ID = COption::GetOptionInt("workflow", "WORKFLOW_ADMIN_GROUP_ID", 0);
             $strSql = "\n\t\t\t\t\tSELECT\n\t\t\t\t\t\tU.ID,\n\t\t\t\t\t\tU.EMAIL\n\t\t\t\t\tFROM\n\t\t\t\t\t\tb_user U,\n\t\t\t\t\t\tb_user_group UG\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tUG.GROUP_ID = {$WORKFLOW_ADMIN_GROUP_ID}\n\t\t\t\t\t\tand U.ID = UG.USER_ID\n\t\t\t\t\t\tand U.ACTIVE = 'Y'\n\t\t\t\t";
             $a = $DB->Query($strSql, false, $err_mess . __LINE__);
             $arAdmin = array();
             while ($ar = $a->Fetch()) {
                 $arAdmin[$ar["ID"]] = $ar["EMAIL"];
             }
             // gather email for BCC
             $arBCC = array();
             // gather all who changed doc in its current status
             $strSql = "\n\t\t\t\t\tSELECT\n\t\t\t\t\t\tUSER_ID\n\t\t\t\t\tFROM\n\t\t\t\t\t\tb_workflow_move\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tDOCUMENT_ID = {$DOCUMENT_ID}\n\t\t\t\t\t\tand OLD_STATUS_ID = {$STATUS_ID}\n\t\t\t\t";
             $z = $DB->Query($strSql, false, $err_mess . __LINE__);
             while ($zr = $z->Fetch()) {
                 $arBCC[$zr["EMAIL"]] = $zr["EMAIL"];
             }
             // gather all editors
             // in case status have notifier flag
             $strSql = "\n\t\t\t\t\tSELECT DISTINCT\n\t\t\t\t\t\tUG.USER_ID\n\t\t\t\t\t\t,U.EMAIL\n\t\t\t\t\tFROM\n\t\t\t\t\t\tb_workflow_status S,\n\t\t\t\t\t\tb_workflow_status2group SG,\n\t\t\t\t\t\tb_user U,\n\t\t\t\t\t\tb_user_group UG\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tS.ID = {$STATUS_ID}\n\t\t\t\t\t\tand S.NOTIFY = 'Y'\n\t\t\t\t\t\tand SG.STATUS_ID = S.ID\n\t\t\t\t\t\tand SG.PERMISSION_TYPE = '2'\n\t\t\t\t\t\tand UG.GROUP_ID = SG.GROUP_ID\n\t\t\t\t\t\tand U.ID = UG.USER_ID\n\t\t\t\t\t\tand U.ACTIVE = 'Y'\n\t\t\t\t";
             $z = $DB->Query($strSql, false, $err_mess . __LINE__);
             while ($zr = $z->Fetch()) {
                 if (!array_key_exists($zr["EMAIL"], $arBCC)) {
                     $grp = array();
                     $rs = $USER->GetUserGroupList($zr["USER_ID"]);
                     while ($ar = $rs->Fetch()) {
                         $grp[] = $ar["GROUP_ID"];
                     }
                     $arTasks = $APPLICATION->GetFileAccessPermission($dr["FILENAME"], $grp, true);
                     foreach ($arTasks as $task_id) {
                         $arOps = CTask::GetOperations($task_id, true);
                         if (in_array("fm_edit_in_workflow", $arOps)) {
                             $arBCC[$zr["EMAIL"]] = $zr["EMAIL"];
                             break;
                         }
                     }
                 }
             }
             unset($arBCC[$dr["EUSER_EMAIL"]]);
             if (array_key_exists($dr["ENTERED_BY"], $arAdmin)) {
                 $dr["EUSER_NAME"] .= " (Admin)";
             }
             // it is not new doc
             if ($OLD_STATUS_ID > 0) {
                 if (array_key_exists($dr["MODIFIED_BY"], $arAdmin)) {
                     $dr["MUSER_NAME"] .= " (Admin)";
                 }
                 $q = CWorkflowStatus::GetByID($OLD_STATUS_ID);
                 $qr = $q->Fetch();
                 // send change notification
                 $arEventFields = array("ID" => $dr["ID"], "ADMIN_EMAIL" => implode(",", $arAdmin), "BCC" => implode(",", $arBCC), "PREV_STATUS_ID" => $OLD_STATUS_ID, "PREV_STATUS_TITLE" => $qr["TITLE"], "STATUS_ID" => $dr["STATUS_ID"], "STATUS_TITLE" => $dr["STATUS_TITLE"], "DATE_ENTER" => $dr["DATE_ENTER"], "ENTERED_BY_ID" => $dr["ENTERED_BY"], "ENTERED_BY_NAME" => $dr["EUSER_NAME"], "ENTERED_BY_EMAIL" => $dr["EUSER_EMAIL"], "DATE_MODIFY" => $dr["DATE_MODIFY"], "MODIFIED_BY_ID" => $dr["MODIFIED_BY"], "MODIFIED_BY_NAME" => $dr["MUSER_NAME"], "FILENAME" => $dr["FILENAME"], "SITE_ID" => $dr["SITE_ID"], "TITLE" => $dr["TITLE"], "BODY_HTML" => $dr["BODY_TYPE"] == "html" ? $dr["BODY"] : TxtToHtml($dr["BODY"]), "BODY_TEXT" => $dr["BODY_TYPE"] == "text" ? $dr["BODY"] : HtmlToTxt($dr["BODY"]), "BODY" => $dr["BODY"], "BODY_TYPE" => $dr["BODY_TYPE"], "COMMENTS" => $dr["COMMENTS"]);
                 CEvent::Send("WF_STATUS_CHANGE", $dr["SITE_ID"], $arEventFields);
             } else {
                 // it was new one
                 $arEventFields = array("ID" => $dr["ID"], "ADMIN_EMAIL" => implode(",", $arAdmin), "BCC" => implode(",", $arBCC), "STATUS_ID" => $dr["STATUS_ID"], "STATUS_TITLE" => $dr["STATUS_TITLE"], "DATE_ENTER" => $dr["DATE_ENTER"], "ENTERED_BY_ID" => $dr["ENTERED_BY"], "ENTERED_BY_NAME" => $dr["EUSER_NAME"], "ENTERED_BY_EMAIL" => $dr["EUSER_EMAIL"], "FILENAME" => $dr["FILENAME"], "SITE_ID" => $dr["SITE_ID"], "TITLE" => $dr["TITLE"], "BODY_HTML" => $dr["BODY_TYPE"] == "html" ? $dr["BODY"] : TxtToHtml($dr["BODY"]), "BODY_TEXT" => $dr["BODY_TYPE"] == "text" ? $dr["BODY"] : HtmlToTxt($dr["BODY"]), "BODY" => $dr["BODY"], "BODY_TYPE" => $dr["BODY_TYPE"], "COMMENTS" => $dr["COMMENTS"]);
                 CEvent::Send("WF_NEW_DOCUMENT", $dr["SITE_ID"], $arEventFields);
             }
         }
     }
 }