コード例 #1
0
ファイル: iblockelement.php プロジェクト: spas-viktor/books
 function WF_UnLock($LAST_ID, $bWorkFlow = true)
 {
     global $DB, $USER;
     $LAST_ID = intval($LAST_ID);
     $USER_ID = is_object($USER) ? intval($USER->GetID()) : 0;
     if ($bWorkFlow === true) {
         $strSql = "\n\t\t\t\tSELECT\n\t\t\t\t\tWF_PARENT_ELEMENT_ID,\n\t\t\t\t\tWF_LOCKED_BY\n\t\t\t\tFROM\n\t\t\t\t\tb_iblock_element\n\t\t\t\tWHERE\n\t\t\t\t\tID = " . $LAST_ID . "\n\t\t\t";
         $z = $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br>LINE: " . __LINE__);
         $zr = $z->Fetch();
         if ($zr && ($zr["WF_LOCKED_BY"] == $USER_ID || CModule::IncludeModule('workflow') && CWorkflow::IsAdmin())) {
             $PARENT_ID = intval($zr["WF_PARENT_ELEMENT_ID"]);
             $DB->Query("\n\t\t\t\t\tUPDATE b_iblock_element\n\t\t\t\t\tSET\n\t\t\t\t\t\tWF_DATE_LOCK = null,\n\t\t\t\t\t\tWF_LOCKED_BY = null\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tID in (" . $LAST_ID . ", " . $PARENT_ID . ")\n\t\t\t\t\t\tOR WF_PARENT_ELEMENT_ID = " . $PARENT_ID . "\n\t\t\t\t", false, "FILE: " . __FILE__ . "<br>LINE: " . __LINE__);
         }
     } else {
         $DB->Query("\n\t\t\t\tUPDATE b_iblock_element\n\t\t\t\tSET\n\t\t\t\t\tWF_DATE_LOCK = null,\n\t\t\t\t\tWF_LOCKED_BY = null\n\t\t\t\tWHERE\n\t\t\t\t\tID = " . $LAST_ID, false, "FILE: " . __FILE__ . "<br>LINE: " . __LINE__);
     }
 }
コード例 #2
0
ファイル: status.php プロジェクト: DarneoStudio/bitrix
 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"));
 }
コード例 #3
0
ファイル: workflow.php プロジェクト: DarneoStudio/bitrix
 function CleanUpPublished()
 {
     $err_mess = CWorkflow::err_mess() . "<br>Function: CleanUpPublished<br>Line: ";
     global $DB;
     $DAYS_AFTER_PUBLISHING = intval(COption::GetOptionString("workflow", "DAYS_AFTER_PUBLISHING", "0"));
     if ($DAYS_AFTER_PUBLISHING >= 0) {
         $strSql = "\n\t\t\t\tSELECT\n\t\t\t\t\tID\n\t\t\t\tFROM\n\t\t\t\t\tb_workflow_document\n\t\t\t\tWHERE\n\t\t\t\t\tSTATUS_ID = 1\n\t\t\t\tand to_days(now())-to_days(DATE_MODIFY)>={$DAYS_AFTER_PUBLISHING}\n\t\t\t\t";
         $z = $DB->Query($strSql, false, $err_mess . __LINE__);
         while ($zr = $z->Fetch()) {
             CWorkflow::Delete($zr["ID"]);
         }
     }
 }
コード例 #4
0
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;
}
コード例 #5
0
        echo GetMessage('FILEMAN_HEIGHT');
        ?>
&nbsp;</font></td>
			<td><input class="typeinput" type="text" size="5"  name="imgheight" readonly></td>
		</tr>
	</table>
	</font>
</td>
<?php 
    }
    ?>
