Ejemplo n.º 1
0
 function CheckFields(&$arFields, $groupID = 0, $userID = 0)
 {
     global $APPLICATION, $DB, $USER;
     $groupID = intval($groupID);
     $userID = intval($userID);
     if (!is_array($arFields)) {
         $arFields = array();
     }
     //if update
     if ($userID > 0 || $groupID > 0) {
         if ($userID <= 0) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_ID_EMPTY'));
             return false;
         }
         if ($groupID <= 0) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_GROUP_ID_EMPTY'));
             return false;
         }
         if (array_key_exists('GROUP_ID', $arFields)) {
             unset($arFields['GROUP_ID']);
         }
         if (array_key_exists('USER_ID', $arFields)) {
             unset($arFields['USER_ID']);
         }
     }
     //if add
     if ($userID <= 0 && $groupID <= 0) {
         $arFields['GROUP_ID'] = array_key_exists('GROUP_ID', $arFields) ? intval($arFields['GROUP_ID']) : 0;
         $arFields['USER_ID'] = array_key_exists('USER_ID', $arFields) ? intval($arFields['USER_ID']) : 0;
         if ($arFields['USER_ID'] <= 0) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_ID_EMPTY'));
             return false;
         }
         if ($arFields['GROUP_ID'] <= 0) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_GROUP_ID_EMPTY'));
             return false;
         }
         $rs = $USER->GetByID($arFields['USER_ID']);
         if (!$rs->Fetch()) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_USER'));
             return false;
         }
         $rs = CSupportUserGroup::GetList(false, array('ID' => $arFields['GROUP_ID']));
         if (!($arGroup = $rs->Fetch())) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_GROUP'));
             return false;
         }
         if (CTicket::IsAdmin($arFields['USER_ID']) || CTicket::IsSupportTeam($arFields['USER_ID'])) {
             if ($arGroup['IS_TEAM_GROUP'] != 'Y') {
                 $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_NO_CLIENT'));
                 return false;
             }
         } elseif (CTicket::IsSupportClient($arFields['USER_ID'])) {
             if ($arGroup['IS_TEAM_GROUP'] == 'Y') {
                 $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USER_NO_TEAM'));
                 return false;
             }
         } else {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_NO_SUPPORT_USER'));
             return false;
         }
         $rs = CSupportUser2UserGroup::GetList(false, array('GROUP_ID' => $arFields['GROUP_ID'], 'USER_ID' => $arFields['USER_ID']));
         if ($rs->Fetch()) {
             $APPLICATION->ThrowException(GetMessage('SUP_ERROR_USERGROUP_EXISTS'));
             return false;
         }
     }
     if (array_key_exists('CAN_VIEW_GROUP_MESSAGES', $arFields)) {
         $arFields['CAN_VIEW_GROUP_MESSAGES'] = $arFields['CAN_VIEW_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N';
     } elseif ($userID <= 0 && $groupID <= 0) {
         $arFields['CAN_VIEW_GROUP_MESSAGES'] = 'N';
     }
     if (array_key_exists('CAN_MAIL_GROUP_MESSAGES', $arFields)) {
         $arFields['CAN_MAIL_GROUP_MESSAGES'] = $arFields['CAN_MAIL_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N';
     } elseif ($userID <= 0 && $groupID <= 0) {
         $arFields['CAN_MAIL_GROUP_MESSAGES'] = 'N';
     }
     return true;
 }
Ejemplo n.º 2
0
 function GetMessageDynamicList(&$by, &$order, $arFilter = array())
 {
     $err_mess = CTicket::err_mess() . "<br>Function: GetMessageDynamicList<br>Line: ";
     global $DB;
     $arSqlSearch = array();
     $strSqlSearch = "";
     if (is_array($arFilter)) {
         $filterKeys = array_keys($arFilter);
         for ($i = 0; $i < count($filterKeys); $i++) {
             $key = $filterKeys[$i];
             $val = $arFilter[$filterKeys[$i]];
             if (is_array($val) && count($val) <= 0 || !is_array($val) && (strlen($val) <= 0 || $val === 'NOT_REF')) {
                 continue;
             }
             $matchValueSet = in_array($key . "_EXACT_MATCH", $filterKeys) ? true : false;
             $key = strtoupper($key);
             switch ($key) {
                 case "SITE":
                 case "SITE_ID":
                     if (is_array($val)) {
                         $val = implode(" | ", $val);
                     }
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $matchValueSet ? "Y" : "N";
                     $arSqlSearch[] = GetFilterQuery("T.SITE_ID", $val, $match);
                     break;
                 case "DATE_CREATE_1":
                     if (CheckDateTime($val)) {
                         $arSqlSearch[] = "M.DATE_CREATE>=" . $DB->CharToDateFunction($val, "SHORT");
                     }
                     break;
                 case "DATE_CREATE_2":
                     if (CheckDateTime($val)) {
                         $arSqlSearch[] = "M.DATE_CREATE<" . $DB->CharToDateFunction($val, "SHORT") . " + INTERVAL 1 DAY";
                     }
                     break;
                 case "OWNER":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $matchValueSet ? "N" : "Y";
                     $arSqlSearch[] = GetFilterQuery("M.OWNER_USER_ID, U.LOGIN, U.LAST_NAME, U.NAME", $val, $match);
                     break;
                 case "OWNER_ID":
                     if (intval($val) > 0) {
                         $arSqlSearch[] = "M.OWNER_USER_ID = '" . intval($val) . "'";
                     } elseif ($val == 0) {
                         $arSqlSearch[] = "(M.OWNER_USER_ID is null or M.OWNER_USER_ID=0)";
                     }
                     break;
                 case "IS_HIDDEN":
                 case "IS_LOG":
                 case "IS_OVERDUE":
                     $arSqlSearch[] = $val == "Y" ? "M." . $key . "='Y'" : "M." . $key . "='N'";
                     break;
                 case "SLA_ID":
                 case "SLA":
                     $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $matchValueSet ? "Y" : "N";
                     $arSqlSearch[] = GetFilterQuery("T.SLA_ID", $val, $match);
                     break;
                 case "CATEGORY_ID":
                 case "CATEGORY":
                     if (intval($val) > 0) {
                         $arSqlSearch[] = "T.CATEGORY_ID = '" . intval($val) . "'";
                     } elseif ($val == 0) {
                         $arSqlSearch[] = "(T.CATEGORY_ID is null or T.CATEGORY_ID=0)";
                     }
                     break;
                 case "CRITICALITY_ID":
                 case "CRITICALITY":
                     if (intval($val) > 0) {
                         $arSqlSearch[] = "T.CRITICALITY_ID = '" . intval($val) . "'";
                     } elseif ($val == 0) {
                         $arSqlSearch[] = "(T.CRITICALITY_ID is null or T.CRITICALITY_ID=0)";
                     }
                     break;
                 case "STATUS_ID":
                 case "STATUS":
                     if (intval($val) > 0) {
                         $arSqlSearch[] = "T.STATUS_ID = '" . intval($val) . "'";
                     } elseif ($val == 0) {
                         $arSqlSearch[] = "(T.STATUS_ID is null or T.STATUS_ID=0)";
                     }
                     break;
                 case "MARK_ID":
                 case "MARK":
                     if (intval($val) > 0) {
                         $arSqlSearch[] = "T.MARK_ID = '" . intval($val) . "'";
                     } elseif ($val == 0) {
                         $arSqlSearch[] = "(T.MARK_ID is null or T.MARK_ID=0)";
                     }
                     break;
                 case "SOURCE_ID":
                 case "SOURCE":
                     if (intval($val) > 0) {
                         $arSqlSearch[] = "T.SOURCE_ID = '" . intval($val) . "'";
                     } elseif ($val == 0) {
                         $arSqlSearch[] = "(T.SOURCE_ID is null or T.SOURCE_ID=0)";
                     }
                     break;
                 case "DIFFICULTY_ID":
                 case "DIFFICULTY":
                     if (intval($val) > 0) {
                         $arSqlSearch[] = "T.DIFFICULTY_ID = '" . intval($val) . "'";
                     } elseif ($val == 0) {
                         $arSqlSearch[] = "(T.DIFFICULTY_ID is null or T.DIFFICULTY_ID=0)";
                     }
                     break;
             }
         }
     }
     $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
     if ($by == "s_date_create") {
         $strSqlOrder = "ORDER BY M.DATE_CREATE";
     } else {
         $by = "s_date_create";
         $strSqlOrder = "ORDER BY M.DATE_CREATE";
     }
     if ($order != "asc") {
         $strSqlOrder .= " desc ";
         $order = "desc";
     }
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tcount(M.ID)\t\t\t\t\t\t\t\tCOUNTER,\n\t\t\t\tsum(if(M.EXPIRE_AGENT_DONE='Y', 1, 0))\tCOUNTER_OVERDUE,\n\t\t\t\tDAYOFMONTH(M.DAY_CREATE)\t\t\t\tCREATE_DAY,\n\t\t\t\tMONTH(M.DAY_CREATE)\t\t\t\t\t\tCREATE_MONTH,\n\t\t\t\tYEAR(M.DAY_CREATE)\t\t\t\t\t\tCREATE_YEAR\n\t\t\tFROM\n\t\t\t\tb_ticket_message M\n\t\t\tINNER JOIN b_ticket T ON (T.ID = M.TICKET_ID)\n\t\t\tLEFT JOIN b_user U ON (M.OWNER_USER_ID = U.ID)\n\t\t\tWHERE\n\t\t\t{$strSqlSearch}\n\t\t\tGROUP BY\n\t\t\t\tTO_DAYS(M.DAY_CREATE)\n\t\t\t{$strSqlOrder}\n\t\t\t";
     $res = $DB->Query($strSql, false, $err_mess . __LINE__);
     return $res;
 }
Ejemplo n.º 3
0
 }
 if ($gadget["SECURITY_ONLY"] == true) {
     $aGlobalOpt = CUserOptions::GetOption("global", "settings", array());
     $bShowSecurity = file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/security/install/index.php") && $aGlobalOpt['messages']['security'] != 'N';
     if (!$bShowSecurity) {
         continue;
     }
 }
 if ($gadget["PERFMON_ONLY"] == true) {
     $aGlobalOpt = CUserOptions::GetOption("global", "settings", array());
     $bShowPerfmon = file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/perfmon/install/index.php") && $aGlobalOpt['messages']['perfmon'] != 'N';
     if (!$bShowPerfmon) {
         continue;
     }
 }
 if ($gadget["SUPPORT_ONLY"] == true && (!CModule::IncludeModule("support") || !$USER->IsAuthorized() || !CTicket::IsSupportClient() && !CTicket::IsAdmin() && !CTicket::IsSupportTeam())) {
     continue;
 }
 if ($gadget["WIKI_ONLY"] == true && !IsModuleInstalled("wiki")) {
     continue;
 }
 if ($gadget["CRM_ONLY"] == true && !IsModuleInstalled("crm")) {
     continue;
 }
 if ($gadget["VOTE_ONLY"] == true && (!IsModuleInstalled("vote") || !CBXFeatures::IsFeatureEnabled("Vote"))) {
     continue;
 }
 if ($gadget["TASKS_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("Tasks")) {
     continue;
 }
 if ($gadget["MESSENGER_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("WebMessenger")) {
Ejemplo n.º 4
0
 function Delete($id, $checkRights = true)
 {
     $err_mess = self::err_mess() . "<br>Function: Delete<br>Line: ";
     global $DB, $USER, $APPLICATION;
     $id = intval($id);
     $table = self::TABLE;
     $tableShedule = self::TABLE_SHEDULE;
     if ($id <= 0) {
         return false;
     }
     $isDemo = null;
     $isSupportClient = null;
     $isSupportTeam = null;
     $isAdmin = null;
     $isAccess = null;
     $userID = null;
     CTicket::GetRoles($isDemo, $isSupportClient, $isSupportTeam, $isAdmin, $isAccess, $userID, $checkRights);
     if (!$isAdmin) {
         $arMsg = array();
         $arMsg[] = array("id" => "PERMISSION", "text" => GetMessage("SUP_ERROR_ACCESS_DENIED"));
         $e = new CAdminException($arMsg);
         $APPLICATION->ThrowException($e);
         return false;
     }
     $strSql = "SELECT DISTINCT 'x' FROM b_ticket_sla WHERE TIMETABLE_ID = {$id}";
     $rs = $DB->Query($strSql, false, $err_mess . __LINE__);
     if (!$rs->Fetch()) {
         $DB->Query("DELETE FROM {$table} WHERE ID = {$id}", false, $err_mess . __LINE__);
         $DB->Query("DELETE FROM {$tableShedule} WHERE TIMETABLE_ID = {$id}", false, $err_mess . __LINE__);
         return true;
     } else {
         $APPLICATION->ThrowException(str_replace("#ID#", "{$id}", GetMessage("SUP_ERROR_TIMETABLE_HAS_SLA")));
     }
     return false;
 }
Ejemplo n.º 5
0
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die;
}
$bDemo = CTicket::IsDemo() ? "Y" : "N";
$bAdmin = CTicket::IsAdmin() ? "Y" : "N";
$bSupportTeam = CTicket::IsSupportTeam() ? "Y" : "N";
$bADS = $bDemo == 'Y' || $bAdmin == 'Y' || $bSupportTeam == 'Y';
?>

<form method="post" action="<?php 
echo $arResult["NEW_TICKET_PAGE"];
?>
">
	<input type="submit" name="edit" value="<?php 
echo GetMessage("SUP_ASK");
?>
">
</form>

<br />

<?php 
$APPLICATION->IncludeComponent("bitrix:main.interface.grid", "", array("GRID_ID" => $arResult["GRID_ID"], "HEADERS" => array(array("id" => "LAMP", "name" => GetMessage('SUP_LAMP'), "sort" => "s_lamp", "default" => true), array("id" => "ID", "name" => GetMessage('SUP_ID'), "sort" => "s_id", "default" => true), array("id" => "TITLE", "name" => GetMessage('SUP_TITLE'), "default" => true), array("id" => "TIMESTAMP_X", "name" => GetMessage('SUP_TIMESTAMP'), "sort" => "s_timestamp_x", "default" => true), array("id" => "MODIFIED_BY", "name" => GetMessage('SUP_MODIFIED_BY'), "default" => true), array("id" => "MESSAGES", "name" => GetMessage('SUP_MESSAGES'), "default" => true), array("id" => "STATUS_NAME", "name" => GetMessage('SUP_STATUS'), "default" => true)), "SORT" => $arResult["SORT"], "SORT_VARS" => $arResult["SORT_VARS"], "ROWS" => $arResult["ROWS"], "FOOTER" => array(array("title" => GetMessage('SUP_TOTAL'), "value" => $arResult["ROWS_COUNT"])), "ACTION_ALL_ROWS" => true, "EDITABLE" => false, "NAV_OBJECT" => $arResult["NAV_OBJECT"], "AJAX_ID" => $arParams["AJAX_ID"], "FILTER" => $arResult["FILTER"]), $component);
?>

<br />

<br />
<table class="support-ticket-hint">
Ejemplo n.º 6
0
    $rsMessage = CTicket::GetMessageList($by, $order, $arFilter, $is_filtered, $check_rights = "Y", $get_user_name = "N");
    $rsMessage->NavStart($arParams["MESSAGES_PER_PAGE"]);
    $arResult["NAV_STRING"] = $rsMessage->GetPageNavString(GetMessage("SUP_PAGES"));
    $arResult["NAV_RESULT"] = $rsMessage;
    while ($arMessage = $rsMessage->GetNext()) {
        if (array_key_exists($arMessage["ID"], $arMessagesFiles)) {
            $arFiles["FILES"] = $arMessagesFiles[$arMessage["ID"]];
        } else {
            $arFiles["FILES"] = array();
        }
        $arMessage["MESSAGE"] = TxtToHTML($arMessage["~MESSAGE"], $bMakeUrls = true, $iMaxStringLen = $arParams["MESSAGE_MAX_LENGTH"], $QUOTE_ENABLED = "Y", $NOT_CONVERT_AMPERSAND = "N", $CODE_ENABLED = "Y", $BIU_ENABLED = "Y", $quote_table_class = "support-quote-table", $quote_head_class = "support-quote-head", $quote_body_class = "support-quote-body", $code_table_class = "support-code-table", $code_head_class = "support-code-head", $code_body_class = "support-code-body", $code_textarea_class = "support-code-textarea", $link_class = "");
        $arResult["MESSAGES"][] = $arMessage + $arFiles + _GetUserInfo($arMessage["OWNER_USER_ID"], "OWNER") + _GetUserInfo($arMessage["CREATED_USER_ID"], "CREATED") + _GetUserInfo($arMessage["MODIFIED_USER_ID"], "MODIFIED_BY");
    }
    //Online
    CTicket::UpdateOnline($arParams["ID"], $USER->GetID());
    $rsOnline = CTicket::GetOnline($arParams["ID"]);
    while ($arOnline = $rsOnline->GetNext()) {
        $arResult["ONLINE"][] = $arOnline;
    }
    $ticketSite = $arTicket["SITE_ID"];
    $ticketSla = $arTicket["SLA_ID"];
} else {
    $ticketSite = SITE_ID;
    $ticketSla = CTicketSLA::GetForUser();
    $arResult["DICTIONARY"]["CRITICALITY_DEFAULT"] = CTicketDictionary::GetDefault("K", $ticketSite);
    $arResult["DICTIONARY"]["CATEGORY_DEFAULT"] = CTicketDictionary::GetDefault("C", $ticketSite);
}
//Mark, Category, Criticality dictionary list
$ticketDictionary = CTicketDictionary::GetDropDownArray($ticketSite, $ticketSla);
$arResult["DICTIONARY"]["MARK"] = _GetDropDownDictionary("M", $ticketDictionary);
$arResult["DICTIONARY"]["CRITICALITY"] = _GetDropDownDictionary("K", $ticketDictionary);
Ejemplo n.º 7
0
    }
    if ($find_open == "Y") {
        $arrY_open[] = intval($f_OPEN_TICKETS);
    }
    if ($find_close == "Y") {
        $arrY_close[] = intval($f_CLOSE_TICKETS);
    }
    $prev_date = $date;
}
/******************************************************
                 ‘ормируем ось X
*******************************************************/
$arrayX = GetArrayX($arrX, $MinX, $MaxX);
if ($find_mess == "Y" || $find_overdue_mess == "Y") {
    $arFilter = array("SITE" => $find_site, "DATE_CREATE_1" => $find_date1, "DATE_CREATE_2" => $find_date2, "OWNER_ID" => $find_responsible_id, "OWNER" => $find_responsible, "OWNER_EXACT_MATCH" => $find_responsible_exact_match, "SLA" => $find_sla_id, "CATEGORY" => $find_category_id, "CRITICALITY" => $find_criticality_id, "STATUS" => $find_status_id, "MARK" => $find_mark_id, "SOURCE" => $find_source_id, "IS_HIDDEN" => "N", "IS_LOG" => "N", "IS_OVERDUE" => "N");
    $rsMess = CTicket::GetMessageDynamicList($v1 = "s_date_create", $v2 = "asc", $arFilter);
    while ($arMess = $rsMess->Fetch()) {
        $date = mktime(0, 0, 0, $arMess["CREATE_MONTH"], $arMess["CREATE_DAY"], $arMess["CREATE_YEAR"]);
        $arrMessages[$date] = $arMess["COUNTER"];
        $arrOverdueMessages[$date] = $arMess["COUNTER_OVERDUE"];
    }
    foreach ($arrX as $t) {
        $arrY_mess[] = intval($arrMessages[$t]);
        $arrY_overdue_mess[] = intval($arrOverdueMessages[$t]);
    }
}
/******************************************************
                 ‘ормируем ось Y
*******************************************************/
$arrY = array();
if ($find_all == "Y") {
Ejemplo n.º 8
0
$url = $APPLICATION->GetCurPage() . "?TICKET_ID=" . $TICKET_ID . "&OWNER_USER_ID=" . intval($OWNER_USER_ID) . "&lang=" . LANGUAGE_ID . "&ONLINE_AUTO_REFRESH=" . intval($ONLINE_AUTO_REFRESH);
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_popup_admin.php";
$lamp = CTicket::GetStatus($TICKET_ID);
$ticket = CTicket::GetByID($TICKET_ID);
$arTicket = $ticket->ExtractFields();
?>
<table cellspacing=0 cellpadding=0 class="support-online">
	<?php 
$mode = strlen($mode) > 0 ? $mode : false;
CTicket::UpdateOnline($TICKET_ID, false, $mode);
$rs = CTicket::GetOnline($TICKET_ID);
while ($ar = $rs->GetNext()) {
    $is_support = "";
    if (intval($OWNER_USER_ID) == $ar["USER_ID"]) {
        $is_support = "N";
    } elseif (CTicket::IsSupportTeam($ar["USER_ID"]) || CTicket::IsAdmin($ar["USER_ID"]) || CTicket::IsDemo($ar["USER_ID"])) {
        $is_support = "Y";
    }
    ?>
	<tr>
		<td valign="top" width="16%"><?php 
    if ($is_support == "Y") {
        if ($ar["CURRENT_MODE"] == "edit") {
            ?>
<img src="/bitrix/images/support/sup_write.gif" width="15" height="13" border="0" alt="<?php 
            echo GetMessage("SUP_EDIT_MODE_ALT");
            ?>
"><?php 
        } else {
            ?>
<img src="/bitrix/images/support/sup_view.gif" width="17" height="13" border="0" alt="<?php 
		if (strSourceValue!="NOT_REF")
		{
			document.getElementById("OWNER_SID").disabled = false;
			document.getElementById("OWNER_SID").style.display = "inline";
		}
	}
	//-->
	</SCRIPT>

	<tr valign="middle">
		<td width="20%" nowrap><?php 
echo GetMessage("SUP_SOURCE") . " / " . GetMessage("SUP_FROM");
?>
</td>
		<td width="80%" nowrap><?php 
echo SelectBox("SOURCE_ID", CTicket::GetRefBookValues("SR", $arTicket["LID"]), "< web >", $str_SOURCE_ID, "OnChange=SelectSource() ");
?>
&nbsp;<input type="text" size="12" name="OWNER_SID" id="OWNER_SID" value="<?php 
echo $str_OWNER_SID;
?>
"><?php 
echo FindUserID("OWNER_USER_ID", $str_OWNER_USER_ID);
?>
</td>
	</tr>
	<SCRIPT LANGUAGE="JavaScript">
	<!--
	SelectSource();
	//-->
	</SCRIPT>
	<tr valign="top">
Ejemplo n.º 10
0
<?php

require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/prolog.php";
CModule::IncludeModule('support');
IncludeModuleLangFile(__FILE__);
$bDemo = CTicket::IsDemo();
$bAdmin = CTicket::IsAdmin();
if (!$bAdmin && !$bDemo) {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
$EDIT_URL = "/bitrix/admin/ticket_group_edit.php";
$LIST_URL = $APPLICATION->GetCurPage();
$sTableID = 't_ugroups_list';
$oSort = new CAdminSorting($sTableID, 'SORT', 'asc');
$lAdmin = new CAdminList($sTableID, $oSort);
$filter = new CAdminFilter($sTableID . '_filter_id', array('ID', GetMessage('SUP_GL_FLT_IS_TEAM_GROUP')));
$arFilterFields = array('FIND_NAME', 'FIND_NAME_EXACT_MATCH', 'FIND_ID', 'FIND_IS_TEAM_GROUP');
$lAdmin->InitFilter($arFilterFields);
$arFilter = array();
foreach ($arFilterFields as $key) {
    if (strpos($key, '_EXACT_MATCH') !== false) {
        continue;
    }
    if (array_key_exists($key . '_EXACT_MATCH', $_REQUEST) && $_REQUEST[$key . '_EXACT_MATCH'] == 'Y') {
        $op = '=';
    } else {
        $op = '%';
    }
    if (array_key_exists($key, $_REQUEST) && strlen($_REQUEST[$key]) > 0) {
        if (in_array($key . '_EXACT_MATCH', $arFilterFields)) {
Ejemplo n.º 11
0
	</tr>

	<?php 
$tabControl->BeginNextTab();
?>

	<tr>
		<td align="right" valign="top"><?php 
echo GetMessage("SUP_USER_GROUPS");
?>
:</td>
		<td><?php 
$rs = CGroup::GetList($v1 = "sort", $v2 = "asc", array());
while ($ar = $rs->Fetch()) {
    $arRoles = $APPLICATION->GetUserRoles("support", array(intval($ar["ID"])), "Y", "N");
    if (in_array(CTicket::GetSupportClientRoleID(), $arRoles) || in_array(CTicket::GetSupportTeamRoleID(), $arRoles) || in_array(CTicket::GetDemoRoleID(), $arRoles) || in_array(CTicket::GetAdminRoleID(), $arRoles)) {
        echo InputType("checkbox", "arGROUPS[]", $ar["ID"], $arGROUPS) . " " . htmlspecialchars($ar["NAME"]) . " [<a title=\"" . GetMessage("MAIN_ADMIN_MENU_EDIT") . "\" href=\"/bitrix/admin/group_edit.php?ID=" . intval($ar["ID"]) . "&lang=" . LANGUAGE_ID . "\">" . intval($ar["ID"]) . "</a>]<br>";
    }
}
?>
</td>
	</tr>


<?php 
$tabControl->BeginNextTab();
?>


	<script type="text/javascript">
	<!--
Ejemplo n.º 12
0
 public static function SupportDeadlineNotify($arrTicket0)
 {
     //SUPPORT_DEADLINE_NOTIFY
     //SUPPORT_DEADLINE			= EXPIRATION_DATE
     //SUPPORT_DEADLINE_STMP		= EXPIRATION_DATE_STMP
     $err_mess = CAllTicketReminder::err_mess() . "<br>Function: SupportDeadlineNotify<br>Line: ";
     $rs = CTicket::GetByID($arrTicket0["ID"], false, "N");
     if (!($arTicket = $rs->Fetch())) {
         return false;
     }
     $rsMessage = CTicket::GetMessageByID(intval($arTicket["ID_1_USER_M_AFTER_SUP_M"]), "N", "N");
     if (!($arMessage = $rsMessage->Fetch())) {
         return false;
     }
     $arMessage["EXPIRATION_DATE"] = $arrTicket0["SUPPORT_DEADLINE"];
     $arMessage["EXPIRATION_DATE_STMP"] = MakeTimeStamp($arMessage["EXPIRATION_DATE"]);
     //$SUPPORT_DEADLINE_STMP = MakeTimeStamp($arrTicket0["SUPPORT_DEADLINE"]);
     $rsSite = CSite::GetByID($arTicket["SITE_ID"]);
     $arSite = $rsSite->Fetch();
     global $MESS, $DB;
     //$oldMess = $MESS;
     IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/classes/general/messages.php", $arSite["LANGUAGE_ID"]);
     $sourceName = strlen($arTicket["SOURCE_NAME"]) <= 0 ? "" : "[" . $arTicket["SOURCE_NAME"] . "] ";
     if (intval($arTicket["OWNER_USER_ID"]) > 0 || strlen(trim($arTicket["OWNER_LOGIN"])) > 0) {
         $ownerText = "[" . $arTicket["OWNER_USER_ID"] . "] (" . $arTicket["OWNER_LOGIN"] . ") " . $arTicket["OWNER_NAME"];
         //if(strlen(trim($OWNER_SID)) > 0 && $OWNER_SID != "null") $ownerText = " / " . $ownerText;
     }
     if (intval($arTicket["RESPONSIBLE_USER_ID"]) > 0) {
         $responsibleText = "[" . $arTicket["RESPONSIBLE_USER_ID"] . "] (" . $arTicket["RESPONSIBLE_LOGIN"] . ") " . $arTicket["RESPONSIBLE_NAME"];
         if (CTicket::IsSupportTeam($arTicket["RESPONSIBLE_USER_ID"]) || CTicket::IsAdmin($arTicket["RESPONSIBLE_USER_ID"])) {
             $responsibleText .= " " . GetMessage("SUP_TECHSUPPORT_HINT");
         }
     }
     $arAdminEMails = CTicket::GetAdminEmails();
     if (count($arAdminEMails) > 0) {
         $support_admin_email = implode(",", $arAdminEMails);
     }
     // prepare email to author
     $arrOwnerEMail = array($arTicket["OWNER_EMAIL"]);
     $arrEmails = explode(",", $arTicket["OWNER_SID"]);
     if (is_array($arrEmails) && count($arrEmails) > 0) {
         foreach ($arrEmails as $email) {
             $email = trim($email);
             if (strlen($email) > 0) {
                 preg_match_all("#[<\\[\\(](.*?)[>\\]\\)]#i" . BX_UTF_PCRE_MODIFIER, $email, $arr);
                 if (is_array($arr[1]) && count($arr[1]) > 0) {
                     foreach ($arr[1] as $email) {
                         $email = trim($email);
                         if (strlen($email) > 0 && !in_array($email, $arrOwnerEMail) && check_email($email)) {
                             $arrOwnerEMail[] = $email;
                         }
                     }
                 } elseif (!in_array($email, $arrOwnerEMail) && check_email($email)) {
                     $arrOwnerEMail[] = $email;
                 }
             }
         }
     }
     TrimArr($arrOwnerEMail);
     $ownerEmail = implode(", ", $arrOwnerEMail);
     // prepare email to support
     $support_email = $arTicket["RESPONSIBLE_EMAIL"];
     if (strlen($support_email) <= 0) {
         $support_email = $support_admin_email;
     }
     if (strlen($support_email) <= 0) {
         $support_email = COption::GetOptionString("main", "email_from", "");
     }
     $arr = explode(",", $support_email);
     $arr = array_unique($arr);
     $support_email = implode(",", $arr);
     if (is_array($arr) && count($arr) > 0) {
         foreach ($arr as $email) {
             unset($arAdminEMails[$email]);
         }
     }
     $support_admin_email = implode(",", $arAdminEMails);
     $createdModuleName = "";
     if ($arTicket["CREATED_MODULE_NAME"] == "support" || !strlen($arTicket["CREATED_MODULE_NAME"])) {
         if (intval($arTicket["CREATED_USER_ID"]) > 0) {
             $createdText = "[" . $arTicket["CREATED_USER_ID"] . "] (" . $arTicket["CREATED_LOGIN"] . ") " . $arTicket["CREATED_NAME"];
             if (CTicket::IsSupportTeam($arTicket["CREATED_USER_ID"]) || CTicket::IsAdmin($arTicket["CREATED_USER_ID"])) {
                 $createdText .= " " . GetMessage("SUP_TECHSUPPORT_HINT");
             }
         }
     } else {
         $createdModuleName = "[" . $arTicket["CREATED_MODULE_NAME"] . "]";
     }
     $MESSAGE = PrepareTxtForEmail($arMessage["MESSAGE"], $arSite["LANGUAGE_ID"], false, false);
     $remainedTime = $arMessage["EXPIRATION_DATE_STMP"] - time();
     if ($remainedTime > 0) {
         $strRemainedTime = "";
         $hours = intval($remainedTime / 3600);
         if ($hours > 0) {
             $strRemainedTime .= $hours . " " . GetMessage("SUP_HOUR") . " ";
             $remainedTime = $remainedTime - $hours * 3600;
         }
         $strRemainedTime .= intval($remainedTime / 60) . " " . GetMessage("SUP_MIN") . " ";
         $strRemainedTime .= $remainedTime % 60 . " " . GetMessage("SUP_SEC");
     }
     $arFields_notify = array("ID" => $arTicket["ID"], "LANGUAGE_ID" => $arSite["LANGUAGE_ID"], "DATE_CREATE" => $arTicket["DATE_CREATE"], "TITLE" => $arTicket["TITLE"], "STATUS" => $arTicket["STATUS_NAME"], "CATEGORY" => $arTicket["CATEGORY_NAME"], "CRITICALITY" => $arTicket["CRITICALITY_NAME"], "DIFFICULTY" => $arTicket["DIFFICULTY_NAME"], "RATE" => $arTicket["MARK_NAME"], "SLA" => $arTicket["SLA_NAME"], "SOURCE" => $sourceName, "ADMIN_EDIT_URL" => "/bitrix/admin/ticket_edit.php", "EXPIRATION_DATE" => $arMessage["EXPIRATION_DATE"], "REMAINED_TIME" => $strRemainedTime, "OWNER_EMAIL" => TrimEx($ownerEmail, ","), "OWNER_USER_ID" => $arTicket["OWNER_USER_ID"], "OWNER_USER_NAME" => $arTicket["OWNER_NAME"], "OWNER_USER_LOGIN" => $arTicket["OWNER_LOGIN"], "OWNER_USER_EMAIL" => $arTicket["OWNER_EMAIL"], "OWNER_TEXT" => $ownerText, "OWNER_SID" => $arTicket["OWNER_SID"], "SUPPORT_EMAIL" => TrimEx($support_email, ","), "RESPONSIBLE_USER_ID" => $arTicket["RESPONSIBLE_USER_ID"], "RESPONSIBLE_USER_NAME" => $arTicket["RESPONSIBLE_NAME"], "RESPONSIBLE_USER_LOGIN" => $arTicket["RESPONSIBLE_LOGIN"], "RESPONSIBLE_USER_EMAIL" => $arTicket["RESPONSIBLE_EMAIL"], "RESPONSIBLE_TEXT" => $responsibleText, "SUPPORT_ADMIN_EMAIL" => TrimEx($support_admin_email, ","), "CREATED_USER_ID" => $arTicket["CREATED_USER_ID"], "CREATED_USER_LOGIN" => $arTicket["CREATED_LOGIN"], "CREATED_USER_EMAIL" => $arTicket["CREATED_EMAIL"], "CREATED_USER_NAME" => $arTicket["CREATED_NAME"], "CREATED_MODULE_NAME" => $createdModuleName, "CREATED_TEXT" => $createdText, "MESSAGE_BODY" => $MESSAGE);
     //$MESS = $oldMess;
     $arFields = array("NOTIFY_AGENT_ID" => "null", "IS_NOTIFIED" => "'Y'");
     // execute event
     $rs = GetModuleEvents('support', 'OnBeforeTicketNotify');
     while ($arr = $rs->Fetch()) {
         $arFields = ExecuteModuleEventEx($arr, array($arTicket["ID"], $arFields));
         if (!$arFields) {
             return false;
         }
     }
     // check value again and send notification
     if (isset($arFields['IS_NOTIFIED']) && $arFields['IS_NOTIFIED'] === "'Y'") {
         CEvent::Send("TICKET_OVERDUE_REMINDER", $arTicket["SITE_ID"], $arFields_notify);
     }
     // event for notification
     $DB->Update("b_ticket", $arFields, "WHERE ID='" . $arTicket["ID"] . "'", $err_mess . __LINE__);
     $arFields = array("NOTIFY_AGENT_DONE" => "'Y'");
     $DB->Update("b_ticket_message", $arFields, "WHERE ID='" . $arMessage["ID"] . "'", $err_mess . __LINE__);
 }
Ejemplo n.º 13
0
function ForumMoveMessage2Support($MID, &$strErrorMessage, &$strOKMessage, $arAddParams = array())
{
    global $USER;
    $MID = IntVal($MID);
    $sError = array();
    $sNote = array();
    $arAddParams = !is_array($arAddParams) ? array($arAddParams) : $arAddParams;
    $arAddParams["PERMISSION"] = !empty($arAddParams["PERMISSION"]) ? $arAddParams["PERMISSION"] : false;
    if ($MID <= 0) {
        $arError[] = GetMessage("MOVEMES_NO_MESS_EX");
    }
    if (!CModule::IncludeModule("support")) {
        $arError[] = GetMessage("MOVEMES_NO_SUPPORT");
    }
    if (empty($arError)) {
        $arMessage = CForumMessage::GetByID($MID, array("FILTER" => "N"));
        if (!$arMessage) {
            $arError[] = GetMessage("MOVEMES_NO_MESS_EX");
        } elseif (IntVal($arMessage["AUTHOR_ID"]) <= 0) {
            $arError[] = GetMessage("MOVEMES_NO_ANONYM");
        } elseif (!CForumMessage::CanUserDeleteMessage($MID, $USER->GetUserGroupArray(), $USER->GetID(), $arAddParams["PERMISSION"])) {
            $arError[] = GetMessage("MOVEMES_NO_PERMS2MOVE");
        } else {
            $arTopic = CForumTopic::GetByID($arMessage["TOPIC_ID"]);
            $arFieldsSu = array("CLOSE" => "N", "TITLE" => $arTopic["TITLE"], "MESSAGE" => $arMessage["POST_MESSAGE"], "OWNER_USER_ID" => $arMessage["AUTHOR_ID"], "OWNER_SID" => $arMessage["AUTHOR_NAME"], "SOURCE_SID" => "forum");
            $arIMAGE = CFile::MakeFileArray($arMessage["ATTACH_IMG"]);
            if (is_array($arIMAGE)) {
                $arIMAGE["MODULE_ID"] = "support";
                $arFieldsSu["FILES"] = array($arIMAGE);
            }
            $SuID = CTicket::SetTicket($arFieldsSu);
            $SuID = IntVal($SuID);
            if ($SuID > 0) {
                $sNote[] = GetMessage("MOVEMES_SUCCESS_SMOVE");
            } else {
                $arError[] = GetMessage("MOVEMES_ERROR_SMOVE");
            }
        }
    }
    if (!empty($arError)) {
        $strErrorMessage .= implode(".\n", $arError) . ".\n";
    }
    if (!empty($arNote)) {
        $strOKMessage .= implode(".\n", $arNote) . ".\n";
    }
    if (empty($arError)) {
        return $SuID;
    } else {
        return False;
    }
}
Ejemplo n.º 14
0
    $sec = 7;
} else {
    switch ($_POST["group_by"]) {
        case 'day':
            $sec = 1;
            break;
        case 'week':
            $sec = 7;
            break;
        case 'month':
            $sec = 30;
            break;
    }
}
$ttt = strtotime($date_from);
while ($ttt <= strtotime($date_to)) {
    //   $cnt++;
    $dt = date("Y-m-d", $ttt);
    //   $total+=$tasks[$dt];
    ?>
    <tr>
        <td><?php 
    echo date("d.m.Y", $ttt);
    ?>
</td>
        <?php 
    foreach ($gm_employes as $k => $v) {
        $total_resp[$k] += $resp_tasks[$k][$dt];
        ?>
            <td><?php 
        echo round($resp_tasks[$k][$dt] / 60, 2);
Ejemplo n.º 15
0
 function Delete($id, $CHECK_RIGHTS = "Y")
 {
     $err_mess = CAllTicketDictionary::err_mess() . "<br>Function: Delete<br>Line: ";
     global $DB, $APPLICATION;
     $id = intval($id);
     if ($id <= 0) {
         return;
     }
     $bAdmin = "N";
     if ($CHECK_RIGHTS == "Y") {
         $bAdmin = CTicket::IsAdmin() ? "Y" : "N";
     } else {
         $bAdmin = "Y";
     }
     if ($bAdmin == "Y") {
         $DB->Query("DELETE FROM b_ticket_dictionary WHERE ID='{$id}'", false, $err_mess . __LINE__);
         $DB->Query('DELETE FROM b_ticket_dictionary_2_site WHERE DICTIONARY_ID=' . $id, false, $err_mess . __LINE__);
     }
 }
Ejemplo n.º 16
0
 function GetList(&$arSort, $arFilter = array(), &$isFiltered)
 {
     $err_mess = CTicketSLA::err_mess() . "<br>Function: GetList<br>Line: ";
     global $DB, $USER, $APPLICATION;
     $isFiltered = false;
     // filter params correct
     if (CTicket::CheckFilter($arFilter)) {
         $arSqlSearch = array();
         if (is_array($arFilter) && count($arFilter) > 0) {
             $filterKeys = array_keys($arFilter);
             $filterKeysCount = count($filterKeys);
             for ($i = 0; $i < $filterKeysCount; $i++) {
                 $key = $filterKeys[$i];
                 $val = $arFilter[$filterKeys[$i]];
                 if (is_array($val) && count($val) <= 0 || !is_array($val) && (strlen($val) <= 0 || $val === 'NOT_REF')) {
                     continue;
                 }
                 $matchValueSet = in_array($key . "_EXACT_MATCH", $filterKeys) ? true : false;
                 $key = strtoupper($key);
                 if (is_array($val)) {
                     $val = implode(" | ", $val);
                 }
                 switch ($key) {
                     case "ID":
                     case "SLA_ID":
                         $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $matchValueSet ? "Y" : "N";
                         $arSqlSearch[] = GetFilterQuery("S." . $key, $val, $match);
                         break;
                     case "NAME":
                     case "DESCRIPTION":
                     case "DEADLINE_SOURCE":
                         $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $matchValueSet ? "N" : "Y";
                         $arSqlSearch[] = GetFilterQuery("S." . $key, $val, $match);
                         break;
                     case "SITE":
                         $val .= " | ALL";
                         $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $matchValueSet ? "Y" : "N";
                         $arSqlSearch[] = GetFilterQuery("SS.SITE_ID", $val, $match);
                         $left_join_site = "LEFT JOIN b_ticket_sla_2_site SS ON (S.ID = SS.SLA_ID)";
                         break;
                 }
             }
         }
     }
     $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
     $arSort = is_array($arSort) ? $arSort : array();
     if (count($arSort) > 0) {
         $ar1 = array_merge($DB->GetTableFieldsList("b_ticket_sla"), array());
         $ar2 = array_keys($arSort);
         $arDiff = array_diff($ar2, $ar1);
         if (is_array($arDiff) && count($arDiff) > 0) {
             foreach ($arDiff as $value) {
                 unset($arSort[$value]);
             }
         }
     }
     if (count($arSort) <= 0) {
         $arSort = array("PRIORITY" => "DESC");
     }
     while (list($by, $order) = each($arSort)) {
         if (strtoupper($order) != "DESC") {
             $order = "ASC";
         }
         if ($by == "RESPONSE_TIME") {
             $arSqlOrder[] = "case RESPONSE_TIME_UNIT when 'day' then 3 when 'hour' then 2 when 'minute' then 1 end {$order}";
             $arSqlOrder[] = $by . " " . $order;
         } else {
             $arSqlOrder[] = $by . " " . $order;
         }
     }
     if (is_array($arSqlOrder) && count($arSqlOrder) > 0) {
         $strSqlOrder = " ORDER BY " . implode(",", $arSqlOrder);
     }
     $strSql = "\n\t\t\tSELECT DISTINCT\n\t\t\t\tS.*,\n\t\t\t\tcase S.RESPONSE_TIME_UNIT\n\t\t\t\t\twhen 'day' then S.RESPONSE_TIME*1440\n\t\t\t\t\twhen 'hour' then S.RESPONSE_TIME*60\n\t\t\t\t\twhen 'minute' then S.RESPONSE_TIME\n\t\t\t\t\tend\t\t\t\t\t\t\t\t\t\t\tM_RESPONSE_TIME,\n\t\t\t\tcase S.NOTICE_TIME_UNIT\n\t\t\t\t\twhen 'day' then S.NOTICE_TIME*1440\n\t\t\t\t\twhen 'hour' then S.NOTICE_TIME*60\n\t\t\t\t\twhen 'minute' then S.NOTICE_TIME\n\t\t\t\t\tend\t\t\t\t\t\t\t\t\t\t\tM_NOTICE_TIME,\n\t\t\t\tS.ID\t\t\t\t\t\t\t\t\t\t\tREFERENCE_ID,\n\t\t\t\tS.NAME\t\t\t\t\t\t\t\t\t\t\tREFERENCE,\n\t\t\t\t" . $DB->DateToCharFunction("S.DATE_MODIFY") . "\tDATE_MODIFY_F,\n\t\t\t\t" . $DB->DateToCharFunction("S.DATE_CREATE") . "\tDATE_CREATE_F\n\t\t\tFROM\n\t\t\t\tb_ticket_sla S\n\t\t\t{$left_join_site}\n\t\t\tWHERE\n\t\t\t{$strSqlSearch}\n\t\t\t{$strSqlOrder}\n\t\t\t";
     $rs = $DB->Query($strSql, false, $err_mess . __LINE__);
     $isFiltered = IsFiltered($strSqlSearch);
     return $rs;
 }
Ejemplo n.º 17
0
 public static function Delete($id, $checkRights = true)
 {
     $err_mess = CAllTicketSLA::err_mess() . "<br>Function: Delete<br>Line: ";
     global $DB, $USER, $APPLICATION;
     $id = intval($id);
     if ($id < 1) {
         return false;
     }
     if ($id == 1) {
         $APPLICATION->ThrowException(GetMessage("SUP_ERROR_SLA_1"));
         return false;
     }
     $isDemo = $isSupportClient = $isSupportTeam = $isAdmin = $isAccess = $userID = null;
     CTicket::GetRoles($isDemo, $isSupportClient, $isSupportTeam, $isAdmin, $isAccess, $userID, $checkRights);
     if ($isAdmin) {
         $strSql = "SELECT DISTINCT 'x' FROM b_ticket WHERE SLA_ID = {$id}";
         $rs = $DB->Query($strSql, false, $err_mess . __LINE__);
         if (!$rs->Fetch()) {
             $DB->Query("DELETE FROM b_ticket_sla_2_site WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
             $DB->Query("DELETE FROM b_ticket_sla_2_category WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
             $DB->Query("DELETE FROM b_ticket_sla_2_criticality WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
             $DB->Query("DELETE FROM b_ticket_sla_2_mark WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
             $DB->Query("DELETE FROM b_ticket_sla_2_user_group WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
             //$DB->Query("DELETE FROM b_ticket_sla_shedule WHERE SLA_ID = $id", false, $err_mess.__LINE__);
             $DB->Query("DELETE FROM b_ticket_sla_2_holidays WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
             $DB->Query("DELETE FROM b_ticket_sla WHERE ID = {$id}", false, $err_mess . __LINE__);
             $DB->Query("DELETE FROM b_ticket_timetable_cache WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
             return true;
         } else {
             $APPLICATION->ThrowException(str_replace("#ID#", "{$id}", GetMessage("SUP_ERROR_SLA_HAS_TICKET")));
         }
     } else {
         $APPLICATION->ThrowException(GetMessage("SUP_ERROR_ACCESS_DENIED"));
     }
     return false;
 }
Ejemplo n.º 18
0
 function SeparateSLAandTimeTable($dbType)
 {
     global $DB;
     $err_mess = CAllSupportUpdate::err_mess() . "<br>Function: SeparateSLAandTimeTable<br>Line: ";
     $strUsers = implode(",", CTicket::GetSupportTeamAndAdminUsers());
     $strSql0 = "\n\t\t\t\tb_ticket\n\t\t\t\t\tINNER JOIN (\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tTM.TICKET_ID ID,\n\t\t\t\t\t\t\tMIN(TM.ID) M_ID\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\tb_ticket_message TM\n\t\t\t\t\t\t\tINNER JOIN (\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\tT.ID ID,\n\t\t\t\t\t\t\t\t\tMAX(" . CTicket::isnull("TM.ID", "0") . ") M_ID\n\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\tb_ticket T\n\t\t\t\t\t\t\t\t\tLEFT JOIN b_ticket_message TM\n\t\t\t\t\t\t\t\t\t\tON T.ID = TM.TICKET_ID\n\t\t\t\t\t\t\t\t\t\t\tAND (TM.IS_LOG='N' OR TM.IS_LOG IS NULL OR " . $DB->Length("TM.IS_LOG") . " <= 0)\n\t\t\t\t\t\t\t\t\t\t\tAND TM.OWNER_USER_ID IN ({$strUsers})\n\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\tT.DATE_CLOSE IS NULL\n\t\t\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\t\t\tT.ID\n\t\t\t\t\t\t\t) AS Q\n\t\t\t\t\t\t\t\tON TM.TICKET_ID = Q.ID\n\t\t\t\t\t\t\t\t\tAND TM.ID > Q.M_ID\n\t\t\t\t\t\tGROUP BY\n\t\t\t\t\t\t\tTM.TICKET_ID\n\t\t\t\t\t) AS Q\n\t\t\t\t\t\tON b_ticket.ID = Q.ID\n\t\t\t\t\tINNER JOIN b_ticket_message AS M\n\t\t\t\t\t\tON Q.M_ID = M.ID\n\t\t\t";
     $updateQueries = array("b_ticket_timetable,b_ticket_sla,b_ticket_sla_shedule" => array(0 => array("MySQL" => "\n\tINSERT INTO b_ticket_timetable (NAME, DESCRIPTION)\n\t\tSELECT NAME, ID\n\t\tFROM b_ticket_sla\n\t\t\t\t\t", "MSSQL" => "\n\tINSERT INTO b_ticket_timetable (NAME, DESCRIPTION)\n\t\tSELECT NAME, CAST(CAST(ID AS varchar) AS text)\n\t\tFROM b_ticket_sla\n\t\t\t\t\t", "Oracle" => "\n\tINSERT INTO b_ticket_timetable (ID, NAME, DESCRIPTION)\n\t\tSELECT SQ_b_ticket_timetable.nextval, NAME, ID  \n\t\tFROM b_ticket_sla\n\t\t\t\t\t"), 1 => array("MySQL" => "\n\tUPDATE b_ticket_sla AS S\n\t\tINNER JOIN b_ticket_timetable AS T\n\t\t\tON (S.ID = cast(T.DESCRIPTION as UNSIGNED))\n\t\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t\t\tAND S.TIMETABLE_ID IS NULL\n\tSET S.TIMETABLE_ID = T.ID\n\t\t\t\t\t", "MSSQL" => "\n\tUPDATE b_ticket_sla\n\tSET b_ticket_sla.TIMETABLE_ID = T.ID\n\tFROM\n\t\tb_ticket_sla\n\t\tINNER JOIN b_ticket_timetable AS T\n\t\t\tON (b_ticket_sla.ID = CAST(CAST(T.DESCRIPTION AS varchar) AS int))\n\t\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t\t\tAND b_ticket_sla.TIMETABLE_ID IS NULL\n\t\t\t\t\t", "Oracle" => "\n\tUPDATE b_ticket_sla SET TIMETABLE_ID = (\n\t\tSELECT T.ID\n\t\tFROM b_ticket_timetable T\n\t\tWHERE\n\t\t\tb_ticket_sla.ID =  CAST(CAST(T.DESCRIPTION as VARCHAR2(18 CHAR)) as int)\n\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t)\n\tWHERE\n\t\tTIMETABLE_ID IS NULL\n\t\t\t\t\t"), 2 => array("MySQL" => "\n\tUPDATE b_ticket_sla_shedule AS SS\n\t\tINNER JOIN b_ticket_timetable AS T\n\t\t\tON (SS.SLA_ID = cast(T.DESCRIPTION as UNSIGNED)) \n\t\t\t\tAND T.DESCRIPTION IS NOT NULL\n\tSET SS.TIMETABLE_ID = T.ID\n\t\t\t\t\t", "MSSQL" => "\n\tUPDATE b_ticket_sla_shedule SET TIMETABLE_ID = (\n\t\tSELECT T.ID\n\t\tFROM \n\t\t\tb_ticket_timetable AS T\n\t\tWHERE\n\t\t\tb_ticket_sla_shedule.SLA_ID = CAST(CAST(T.DESCRIPTION AS varchar) AS int)\n\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t)\n\t\t\t\t\t", "Oracle" => "\n\tUPDATE b_ticket_sla_shedule SET TIMETABLE_ID = (\n\t\tSELECT T.ID\n\t\tFROM \n\t\t\tb_ticket_timetable T\n\t\tWHERE\n\t\t\tb_ticket_sla_shedule.SLA_ID = CAST(CAST(T.DESCRIPTION as VARCHAR2(18 CHAR)) as int)\n\t\t\tAND T.DESCRIPTION IS NOT NULL\n\t\t)\n\t\t\t\t\t"), 3 => array("MySQL" => "\n\tUPDATE b_ticket_timetable\n\tSET DESCRIPTION = NULL\n\t\t\t\t\t", "MSSQL" => "\n\tUPDATE b_ticket_timetable\n\tSET DESCRIPTION = NULL\n\t\t\t\t\t", "Oracle" => "\n\tUPDATE b_ticket_timetable\n\tSET DESCRIPTION = NULL\n\t\t\t\t\t")), "b_ticket" => array(0 => array("MySQL" => "\n\tUPDATE {$strSql0}\n\tSET\n\tb_ticket.D_1_USER_M_AFTER_SUP_M = M.DATE_CREATE,\n\tb_ticket.ID_1_USER_M_AFTER_SUP_M = M.ID,\n\tb_ticket.LAST_MESSAGE_BY_SUPPORT_TEAM = 'N'\n\t\t\t\t\t", "MSSQL" => "\n\tUPDATE b_ticket\n\tSET\n\tb_ticket.D_1_USER_M_AFTER_SUP_M = M.DATE_CREATE,\n\tb_ticket.ID_1_USER_M_AFTER_SUP_M = M.ID,\n\tb_ticket.LAST_MESSAGE_BY_SUPPORT_TEAM = 'N'\n\tFROM {$strSql0}\n\t\t\t\t\t", "Oracle" => "\n\tUPDATE b_ticket T0\n\tSET (D_1_USER_M_AFTER_SUP_M, ID_1_USER_M_AFTER_SUP_M, LAST_MESSAGE_BY_SUPPORT_TEAM) = (\n\t\tSELECT\n\t\t\tM.DATE_CREATE,\n\t\t\tM.ID,\n\t\t\t'N'\n\t\tFROM " . str_replace(" AS ", " ", $strSql0) . "\n\t\tWHERE b_ticket.ID = T0.ID\n\t)\n\t\t\t\t\t")));
     foreach ($updateQueries as $checkTables => $arT) {
         $arCT = explode(",", $checkTables);
         $skipU = false;
         foreach ($arCT as $n => $t) {
             if (!$DB->TableExists($t)) {
                 $skipU = true;
             }
         }
         if (!$skipU) {
             foreach ($arT as $n1 => $arQ) {
                 $arQuery = $DB->ParseSQLBatch(str_replace("\r", "", $arQ[$dbType]));
                 foreach ($arQuery as $i => $sql) {
                     $res = $DB->Query($sql, true);
                     if (!$res) {
                         return false;
                     }
                 }
             }
         }
     }
     return true;
 }
Ejemplo n.º 19
0
<?php

require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/include.php";
$bDemo = CTicket::IsDemo() ? "Y" : "N";
$bAdmin = CTicket::IsAdmin() ? "Y" : "N";
if ($bAdmin != "Y" && $bDemo != "Y") {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
IncludeModuleLangFile(__FILE__);
$sTableID = "tbl_timetable";
$oSort = new CAdminSorting($sTableID, "ID", "asc");
$lAdmin = new CAdminList($sTableID, $oSort);
$arFilterFields = array("filter_name");
$USER_FIELD_MANAGER->AdminListAddFilterFields("TIMETABLE", $arFilterFields);
$lAdmin->InitFilter($arFilterFields);
$arFilter = array();
if (strlen($filter_name) > 0) {
    $arFilter["~NAME"] = "%" . $filter_name . "%";
}
$USER_FIELD_MANAGER->AdminListAddFilter("TIMETABLE", $arFilter);
if ($arID = $lAdmin->GroupAction()) {
    if ($_REQUEST['action_target'] == 'selected') {
        $arID = array();
        $dbResultList = CSupportTimetable::GetList(array($by => $order), $arFilter);
        while ($arResult = $dbResultList->Fetch()) {
            $arID[] = $arResult['ID'];
        }
    }
    foreach ($arID as $ID) {
        if (strlen($ID) <= 0) {
Ejemplo n.º 20
0
			continue;
	}
	if ($gadget["PERFMON_ONLY"] == true)
	{
		$aGlobalOpt = CUserOptions::GetOption("global", "settings", array());
		$bShowPerfmon = (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/perfmon/install/index.php") && $aGlobalOpt['messages']['perfmon'] <> 'N');
		if (!$bShowPerfmon)
			continue;
	}
	if (
		$gadget["SUPPORT_ONLY"] == true
		&&
		(
			!CModule::IncludeModule("support")
			|| !$USER->IsAuthorized()
			|| (!CTicket::IsSupportClient() && !CTicket::IsAdmin() && !CTicket::IsSupportTeam())
		)
	)
		continue;
	if ($gadget["WIKI_ONLY"] == true && !IsModuleInstalled("wiki"))
		continue;
	if ($gadget["CRM_ONLY"] == true && !IsModuleInstalled("crm"))
		continue;
	if ($gadget["VOTE_ONLY"] == true && (!IsModuleInstalled("vote") || !CBXFeatures::IsFeatureEnabled("Vote")))
		continue;
	if ($gadget["TASKS_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("Tasks"))
		continue;
	if ($gadget["MESSENGER_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("WebMessenger"))
		continue;
	if ($gadget["ABSENCE_ONLY"] == true && !CBXFeatures::IsFeatureEnabled("StaffAbsence"))
		continue;
Ejemplo n.º 21
0
 function GetResponsibleList($userID, $CMGM = null, $CMUGM = null, $SG = null)
 {
     $condition = "";
     if ($CMGM != null) {
         $condition .= "\n\t\t\t\t\t\t\tAND TUG2.CAN_MAIL_GROUP_MESSAGES = '" . ($CMGM == "Y" ? "Y" : "N") . "'";
     }
     if ($CMUGM != null) {
         $condition .= "\n\t\t\t\t\t\t\tAND TUG2.CAN_MAIL_UPDATE_GROUP_MESSAGES = '" . ($CMUGM == "Y" ? "Y" : "N") . "'";
     }
     $condition2 = "";
     if ($SG != null) {
         $condition2 .= "\n\t\t\t\t\t\t\tAND TG.IS_TEAM_GROUP = '" . ($SG == "Y" ? "Y" : "N") . "'";
     }
     $err_mess = CTicket::err_mess() . "<br>Function: GetSupportTeamMailList<br>Line: ";
     global $DB;
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tU.ID as ID,\n\t\t\t\tU.LOGIN as LOGIN,\n\t\t\t\t" . $DB->Concat(CTicket::isnull("U.LAST_NAME", "''"), CTicket::isnull("U.NAME", "''"), 'U.LOGIN') . " as NAME,\n\t\t\t\tU.EMAIL as EMAIL\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\tSELECT\n\t\t\t\t\tTUG2.USER_ID AS USER_ID\t\t\t\t\n\t\t\t\tFROM\n\t\t\t\t\tb_ticket_ugroups TG\n\t\t\t\t\tINNER JOIN b_ticket_user_ugroup TUG\n\t\t\t\t\t\tON TG.ID = TUG.GROUP_ID" . $condition2 . "\n\t\t\t\t\tINNER JOIN b_ticket_user_ugroup TUG2\n\t\t\t\t\t\tON TUG.USER_ID = '" . intval($userID) . "'\n\t\t\t\t\t\t\tAND TUG.GROUP_ID = TUG2.GROUP_ID" . $condition . "\n\t\t\t\tGROUP BY\n\t\t\t\t\tTUG2.USER_ID\n\t\t\t\t) TU\n\t\t\t\tINNER JOIN b_user U\n\t\t\t\t\tON TU.USER_ID = U.ID\n\t\t\t\tORDER BY\n\t\t\t\t\tU.ID\n\t\n\t\t\t";
     $res = $DB->Query($strSql, false, $err_mess . __LINE__);
     return $res;
 }
Ejemplo n.º 22
0
	public static function GetResponsibleList($userID, $CMGM = null, $CMUGM = null, $SG = null)
	{
				
		$condition = "";
		if($CMGM != null) $condition .= "
							AND TUG2.CAN_MAIL_GROUP_MESSAGES = '" . ($CMGM == "Y" ? "Y" : "N") . "'";
		if($CMUGM != null) $condition .= "
							AND TUG2.CAN_MAIL_UPDATE_GROUP_MESSAGES = '" . ($CMUGM == "Y" ? "Y" : "N") . "'";
		
		$condition2 = "";
		if($SG != null) $condition2 .= "
							AND TG.IS_TEAM_GROUP = '" . ($SG == "Y" ? "Y" : "N") . "'";
		
		
		$err_mess = (CTicket::err_mess())."<br>Function: GetSupportTeamMailList<br>Line: ";
		global $DB;
		$strSql = "
			SELECT
				U.ID as ID,
				U.LOGIN as LOGIN,
				". $DB->Concat(CTicket::isnull("U.LAST_NAME", "''"), CTicket::isnull("U.NAME", "''"), 'U.LOGIN')." as NAME,
				U.EMAIL as EMAIL
			FROM
				(
				SELECT
					TUG2.USER_ID AS USER_ID				
				FROM
					b_ticket_ugroups TG
					INNER JOIN b_ticket_user_ugroup TUG
						ON TG.ID = TUG.GROUP_ID" . $condition2 . "
					INNER JOIN b_ticket_user_ugroup TUG2
						ON TUG.USER_ID = '" . intval($userID) . "'
							AND TUG.GROUP_ID = TUG2.GROUP_ID" . $condition . "
				GROUP BY
					TUG2.USER_ID
				) TU
				INNER JOIN b_user U
					ON TU.USER_ID = U.ID
				ORDER BY
					U.ID
	
			";
		$res = $DB->Query($strSql, false, $err_mess.__LINE__);
		return $res;
	}
Ejemplo n.º 23
0
 function EMailMessageAdd($arMessageFields, $ACTION_VARS)
 {
     $arActionVars = explode("&", $ACTION_VARS);
     $countAr = count($arActionVars);
     for ($i = 0; $i < $countAr; $i++) {
         $v = $arActionVars[$i];
         if ($pos = strpos($v, "=")) {
             ${substr($v, 0, $pos)} = urldecode(substr($v, $pos + 1));
         }
     }
     if (!CModule::IncludeModule("support")) {
         return false;
     }
     if (strlen($W_SUPPORT_SITE_ID) > 0) {
         $rs = CSite::GetByID($W_SUPPORT_SITE_ID);
         if ($ar = $rs->Fetch()) {
             $SITE_ID = $ar["LID"];
         }
     }
     if (strlen($SITE_ID) <= 0) {
         $SITE_ID = $arMessageFields["LID"];
     }
     $sourceMail = COption::GetOptionString("support", "SOURCE_MAIL");
     $dbr = CTicketDictionary::GetBySID($sourceMail, "SR", $SITE_ID);
     if (!($ar = $dbr->Fetch())) {
         return false;
     }
     $TICKET_SOURCE_ID = $ar["ID"];
     $ID = $arMessageFields["ID"];
     $message_email = strlen($arMessageFields["FIELD_REPLY_TO"]) > 0 ? $arMessageFields["FIELD_REPLY_TO"] : $arMessageFields["FIELD_FROM"];
     $message_email_addr = strtolower(CMailUtil::ExtractMailAddress($message_email));
     $TID = 0;
     $arSubjects = explode("\n", trim($W_SUPPORT_SUBJECT));
     $countAr = count($arSubjects);
     for ($i = 0; $i < $countAr; $i++) {
         $arSubjects[$i] = Trim($arSubjects[$i]);
         if (strlen($arSubjects[$i]) > 0) {
             if (preg_match("/" . $arSubjects[$i] . "/" . BX_UTF_PCRE_MODIFIER, $arMessageFields["SUBJECT"], $regs)) {
                 $TID = IntVal($regs[1]);
                 break;
             }
         }
     }
     if ($TID > 0) {
         $db_ticket = CTicket::GetByID($TID, $SITE_ID, "N", "N", "N");
         if ($ar_ticket = $db_ticket->Fetch()) {
             //check user email address limits
             if ($W_SUPPORT_SEC == "domain" || $W_SUPPORT_SEC == "email") {
                 $bEMailOK = false;
                 if ($TICKET_SOURCE_ID == $ar_ticket["SOURCE_ID"]) {
                     $ticket_email = strtolower(CMailUtil::ExtractMailAddress($ar_ticket["OWNER_SID"]));
                     if ($W_SUPPORT_SEC == "domain") {
                         $ticket_email = substr($ticket_email, strpos($ticket_email, "@"));
                     }
                     if (strpos($message_email_addr, $ticket_email) !== false) {
                         $bEMailOK = true;
                     }
                 }
                 if (!$bEMailOK && $ar_ticket["OWNER_USER_ID"] > 0) {
                     $db_user = CUser::GetByID($ar_ticket["OWNER_USER_ID"]);
                     if ($arUser = $db_user->Fetch()) {
                         $ticket_email = strtolower(CMailUtil::ExtractMailAddress($arUser["EMAIL"]));
                         if ($check_type == "domain") {
                             $ticket_email = substr($ticket_email, strpos($ticket_email, "@"));
                         }
                         if (strpos($message_email_addr, $ticket_email) !== false) {
                             $bEMailOK = true;
                         }
                     }
                 }
                 if (!$bEMailOK) {
                     $TID = 0;
                 }
             }
         } else {
             $TID = 0;
         }
     }
     //when message subject is empty - generate it from message body
     $title = trim($arMessageFields["SUBJECT"]);
     if (strlen($title) <= 0) {
         $title = trim($arMessageFields["BODY"]);
         $title = preg_replace("/[\n\r\t ]+/s" . BX_UTF_PCRE_MODIFIER, " ", $title);
         $title = substr($title, 0, 50);
     }
     $arFieldsTicket = array("CLOSE" => "N", "TITLE" => $title, "MESSAGE" => $arMessageFields["BODY"], "MESSAGE_AUTHOR_SID" => $message_email, "MESSAGE_SOURCE_SID" => "email", "MODIFIED_MODULE_NAME" => "mail", "EXTERNAL_ID" => $ID, "EXTERNAL_FIELD_1" => $arMessageFields["HEADER"]);
     if ($W_SUPPORT_USER_FIND == "Y") {
         $o = "LAST_LOGIN";
         $b = "DESC";
         $res = CUser::GetList($o, $b, array("ACTIVE" => "Y", "=EMAIL" => $message_email_addr));
         if (($arr = $res->Fetch()) && strtolower(CMailUtil::ExtractMailAddress($arr["EMAIL"])) == $message_email_addr) {
             $AUTHOR_USER_ID = $arr["ID"];
         }
     }
     // process attach files
     $arFILES = array();
     $rsAttach = CMailAttachment::GetList(array(), array("MESSAGE_ID" => $ID));
     while ($arAttach = $rsAttach->Fetch()) {
         // save from db to hdd
         $filename = CTempFile::GetFileName(md5(uniqid("")) . ".tmp");
         CheckDirPath($filename);
         if (file_put_contents($filename, $arAttach["FILE_DATA"]) !== false) {
             $arFILES[] = array("name" => $arAttach["FILE_NAME"], "type" => $arAttach["CONTENT_TYPE"], "size" => filesize($filename), "tmp_name" => $filename, "MODULE_ID" => "support");
         }
     }
     if (count($arFILES) > 0) {
         $arFieldsTicket["FILES"] = $arFILES;
     }
     $arFieldsTicket["CURRENT_USER_ID"] = null;
     if (intval($AUTHOR_USER_ID) > 0) {
         $resU = CUser::GetByID(intval($AUTHOR_USER_ID));
         if ($arU = $resU->Fetch()) {
             $arFieldsTicket["CURRENT_USER_ID"] = $arU["ID"];
         }
     }
     if ($TID > 0) {
         $arFieldsTicket["MESSAGE_AUTHOR_USER_ID"] = $AUTHOR_USER_ID;
         if ($W_SUPPORT_ADD_MESSAGE_AS_HIDDEN == "Y") {
             $arFieldsTicket["HIDDEN"] = "Y";
         }
         if ($arMessageFields["SPAM"] == "Y") {
             $arFieldsTicket["IS_SPAM"] = "Y";
         }
         $TID = CTicket::Set($arFieldsTicket, $MESSAGE_ID, $TID, "N");
     } else {
         $arFieldsTicket["SITE_ID"] = $SITE_ID;
         $arFieldsTicket["OWNER_USER_ID"] = $AUTHOR_USER_ID;
         $arFieldsTicket["OWNER_SID"] = $message_email;
         $arFieldsTicket["CREATED_MODULE_NAME"] = "mail";
         $arFieldsTicket["SOURCE_SID"] = "email";
         if ($arMessageFields["SPAM"] == "Y") {
             $arFieldsTicket["IS_SPAM"] = "Y";
         }
         if ($W_SUPPORT_CATEGORY > 0) {
             $arFieldsTicket["CATEGORY_ID"] = $W_SUPPORT_CATEGORY;
         }
         if ($W_SUPPORT_CRITICALITY > 0) {
             $arFieldsTicket["CRITICALITY_ID"] = $W_SUPPORT_CRITICALITY;
         }
         if (strlen(trim($arFieldsTicket["TITLE"])) <= 0) {
             $arFieldsTicket["TITLE"] = " ";
         }
         if (strlen(trim($arFieldsTicket["MESSAGE"])) <= 0) {
             $arFieldsTicket["MESSAGE"] = " ";
         }
         $TID = CTicket::Set($arFieldsTicket, $MESSAGE_ID, "", "N");
     }
 }
Ejemplo n.º 24
0
				</tr>
			</table>
			</div>
		</td>
	</tr>
	<tr>
		<td width="100%" colspan=2 align="center">
			<div id="tr_responsible">
			<table width="100%" cellspacing=0 cellpadding=0>
				<tr>
					<td align="right" width="40%"><?php 
echo GetMessage("SUP_RESPONSIBLE");
?>
</td>
					<td width="60%" align="left" style="padding-left: 10px;"><?php 
echo SelectBox("RESPONSIBLE_USER_ID", CTicket::GetSupportTeamList(), GetMessage("SUP_NO"), $str_RESPONSIBLE_USER_ID);
?>
</td>
				</tr>
			</table>
			</div>
		</td>
	</tr>
	<?php 
if ($bTab2) {
    $tabControl->BeginNextTab();
    ?>
	<tr>
		<td width="100%" colspan=2 align="center">
			<div id="events">
			<table width="100%" cellspacing="8" cellpadding="0">
Ejemplo n.º 25
0
*/
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/include.php";
$bDemo = CTicket::IsDemo() ? "Y" : "N";
$bAdmin = CTicket::IsAdmin() ? "Y" : "N";
$bSupportTeam = CTicket::IsSupportTeam() ? "Y" : "N";
if ($bAdmin != "Y" && $bSupportTeam != "Y" && $bDemo != "Y") {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
include $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/colors.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/img.php";
$diameter = intval($diameter) > 0 ? intval($diameter) : 180;
InitBVar($find_responsible_exact_match);
$arFilter = array("SITE" => $find_site, "DATE_CREATE_1" => $find_date1, "DATE_CREATE_2" => $find_date2, "RESPONSIBLE_ID" => $find_responsible_id, "RESPONSIBLE" => $find_responsible, "RESPONSIBLE_EXACT_MATCH" => $find_responsible_exact_match, "SLA" => $find_sla_id, "CATEGORY" => $find_category_id, "CRITICALITY" => $find_criticality_id, "STATUS" => $find_status_id, "MARK" => $find_mark_id, "SOURCE" => $find_source_id);
$CHECK_RIGHTS = $bDemo == "Y" ? "N" : "Y";
$rsTickets = CTicket::GetList($by, $order, $arFilter, $is_filtered, $CHECK_RIGHTS, "N", "N");
$arrMess = array();
$arrMess["2_m"] = 0;
$arrMess["3_m"] = 0;
$arrMess["4_m"] = 0;
$arrMess["5_m"] = 0;
$arrMess["6_m"] = 0;
$arrMess["7_m"] = 0;
$arrMess["8_m"] = 0;
$arrMess["9_m"] = 0;
$arrMess["10_m"] = 0;
while ($arTicket = $rsTickets->Fetch()) {
    if (strlen($arTicket["DATE_CLOSE"]) > 0) {
        $MC = $arTicket["MESSAGES"];
        if ($MC <= 2) {
            $arrMess["2_m"] += 1;
Ejemplo n.º 26
0
echo ShowFilterLogicHelp();
?>
</td>
</tr>
<?}?>

<?if ($bADS) {?>
<tr>
	<td valign="top"><?php 
echo GetMessage("SUP_F_RESPONSIBLE");
?>
:</td>
	<td><?
		$ref = $ref_id = array();
		$ref[] = GetMessage("SUP_NO"); $ref_id[] = "0";
		$z = CTicket::GetSupportTeamList();
		while ($zr = $z->Fetch())
		{
			$ref[] = $zr["REFERENCE"];
			$ref_id[] = $zr["REFERENCE_ID"];
		}
		$arr = array("REFERENCE" => $ref, "REFERENCE_ID" => $ref_id);
		echo SelectBoxFromArray("find_responsible_id", $arr, htmlspecialcharsbx($find_responsible_id), GetMessage("SUP_ALL"));
		?><br><input type="text" name="find_responsible" size="47" value="<?php 
echo htmlspecialcharsbx($find_responsible);
?>
"><?php 
echo InputType("checkbox", "find_responsible_exact_match", "Y", $find_responsible_exact_match, false, "", "title='" . GetMessage("SUP_EXACT_MATCH") . "'");
?>
&nbsp;<?php 
echo ShowFilterLogicHelp();
Ejemplo n.º 27
0
<?php

/*
##############################################
# Bitrix: SiteManager                        #
# Copyright (c) 2002 - 2011 Bitrix           #
# http://www.bitrixsoft.com                  #
# mailto:admin@bitrixsoft.com                #
##############################################
*/
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
if (CModule::IncludeModule("support") && strlen($hash) > 0 && preg_match('/^[a-z0-9]{32}$/i', $hash)) {
    $rsFiles = CTicket::GetFileList($v1 = "s_id", $v2 = "asc", array("HASH" => $hash), 'Y');
    if ($rsFiles && ($arFile = $rsFiles->Fetch())) {
        set_time_limit(0);
        $options = array();
        if ($_REQUEST["action"] == "download") {
            $options["force_download"] = true;
        }
        CFile::ViewByUser($arFile, $options);
    }
}
require $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/prolog_after.php";
ShowError(GetMessage("SUP_ERROR_ATTACH_NOT_FOUND"));
require $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog.php";
Ejemplo n.º 28
0
//Get Tickets
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
$UFA = array();
$UFAT = array();
global $USER_FIELD_MANAGER;
$arrUF = $USER_FIELD_MANAGER->GetUserFields("SUPPORT", 0, LANGUAGE_ID);
if (isset($arParams["SET_SHOW_USER_FIELD"])) {
    foreach ($arParams["SET_SHOW_USER_FIELD"] as $k => $v) {
        if (strlen(trim($v)) > 0) {
            $UFAT[$v] = array("NAME_C" => $arrUF[$v]["LIST_COLUMN_LABEL"], "NAME_F" => $arrUF[$v]["EDIT_FORM_LABEL"], "ALL" => $arrUF[$v]);
            $UFA[] = $v;
        }
    }
}
$arParams["SET_SHOW_USER_FIELD_T"] = $UFAT;
$rsTickets = CTicket::GetList($GLOBALS["by"], $GLOBALS["order"], $arFilter, $is_filtered, $check_rights = "Y", $get_user_name = "N", $get_dictionary_name = "N", false, array("SELECT" => $UFA));
$rsTickets->NavStart($arParams["TICKETS_PER_PAGE"]);
//Result array
$arResult = array("TICKETS" => array(), "TICKETS_COUNT" => $rsTickets->SelectedRowsCount(), "NAV_STRING" => $rsTickets->GetPageNavString(GetMessage("SUP_PAGES")), "CURRENT_PAGE" => htmlspecialcharsbx($APPLICATION->GetCurPage()), "NEW_TICKET_PAGE" => htmlspecialcharsbx(CComponentEngine::MakePathFromTemplate($arParams["TICKET_EDIT_TEMPLATE"], array("ID" => "0"))));
//Get Dictionary Array
$arTicketDictionary = CTicketDictionary::GetDropDownArray();
//Dictionary table
$arDictType = array("C" => "CATEGORY", "K" => "CRITICALITY", "S" => "STATUS", "M" => "MARK", "SR" => "SOURCE");
while ($arTicket = $rsTickets->GetNext()) {
    $arUsersName = _GetUserInfo($arTicket["RESPONSIBLE_USER_ID"], "RESPONSIBLE") + _GetUserInfo($arTicket["OWNER_USER_ID"], "OWNER") + _GetUserInfo($arTicket["MODIFIED_USER_ID"], "MODIFIED");
    $arDict = array();
    foreach ($arDictType as $TYPE => $CODE) {
        $arDict += _GetDictionaryInfo($arTicket[$CODE . "_ID"], $TYPE, $CODE, $arTicketDictionary);
    }
    $url = CComponentEngine::MakePathFromTemplate($arParams["TICKET_EDIT_TEMPLATE"], array("ID" => $arTicket["ID"]));
    $arResult["TICKETS"][] = $arTicket + $arDict + $arUsersName + array("TICKET_EDIT_URL" => $url);
Ejemplo n.º 29
0
<?php

require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/include.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/support/prolog.php";
IncludeModuleLangFile(__FILE__);
if (!check_bitrix_sessid("b_sessid")) {
    die;
}
if (isset($_REQUEST["action"]) && $_REQUEST["action"] === 'reindex' && isset($_REQUEST["data"]) && is_array($_REQUEST["data"])) {
    $interval = intval($_REQUEST["data"]["interval"]);
    $firstID = $_REQUEST["data"]["firstID"];
    $lastID = CSupportSearch::reindexAllTickets($firstID, $interval ?: 10);
    // build progress bar
    $maxID = CTicket::getMaxId();
    $progressBar = new CAdminMessage(array("DETAILS" => str_replace(array('#LAST_ID#', '#MAX_ID#'), array($lastID, $maxID), GetMessage('SUP_SEARCH_NDX_PROGRESS_BAR')), "HTML" => true, "TYPE" => "PROGRESS", "PROGRESS_TOTAL" => $maxID, "PROGRESS_VALUE" => $lastID));
    $progressBarHtml = $progressBar->Show();
    echo CUtil::PhpToJSObject(array('LAST_ID' => $lastID, 'BAR' => $progressBarHtml));
} elseif ($_REQUEST['MY_AJAX'] == 'restartAgentsAJAX') {
    CTicketReminder::StartAgent();
    echo json_encode(array("ALL_OK" => "OK"));
} else {
    echo '{};';
}
Ejemplo n.º 30
0
/*
##############################################
# Bitrix: SiteManager                        #
# Copyright (c) 2004 Bitrix                  #
# http://www.bitrix.ru                       #
# mailto:admin@bitrix.ru                     #
##############################################
*/

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/prolog.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/include.php");
IncludeModuleLangFile(__FILE__);

$bDemo = (CTicket::IsDemo()) ? "Y" : "N";
$bAdmin = (CTicket::IsAdmin()) ? "Y" : "N";

if($bAdmin!="Y" && $bDemo!="Y")
	$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));

//CTicket::GetRoles($isDemo, $isSupportClient, $isSupportTeam, $isAdmin, $isAccess, $USER_ID, $CHECK_RIGHTS);
//if(!$isAdmin && !$isDemo) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));

$EDIT_URL = "/bitrix/admin/ticket_sla_edit.php";
$LIST_URL = $APPLICATION->GetCurPage();

$arErrors = array();

/***************************************************************************
									Функции
****************************************************************************/