template = $template; $this->user = $user; $this->lang = $lang; $this->auth = $auth; $this->db = $db; $this->request = $request; $this->mchat_settings = $mchat_settings; $this->dispatcher = $dispatcher; } /** * Display the options a user can configure for this extension * * @param $u_action */ public function configuration($u_action) { add_form_key('ucp_mchat'); $error = []; if ($this->request->is_set_post('submit')) { $mchat_new_config = []; $validation = []; foreach ($this->mchat_settings->ucp_settings() as $config_name => $config_data) { if ($this->auth->acl_get('u_' . $config_name)) { $default = $this->user->data['user_' . $config_name]; settype($default, gettype($config_data['default'])); $mchat_new_config['user_' . $config_name] = $this->request->variable('user_' . $config_name, $default, is_string($default)); if (isset($config_data['validation'])) { $validation['user_' . $config_name] = $config_data['validation']; } } } $this->mchat_settings->include_functions('user', 'validate_data'); $error = array_merge($error, validate_data($mchat_new_config, $validation)); if (!check_form_key('ucp_mchat')) { $error[] = 'FORM_INVALID'; } /** * Event to modify UCP settings data before they are updated * * @event dmzx.mchat.ucp_update_data * @var array mchat_new_config Array containing the user settings data that are about to be sent to the database * @var array error Array with error lang keys * @since 2.0.0-RC7 */ $vars = [ 'mchat_new_config', 'error', ]; extract($this->dispatcher->trigger_event('dmzx.mchat.ucp_update_data', compact($vars))); if (!$error) { $sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $this->db->sql_build_array('UPDATE', $mchat_new_config) . ' WHERE user_id = ' . (int) $this->user->data['user_id']; $this->db->sql_query($sql); meta_refresh(3, $u_action); $message = $this->lang->lang('PROFILE_UPDATED') . '

' . $this->lang->lang('RETURN_UCP', '', ''); trigger_error($message); } // Replace "error" strings with their real, localised form $error = array_map([$this->lang, 'lang'], $error); } $selected_date = $this->mchat_settings->cfg('mchat_date'); $template_data = $this->mchat_settings->get_date_template_data($selected_date); $auth_count = 0; foreach (array_keys($this->mchat_settings->ucp_settings()) as $config_name) { $upper = strtoupper($config_name); $auth = $this->auth->acl_get('u_' . $config_name); $template_data[$upper] = $this->mchat_settings->cfg($config_name); $template_data[$upper . '_AUTH'] = $auth; if ($auth) { $auth_count++; } } $template_data = array_merge($template_data, [ 'MCHAT_ALLOW_USE' => $this->auth->acl_get('u_mchat_use'), 'MCHAT_POSTS_ENABLED_LANG' => $this->mchat_settings->get_enabled_post_notifications_lang(), 'ERROR' => sizeof($error) ? implode('
', $error) : '', 'MCHAT_AUTH_COUNT' => $auth_count, 'S_UCP_ACTION' => $u_action, ]); /** * Event to modify UCP settings template data * * @event dmzx.mchat.ucp_modify_template_data * @var array template_data Array containing the template data for the UCP settings * @var int auth_count Number of settings the user is authorized do see & adjust * @var array error Array with error lang keys * @since 2.0.0-RC7 */ $vars = [ 'template_data', 'auth_count', 'error', ]; extract($this->dispatcher->trigger_event('dmzx.mchat.ucp_modify_template_data', compact($vars))); $this->template->assign_vars($template_data); } }