Bitrix Site Manager

CForm::GetPermission

int
CForm::GetPermission(
 int FORM_ID,
 array arGroups=false,
 char(1) get_from_database=""
);

The function returns the form access permission.

Parameters

ParameterDescription
FORM_ID Form ID.
arGroups Array of the ID's of user groups for which access permission is to be checked. If not specified, information pertaining to the current user is returned.
get_from_database Set this parameter to "Y" to return the access permission information from the database rather than the default value.

Return Value

A permission code is returned which can be one of the following.

Example

The example below shows the file "form_edit.php" used to edit the form result.



<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/include.php");
include(GetLangFileName($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/admin/lang/", "/form_result_edit.php"));
$RESULT_ID = intval($RESULT_ID);
$z = CFormResult::GetByID($RESULT_ID);
if (!($arrResult=$z->Fetch())) 
{
    require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
    echo ShowError("Survey not found");
    require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog.php");
    die();
}
$WEB_FORM_ID = intval($arrResult["FORM_ID"]);
$F_RIGHT = intval(CForm::GetPermission($WEB_FORM_ID));

/*
Y - edit form fields
N - disallow form fields editing
*/
$EDIT_ADDITIONAL = "N";

if ($F_RIGHT>=25 || ($F_RIGHT>=15 && $USER->GetID()==$arrResult["USER_ID"])) :

    // "Save" clicked
    if ($REQUEST_METHOD=="POST" && 
        intval($WEB_FORM_ID)>0 && 
        (strlen($web_form_submit)>0 || strlen($apply)>0))
    {
        $arrVALUES = $HTTP_POST_VARS; // get the form data array
        $error = CForm::Check($WEB_FORM_ID, $arrVALUES, $RESULT_ID);
        if (strlen($error)<=0) 
        {
            CFormResult::Update($RESULT_ID, $arrVALUES, $EDIT_ADDITIONAL);
            $arr = CFormResult::GetDataByID($RESULT_ID, array("VS_PHOTO"));
            $PHOTO_EXIST = (intval($arr["VS_PHOTO"][0]["USER_FILE_ID"])>0) ? "Y" : "N";
            CFormResult::SetField($RESULT_ID, "VS_PHOTO_EXIST", $PHOTO_EXIST);
            if (strlen($web_form_submit)>0) 
                LocalRedirect("index.php?WEB_FORM_NAME=".$arrResult["VARNAME"]);
        }
        else 
            $strError .= $error;
    }
    else 
        // get the array of values from the database
        $arrVALUES = CFormResult::GetDataByIDForWeb($RESULT_ID,$EDIT_ADDITIONAL); 
endif;
$title = str_replace("#RESULT_ID#","$RESULT_ID","Edit form # #RESULT_ID#");
$APPLICATION->SetTitle($title);
require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
?>
<a href="index.php?web_form_name=<?=$arrresult["varname"]?>" class="navchain">Forms</a>
<br><br>
<table cellspacing="0" cellpadding="2">
    <?if ($F_RIGHT>=25):?>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b>ID:</b></font></td>
        <td valign="top"><font class="tablebodytext"><?=$arrResult["ID"]?></font></td>
    </tr>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_FORM_NAME")?></b></font></td>
        <td valign="top"><font class="tablebodytext"><?
        echo "[<a class='tablebodylink' href='form_edit.php?lang=".lang."&id=".$web_form_id."'>". $WEB_FORM_ID."</a>] (".$arrResult["VARNAME"].") ".$arrResult["NAME"];
        ?></font></td>
    </tr>
    <?endif;?>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_DATE_CREATE")?></b></font></td>
        <td valign="top"><font class="tablebodytext"><?=$arrResult["DATE_CREATE"]?></font></td>
    </tr>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_TIMESTAMP")?></b></font></td>
        <td valign="top"><font class="tablebodytext"><?=$arrResult["TIMESTAMP_X"]?></font></td>
    </tr>
    <?if ($F_RIGHT>=25):?>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_USER")?></b></font></td>
        <td valign="top" nowrap><font class="tablebodytext"><?
            if (intval($arrResult["USER_ID"])>0) :
                echo "<font class='tablebodytext'>[</font><a class='tablebodylink' title='".GetMessage("FORM_EDIT_USER")."' href='user_edit.php?lang=".lang."&id=".$arrresult["user_id"]."'>".$arrresult["user_id"]."</a><font class='tablebodytext'>] (".htmlspecialchars($arrResult["LOGIN"]).") ".htmlspecialchars($arrResult["USER_NAME"])."</font>";
                echo ($arrResult["USER_AUTH"]=="N") ? " <font class='filteroff'>".GetMessage("FORM_NOT_AUTH")."</font>" : "";
            else :
                echo "<font class='tablebodytext'>".GetMessage("FORM_NOT_REGISTERED")."</font>";
            endif;
            ?></font></td>
    </tr>
    <?if (CModule::IncludeModule("statistic")):?>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_GUEST")?></b></font></td>
        <td valign="top"><font class="tablebodytext">[<a title="<?=GetMessage("FORM_GUEST_ALT")?>" class="tablebodylink" href="/bitrix/admin/guest_list.php?lang=<?=lang?>&find_id=<?=$arrresult["stat_guest_id"]?>&set_filter=y"><?=$arrresult["stat_guest_id"]?></a>]</font></td>
    </tr>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_SESSION")?></b></font></td>
        <td valign="top"><font class="tablebodytext">[<a title="<?=GetMessage("FORM_SESSION_ALT")?>" class="tablebodylink" href="/bitrix/admin/session_list.php?lang=<?=lang?>&find_id=<?=$arrresult["stat_session_id"]?>&set_filter=y"><?=$arrresult["stat_session_id"]?></a>]</font></td>
    </tr>
    <?endif;?>
    <?endif;?>
</table>
<br>
<?
CForm::EditResult($RESULT_ID, $arrVALUES, $EDIT_RESULT_TEMPLATE, $EDIT_ADDITIONAL); 
require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog.php"); 
?>