/** * Prepare some data for chat for both user and operator * * @param Thread $thread thread object * @return array Array of chat view data */ function setup_chatview(Thread $thread) { $data = prepare_chat_app_data(); // Get group info if (!empty($thread->groupId)) { $group = group_by_id($thread->groupId); $group = get_top_level_group($group); } else { $group = array(); } // Create some empty arrays $data['chat'] = array('messageForm' => array(), 'links' => array(), 'windowsParams' => array()); // Set thread params $data['chat']['thread'] = array('id' => $thread->id, 'token' => $thread->lastToken, 'agentId' => $thread->agentId, 'userId' => $thread->userId); $data['page.title'] = empty($group['vcchattitle']) ? Settings::get('chattitle') : $group['vcchattitle']; $data['chat']['page'] = array('title' => $data['page.title']); // Setup logo $data = array_merge_recursive($data, setup_logo($group)); // Set enter key shortcut if (Settings::get('sendmessagekey') == 'enter') { $data['chat']['messageForm']['ignoreCtrl'] = true; } else { $data['chat']['messageForm']['ignoreCtrl'] = false; } // Load dialogs style options $chat_style = new ChatStyle(ChatStyle::getCurrentStyle()); $style_config = $chat_style->getConfigurations(); $data['chat']['windowsParams']['mail'] = $style_config['mail']['window']; // Load core style options $page_style = new PageStyle(PageStyle::getCurrentStyle()); $style_config = $page_style->getConfigurations(); $data['chat']['windowsParams']['history'] = $style_config['history']['window']; $data['startFrom'] = 'chat'; return $data; }
/** * Processes submitting of the form which is generated in * {@link \Mibew\Controller\Settings\CommonController::showFormAction()} * method. * * @param Request $request Incoming request. * @return string Rendered page content. * @throws BadRequestException If one or more parameters of the request have * wrong format. */ public function submitFormAction(Request $request) { csrf_check_token($request); $errors = array(); $params = array(); $params['email'] = $request->request->get('email'); $params['title'] = $request->request->get('title'); $params['logo'] = $request->request->get('logo'); $params['hosturl'] = $request->request->get('hosturl'); $params['usernamepattern'] = $request->request->get('usernamepattern'); $params['chattitle'] = $request->request->get('chattitle'); $params['geolink'] = $request->request->get('geolink'); $params['geolinkparams'] = $request->request->get('geolinkparams'); $params['cron_key'] = $request->request->get('cronkey'); $send_key = $request->request->get('sendmessagekey'); if (!preg_match("/^c?enter\$/", $send_key)) { throw new BadRequestException('Wrong format of "sendmessagekey" field.'); } $params['sendmessagekey'] = $send_key; $params['left_messages_locale'] = $request->request->get('leftmessageslocale'); if (!in_array($params['left_messages_locale'], get_available_locales())) { $params['left_messages_locale'] = get_home_locale(); } if ($params['email'] && !MailUtils::isValidAddress($params['email'])) { $errors[] = getlocal('Enter a valid email address'); } if ($params['geolinkparams']) { foreach (explode(',', $params['geolinkparams']) as $one_param) { $wrong_param = !preg_match("/^\\s*(toolbar|scrollbars|location|status|menubar|width|height|resizable)=\\d{1,4}\$/", $one_param); if ($wrong_param) { $errors[] = "Wrong link parameter: \"{$one_param}\", " . "should be one of 'toolbar, scrollbars, location, " . "status, menubar, width, height or resizable'"; } } } if (preg_match("/^[0-9A-Za-z]*\$/", $params['cron_key']) == 0) { $errors[] = getlocal('Use only Latin letters(upper and lower case) and numbers in cron key.'); } // Load styles configs $chat_style = $request->request->get('chat_style', ChatStyle::getDefaultStyle()); $chat_style_list = ChatStyle::getAvailableStyles(); if (!in_array($chat_style, $chat_style_list)) { $chat_style = $chat_style_list[0]; } $page_style = $request->request->get('page_style', PageStyle::getDefaultStyle()); $page_style_list = PageStyle::getAvailableStyles(); if (!in_array($page_style, $page_style_list)) { $page_style = $page_style_list[0]; } if (Settings::get('enabletracking')) { $invitation_style = $request->request->get('invitation_style', InvitationStyle::getDefaultStyle()); $invitation_style_list = InvitationStyle::getAvailableStyles(); if (!in_array($invitation_style, $invitation_style_list)) { $invitation_style = $invitation_style_list[0]; } } if (count($errors) != 0) { $request->attributes->set('errors', $errors); // The form should be rebuild. Invoke appropriate action. return $this->showFormAction($request); } // Update system settings foreach ($params as $key => $value) { Settings::set($key, $value); } // Update styles params ChatStyle::setDefaultStyle($chat_style); PageStyle::setDefaultStyle($page_style); if (Settings::get('enabletracking')) { InvitationStyle::setDefaultStyle($invitation_style); } // Redirect the user to the same page using GET method $redirect_to = $this->generateUrl('settings_common', array('stored' => true)); return $this->redirect($redirect_to); }
/** * Returns style object related with the controller. * * The method can be overridden in child classes to implement style choosing * logic. * * @return StyleInterface * @todo Update the method after rewriting style choosing logic */ protected function getStyle() { if (is_null($this->style)) { $this->style = $this->prepareStyle(new PageStyle(PageStyle::getDefaultStyle())); } return $this->style; }