private function prepareFields($params, $mode = self::MODE_ADD)
{
$companyName = BitrixMainConfigOption::get("main", "site_name", "");
$fields = [];
if (isset($params['LINE_NAME']) && !empty($params['LINE_NAME']))
{
$fields['LINE_NAME'] = $params['LINE_NAME'];
}
elseif ($mode == self::MODE_ADD)
{
$configCount = ModelConfigTable::getList(array(
'select' => array('CNT'),
'runtime' => array(new ExpressionField('CNT', 'COUNT(*)'))
))->fetch();
if ($configCount['CNT'] == 0)
{
$fields['LINE_NAME'] = Loc::getMessage('IMOL_CONFIG_LINE_NAME', Array('#NAME#' => $companyName));
}
if (empty($fields['LINE_NAME']))
{
$fakeLineNumber = CGlobalCounter::GetValue('imol_line_number', CGlobalCounter::ALL_SITES);
$fields['LINE_NAME'] = Loc::getMessage('IMOL_CONFIG_LINE_NAME', Array('#NAME#' => $fakeLineNumber+1));
}
}
if (BitrixMainModuleManager::isModuleInstalled('crm'))
{
if (isset($params['CRM']))
{
$fields['CRM'] = $params['CRM'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['CRM'] = 'Y';
}
}
else
{
$fields['CRM'] = 'N';
}
if (isset($params['CRM_CREATE']))
{
$fields['CRM_CREATE'] = in_array($params['CRM_CREATE'], [self::CRM_CREATE_NONE, self::CRM_CREATE_LEAD, self::CRM_CREATE_DEAL])? $params['CRM_CREATE']: self::CRM_CREATE_LEAD;
}
elseif ($mode == self::MODE_ADD)
{
$fields['CRM_CREATE'] = self::CRM_CREATE_LEAD;
}
if (isset($params['CRM_CREATE_SECOND']))
{
$fields['CRM_CREATE_SECOND'] = $params['CRM_CREATE_SECOND'];
}
elseif ($mode == self::MODE_ADD)
{
$fields['CRM_CREATE_SECOND'] = '';
}
if (isset($params['CRM_CREATE_THIRD']))
{
$fields['CRM_CREATE_THIRD'] = $params['CRM_CREATE_THIRD'] === 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['CRM_CREATE_THIRD'] = 'Y';
}
if (isset($params['CRM_FORWARD']))
{
$fields['CRM_FORWARD'] = $params['CRM_FORWARD'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['CRM_FORWARD'] = 'Y';
}
if (isset($params['CRM_CHAT_TRACKER']))
{
$fields['CRM_CHAT_TRACKER'] = $params['CRM_CHAT_TRACKER'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['CRM_CHAT_TRACKER'] = 'Y';
}
if (isset($params['CRM_TRANSFER_CHANGE']))
{
$fields['CRM_TRANSFER_CHANGE'] = $params['CRM_TRANSFER_CHANGE'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['CRM_TRANSFER_CHANGE'] = 'Y';
}
if (isset($params['CRM_SOURCE']))
{
$fields['CRM_SOURCE'] = $params['CRM_SOURCE'];
}
elseif ($mode == self::MODE_ADD)
{
$fields['CRM_SOURCE'] = self::CRM_SOURCE_AUTO_CREATE;
}
if (isset($params['QUEUE_TIME']))
{
$fields['QUEUE_TIME'] = intval($params['QUEUE_TIME']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['QUEUE_TIME'] = 60;
}
if (isset($params['NO_ANSWER_TIME']))
{
$fields['NO_ANSWER_TIME'] = intval($params['NO_ANSWER_TIME']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['NO_ANSWER_TIME'] = 60;
}
if (isset($params['MAX_CHAT']))
{
if ((int)$params['MAX_CHAT'] >= 0)
{
$fields['MAX_CHAT'] = (int)$params['MAX_CHAT'];
}
else
{
$fields['MAX_CHAT'] = 0;
}
}
elseif ($mode == self::MODE_ADD)
{
$fields['MAX_CHAT'] = 0;
}
if (isset($params['TYPE_MAX_CHAT']))
{
if (in_array($params['TYPE_MAX_CHAT'], [self::TYPE_MAX_CHAT_ANSWERED_NEW, self::TYPE_MAX_CHAT_ANSWERED, self::TYPE_MAX_CHAT_CLOSED], true))
{
$fields['TYPE_MAX_CHAT'] = $params['TYPE_MAX_CHAT'];
}
else
{
$fields['TYPE_MAX_CHAT'] = self::TYPE_MAX_CHAT_ANSWERED_NEW;
}
}
elseif ($mode == self::MODE_ADD)
{
$fields['TYPE_MAX_CHAT'] = self::TYPE_MAX_CHAT_ANSWERED;
}
if (isset($params['CATEGORY_ENABLE']))
{
$fields['CATEGORY_ENABLE'] = $params['CATEGORY_ENABLE'] == 'Y'? 'Y': 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields["CATEGORY_ENABLE"] = 'N';
}
if (isset($params['CATEGORY_ID']))
{
$fields['CATEGORY_ID'] = $fields['CATEGORY_ENABLE'] == 'Y'? intval($params['CATEGORY_ID']): 0;
}
elseif ($mode == self::MODE_ADD)
{
$fields["CATEGORY_ID"] = 0;
}
if (isset($params['SESSION_PRIORITY']))
{
$params['SESSION_PRIORITY'] = intval($params['SESSION_PRIORITY']);
$fields['SESSION_PRIORITY'] = $params['SESSION_PRIORITY'] >= 0 && $params['SESSION_PRIORITY'] <= 86400? $params['SESSION_PRIORITY']: ($params['SESSION_PRIORITY'] > 0? 86400: 0);
}
elseif ($mode == self::MODE_ADD)
{
$fields["SESSION_PRIORITY"] = 0;
}
if (isset($params['LANGUAGE_ID']))
{
$fields['LANGUAGE_ID'] = mb_substr($params['LANGUAGE_ID'], 0, 2);
}
if (isset($params['AGREEMENT_MESSAGE']))
{
$fields['AGREEMENT_MESSAGE'] = $params['AGREEMENT_MESSAGE'] == 'Y'? 'Y': 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields["AGREEMENT_MESSAGE"] = 'N';
}
if (isset($params['AGREEMENT_ID']))
{
$fields['AGREEMENT_ID'] = intval($params['AGREEMENT_ID']);
}
elseif ($mode == self::MODE_ADD)
{
$fields["AGREEMENT_ID"] = 0;
}
if (isset($params['WELCOME_BOT_ENABLE']))
{
$fields['WELCOME_BOT_ENABLE'] = $params['WELCOME_BOT_ENABLE'] == 'Y'? 'Y': 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields["WELCOME_BOT_ENABLE"] = 'N';
}
if (isset($params['WELCOME_BOT_JOIN']))
{
$fields['WELCOME_BOT_JOIN'] = $params['WELCOME_BOT_JOIN'] == self::BOT_JOIN_FIRST? self::BOT_JOIN_FIRST: self::BOT_JOIN_ALWAYS;
}
elseif ($mode == self::MODE_ADD)
{
$fields['WELCOME_BOT_JOIN'] = self::BOT_JOIN_ALWAYS;
}
if (isset($params['WELCOME_BOT_ID']))
{
$fields['WELCOME_BOT_ID'] = $fields["WELCOME_BOT_ENABLE"] == 'Y'? intval($params['WELCOME_BOT_ID']): 0;
}
elseif ($mode == self::MODE_ADD)
{
$fields['WELCOME_BOT_ID'] = 0;
}
if (isset($params['WELCOME_BOT_TIME']))
{
$fields['WELCOME_BOT_TIME'] = $fields["WELCOME_BOT_ENABLE"] == 'Y'? intval($params['WELCOME_BOT_TIME']): 600;
}
elseif ($mode == self::MODE_ADD)
{
$fields['WELCOME_BOT_TIME'] = 600;
}
if (isset($params['WELCOME_BOT_LEFT']))
{
$fields['WELCOME_BOT_LEFT'] = $fields["WELCOME_BOT_ENABLE"] == 'Y' && $params['WELCOME_BOT_LEFT'] == self::BOT_LEFT_CLOSE? self::BOT_LEFT_CLOSE: self::BOT_LEFT_QUEUE;
}
elseif ($mode == self::MODE_ADD)
{
$fields['WELCOME_BOT_LEFT'] = self::BOT_LEFT_QUEUE;
}
if (isset($params['QUEUE_TYPE']))
{
$fields['QUEUE_TYPE'] = in_array($params['QUEUE_TYPE'], Array(self::QUEUE_TYPE_STRICTLY, self::QUEUE_TYPE_ALL, self::QUEUE_TYPE_EVENLY))? $params['QUEUE_TYPE']: self::QUEUE_TYPE_ALL;
}
elseif ($mode == self::MODE_ADD)
{
$fields['QUEUE_TYPE'] = self::QUEUE_TYPE_ALL;
}
if (
isset($params['QUEUE_TYPE'])
&& $fields['QUEUE_TYPE'] == self::QUEUE_TYPE_ALL
&& !Limit::canUseQueueAll()
)
{
$fields['QUEUE_TYPE'] = self::QUEUE_TYPE_EVENLY;
}
if (isset($params['CHECK_AVAILABLE']))
{
$fields['CHECK_AVAILABLE'] = $params['CHECK_AVAILABLE'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields["CHECK_AVAILABLE"] = 'N';
}
if (isset($params['WATCH_TYPING']))
{
$fields['WATCH_TYPING'] = $params['WATCH_TYPING'] == 'Y'? 'Y': 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields["WATCH_TYPING"] = 'Y';
}
if (isset($params['WELCOME_MESSAGE']))
{
$fields['WELCOME_MESSAGE'] = $params['WELCOME_MESSAGE'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['WELCOME_MESSAGE'] = 'Y';
}
if (isset($params['SEND_WELCOME_EACH_SESSION']))
{
$fields['SEND_WELCOME_EACH_SESSION'] = $params['SEND_WELCOME_EACH_SESSION'] == 'Y'? 'Y': 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields['SEND_WELCOME_EACH_SESSION'] = 'N';
}
if (isset($params['WELCOME_MESSAGE_TEXT']))
{
$fields['WELCOME_MESSAGE_TEXT'] = Emoji::encode($params['WELCOME_MESSAGE_TEXT']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['WELCOME_MESSAGE_TEXT'] = Loc::getMessage('IMOL_CONFIG_WELCOME_MESSAGE', Array('#COMPANY_NAME#' => $companyName));
}
if (isset($params['OPERATOR_DATA']))
{
$fields['OPERATOR_DATA'] = in_array($params['OPERATOR_DATA'], Array(self::OPERATOR_DATA_PROFILE, self::OPERATOR_DATA_QUEUE, self::OPERATOR_DATA_HIDE))? $params['OPERATOR_DATA']: self::OPERATOR_DATA_PROFILE;
}
elseif ($mode == self::MODE_ADD)
{
$fields['OPERATOR_DATA'] = self::OPERATOR_DATA_PROFILE;
}
if (isset($params['DEFAULT_OPERATOR_DATA']))
{
$fields['DEFAULT_OPERATOR_DATA'] = $params['DEFAULT_OPERATOR_DATA'];
}
$defaultAuthFormId = $this->getFormForAuth();
$defaultRatingFormId = $this->getFormForRating();
$formValues = $this->getFormValues();
if (isset($params['NO_ANSWER_RULE']))
{
$fields['NO_ANSWER_RULE'] = in_array($params["NO_ANSWER_RULE"], Array(self::RULE_TEXT, self::RULE_NONE))? $params["NO_ANSWER_RULE"]: self::RULE_NONE;
}
elseif ($mode == self::MODE_ADD)
{
$fields['NO_ANSWER_RULE'] = self::RULE_NONE;
}
if (isset($params['NO_ANSWER_FORM_ID']))
{
$fields['NO_ANSWER_FORM_ID'] = isset($formValues[$params['NO_ANSWER_FORM_ID']])? $params['NO_ANSWER_FORM_ID']: $defaultAuthFormId;
}
elseif ($mode == self::MODE_ADD)
{
$fields['NO_ANSWER_FORM_ID'] = $defaultAuthFormId;
}
if (isset($params['NO_ANSWER_BOT_ID']))
{
$fields['NO_ANSWER_BOT_ID'] = intval($params['NO_ANSWER_BOT_ID']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['NO_ANSWER_BOT_ID'] = 0;
}
if (isset($params['NO_ANSWER_TEXT']))
{
$fields['NO_ANSWER_TEXT'] = $params['NO_ANSWER_TEXT'];
}
elseif ($mode == self::MODE_ADD)
{
$fields['NO_ANSWER_TEXT'] = Loc::getMessage('IMOL_CONFIG_NO_ANSWER_NEW', Array('#COMPANY_NAME#' => $companyName));
}
if (isset($params['WORKTIME_ENABLE']))
{
$fields['WORKTIME_ENABLE'] = $params['WORKTIME_ENABLE'] == 'Y'? 'Y': 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields["WORKTIME_ENABLE"] = 'N';
}
if (
isset($fields['WORKTIME_ENABLE'])
&& $fields['WORKTIME_ENABLE'] == 'Y'
&& !Limit::canWorkHourSettings()
)
{
$fields['WORKTIME_ENABLE'] = 'N';
}
if (isset($params['WORKTIME_TIMEZONE']))
{
$fields['WORKTIME_TIMEZONE'] = $params['WORKTIME_TIMEZONE'];
}
elseif ($mode == self::MODE_ADD)
{
$fields["WORKTIME_TIMEZONE"] = '';
}
if (isset($params["WORKTIME_DAYOFF"]) && is_array($params["WORKTIME_DAYOFF"]))
{
$arAvailableValues = array('MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU');
foreach($params["WORKTIME_DAYOFF"] as $key => $value)
{
if (!in_array($value, $arAvailableValues))
{
unset($params["WORKTIME_DAYOFF"][$key]);
}
}
$fields['WORKTIME_DAYOFF'] = implode(",", $params["WORKTIME_DAYOFF"]);
}
elseif ($mode == self::MODE_ADD)
{
$fields['WORKTIME_DAYOFF'] = '';
}
if (isset($params["WORKTIME_FROM"]) && isset($params["WORKTIME_TO"]))
{
preg_match("/^d{1,2}(.d{1,2})?$/i", $params["WORKTIME_FROM"], $matchesFrom);
preg_match("/^d{1,2}(.d{1,2})?$/i", $params["WORKTIME_TO"], $matchesTo);
if (isset($matchesFrom[0]) && isset($matchesTo[0]))
{
$fields['WORKTIME_FROM'] = $params['WORKTIME_FROM'];
$fields['WORKTIME_TO'] = $params['WORKTIME_TO'];
if($fields['WORKTIME_FROM'] > 23.30)
{
$fields['WORKTIME_FROM'] = 23.30;
}
if ($fields['WORKTIME_TO'] <= $fields['WORKTIME_FROM'])
{
$fields['WORKTIME_TO'] = $fields['WORKTIME_FROM'] < 23.30 ? $fields['WORKTIME_FROM'] + 1 : 23.59;
}
}
else
{
$fields['WORKTIME_FROM'] = "9";
$fields['WORKTIME_TO'] = "18.30";
}
}
elseif ($mode == self::MODE_ADD)
{
$fields['WORKTIME_FROM'] = "9";
$fields['WORKTIME_TO'] = "18.30";
}
if (isset($params['WORKTIME_HOLIDAYS']))
{
$params['WORKTIME_HOLIDAYS'] = str_replace(' ', '', $params['WORKTIME_HOLIDAYS']);
if (is_array($params['WORKTIME_HOLIDAYS']))
{
$params['WORKTIME_HOLIDAYS'] = implode(',', $params['WORKTIME_HOLIDAYS']);
}
if (preg_match("/^(d{1,2}.d{1,2},?)+$/i", $params['WORKTIME_HOLIDAYS']))
{
$fields['WORKTIME_HOLIDAYS'] = $params['WORKTIME_HOLIDAYS'];
}
else
{
$fields['WORKTIME_HOLIDAYS'] = '';
}
}
elseif ($mode == self::MODE_ADD)
{
$fields['WORKTIME_HOLIDAYS'] = '';
}
if (isset($params['WORKTIME_DAYOFF_RULE']))
{
$fields['WORKTIME_DAYOFF_RULE'] = in_array($params["WORKTIME_DAYOFF_RULE"], Array( self::RULE_TEXT, self::RULE_NONE))? $params["WORKTIME_DAYOFF_RULE"]: self::RULE_NONE;
}
elseif ($mode == self::MODE_ADD)
{
$fields['WORKTIME_DAYOFF_RULE'] = self::RULE_NONE;
}
if (isset($params['WORKTIME_DAYOFF_FORM_ID']))
{
$fields['WORKTIME_DAYOFF_FORM_ID'] = isset($formValues[$params['WORKTIME_DAYOFF_FORM_ID']])? $params['WORKTIME_DAYOFF_FORM_ID']: $defaultAuthFormId;
}
elseif ($mode == self::MODE_ADD)
{
$fields['WORKTIME_DAYOFF_FORM_ID'] = $defaultAuthFormId;
}
if (isset($params['WORKTIME_DAYOFF_BOT_ID']))
{
$fields['WORKTIME_DAYOFF_BOT_ID'] = intval($params['WORKTIME_DAYOFF_BOT_ID']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['WORKTIME_DAYOFF_BOT_ID'] = 0;
}
if (isset($params['WORKTIME_DAYOFF_TEXT']))
{
$fields['WORKTIME_DAYOFF_TEXT'] = Emoji::encode($params['WORKTIME_DAYOFF_TEXT']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['WORKTIME_DAYOFF_TEXT'] = Loc::getMessage('IMOL_CONFIG_WORKTIME_DAYOFF_3', Array('#COMPANY_NAME#' => $companyName));
}
if (isset($params['CLOSE_RULE']))
{
$fields['CLOSE_RULE'] = in_array($params["CLOSE_RULE"], Array(self::RULE_TEXT, self::RULE_QUALITY, self::RULE_NONE))? $params["CLOSE_RULE"]: self::RULE_NONE;
}
elseif ($mode == self::MODE_ADD)
{
$fields['CLOSE_RULE'] = self::RULE_QUALITY;
}
if (isset($params['CLOSE_FORM_ID']))
{
$fields['CLOSE_FORM_ID'] = isset($formValues[$params['CLOSE_FORM_ID']])? $params['CLOSE_FORM_ID']: $defaultRatingFormId;
}
elseif ($mode == self::MODE_ADD)
{
$fields['CLOSE_FORM_ID'] = $defaultRatingFormId;
}
if (isset($params['CLOSE_BOT_ID']))
{
$fields['CLOSE_BOT_ID'] = intval($params['CLOSE_BOT_ID']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['CLOSE_BOT_ID'] = 0;
}
if (isset($params['CLOSE_TEXT']))
{
$fields['CLOSE_TEXT'] = Emoji::encode($params['CLOSE_TEXT']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['CLOSE_TEXT'] = Loc::getMessage('IMOL_CONFIG_CLOSE_TEXT_2');
}
if (isset($params['VOTE_MESSAGE']))
{
$fields['VOTE_MESSAGE'] = $params['VOTE_MESSAGE'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['VOTE_MESSAGE'] = 'Y';
}
if (
isset($params['VOTE_MESSAGE'])
&& $fields['VOTE_MESSAGE'] === 'Y'
&& !Limit::canUseVoteClient()
)
{
$fields['VOTE_MESSAGE'] = 'N';
}
if (isset($params['VOTE_TIME_LIMIT']))
{
$fields['VOTE_TIME_LIMIT'] = (int)$params['VOTE_TIME_LIMIT'] > 0 ? (int)$params['VOTE_TIME_LIMIT']: 0;
}
elseif ($mode == self::MODE_ADD)
{
$fields['VOTE_TIME_LIMIT'] = 0;
}
if (isset($params['VOTE_CLOSING_DELAY']))
{
$fields['VOTE_CLOSING_DELAY'] = $params['VOTE_CLOSING_DELAY'] == 'Y'? 'Y': 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields["VOTE_CLOSING_DELAY"] = 'N';
}
if (isset($params['VOTE_BEFORE_FINISH']))
{
$fields['VOTE_BEFORE_FINISH'] = $params['VOTE_BEFORE_FINISH'] == 'Y'? 'Y': 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields["VOTE_BEFORE_FINISH"] = 'Y';
}
if (isset($params['VOTE_MESSAGE_1_TEXT']))
{
$params['VOTE_MESSAGE_1_TEXT'] = Emoji::encode($params['VOTE_MESSAGE_1_TEXT']);
$fields['VOTE_MESSAGE_1_TEXT'] = mb_substr($params['VOTE_MESSAGE_1_TEXT'], 0, 100);
}
elseif ($mode == self::MODE_ADD)
{
$fields['VOTE_MESSAGE_1_TEXT'] = Loc::getMessage('IMOL_CONFIG_VOTE_MESSAGE_1_TEXT');
}
if (isset($params['VOTE_MESSAGE_1_LIKE']))
{
$params['VOTE_MESSAGE_1_LIKE'] = Emoji::encode($params['VOTE_MESSAGE_1_LIKE']);
$fields['VOTE_MESSAGE_1_LIKE'] = mb_substr($params['VOTE_MESSAGE_1_LIKE'], 0, 100);
}
elseif ($mode == self::MODE_ADD)
{
$fields['VOTE_MESSAGE_1_LIKE'] = Loc::getMessage('IMOL_CONFIG_VOTE_MESSAGE_1_LIKE');
}
if (isset($params['VOTE_MESSAGE_1_DISLIKE']))
{
$params['VOTE_MESSAGE_1_DISLIKE'] = Emoji::encode($params['VOTE_MESSAGE_1_DISLIKE']);
$fields['VOTE_MESSAGE_1_DISLIKE'] = mb_substr($params['VOTE_MESSAGE_1_DISLIKE'], 0, 100);
}
elseif ($mode == self::MODE_ADD)
{
$fields['VOTE_MESSAGE_1_DISLIKE'] = Loc::getMessage('IMOL_CONFIG_VOTE_MESSAGE_1_DISLIKE');
}
if (isset($params['VOTE_MESSAGE_2_TEXT']))
{
$params['VOTE_MESSAGE_2_TEXT'] = Emoji::encode($params['VOTE_MESSAGE_2_TEXT']);
$fields['VOTE_MESSAGE_2_TEXT'] = $params['VOTE_MESSAGE_2_TEXT'];
}
elseif ($mode == self::MODE_ADD)
{
$fields['VOTE_MESSAGE_2_TEXT'] = Loc::getMessage('IMOL_CONFIG_VOTE_MESSAGE_2_TEXT');
}
if (isset($params['VOTE_MESSAGE_2_LIKE']))
{
$params['VOTE_MESSAGE_2_LIKE'] = Emoji::encode($params['VOTE_MESSAGE_2_LIKE']);
$fields['VOTE_MESSAGE_2_LIKE'] = $params['VOTE_MESSAGE_2_LIKE'];
}
elseif ($mode == self::MODE_ADD)
{
$fields['VOTE_MESSAGE_2_LIKE'] = Loc::getMessage('IMOL_CONFIG_VOTE_MESSAGE_2_LIKE');
}
if (isset($params['VOTE_MESSAGE_2_DISLIKE']))
{
$params['VOTE_MESSAGE_2_DISLIKE'] = Emoji::encode($params['VOTE_MESSAGE_2_DISLIKE']);
$fields['VOTE_MESSAGE_2_DISLIKE'] = $params['VOTE_MESSAGE_2_DISLIKE'];
}
elseif ($mode == self::MODE_ADD)
{
$fields['VOTE_MESSAGE_2_DISLIKE'] = Loc::getMessage('IMOL_CONFIG_VOTE_MESSAGE_2_DISLIKE');
}
if (isset($params['AUTO_CLOSE_RULE']))
{
$fields['AUTO_CLOSE_RULE'] = in_array($params["AUTO_CLOSE_RULE"], Array(self::RULE_TEXT, self::RULE_NONE))? $params["AUTO_CLOSE_RULE"]: self::RULE_NONE;
}
elseif ($mode == self::MODE_ADD)
{
$fields['AUTO_CLOSE_RULE'] = self::RULE_NONE;
}
if (isset($params['FULL_CLOSE_TIME']) && $params['FULL_CLOSE_TIME'] >=0)
{
$fields['FULL_CLOSE_TIME'] = intval($params['FULL_CLOSE_TIME']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['FULL_CLOSE_TIME'] = 10;
}
if (isset($params['AUTO_CLOSE_TIME']) && $params['AUTO_CLOSE_TIME'] >=0)
{
$fields['AUTO_CLOSE_TIME'] = intval($params['AUTO_CLOSE_TIME']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['AUTO_CLOSE_TIME'] = 14400;
}
if (isset($params['AUTO_CLOSE_FORM_ID']))
{
$fields['AUTO_CLOSE_FORM_ID'] = isset($formValues[$params['AUTO_CLOSE_FORM_ID']])? $params['AUTO_CLOSE_FORM_ID']: $defaultRatingFormId;
}
elseif ($mode == self::MODE_ADD)
{
$fields['AUTO_CLOSE_FORM_ID'] = $defaultRatingFormId;
}
if (isset($params['AUTO_CLOSE_BOT_ID']))
{
$fields['AUTO_CLOSE_BOT_ID'] = intval($params['AUTO_CLOSE_BOT_ID']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['AUTO_CLOSE_BOT_ID'] = 0;
}
if (isset($params['AUTO_CLOSE_TEXT']))
{
$fields['AUTO_CLOSE_TEXT'] = $params['AUTO_CLOSE_TEXT'];
}
elseif ($mode == self::MODE_ADD)
{
$fields['AUTO_CLOSE_TEXT'] = Loc::getMessage('IMOL_CONFIG_AUTO_CLOSE_TEXT');
}
if (isset($params['AUTO_EXPIRE_TIME']))
{
$fields['AUTO_EXPIRE_TIME'] = intval($params['AUTO_EXPIRE_TIME']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['AUTO_EXPIRE_TIME'] = 86400;
}
if (isset($params['TEMPORARY']))
{
$fields['TEMPORARY'] = $params['TEMPORARY'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['TEMPORARY'] = 'N';
}
if (isset($params['ACTIVE']))
{
$fields['ACTIVE'] = $params['ACTIVE'] == 'N'? 'N': 'Y';
}
elseif ($mode == self::MODE_ADD)
{
$fields['ACTIVE'] = 'Y';
}
if (isset($params['QUICK_ANSWERS_IBLOCK_ID']))
{
$fields['QUICK_ANSWERS_IBLOCK_ID'] = intval($params['QUICK_ANSWERS_IBLOCK_ID']);
}
if (isset($params['KPI_FIRST_ANSWER_TIME']))
{
$fields['KPI_FIRST_ANSWER_TIME'] = intval($params['KPI_FIRST_ANSWER_TIME']) > 0 ? intval($params['KPI_FIRST_ANSWER_TIME']) : 0;
}
elseif ($mode == self::MODE_ADD)
{
$fields['KPI_FIRST_ANSWER_TIME'] = 0;
}
if (isset($params['KPI_FIRST_ANSWER_ALERT']))
{
$fields['KPI_FIRST_ANSWER_ALERT'] = $params['KPI_FIRST_ANSWER_ALERT'] == 'Y' ? 'Y' : 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields['KPI_FIRST_ANSWER_ALERT'] = 'N';
}
if (isset($params['KPI_FIRST_ANSWER_LIST']))
{
$fields['KPI_FIRST_ANSWER_LIST'] = $params['KPI_FIRST_ANSWER_LIST'];
}
if (isset($params['KPI_FIRST_ANSWER_TEXT']))
{
$fields['KPI_FIRST_ANSWER_TEXT'] = htmlspecialcharsbx($params['KPI_FIRST_ANSWER_TEXT']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['KPI_FIRST_ANSWER_TEXT'] = Loc::getMessage('IMOL_CONFIG_KPI_FIRST_ANSWER_TEXT');
}
if (isset($params['KPI_FURTHER_ANSWER_TIME']))
{
$fields['KPI_FURTHER_ANSWER_TIME'] = intval($params['KPI_FURTHER_ANSWER_TIME']) > 0 ? intval($params['KPI_FURTHER_ANSWER_TIME']) : 0;
}
elseif ($mode == self::MODE_ADD)
{
$fields['KPI_FURTHER_ANSWER_TIME'] = 0;
}
if (isset($params['KPI_FURTHER_ANSWER_ALERT']))
{
$fields['KPI_FURTHER_ANSWER_ALERT'] = $params['KPI_FURTHER_ANSWER_ALERT'] == 'Y' ? 'Y' : 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields['KPI_FURTHER_ANSWER_ALERT'] = 'N';
}
if (isset($params['KPI_FURTHER_ANSWER_LIST']))
{
$fields['KPI_FURTHER_ANSWER_LIST'] = $params['KPI_FURTHER_ANSWER_LIST'];
}
if (isset($params['KPI_FURTHER_ANSWER_TEXT']))
{
$fields['KPI_FURTHER_ANSWER_TEXT'] = htmlspecialcharsbx($params['KPI_FURTHER_ANSWER_TEXT']);
}
elseif ($mode == self::MODE_ADD)
{
$fields['KPI_FURTHER_ANSWER_TEXT'] = Loc::getMessage('IMOL_CONFIG_KPI_FURTHER_ANSWER_TEXT');
}
if (isset($params['KPI_CHECK_OPERATOR_ACTIVITY']))
{
$fields['KPI_CHECK_OPERATOR_ACTIVITY'] = $params['KPI_CHECK_OPERATOR_ACTIVITY'] == 'Y' ? 'Y' : 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields['KPI_CHECK_OPERATOR_ACTIVITY'] = 'N';
}
if (isset($params['USE_WELCOME_FORM']))
{
$fields['USE_WELCOME_FORM'] = $params['USE_WELCOME_FORM'] == 'Y' ? 'Y' : 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields['USE_WELCOME_FORM'] = 'Y';
}
if (isset($params['WELCOME_FORM_ID']))
{
$fields['WELCOME_FORM_ID'] = (int)$params['WELCOME_FORM_ID'];
}
elseif ($mode == self::MODE_ADD)
{
if (Loader::includeModule('crm'))
{
$defaultWelcomeFormId = (new BitrixCrmWebFormPreset)->getInstalledId('imol_reg');
if ($defaultWelcomeFormId && (new BitrixCrmWebFormForm($defaultWelcomeFormId))->isActive())
{
$fields['WELCOME_FORM_ID'] = (int)$defaultWelcomeFormId;
}
else
{
$fields['USE_WELCOME_FORM'] = 'N';
}
}
else
{
$fields['USE_WELCOME_FORM'] = 'N';
}
}
if (isset($params['WELCOME_FORM_DELAY']))
{
$fields['WELCOME_FORM_DELAY'] = $params['WELCOME_FORM_DELAY'] == 'Y' ? 'Y' : 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields['WELCOME_FORM_DELAY'] = 'Y';
}
if (isset($params['CONFIRM_CLOSE']))
{
$fields['CONFIRM_CLOSE'] = $params['CONFIRM_CLOSE'] == 'Y' ? 'Y' : 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields['CONFIRM_CLOSE'] = 'N';
}
if (isset($params['IGNORE_WELCOME_FORM_RESPONSIBLE']))
{
$fields['IGNORE_WELCOME_FORM_RESPONSIBLE'] = $params['IGNORE_WELCOME_FORM_RESPONSIBLE'] == 'Y' ? 'Y' : 'N';
}
elseif ($mode == self::MODE_ADD)
{
$fields['IGNORE_WELCOME_FORM_RESPONSIBLE'] = 'N';
}
return $fields;
}