Ejemplo n.º 1
0
 function Set_InitVar(&$arFields, $id, $checkRights, $sendEmailToAuthor, $sendEmailToTechsupport)
 {
     global $APPLICATION, $USER, $DB;
     $f = self::GetCSupportTableFields("b_ticket");
     $v = (object) array();
     if (!is_object($USER)) {
         $USER = new CUser();
     }
     $uid = $USER->GetID();
     if (isset($arFields["CURRENT_USER_ID"]) && intval($arFields["CURRENT_USER_ID"]) > 0) {
         $uid = intval($arFields["CURRENT_USER_ID"]);
     }
     $f->ID = intval($id);
     $v->isNew = $f->ID <= 0;
     $v->CHECK_RIGHTS = $checkRights == "Y" ? "Y" : "N";
     $v->SEND_EMAIL_TO_AUTHOR = $sendEmailToAuthor == "Y" ? "Y" : "N";
     $v->SEND_EMAIL_TO_TECHSUPPORT = $sendEmailToTechsupport == "Y" ? "Y" : "N";
     $v->newSLA = false;
     // заголовок и сообщение - обязательные поля для нового обращения
     if ($v->isNew) {
         if (strlen($arFields["TITLE"]) <= 0) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_EMPTY_TITLE'));
             return false;
         }
         if (strlen($arFields["MESSAGE"]) <= 0) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_EMPTY_MESSAGE'));
             return false;
         }
     }
     if (is_object($APPLICATION)) {
         $APPLICATION->ResetException();
     }
     if (!$GLOBALS["USER_FIELD_MANAGER"]->CheckFields("SUPPORT", $f->ID, $arFields)) {
         if (is_object($APPLICATION) && $APPLICATION->GetException()) {
             return false;
         } else {
             $APPLICATION->ThrowException("Unknown error. ");
             return false;
         }
     }
     // установка прав
     $v->bAdmin = $v->bSupportTeam = $v->bSupportClient = $v->bDemo = $v->bOwner = false;
     if ($v->CHECK_RIGHTS == "Y") {
         $v->uid = $uid;
         $v->bAdmin = CTicket::IsAdmin($uid);
         $v->bSupportTeam = CTicket::IsSupportTeam($uid);
         $v->bSupportClient = CTicket::IsSupportClient($uid);
         $v->bDemo = CTicket::IsDemo($uid);
         if ($v->isNew) {
             $v->bOwner = true;
         } else {
             $v->bOwner = CTicket::IsOwner($f->ID, $v->uid);
         }
     } else {
         $v->bAdmin = $v->bSupportTeam = $v->bSupportClient = $v->bDemo = $v->bOwner = true;
         $v->uid = 0;
     }
     if (!$v->bAdmin && !$v->bSupportTeam && !$v->bSupportClient) {
         return false;
     }
     if (!$v->bAdmin && !$v->bSupportTeam && ($v->bDemo && !$v->bOwner)) {
         return false;
     }
     // Это спам?
     $f->FromArray($arFields, "IS_SPAM");
     $v->bActiveCoupon = false;
     $f->FromArray($_SESSION, array("MODIFIED_GUEST_ID" => "SESS_GUEST_ID"), array(CSupportTableFields::MORE0));
     $f->FromArray($arFields, "OWNER_USER_ID,OWNER_SID,HOLD_ON", array(CSupportTableFields::MORE0, CSupportTableFields::NOT_EMTY_STR));
     // получим SITE_ID
     if (strlen($arFields["SITE_ID"]) > 0) {
         $f->SITE_ID = $arFields["SITE_ID"];
     } elseif (strlen($arFields["SITE"]) > 0) {
         $f->SITE_ID = $arFields["SITE"];
     } elseif (strlen($arFields["LANG"]) > 0) {
         $f->SITE_ID = $arFields["LANG"];
     } else {
         $f->SITE_ID = SITE_ID;
     }
     // получаем ID записей справочника по SID
     $arr = array("CATEGORY" => "C", "CRITICALITY" => "K", "STATUS" => "S", "MARK" => "M", "SOURCE" => "SR", "MESSAGE_SOURCE" => "SR", "DIFFICULTY" => "D");
     foreach ($arr as $key => $value) {
         if ((array_key_exists($key . "_ID", $arFields) || intval($arFields[$key . "_ID"]) <= 0) && array_key_exists($key . "_SID", $arFields) && strlen($arFields[$key . "_SID"]) > 0) {
             $z = CTicketDictionary::GetBySID($arFields[$key . "_SID"], $value, $f->SITE_ID);
             $zr = $z->Fetch();
             $arFields[$key . "_ID"] = $zr["ID"];
         }
     }
     return array("v" => $v, "f" => $f);
 }
Ejemplo n.º 2
0
            $arrSLA[$ar["ID"]] = array("NAME" => $ar["NAME"], "DESCRIPTION" => $ar["DESCRIPTION"]);
        }
        if ($safe_for_html) {
            $name = htmlspecialcharsbx($name);
            $description = htmlspecialcharsbx($description);
        }
    }
}
/***************************************************************************
							Work with GET | POST
***************************************************************************/
$ID = intval($ID);
if ($ID <= 0) {
    $bOwner = "Y";
} else {
    $bOwner = CTicket::IsOwner($ID) ? "Y" : "N";
}
if ($bDemo == "Y" && $bOwner == "Y") {
    $bSupportClient = "Y";
    $bDemo = "N";
}
$TICKET_LIST_URL = strlen($TICKET_LIST_URL) > 0 ? CUtil::AddSlashes(htmlspecialcharsbx((substr($TICKET_LIST_URL, 0, 4) == 'http' ? '' : '/') . $TICKET_LIST_URL)) : "ticket_list.php";
$TICKET_EDIT_URL = strlen($TICKET_EDIT_URL) > 0 ? CUtil::AddSlashes(htmlspecialcharsbx((substr($TICKET_EDIT_URL, 0, 4) == 'http' ? '' : '/') . $TICKET_EDIT_URL)) : "ticket_edit.php";
$TICKET_MESSAGE_EDIT_URL = strlen($TICKET_MESSAGE_EDIT_URL) > 0 ? CUtil::AddSlashes(htmlspecialcharsbx((substr($TICKET_MESSAGE_EDIT_URL, 0, 4) == 'http' ? '' : '/') . $TICKET_MESSAGE_EDIT_URL)) : "ticket_message_edit.php";
if (intval($mdel_id) > 0 && check_bitrix_sessid()) {
    CTicket::DeleteMessage($mdel_id, "Y");
    LocalRedirect($TICKET_EDIT_URL . "?ID=" . $ID . "&lang=" . LANGUAGE_ID);
}
if (strlen($action) > 0 && check_bitrix_sessid()) {
    switch ($action) {
        case "close":