</tr>
</table>
<?php 
    if ($WF_CONVERT == "Y" && intval($DOCUMENT_ID) > 0 && CModule::IncludeModule("workflow")) {
        $doc_files = CWorkflow::GetFileList(intval($DOCUMENT_ID));
        $doc_files->NavStart();
        if ($doc_files->SelectedRowsCount() > 0) {
            ?>
<br>
<table border="0" cellspacing="0" cellpadding="0" width="450">
	<tr>
		<td colspan="2" align="left"><font class="tableheadtext"><b><?php 
            echo GetMessage('FILEMAN_UPLOADED_FILES');
            ?>
</b></font> </td>
	</tr>
	<tr>
		<td align="center" colspan="2" width="0%">
			<table border="0" cellspacing="0" cellpadding="0" class="tableborder" width="100%">
				<tr>
コード例 #6
0
ファイル: template.php プロジェクト: mrdeadmouse/u136006
}
if (!empty($arParams["SHOW_NOTE"])) {
    ?>
<br />
<div class="wd-help-list selected" id="wd_list_note"><?php 
    echo $arParams["~SHOW_NOTE"];
    ?>
</div>
<?php 
}
if ($arParams["WORKFLOW"] == "workflow" && $arParams["PERMISSION"] >= "U" && $arParams["SHOW_WORKFLOW"] != "N") {
    ?>
<br />
<div class="wd-help-list selected">
<?php 
    if ($arParams["PERMISSION"] >= "W" && CWorkflow::IsAdmin()) {
        echo GetMessage("WD_WF_COMMENT1");
        ?>
<br /><?php 
    } elseif (!in_array(2, $arResult["WF_STATUSES_PERMISSION"])) {
        echo GetMessage("WD_WF_COMMENT2");
        ?>
<br /><?php 
    } else {
        foreach ($arResult["WF_STATUSES_PERMISSION"] as $key => $val) {
            if ($val == 2) {
                $arr[] = $arResult["WF_STATUSES"][$key];
            }
        }
        if (count($arr) == 1) {
            echo str_replace("#STATUS#", $arr[0], GetMessage("WD_WF_ATTENTION2"));
コード例 #7
0
ファイル: workflow_list.php プロジェクト: DarneoStudio/bitrix
 if ($f_LOCK_STATUS == "green") {
     $lamp_alt = GetMessage("FLOW_GREEN_ALT");
 } elseif ($f_LOCK_STATUS == "yellow") {
     $lamp_alt = GetMessage("FLOW_YELLOW_ALT");
 } else {
     $lamp_alt = GetMessage("FLOW_RED_ALT");
 }
 $str = '<div class="lamp-' . $f_LOCK_STATUS . '" title="' . $lamp_alt . '"></div>';
 $row->AddViewField("LOCK_STATUS", $str);
 $row->AddViewField("FILENAME", '<a href="' . $f_FILENAME . '">' . $f_FILENAME . '</a>');
 $row->AddSelectField("STATUS_ID", $arStatus);
 $str = '[<a href="user_edit.php?ID=' . $f_MODIFIED_BY . '&lang=' . LANG . '">' . $f_MODIFIED_BY . '</a>]&nbsp;' . $f_MUSER_NAME;
 $row->AddViewField("MODIFIED_BY", $str);
 $arActions = array();
 if ($f_LOCK_STATUS != "green") {
     if (CWorkflow::IsAdmin() || $f_LOCKED_BY == $USER->GetID()) {
         $arActions[] = array("ICON" => "unlock", "TEXT" => GetMessage("FLOW_UNLOCK"), "ACTION" => "if(confirm('" . GetMessage('FLOW_UNLOCK_CONFIRM') . "')) " . $lAdmin->ActionDoGroup($f_ID, "unlock"));
         $arActions[] = array("SEPARATOR" => true);
     }
 }
 if ($f_STATUS_ID != 1) {
     $arActions[] = array("DEFAULT" => "Y", "ICON" => "edit", "TEXT" => GetMessage("FLOW_EDIT"), "ACTION" => $lAdmin->ActionRedirect("workflow_edit.php?lang=" . LANG . "&ID=" . $f_ID));
 } else {
     $arActions[] = array("ICON" => "view", "TEXT" => GetMessage("FLOW_VIEW"), "ACTION" => $lAdmin->ActionRedirect("workflow_edit.php?lang=" . LANG . "&ID=" . $f_ID));
 }
 if ($f_STATUS_ID != 1) {
     $arActions[] = array("ICON" => "view", "TEXT" => GetMessage("FLOW_PREVIEW"), "ACTION" => $lAdmin->ActionRedirect("workflow_preview.php?lang=" . LANG . "&ID=" . $f_ID . "&" . bitrix_sessid_get()));
 }
 $arActions[] = array("ICON" => "view", "TEXT" => GetMessage("FLOW_HISTORY"), "ACTION" => $lAdmin->ActionRedirect("workflow_history_list.php?lang=" . LANG . "&find_document_id=" . $f_ID . "&find_document_id_exact_match=Y&set_filter=Y"));
 $arActions[] = array("ICON" => "view", "TEXT" => GetMessage("FLOW_HISTORY_FILE"), "ACTION" => $lAdmin->ActionRedirect("workflow_history_list.php?lang=" . LANG . "&find_filename=" . $f_FILENAME . "&find_filename_exact_match=Y&set_filter=Y"));
 if ($f_LOCK_STATUS != "red" && $WORKFLOW_RIGHT > "R") {
コード例 #8
0
ファイル: options.php プロジェクト: DarneoStudio/bitrix
                $name = $option[0];
                $val = $_POST[$name];
                if ($option[3][0] == "checkbox" && $val != "Y") {
                    $val = "N";
                }
                COption::SetOptionString($module_id, $name, $val);
            }
            COption::SetOptionString($module_id, "WORKFLOW_ADMIN_GROUP_ID", intval($WORKFLOW_ADMIN_GROUP_ID));
            if ($_POST["DAYS_AFTER_PUBLISHING_clear"] == "Y") {
                CWorkflow::CleanUpPublished();
            }
            if ($_POST["HISTORY_COPIES_clear"] == "Y") {
                CWorkflow::CleanUpHistoryCopies();
            }
            if ($_POST["HISTORY_DAYS_clear"] == "Y") {
                CWorkflow::CleanUpHistory();
            }
        }
        $Update = $Update . $Apply;
        ob_start();
        require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/admin/group_rights.php";
        ob_end_clean();
        LocalRedirect($APPLICATION->GetCurPage() . "?mid=" . urlencode($module_id) . "&lang=" . urlencode(LANGUAGE_ID) . "&" . $tabControl->ActiveTabParam());
    }
    $WORKFLOW_ADMIN_GROUP_ID = COption::GetOptionString($module_id, "WORKFLOW_ADMIN_GROUP_ID");
    ?>
	<?php 
    $tabControl->Begin();
    ?>
<form method="POST" action="<?php 
    echo htmlspecialcharsbx($APPLICATION->GetCurPage() . '?mid=' . urlencode($module_id) . '&lang=' . LANGUAGE_ID);
コード例 #9
0
ファイル: footer.php プロジェクト: mrdeadmouse/u136006
			<?php 
    }
    ?>
		</select>
	</li>
	<?php 
    if (!in_array(2, $arResult["WF_STATUSES_PERMISSION"])) {
        ?>
	<li class="wd-upload-form-propety">
		<span class="comments"><?php 
        echo GetMessage("WD_WF_ATTENTION1");
        ?>
</span> 
	</li>
	<?php 
    } elseif (!CWorkflow::IsAdmin()) {
        $arr = array();
        foreach ($arResult["WF_STATUSES_PERMISSION"] as $key => $val) {
            if ($val == 2) {
                $arr[] = htmlspecialcharsEx($arResult["WF_STATUSES"][$key]);
            }
        }
        ?>
	<li class="wd-upload-form-propety">
		<span class="comments"><?php 
        echo count($arr) == 1 ? str_replace("#STATUS#", $arr[0], GetMessage("WD_WF_ATTENTION2")) : str_replace("#STATUS#", $arr[0], GetMessage("WD_WF_ATTENTION3"));
        ?>
</span>
	</li><?php 
    }
} elseif ($arParams["USE_BIZPROC"] == "Y") {
コード例 #10
0
ファイル: component.php プロジェクト: mrdeadmouse/u136006
$res["FILE_EXTENTION"] = strtolower(strrchr($res['NAME'], '.'));
$res["~WF_STATUS_TITLE"] = CIBlockElement::WF_GetStatusTitle($res["WF_STATUS_ID"]);
$res["WF_STATUS_TITLE"] = htmlspecialcharsEx($res["~WF_STATUS_TITLE"]);
/************** Paths **********************************************/
$res["URL"] = array("DOWNLOAD" => CComponentEngine::MakePathFromTemplate($arParams["ELEMENT_HISTORY_GET_URL"], array("ELEMENT_ID" => $res["ID"], "ELEMENT_NAME" => $res["ELEMENT_NAME"])), "~DOWNLOAD" => CComponentEngine::MakePathFromTemplate($arParams["~ELEMENT_HISTORY_GET_URL"], array("ELEMENT_ID" => $res["ID"], "ELEMENT_NAME" => $res["ELEMENT_NAME"])), "VIEW" => CComponentEngine::MakePathFromTemplate($arParams["ELEMENT_URL"], array("ELEMENT_ID" => $res["ID"], "ELEMENT_NAME" => $res["ELEMENT_NAME"])), "~VIEW" => CComponentEngine::MakePathFromTemplate($arParams["~ELEMENT_URL"], array("ELEMENT_ID" => $res["ID"], "ELEMENT_NAME" => $res["ELEMENT_NAME"])), "EDIT" => CComponentEngine::MakePathFromTemplate($arParams["ELEMENT_EDIT_URL"], array("ELEMENT_ID" => $res["ID"], "ACTION" => "EDIT")), "~EDIT" => CComponentEngine::MakePathFromTemplate($arParams["~ELEMENT_EDIT_URL"], array("ELEMENT_ID" => $res["ID"], "ACTION" => "EDIT")), "DELETE" => CComponentEngine::MakePathFromTemplate($arParams["ELEMENT_EDIT_URL"], array("ELEMENT_ID" => $res["ID"], "ACTION" => "DELETE")), "~DELETE" => CComponentEngine::MakePathFromTemplate($arParams["~ELEMENT_EDIT_URL"], array("ELEMENT_ID" => $res["ID"], "ACTION" => "DELETE")));
$res["URL"]["DELETE"] = WDAddPageParams($res["URL"]["DELETE"], array("edit" => "y", "sessid" => bitrix_sessid(), 'back_url' => urlencode($APPLICATION->GetCurPageParam())));
$res["URL"]["~DELETE"] = WDAddPageParams($res["URL"]["~DELETE"], array("edit" => "y", "sessid" => bitrix_sessid(), 'back_url' => urlencode($APPLICATION->GetCurPageParam())));
/************** Permission *****************************************/
$arResult["ELEMENT"] = $res;
$arResult["ELEMENT"]["PERMISSION"] = CIBlockDocumentWebdav::GetIBRights('ELEMENT', $arParams["IBLOCK_ID"], $arParams["ELEMENT_ID"]);
if (CWebDavIblock::CheckRight($arResult["ELEMENT"]["PERMISSION"], "element_read") < "R") {
    ShowError(GetMessage("WD_ACCESS_DENIED"));
    return 0;
}
$res = array("UNLOCK" => "N", "EDIT" => CWebDavIblock::CheckRight($arResult["ELEMENT"]["PERMISSION"], "element_edit") >= "W" ? "Y" : "N", "DELETE" => CWebDavIblock::CheckRight($arResult["ELEMENT"]["PERMISSION"], "element_edit") >= "W" ? "Y" : "N", "HISTORY" => "Y");
if ($arResult["ELEMENT"]["LOCK_STATUS"] == "yellow" || $arResult["ELEMENT"]["LOCK_STATUS"] == "red" && (CWorkflow::IsAdmin() || $USER->CanDoOperation('webdav_change_settings'))) {
    $res["UNLOCK"] = "Y";
}
if ($arResult["ELEMENT"]["LOCK_STATUS"] == "red") {
    $res["EDIT"] = "N";
} elseif (CWebDavIblock::CheckRight($arResult["ELEMENT"]["PERMISSION"], "element_bizproc_start") == "U") {
    $res["EDIT"] = $arResult["ELEMENT"]["WF_STATUS_ID"] > 1 && $arResult["WF_STATUSES_PERMISSION"][$arResult["ELEMENT"]["WF_STATUS_ID"]] < 2 ? "N" : "Y";
}
$arResult["ELEMENT"]["SHOW"] = $res;
/************** Last element ***************************************/
$arResult["ELEMENT"]["LAST"] = $arResult["ELEMENT"];
$LAST_ID = CIBlockElement::WF_GetLast($arResult["ELEMENT"]["ID"]);
if ($LAST_ID != $arResult["ELEMENT"]["ID"]) {
    $db_res = CIBlockElement::GetByID($LAST_ID);
    if ($db_res && ($res = $db_res->Fetch())) {
        $arResult["ELEMENT"]["LAST"] = $res;
コード例 #11
0
    $row =& $lAdmin->AddRow($f_ID, $arRes);
    if (CWorkflow::IsHaveEditRights($f_DOCUMENT_ID) && $f_DOCUMENT_ID > 0) {
        $row->AddViewField("DOCUMENT_ID", '<a href="workflow_edit.php?lang=' . LANG . '&ID=' . $f_DOCUMENT_ID . '">' . $f_DOCUMENT_ID . '</a>');
    }
    $row->AddViewField("MODIFIED_BY", '[<a title="' . GetMessage("FLOW_USER_ALT") . '" href="user_edit.php?ID=' . $f_MODIFIED_BY . '&lang=' . LANG . '">' . $f_MODIFIED_BY . '</a>]&nbsp;' . $f_USER_NAME);
    $row->AddViewField("FILENAME", '<a href="' . $f_FILENAME . '">' . TruncateText($f_FILENAME, 45) . '</a>');
    $row->AddViewField("STATUS_ID", '[<a title="' . GetMessage("FLOW_STATUS_ALT") . '" href="workflow_status_edit.php?ID=' . $f_STATUS_ID . '&lang=' . LANG . '">' . $f_STATUS_ID . '</a>]&nbsp;' . $f_STATUS_TITLE);
    $arActions = array(array("ICON" => "view", "DEFAULT" => "Y", "TEXT" => GetMessage("FLOW_VIEW"), "ACTION" => $lAdmin->ActionRedirect("workflow_history_view.php?lang=" . LANG . "&ID=" . $f_ID)));
    if ($WORKFLOW_RIGHT > "R" && CWorkflow::IsAdmin()) {
        $arActions[] = array("SEPARATOR" => true);
        $arActions[] = array("ICON" => "delete", "TEXT" => GetMessage("FLOW_DELETE"), "ACTION" => "if(confirm('" . GetMessage('FLOW_DELETE_CONFIRM') . "')) " . $lAdmin->ActionDoGroup($f_ID, "delete"));
    }
    $row->AddActions($arActions);
}
$lAdmin->AddFooter(array(array("title" => GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value" => $rsData->SelectedRowsCount()), array("counter" => true, "title" => GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value" => "0")));
if ($WORKFLOW_RIGHT > "R" && CWorkflow::IsAdmin()) {
    $lAdmin->AddGroupActionTable(array("delete" => GetMessage("MAIN_ADMIN_LIST_DELETE"), array("action" => "Diff()", "value" => "compare", "type" => "button", "name" => GetMessage("FLOW_COMPARE"))));
}
$aMenu = array(array("ICON" => "btn_list", "TEXT" => GetMessage("FLOW_RECORDS_LIST"), "LINK" => "workflow_list.php?lang=" . LANGUAGE_ID, "TITLE" => GetMessage("FLOW_RECORDS_LIST")));
$lAdmin->AddAdminContextMenu($aMenu);
$lAdmin->CheckListMode();
$APPLICATION->SetTitle(GetMessage("FLOW_PAGE_TITLE"));
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
?>

<script>
function Diff()
{
	var selection = new Array();
	var j = 0;
コード例 #12
0
	<?php 
}
?>

<?php 
$tabControl->EndTab();
if ($document_exist == "Y") {
    $tabControl->BeginNextTab();
    ?>
	<tr>
		<td width="40%"><?php 
    echo GetMessage("FLOW_DOCUMENT_ID");
    ?>
</td>
		<td width="60%"><?php 
    if (CWorkflow::IsHaveEditRights($zr["ID"])) {
        ?>
<a href="workflow_edit.php?lang=<?php 
        echo LANG;
        ?>
&ID=<?php 
        echo $zr["ID"];
        ?>
" title="<?php 
        echo GetMessage('FLOW_VIEW_DOC_ALT');
        ?>
"><?php 
        echo $zr["ID"];
        ?>
</a><?php 
    } else {
コード例 #13
0
*/
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/workflow/prolog.php";
$WORKFLOW_RIGHT = $APPLICATION->GetGroupRight("workflow");
if ($WORKFLOW_RIGHT == "D") {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/workflow/include.php";
IncludeModuleLangFile(__FILE__);
$fname = $_REQUEST["fname"];
$path = "";
$filename = "";
if ($USER->IsAdmin() || !in_array(GetFileExtension($fname), GetScriptFileExt())) {
    $z = CWorkflow::GetFileByID($did, $fname);
    if ($zr = $z->Fetch()) {
        $path = CWorkflow::GetTempDir() . $zr["TEMP_FILENAME"];
        if (file_exists($path)) {
            $filename = basename($zr["FILENAME"]);
        }
    }
} else {
    $strError = GetMessage("FLOW_ACCESS_DENIED_PHP_DOWNLOAD");
}
if (strlen($strError) <= 0) {
    $fsize = filesize($path);
    header("Content-Type: application/force-download; name=\"" . $filename . "\"");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: " . $fsize);
    header("Content-Disposition: attachment; filename=\"" . $filename . "\"");
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
コード例 #14
0
ファイル: workflow.php プロジェクト: rasuldev/torino
 public static function GetFileContent($did, $fname, $wf_path = "", $site = false)
 {
     $err_mess = CAllWorkflow::err_mess() . "<br>Function: GetFileContent<br>Line: ";
     global $DB, $APPLICATION, $USER;
     $did = intval($did);
     // check if executable
     if ($USER->IsAdmin() || CBXVirtualIoFileSystem::ValidatePathString($fname) && !HasScriptExtension($fname)) {
         if ($did > 0) {
             // check if it is associated wtih document
             $z = CWorkflow::GetFileByID($did, $fname);
             // found one
             if ($zr = $z->Fetch()) {
                 // get it's contents
                 $path = CWorkflow::GetTempDir() . $zr["TEMP_FILENAME"];
                 if (file_exists($path)) {
                     return $APPLICATION->GetFileContent($path);
                 }
             } else {
                 // lookup in database
                 $strSql = "SELECT FILENAME, SITE_ID FROM b_workflow_document WHERE ID='{$did}'";
                 $y = $DB->Query($strSql, false, $err_mess . __LINE__);
                 // found
                 if ($yr = $y->Fetch()) {
                     // get it's directory
                     $path = GetDirPath($yr["FILENAME"]);
                     // absolute path
                     $pathto = Rel2Abs($path, $fname);
                     $DOC_ROOT = CSite::GetSiteDocRoot($yr["SITE_ID"]);
                     $path = $DOC_ROOT . $pathto;
                     // give it another try
                     $u = CWorkflow::GetFileByID($did, $pathto);
                     // found
                     if ($ur = $u->Fetch()) {
                         // get it's contents
                         $path = CWorkflow::GetTempDir() . $ur["TEMP_FILENAME"];
                         if (file_exists($path)) {
                             return $APPLICATION->GetFileContent($path);
                         }
                     } elseif (file_exists($path)) {
                         // get it's contents
                         if ($USER->CanDoFileOperation('fm_view_file', array($yr["SITE_ID"], $pathto))) {
                             return $APPLICATION->GetFileContent($path);
                         }
                     }
                 }
             }
         }
         $DOC_ROOT = CSite::GetSiteDocRoot($site);
         // new one
         if (strlen($wf_path) > 0) {
             $pathto = Rel2Abs($wf_path, $fname);
             $path = $DOC_ROOT . $pathto;
             if (file_exists($path)) {
                 // get it's contents
                 if ($USER->CanDoFileOperation('fm_view_file', array($site, $pathto))) {
                     $src = $APPLICATION->GetFileContent($path);
                     return $src;
                 }
             }
         }
         // still failed to find
         // get path
         $path = $DOC_ROOT . $fname;
         if (file_exists($path)) {
             // get it's contents
             if ($USER->CanDoFileOperation('fm_view_file', array($site, $fname))) {
                 return $APPLICATION->GetFileContent($path);
             }
         }
     } else {
         return GetMessage("FLOW_ACCESS_DENIED_PHP_VIEW");
     }
 }
コード例 #15
0
ファイル: iblockelement.php プロジェクト: DarneoStudio/bitrix
 public static function WF_GetStatusPermission($STATUS_ID, $ID = false)
 {
     global $DB, $USER;
     $result = false;
     if (CModule::IncludeModule("workflow")) {
         if (CWorkflow::IsAdmin()) {
             return 2;
         } else {
             $ID = intval($ID);
             if ($ID) {
                 $arStatus = array();
                 $arSql = array("ID='" . $ID . "'", "WF_PARENT_ELEMENT_ID='" . $ID . "'");
                 foreach ($arSql as $where) {
                     $strSql = "SELECT ID, WF_STATUS_ID FROM b_iblock_element WHERE " . $where;
                     $rs = $DB->Query($strSql);
                     while ($ar = $rs->Fetch()) {
                         $arStatus[$ar["WF_STATUS_ID"]] = $ar["WF_STATUS_ID"];
                     }
                 }
             } else {
                 $arStatus = array(intval($STATUS_ID) => intval($STATUS_ID));
             }
             $arGroups = $USER->GetUserGroupArray();
             if (!is_array($arGroups)) {
                 $arGroups[] = 2;
             }
             $groups = implode(",", $arGroups);
             foreach ($arStatus as $STATUS_ID) {
                 $strSql = "SELECT max(G.PERMISSION_TYPE) as MAX_PERMISSION " . "FROM b_workflow_status2group G " . "WHERE G.STATUS_ID = " . $STATUS_ID . " " . "\tAND G.GROUP_ID in (" . $groups . ") ";
                 $rs = $DB->Query($strSql);
                 $ar = $rs->Fetch();
                 $ar["MAX_PERMISSION"] = intval($ar["MAX_PERMISSION"]);
                 if ($result === false || $result > $ar["MAX_PERMISSION"]) {
                     $result = $ar["MAX_PERMISSION"];
                 }
             }
         }
     }
     return $result;
 }
コード例 #16
0
ファイル: iblock.php プロジェクト: mrdeadmouse/u136006
 function _get_file_info_arr(&$res, $arParams = array())
 {
     global $USER;
     static $arFiles = array();
     static $arBPTemplateStates = array();
     static $arBPParamRequired = array();
     $trashID = $this->GetMetaID('TRASH');
     if ($this->workflow == 'bizproc') {
         if (!isset($arBPParamRequired[$this->IBLOCK_ID])) {
             $arBPParamRequired[$this->IBLOCK_ID] = $this->IsBpParamRequired();
         }
     }
     $info = array();
     if (!in_array($res["ID"], $arFiles)) {
         $res["SHOW"] = array();
         $res["PERMISSION"] = $this->permission;
         $res['SHOW']['SHARED'] = $res['SHARED'];
         $res["~NAME"] = $res["NAME"];
         $res['USER_FIELDS'] = $this->GetUfFields($res['ID']);
         if ($this->permission >= "U") {
             $res["SHOW"]["RIGHTS"] = $this->e_rights && (isset($res['E_RIGHTS']['element_rights_edit']) || $GLOBALS['USER']->CanDoOperation('webdav_change_settings')) ? "Y" : "N";
             if ($this->workflow == 'workflow') {
                 $original = $res;
                 $LAST_ID = CIBlockElement::WF_GetLast($res['ID']);
                 if ($LAST_ID != $res['ID']) {
                     $db_res = CIBlockElement::GetList(array(), array("ID" => $LAST_ID, "SHOW_HISTORY" => "Y"), false, array("nTopCount" => 1), $this->wfParams["selected_fields"]);
                     $res = $db_res->GetNext();
                     $res["FILE"]["FILE_SIZE"] = $this->GetFileSize($res);
                     if ($this->e_rights) {
                         $res['E_RIGHTS'] = $this->GetPermission('ELEMENT', $res['ID']);
                     }
                 }
                 $res["ORIGINAL"] = $original;
                 $res["PERMISSION"] = $original["PERMISSION"];
                 $res["REAL_ID"] = $res["ID"];
                 $res["ID"] = $original["ID"];
                 $res["PROPERTY_WEBDAV_INFO_VALUE"] = $original["PROPERTY_WEBDAV_INFO_VALUE"];
                 $res["PROPERTY_WEBDAV_INFO_VALUE_ID"] = $original["PROPERTY_WEBDAV_INFO_VALUE_ID"];
                 $res["TAGS"] = $original["TAGS"];
                 $res["~TAGS"] = $original["~TAGS"];
                 $res["PREVIEW_TEXT"] = $original["PREVIEW_TEXT"];
                 $res["~PREVIEW_TEXT"] = $original["~PREVIEW_TEXT"];
                 $res["NAME"] = $original["NAME"];
                 $res["~NAME"] = $original["~NAME"];
                 $res["LOCK_STATUS"] = $original["LOCK_STATUS"];
                 $res["LOCKED_USER_NAME"] = $original["LOCKED_USER_NAME"];
                 $res["WF_LOCKED_BY"] = $original["WF_LOCKED_BY"];
                 $res["WF_DATE_LOCK"] = $original["WF_DATE_LOCK"];
                 $res["LAST_ID"] = $LAST_ID;
                 $res["TYPE"] = "E";
                 $res["SHOW"]["COPY"] = "Y";
                 $res["STATUS_ID"] = CIBlockElement::WF_GetCurrentStatus($LAST_ID, $res["STATUS_TITLE"]);
                 $res["STATUS_PERMISSION"] = CIBlockElement::WF_GetStatusPermission($res["STATUS_ID"]);
                 if ($res["STATUS_PERMISSION"] >= 2 || ($this->e_rights ? isset($res['E_RIGHTS']['element_edit_any_wf_status']) : $this->permission >= "W")) {
                     $res["SHOW"]["UNLOCK"] = $res['LOCK_STATUS'] == "yellow" || $res['LOCK_STATUS'] == "red" && CWorkflow::IsAdmin() ? "Y" : "N";
                     $res["SHOW"]["LOCK"] = $res['LOCK_STATUS'] == "green" ? "Y" : "N";
                     $res["PERMISSION"] = $res['LOCK_STATUS'] == "red" && !CWorkflow::IsAdmin() ? "R" : $res["PERMISSION"];
                     // Edit History Delete
                     if ($res['ORIGINAL']['WF_NEW'] == "Y" || $res["WF_STATUS_ID"] <= 1) {
                         $res["SHOW"]["HISTORY"] = $res["SHOW"]["DELETE"] = $res["SHOW"]["EDIT"] = $this->check_creator && $res["CREATED_BY"] != $GLOBALS["USER"]->GetId() ? "N" : "Y";
                     } elseif ($res["WF_STATUS_ID"] > 1) {
                         $res["SHOW"]["HISTORY"] = $res["SHOW"]["EDIT"] = $this->check_creator && $res["CREATED_BY"] != $GLOBALS["USER"]->GetId() ? "N" : "Y";
                         $res["SHOW"]["DELETE"] = $res["SHOW"]["EDIT"] == "Y" && $res["PERMISSION"] > "U" ? "Y" : "N";
                     }
                     if ($res["LOCK_STATUS"] == "red") {
                         $res["SHOW"]["UNLOCK"] = CWorkflow::IsAdmin() ? "Y" : "N";
                         $res["SHOW"]["EDIT"] = "N";
                         $res["SHOW"]["DELETE"] = "N";
                     } elseif ($this->check_creator && $res["CREATED_BY"] != $GLOBALS["USER"]->GetId()) {
                         $res["SHOW"]["UNLOCK"] = "N";
                         $res["SHOW"]["LOCK"] = "N";
                         $res["SHOW"]["DELETE"] = "N";
                         $res["SHOW"]["EDIT"] = "N";
                     }
                 }
                 if ($res["STATUS_PERMISSION"] >= 2 || ($this->e_rights ? isset($res['E_RIGHTS']['element_delete']) : $this->permission >= "W")) {
                     $res["PERMISSION"] = $res['LOCK_STATUS'] == "red" && !CWorkflow::IsAdmin() ? "R" : $res["PERMISSION"];
                     if ($res['ORIGINAL']['WF_NEW'] == "Y" || $res["WF_STATUS_ID"] <= 1) {
                         $res["SHOW"]["DELETE"] = $this->check_creator && $res["CREATED_BY"] != $GLOBALS["USER"]->GetId() ? "N" : "Y";
                     } elseif ($res["WF_STATUS_ID"] > 1) {
                         $res["SHOW"]["DELETE"] = $this->check_creator && $res["CREATED_BY"] != $GLOBALS["USER"]->GetId() && $res["PERMISSION"] > "U" ? "N" : "Y";
                     }
                 }
             } elseif ($this->workflow == "bizproc") {
                 if ($this->e_rights) {
                     $res["PERMISSION"] = $res["E_RIGHTS"];
                 }
                 if ($res['LOCK_STATUS'] != "red") {
                     $res['LOCK_STATUS_BP'] = call_user_func(array($this->wfParams["DOCUMENT_TYPE"][1], "IsDocumentLocked"), $res["ID"] | $res["item_id"], "") ? "red" : "green";
                     $res['LOCK_STATUS'] = $res['LOCK_STATUS_BP'] == "red" ? "red" : $res['LOCK_STATUS'];
                 }
                 $res["PERMISSION"] = $res['LOCK_STATUS'] == "red" ? "R" : $res["PERMISSION"];
                 $res["USER_GROUPS"] = $this->USER["GROUPS"];
                 if ($res["CREATED_BY"] == $GLOBALS["USER"]->GetID()) {
                     $res["USER_GROUPS"][] = "Author";
                 }
                 $res["DOCUMENT_ID"] = $this->wfParams["DOCUMENT_TYPE"];
                 $res["DOCUMENT_ID"][2] = $res["ID"] | $res["item_id"];
                 $res["~arDocumentStates"] = CBPDocument::GetDocumentStates($this->wfParams["DOCUMENT_TYPE"], $res["DOCUMENT_ID"]);
                 $res["arDocumentStates"] = array();
                 foreach ($res["~arDocumentStates"] as $key => $arDocumentState) {
                     $res["~arDocumentStates"][$key]["ViewWorkflow"] = CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::ViewWorkflow, $GLOBALS["USER"]->GetID(), $res["DOCUMENT_ID"], array("DocumentType" => $this->wfParams["DOCUMENT_TYPE"], "AllUserGroups" => $res["USER_GROUPS"], "DocumentStates" => $res["~arDocumentStates"], "WorkflowId" => $key));
                     if (strlen($arDocumentState["ID"]) > 0 && $res["~arDocumentStates"][$key]["ViewWorkflow"]) {
                         $res["arDocumentStates"][$key] = $arDocumentState;
                         $res["PERMISSION"] = "U";
                     }
                 }
                 if ($res['LOCK_STATUS'] != "red") {
                     if (CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::WriteDocument, $GLOBALS["USER"]->GetID(), $res["DOCUMENT_ID"], array("DocumentType" => $this->wfParams["DOCUMENT_TYPE"], "IBlockId" => $this->IBLOCK_ID, "UserGroups" => $this->USER["GROUPS"], "AllUserGroups" => $res["USER_GROUPS"], "DocumentStates" => $res["~arDocumentStates"]))) {
                         $res["PERMISSION"] = "W";
                     } elseif (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::ReadDocument, $GLOBALS["USER"]->GetID(), $res["DOCUMENT_ID"], array("DocumentType" => $this->wfParams["DOCUMENT_TYPE"], "IBlockId" => $this->IBLOCK_ID, "UserGroups" => $this->USER["GROUPS"], "AllUserGroups" => $res["USER_GROUPS"], "DocumentStates" => $res["~arDocumentStates"]))) {
                         $res["PERMISSION"] = "D";
                     }
                 }
                 if ($this->CheckRight($res["PERMISSION"], 'element_read') > "D") {
                     if ($arParams["get_clones"] == "Y" && intVal($res["WF_PARENT_ELEMENT_ID"]) <= 0) {
                         $arFilter = array("WF_PARENT_ELEMENT_ID" => $res["ID"], "SHOW_HISTORY" => "Y");
                         $db_rs = CIBlockElement::GetList(array("ID" => "ASC"), $arFilter);
                         if ($db_rs && ($rs = $db_rs->Fetch())) {
                             $res["CHILDREN"] = array();
                             do {
                                 if ($rs["IBLOCK_SECTION_ID"] == $trashID) {
                                     continue;
                                 }
                                 $rs["SHOW"] = array();
                                 $rs["PERMISSION"] = "R";
                                 $rs["DOCUMENT_ID"] = $res["DOCUMENT_ID"];
                                 $rs["DOCUMENT_ID"][2] = $rs["ID"];
                                 $rs["~arDocumentStates"] = CBPDocument::GetDocumentStates($this->wfParams["DOCUMENT_TYPE"], $rs["DOCUMENT_ID"]);
                                 $USER_GROUPS = $this->USER["GROUPS"];
                                 if ($rs["CREATED_BY"] == $GLOBALS["USER"]->GetID()) {
                                     $USER_GROUPS[] = "Author";
                                 }
                                 if (!CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::ReadDocument, $GLOBALS["USER"]->GetID(), $rs["DOCUMENT_ID"], array("DocumentType" => $this->wfParams["DOCUMENT_TYPE"], "IBlockId" => $this->IBLOCK_ID, "UserGroups" => $this->USER["GROUPS"], "AllUserGroups" => $USER_GROUPS, "DocumentStates" => $rs["~arDocumentStates"]))) {
                                     continue;
                                 }
                                 if (CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::WriteDocument, $GLOBALS["USER"]->GetID(), $rs["DOCUMENT_ID"], array("DocumentType" => $this->wfParams["DOCUMENT_TYPE"], "IBlockId" => $this->IBLOCK_ID, "UserGroups" => $this->USER["GROUPS"], "AllUserGroups" => $USER_GROUPS, "DocumentStates" => $rs["~arDocumentStates"]))) {
                                     $rs["PERMISSION"] = "W";
                                 }
                                 $rs["arDocumentStates"] = array();
                                 foreach ($rs["~arDocumentStates"] as $key => $arDocumentState) {
                                     if (CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::ViewWorkflow, $GLOBALS["USER"]->GetID(), $rs["DOCUMENT_ID"], array("DocumentType" => $this->wfParams["DOCUMENT_TYPE"], "IBlockId" => $this->IBLOCK_ID, "UserGroups" => $this->USER["GROUPS"], "AllUserGroups" => $USER_GROUPS, "DocumentStates" => $rs["~arDocumentStates"], "WorkflowId" => $key))) {
                                         $rs["arDocumentStates"][$key] = $arDocumentState;
                                         $rs["PERMISSION"] = empty($rs["PERMISSION"]) ? "U" : $rs["PERMISSION"];
                                     }
                                 }
                                 if ($rs["PERMISSION"] >= "U") {
                                     if (CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $USER->GetID(), $rs["DOCUMENT_ID"], array("IBlockId" => $this->IBLOCK_ID, "UserGroups" => $this->USER["GROUPS"], "AllUserGroups" => $USER_GROUPS, "DocumentStates" => $rs["~arDocumentStates"]))) {
                                         $rs["SHOW"]["BP_START"] = "Y";
                                     }
                                     $rs["SHOW"]["BP_VIEW"] = !empty($rs["arDocumentStates"]) ? "Y" : "N";
                                     $rs["SHOW"]["EDIT"] = $rs["PERMISSION"] >= "W" ? "Y" : "N";
                                     $rs["SHOW"]["BP"] = $rs["SHOW"]["BP_VIEW"] == "Y" || $rs["SHOW"]["BP_START"] == "Y" ? "Y" : "N";
                                     $rs["SHOW"]["EDIT"] = $rs["PERMISSION"] >= "W" && intVal($rs["WF_PARENT_ELEMENT_ID"]) > 0 || $this->permission >= "W" ? "Y" : "N";
                                     if ($rs["BP_LOCK_STATUS"] == "red") {
                                         $rs["SHOW"]["UNLOCK"] = CBPDocument::IsAdmin() ? "Y" : "N";
                                         $rs["SHOW"]["EDIT"] = "N";
                                     } elseif ($rs["LOCK_STATUS"] == "red" && $this->permission > "U") {
                                         $rs["SHOW"]["UNLOCK"] = "Y";
                                         $rs["SHOW"]["EDIT"] = "N";
                                     } elseif ($this->check_creator && $rs["CREATED_BY"] != $GLOBALS["USER"]->GetId()) {
                                         $rs["SHOW"]["UNLOCK"] = "N";
                                         $rs["SHOW"]["LOCK"] = "N";
                                         $rs["SHOW"]["DELETE"] = "N";
                                         $rs["SHOW"]["EDIT"] = "N";
                                     } else {
                                         $rs["SHOW"]["UNLOCK"] = $rs['LOCK_STATUS'] == "yellow" ? "Y" : "N";
                                         $rs["SHOW"]["LOCK"] = $rs['LOCK_STATUS'] == "green" ? "Y" : "N";
                                         $rs["SHOW"]["DELETE"] = $rs["SHOW"]["HISTORY"] = $rs["PERMISSION"] > "U" ? "Y" : "N";
                                     }
                                 }
                                 $res["CHILDREN"][$rs["ID"]] = $rs;
                             } while ($rs = $db_rs->Fetch());
                         }
                     }
                     if (CBPDocument::CanUserOperateDocument(CBPCanUserOperateOperation::StartWorkflow, $USER->GetID(), $res["DOCUMENT_ID"], array("IBlockId" => $this->IBLOCK_ID, "UserGroups" => $this->USER["GROUPS"], "AllUserGroups" => $res["USER_GROUPS"], "DocumentStates" => $res["~arDocumentStates"]))) {
                         $res["SHOW"]["BP_START"] = "Y";
                     }
                     $res["SHOW"]["BP_VIEW"] = !empty($res["arDocumentStates"]) ? "Y" : "N";
                     if ($this->workflow == 'bizproc') {
                         $res["SHOW"]["BP_VERSIONS"] = intVal($res["WF_PARENT_ELEMENT_ID"]) <= 0 ? "Y" : "N";
                         $res["SHOW"]["BP_CLONE"] = intVal($res["WF_PARENT_ELEMENT_ID"]) <= 0 ? "Y" : "N";
                         $res["SHOW"]["COPY"] = intVal($res["WF_PARENT_ELEMENT_ID"]) <= 0 ? "Y" : "N";
                     } else {
                         $res["SHOW"]["BP_VERSIONS"] = $res["SHOW"]["BP_CLONE"] = $res["SHOW"]["COPY"] = 'N';
                     }
                     if ($this->CheckRight($res['PERMISSION'], 'element_edit_any_wf_status') < "W" && intVal($res["WF_PARENT_ELEMENT_ID"]) <= 0 || $res["WF_PARENT_ELEMENT_ID"] == $res["ID"]) {
                         $arDocumentStates = CBPDocument::GetDocumentStates($this->wfParams["DOCUMENT_TYPE"], null);
                         if (!empty($arDocumentStates)) {
                             CBPDocument::CanUserOperateDocumentType(CBPCanUserOperateOperation::WriteDocument, $GLOBALS["USER"]->GetID(), $this->wfParams["DOCUMENT_TYPE"], array("IBlockId" => $this->IBLOCK_ID, "IBlockPermission" => $this->permission, "UserGroups" => $this->USER["GROUPS"], "AllUserGroups" => $res["USER_GROUPS"], "DocumentStates" => $arDocumentStates));
                         } else {
                             $res["SHOW"]["BP_CLONE"] = "N";
                         }
                     }
                     $res["SHOW"]["BP"] = $res["SHOW"]["BP_VIEW"] == "Y" || $res["SHOW"]["BP_START"] == "Y" ? "Y" : "N";
                     $res["SHOW"]["EDIT"] = $this->CheckRight($res["PERMISSION"], "element_edit_any_wf_status") >= "W" ? "Y" : "N";
                     if ($res["LOCK_STATUS"] == "red") {
                         $res["SHOW"]["UNLOCK"] = CBPDocument::IsAdmin() || $this->CheckRight($res['PERMISSION'], "element_edit") > "W" ? "Y" : "N";
                         $res["SHOW"]["LOCK"] = "N";
                         $res["SHOW"]["HISTORY"] = $this->CheckRight($res['PERMISSION'], 'element_edit') > "U" ? "Y" : "N";
                         $res["SHOW"]["DELETE"] = "N";
                         $res["SHOW"]["EDIT"] = "N";
                     } elseif ($this->InTrash($res)) {
                         $bRightsEdit_gt_W = $this->CheckRight($res['PERMISSION'], 'element_rights_edit') > "W";
                         $res["SHOW"]["EDIT"] = $bRightsEdit_gt_W ? "Y" : "N";
                         $res["SHOW"]["HISTORY"] = $bRightsEdit_gt_W ? "Y" : "N";
                         $res["SHOW"]["DELETE"] = $bRightsEdit_gt_W ? "Y" : "N";
                         $res["SHOW"]["UNLOCK"] = "N";
                         $res["SHOW"]["LOCK"] = "N";
                         $res["SHOW"]["BP_START"] = "N";
                         $res["SHOW"]["BP_VIEW"] = $bRightsEdit_gt_W ? "Y" : "N";
                         $res["SHOW"]["BP_VERSIONS"] = $bRightsEdit_gt_W ? "Y" : "N";
                         $res["SHOW"]["BP_CLONE"] = $bRightsEdit_gt_W ? "Y" : "N";
                         $res["SHOW"]["COPY"] = intVal($res["WF_PARENT_ELEMENT_ID"]) <= 0 ? "Y" : "N";
                     } elseif ($this->check_creator && $res["CREATED_BY"] != $GLOBALS["USER"]->GetId()) {
                         $res["SHOW"]["UNLOCK"] = "N";
                         $res["SHOW"]["LOCK"] = "N";
                         $res["SHOW"]["DELETE"] = "N";
                         $res["SHOW"]["EDIT"] = "N";
                     } else {
                         $bElementEdit_gt_U = $this->CheckRight($res['PERMISSION'], 'element_rights_edit') > 'U';
                         $res["SHOW"]["HISTORY"] = $bElementEdit_gt_U ? "Y" : "N";
                         $res["SHOW"]["DELETE"] = $bElementEdit_gt_U ? "Y" : "N";
                         $res["SHOW"]["UNLOCK"] = $bElementEdit_gt_U && $res["LOCK_STATUS"] == "yellow" ? "Y" : "N";
                         $res["SHOW"]["LOCK"] = $bElementEdit_gt_U && $res["LOCK_STATUS"] == "green" ? "Y" : "N";
                     }
                     if ($arBPParamRequired[$this->IBLOCK_ID]) {
                         $res["SHOW"]["COPY"] = "N";
                     }
                 }
             } else {
                 $res["SHOW"]["UNLOCK"] = $res['LOCK_STATUS'] == "yellow" || $res['LOCK_STATUS'] == "red" && $res["PERMISSION"] > 'W' ? "Y" : "N";
                 $res["SHOW"]["LOCK"] = $res['LOCK_STATUS'] == "green" ? "Y" : "N";
                 $res["SHOW"]["COPY"] = "Y";
                 $res["SHOW"]["HISTORY"] = $res["SHOW"]["DELETE"] = $res["SHOW"]["EDIT"] = $this->check_creator && $res["CREATED_BY"] != $GLOBALS["USER"]->GetId() ? "N" : "Y";
                 $res["SHOW"]["HISTORY"] = $res["SHOW"]["HISTORY"] == "Y" && $this->workflow == "bizproc_limited" ? "Y" : "N";
                 if ($this->check_creator && $res["CREATED_BY"] != $GLOBALS["USER"]->GetId()) {
                     $res["SHOW"]["UNLOCK"] = "N";
                     $res["SHOW"]["LOCK"] = "N";
                     $res["SHOW"]["DELETE"] = "N";
                     $res["SHOW"]["EDIT"] = "N";
                 } elseif ($res["LOCK_STATUS"] == "red" && $res["PERMISSION"] < 'X') {
                     $res["SHOW"]["DELETE"] = "N";
                     $res["SHOW"]["EDIT"] = "N";
                 }
                 if ($this->e_rights) {
                     $arShow = array("COPY" => "element_edit", "DELETE" => "element_delete", "UNDELETE" => "element_no_prems", "EDIT" => "element_edit", "HISTORY" => "element_edit", "LOCK" => "element_edit", "UNLOCK" => "element_edit", "RIGHTS" => "element_rights_edit");
                     $bInTrash = $this->InTrash($res);
                     foreach ($arShow as $action => $right) {
                         if ($res['LOCK_STATUS'] == 'red' || $bInTrash) {
                             $right = "element_rights_edit";
                         }
                         if (!isset($res['E_RIGHTS'][$right])) {
                             $res['SHOW'][$action] = 'N';
                         }
                     }
                 }
             }
         } else {
             $res["PERMISSION"] = $res["WF_NEW"] == "Y" || intVal($res["WF_PARENT_ELEMENT_ID"]) > 0 && $res["WF_PARENT_ELEMENT_ID"] != $res['ID'] ? "D" : $this->permission;
             if ($res["PERMISSION"] > "D" && $this->workflow == "bizproc") {
                 $res["PERMISSION"] = $res["BP_PUBLISHED"] == "Y" ? $this->permission : "D";
             }
         }
         $res["SHOW"]["UNDELETE"] = "N";
         $secPath = "/" . implode("/", $this->GetNavChain(array("section_id" => $res["IBLOCK_SECTION_ID"]), false));
         $res["SECTION_PATH"] = str_replace("//", "/", $secPath);
         $res["PATH"] = str_replace("//", "/", $secPath . "/" . $res["~NAME"]);
         $arFiles[$res["ID"]] = $res;
     } else {
         $res = array_merge($res, $arFiles[$res["ID"]]);
     }
     if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') {
         $info["path"] = $res['PATH'];
         $info["path"] = SITE_CHARSET != "UTF-8" ? $GLOBALS["APPLICATION"]->ConvertCharset($info["path"], SITE_CHARSET, "UTF-8") : $info["path"];
         $info["props"] = array();
         $info["props"][] = array('ns' => 'DAV:', 'name' => "creationdate", 'val' => isset($res["DATE_CREATE_UNIX"]) ? $res["DATE_CREATE_UNIX"] : MakeTimeStamp($res["DATE_CREATE"]));
         $info["props"][] = array('ns' => 'DAV:', 'name' => "getlastmodified", 'val' => isset($res["TIMESTAMP_X_UNIX"]) ? $res["TIMESTAMP_X_UNIX"] : MakeTimeStamp($res["TIMESTAMP_X"]));
         $info["props"][] = array('ns' => 'DAV:', 'name' => "creationdate", 'val' => MakeTimeStamp($res["DATE_CREATE"]));
         $info["props"][] = array('ns' => 'DAV:', 'name' => "getlastmodified", 'val' => MakeTimeStamp($res["TIMESTAMP_X"]));
         $info["props"][] = array('ns' => 'DAV:', 'name' => "getcontenttype", 'val' => $res["FILE"]["CONTENT_TYPE"]);
         $info["props"][] = array('ns' => 'DAV:', 'name' => "getcontentlength", 'val' => $res["FILE"]["FILE_SIZE"]);
         $info["props"][] = array('ns' => 'DAV:', 'name' => "isreadonly", 'val' => $res["PERMISSION"] >= "W" ? "false" : "true");
         $info["props"][] = array('ns' => 'DAV:', 'name' => "ishidden", 'val' => $res["ACTIVE"] == "Y" ? "false" : "true");
         $info["props"][] = array('ns' => 'DAV:', 'name' => "iscollection", 'val' => 0);
         $info["props"][] = array('ns' => 'DAV:', 'name' => "resourcetype", 'val' => '');
         // required by RFC && LibreOffice
         $info["props"][] = $this->_get_lock_prop();
     }
     if ($this->InTrash($res)) {
         if ($this->workflow != "bizproc") {
             $res["SHOW"]["EDIT"] = "N";
             $res["SHOW"]["LOCK"] = "N";
             $res["SHOW"]["UNLOCK"] = "N";
             $bAdmin = false;
             if ($GLOBALS['USER']->CanDoOperation('webdav_change_settings')) {
                 $bAdmin = true;
             } elseif ($this->e_rights && isset($res['E_RIGHTS']['element_rights_edit'])) {
                 $bAdmin = true;
             } elseif (!$this->e_rights && $this->permission > "W") {
                 $bAdmin = true;
             }
             $res["SHOW"]["DELETE"] = $bAdmin ? "Y" : "N";
             $res["SHOW"]["UNDELETE"] = $bAdmin ? "Y" : "N";
         }
     }
     if ($this->_parse_webdav_info($res)) {
         if (is_array($res["PROPS"])) {
             foreach ($res["PROPS"] as $ns_name => $ns_props) {
                 foreach ($ns_props as $prop_name => $prop_val) {
                     if (is_scalar($prop_val)) {
                         if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') {
                             $info["props"][] = CWebDavBase::_mkprop($ns_name, $prop_name, $prop_val);
                         }
                     }
                 }
             }
         }
     }
     return $info;
 }
