Ejemplo n.º 1
0
 public static function Set($arFields, $id, $checkRights = true)
 {
     $err_mess = CAllTicketSLA::err_mess() . "<br>Function: Set<br>Line: ";
     global $DB, $USER, $APPLICATION;
     $id = intval($id);
     $table = "b_ticket_sla";
     $isDemo = $isSupportClient = $isSupportTeam = $isAdmin = $isAccess = $userID = null;
     CTicket::GetRoles($isDemo, $isSupportClient, $isSupportTeam, $isAdmin, $isAccess, $userID, $checkRights);
     if ($isAdmin) {
         $validDeadlineSource = !isset($arFields['DEADLINE_SOURCE']) || in_array($arFields['DEADLINE_SOURCE'], array('', 'DATE_CREATE'), true);
         if (CTicket::CheckFields($arFields, $id, array("NAME", "TIMETABLE_ID")) && $validDeadlineSource) {
             $arFields_i = CTicket::PrepareFields($arFields, $table, $id);
             if (intval($id) > 0) {
                 $DB->Update($table, $arFields_i, "WHERE ID=" . intval($id), $err_mess . __LINE__);
             } else {
                 $id = $DB->Insert($table, $arFields_i, $err_mess . __LINE__);
             }
             if (intval($id) > 0) {
                 if (is_set($arFields, "arGROUPS")) {
                     $DB->Query("DELETE FROM b_ticket_sla_2_user_group WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
                     if (is_array($arFields["arGROUPS"]) && count($arFields["arGROUPS"]) > 0) {
                         foreach ($arFields["arGROUPS"] as $groupID) {
                             $groupID = intval($groupID);
                             if ($groupID > 0) {
                                 $strSql = "INSERT INTO b_ticket_sla_2_user_group (SLA_ID, GROUP_ID) VALUES ({$id}, {$groupID})";
                                 $DB->Query($strSql, false, $err_mess . __LINE__);
                             }
                         }
                     }
                 }
                 if (is_set($arFields, "arSITES")) {
                     $DB->Query("DELETE FROM b_ticket_sla_2_site WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
                     if (is_array($arFields["arSITES"]) && count($arFields["arSITES"]) > 0) {
                         foreach ($arFields["arSITES"] as $siteID) {
                             //if (strlen($FIRST_SITE_ID)<=0) $FIRST_SITE_ID = $siteID;
                             $FIRST_SITE_ID = $siteID;
                             $siteID = $DB->ForSql($siteID);
                             $strSql = "INSERT INTO b_ticket_sla_2_site (SLA_ID, SITE_ID) VALUES ({$id}, '{$siteID}')";
                             $DB->Query($strSql, false, $err_mess . __LINE__);
                         }
                     }
                 }
                 if (is_set($arFields, "arCATEGORIES")) {
                     $DB->Query("DELETE FROM b_ticket_sla_2_category WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
                     if (is_array($arFields["arCATEGORIES"]) && count($arFields["arCATEGORIES"]) > 0) {
                         foreach ($arFields["arCATEGORIES"] as $categoryID) {
                             $categoryID = intval($categoryID);
                             $strSql = "INSERT INTO b_ticket_sla_2_category (SLA_ID, CATEGORY_ID) VALUES ({$id}, {$categoryID})";
                             $DB->Query($strSql, false, $err_mess . __LINE__);
                         }
                     }
                 }
                 if (is_set($arFields, "arCRITICALITIES")) {
                     $DB->Query("DELETE FROM b_ticket_sla_2_criticality WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
                     if (is_array($arFields["arCRITICALITIES"]) && count($arFields["arCRITICALITIES"]) > 0) {
                         foreach ($arFields["arCRITICALITIES"] as $criticalityID) {
                             $criticalityID = intval($criticalityID);
                             $strSql = "INSERT INTO b_ticket_sla_2_criticality (SLA_ID, CRITICALITY_ID) VALUES ({$id}, {$criticalityID})";
                             $DB->Query($strSql, false, $err_mess . __LINE__);
                         }
                     }
                 }
                 if (is_set($arFields, "arMARKS")) {
                     $DB->Query("DELETE FROM b_ticket_sla_2_mark WHERE SLA_ID = {$id}", false, $err_mess . __LINE__);
                     if (is_array($arFields["arMARKS"]) && count($arFields["arMARKS"]) > 0) {
                         foreach ($arFields["arMARKS"] as $markID) {
                             $markID = intval($markID);
                             $strSql = "INSERT INTO b_ticket_sla_2_mark (SLA_ID, MARK_ID) VALUES ({$id}, {$markID})";
                             $DB->Query($strSql, false, $err_mess . __LINE__);
                         }
                     }
                 }
                 /*
                 if (is_set($arFields, "arSHEDULE"))
                 {
                 	$DB->Query("DELETE FROM b_ticket_sla_shedule WHERE SLA_ID = $id", false, $err_mess.__LINE__);
                 	if (is_array($arFields["arSHEDULE"]) && count($arFields["arSHEDULE"])>0)
                 	{
                 		while(list($weekday, $arSHEDULE) = each($arFields["arSHEDULE"]))
                 		{
                 			$arF = array(
                 				"SLA_ID"			=> $id,
                 				"WEEKDAY_NUMBER"	=> intval($weekday),
                 				"OPEN_TIME"			=> "'".$DB->ForSql($arSHEDULE["OPEN_TIME"], 10)."'",
                 				);
                 			if ($arSHEDULE["OPEN_TIME"]=="CUSTOM" && is_array($arSHEDULE["CUSTOM_TIME"]) && count($arSHEDULE["CUSTOM_TIME"])>0)
                 			{
                 				foreach($arSHEDULE["CUSTOM_TIME"] as $ar)
                 				{
                 					if (strlen(trim($ar["MINUTE_FROM"]))>0 || strlen(trim($ar["MINUTE_TILL"]))>0)
                 					{
                 						$minute_from = strlen($ar["MINUTE_FROM"])>0 ? $ar["MINUTE_FROM"] : "00:00";
                 						$a = explode(":",$minute_from);
                 						$minute_from = intval($a[0]*60 + $a[1]);
                 						$arF["MINUTE_FROM"] = $minute_from;
                 
                 						$minute_till = strlen($ar["MINUTE_TILL"])>0 ? $ar["MINUTE_TILL"] : "23:59";
                 						$a = explode(":",$minute_till);
                 						$minute_till = intval($a[0]*60 + $a[1]);
                 						$arF["MINUTE_TILL"] = $minute_till;
                 
                 						$DB->Insert("b_ticket_sla_shedule", $arF, $err_mess.__LINE__);
                 					}
                 				}
                 			}
                 			else $DB->Insert("b_ticket_sla_shedule", $arF, $err_mess.__LINE__);
                 		}
                 	}
                 }
                 */
                 $FIRST_SITE_ID = strlen($FIRST_SITE_ID) > 0 ? "'" . $DB->ForSql($FIRST_SITE_ID) . "'" : "null";
                 $DB->Update($table, array("FIRST_SITE_ID" => $FIRST_SITE_ID), "WHERE ID=" . intval($id), $err_mess . __LINE__);
             }
         }
     } else {
         //$APPLICATION->ThrowException(GetMessage("SUP_ERROR_ACCESS_DENIED"));
         $arMsg = array();
         $arMsg[] = array("id" => "PERMISSION", "text" => GetMessage("SUP_ERROR_ACCESS_DENIED"));
         $e = new CAdminException($arMsg);
         $APPLICATION->ThrowException($e);
     }
     CSupportTimetableCache::toCache(array("SLA_ID" => $id));
     return $id;
 }