%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/support/classes/general/ |
Current File : //home/bitrix/www/bitrix/modules/support/classes/general/usertousergroup.php |
<? IncludeModuleLangFile(__FILE__); class CSupportUser2UserGroup { function GetList($arOrder = array(), $arFilter = array()) { global $DB; $arFields = array( 'GROUP_ID' => array( 'TABLE_ALIAS' => 'UG', 'FIELD_NAME' => 'UG.GROUP_ID', 'FIELD_TYPE' => 'int', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'USER_ID' => array( 'TABLE_ALIAS' => 'UG', 'FIELD_NAME' => 'UG.USER_ID', 'FIELD_TYPE' => 'int', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'CAN_VIEW_GROUP_MESSAGES' => array( 'TABLE_ALIAS' => 'UG', 'FIELD_NAME' => 'UG.CAN_VIEW_GROUP_MESSAGES', 'FIELD_TYPE' => 'string', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'CAN_MAIL_GROUP_MESSAGES' => array( 'TABLE_ALIAS' => 'UG', 'FIELD_NAME' => 'UG.CAN_MAIL_GROUP_MESSAGES', 'FIELD_TYPE' => 'string', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'CAN_MAIL_UPDATE_GROUP_MESSAGES' => array( 'TABLE_ALIAS' => 'UG', 'FIELD_NAME' => 'UG.CAN_MAIL_UPDATE_GROUP_MESSAGES', 'FIELD_TYPE' => 'string', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'GROUP_NAME' => array( 'TABLE_ALIAS' => 'G', 'FIELD_NAME' => 'G.NAME', 'FIELD_TYPE' => 'string', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'IS_TEAM_GROUP' => array( 'TABLE_ALIAS' => 'G', 'FIELD_NAME' => 'G.IS_TEAM_GROUP', 'FIELD_TYPE' => 'string', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'LOGIN' => array( 'TABLE_ALIAS' => 'U', 'FIELD_NAME' => 'U.LOGIN', 'FIELD_TYPE' => 'string', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'FIRST_NAME' => array( 'TABLE_ALIAS' => 'U', 'FIELD_NAME' => 'U.NAME', 'FIELD_TYPE' => 'string', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), 'LAST_NAME' => array( 'TABLE_ALIAS' => 'U', 'FIELD_NAME' => 'U.LAST_NAME', 'FIELD_TYPE' => 'string', //int, double, file, enum, int, string, date, datetime 'JOIN' => false, ), ); $strOrder = ''; if (is_array($arOrder) && count($arOrder) > 0) { foreach ($arOrder as $k => $v) { if (array_key_exists($k, $arFields)) { $v = strtoupper($v); if($v != 'DESC') { $v ='ASC'; } if (strlen($strOrder) > 0) { $strOrder .= ', '; } $strOrder .= $arFields[$k]['FIELD_NAME'] . ' ' . $v; } } } $obQueryWhere = new CSQLWhere; $obQueryWhere->SetFields($arFields); $where = $obQueryWhere->GetQuery($arFilter); $strQuery = 'SELECT ' . 'UG.GROUP_ID, UG.USER_ID, UG.CAN_VIEW_GROUP_MESSAGES, UG.CAN_MAIL_GROUP_MESSAGES, UG.CAN_MAIL_UPDATE_GROUP_MESSAGES as UG_CMUGM, '. 'G.NAME GROUP_NAME, G.IS_TEAM_GROUP, '. 'U.LOGIN, U.NAME FIRST_NAME, U.LAST_NAME ' . 'FROM b_ticket_user_ugroup UG ' . 'INNER JOIN b_ticket_ugroups G ON (UG.GROUP_ID=G.ID) ' . 'INNER JOIN b_user U ON (UG.USER_ID=U.ID) '; if (strlen($where) > 0) { $strQuery .= ' WHERE ' . $where; } if (strlen($strOrder) > 0) { $strQuery .= ' ORDER BY ' . $strOrder; } $res = $DB->Query($strQuery, false, "File: ".__FILE__."<br>Line: ".__LINE__); $res->arReplacedAliases = array('UG_CMUGM' => 'CAN_MAIL_UPDATE_GROUP_MESSAGES'); return $res; } function Add($arFields) { global $DB; if (CSupportUser2UserGroup::CheckFields($arFields)) { $arInsert = $DB->PrepareInsert('b_ticket_user_ugroup', $arFields); return $DB->Query('INSERT INTO b_ticket_user_ugroup ('.$arInsert[0].') VALUES ('.$arInsert[1].')', false, "File: ".__FILE__."<br>Line: ".__LINE__); } return false; } function Update($groupID, $userID, $arFields) { if (CSupportUser2UserGroup::CheckFields($arFields, $groupID, $userID)) { global $DB; $groupID = intval($groupID); $userID = intval($userID); $strUpdate = $DB->PrepareUpdate('b_ticket_user_ugroup', $arFields); if (strlen($strUpdate) > 0) { $strSql = "UPDATE b_ticket_user_ugroup SET $strUpdate WHERE USER_ID=$userID AND GROUP_ID=$groupID"; return $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } } return false; } 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; } function Delete($groupID, $userID) { $groupID = intval($groupID); $userID = intval($userID); if ($groupID > 0 && $userID > 0) { global $DB; return $DB->Query("DELETE FROM b_ticket_user_ugroup WHERE USER_ID=$userID AND GROUP_ID=$groupID"); } return false; } function SetGroupUsers($groupID, $arUsers) { global $APPLICATION; $groupID = intval($groupID); $ret = array(); if ($groupID > 0) { global $DB; $DB->Query('DELETE FROM b_ticket_user_ugroup WHERE GROUP_ID=' . $groupID); if (is_array($arUsers) && count($arUsers) > 0) { foreach ($arUsers as $user) { if (is_array($user) && isset($user['USER_ID']) && intval($user['USER_ID']) > 0) { $arr = array( 'GROUP_ID' => $groupID, 'USER_ID' => $user['USER_ID'], 'CAN_VIEW_GROUP_MESSAGES' => $user['CAN_VIEW_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N', 'CAN_MAIL_GROUP_MESSAGES' => $user['CAN_MAIL_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N', 'CAN_MAIL_UPDATE_GROUP_MESSAGES' => $user['CAN_MAIL_UPDATE_GROUP_MESSAGES'] == 'Y' ? 'Y' : 'N' ); if (!CSupportUser2UserGroup::Add($arr)) { if ($e = $APPLICATION->GetException()) { $ret[] = $e->GetString(); } } } } } } return $ret; } } ?>