コード例 #17
0
/*
##############################################
# Bitrix: SiteManager                        #
# Copyright (c) 2002 Bitrix                  #
# http://www.bitrix.ru                       #
# mailto:admin@bitrix.ru                     #
##############################################
*/
define("STOP_STATISTICS", "Y");
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/workflow/prolog.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/workflow/include.php";
$fname = $_REQUEST["fname"];
if ($APPLICATION->GetGroupRight("workflow") >= "R") {
    session_write_close();
    $src = CWorkflow::GetFileContent($did, $fname, $wf_path, $site);
    $ext = strtolower(GetFileExtension($fname));
    $arrExt = explode(",", strtolower(CFile::GetImageExtensions()));
    if (in_array($ext, $arrExt)) {
        if ($ext == "jpg") {
            $ext = "jpeg";
        }
        header("Content-type: image/" . $ext);
        header("Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0");
        header("Expires: 0");
        header("Pragma: public");
        echo $src;
        die;
    }
    echo TxtToHtml($src);
}
コード例 #18
0
ファイル: iblock_list_admin.php プロジェクト: nycmic/bittest
			$STATUS_PERMISSION = 2;
		else
			$STATUS_PERMISSION = CIBlockElement::WF_GetStatusPermission($arRes["WF_STATUS_ID"]);

		$intMinPerm = 2;

		$arUnLock = Array(
			"ICON" => "unlock",
			"TEXT" => GetMessage("IBLIST_A_UNLOCK"),
			"TITLE" => GetMessage("IBLIST_A_UNLOCK_ALT"),
			"ACTION" => "if(confirm('".GetMessageJS("IBLIST_A_UNLOCK_CONFIRM")."')) ".$lAdmin->ActionDoGroup($f_TYPE.$arRes_orig['ID'], "unlock", $sThisSectionUrl),
		);

		if ($arRes_orig['LOCK_STATUS']=="red")
		{
			if (CWorkflow::IsAdmin())
				$arActions[] = $arUnLock;
		}
		else
		{
			/*
			 * yellow unlock
			 * edit
			 * copy
			 * history
			 * view (?)
			 * edit_orig (?)
			 * delete
			 */
		if (
				CIBlockElementRights::UserHasRightTo($IBLOCK_ID, $f_ID, "element_edit")
コード例 #19
0
// there is document ID
if ($ID > 0 && check_bitrix_sessid()) {
    // check if document exists in database
    $z = $DB->Query("SELECT ID FROM b_workflow_document WHERE ID = " . intval($ID), false, $err_mess . __LINE__);
    if (!($zr = $z->Fetch())) {
        require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
        $aMenu = array(array("ICON" => "btn_list", "TEXT" => GetMessage("FLOW_RECORDS_LIST"), "LINK" => "workflow_list.php?lang=" . LANGUAGE_ID, "TITLE" => GetMessage("FLOW_RECORDS_LIST")));
        $context = new CAdminContextMenu($aMenu);
        $context->Show();
        CAdminMessage::ShowMessage(GetMessage("FLOW_DOCUMENT_NOT_FOUND"));
        require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";
        die;
    } else {
        $filename = CWorkflow::GetUniquePreview($ID);
        // save preview file
        $z = CWorkflow::GetByID($ID);
        $zr = $z->Fetch();
        $prolog = $zr["PROLOG"];
        if (strlen($prolog) > 0) {
            $title = $zr["TITLE"];
            $prolog = SetPrologTitle($prolog, $title);
        }
        $content = $zr["BODY_TYPE"] == "text" ? TxtToHTML($zr["BODY"]) : $zr["BODY"];
        $epilog = $zr["EPILOG"];
        $filesrc = $prolog . PathToWF($content, $ID) . $epilog;
        SavePreviewContent($_SERVER["DOCUMENT_ROOT"] . $filename, $filesrc);
        // store file to database
        $arFields = array("DOCUMENT_ID" => $ID, "TIMESTAMP_X" => $DB->GetNowFunction(), "FILENAME" => "'" . $DB->ForSql($filename, 255) . "'");
        $DB->Insert("b_workflow_preview", $arFields, $err_mess . __LINE__);
        // redirect to preview saved
        if (file_exists($_SERVER["DOCUMENT_ROOT"] . $filename)) {