template = $template;
$this->user = $user;
$this->auth = $auth;
$this->db = $db;
$this->request = $request;
$this->settings = $settings;
$this->dispatcher = $dispatcher;
$this->root_path = $root_path;
$this->php_ext = $php_ext;
}
/**
* Display the options a user can configure for this extension
*
* @param $u_action
*/
public function configuration($u_action)
{
add_form_key('ucp_mchat');
$error = array();
if ($this->request->is_set_post('submit'))
{
$mchat_new_config = array();
$validation = array();
foreach ($this->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'];
}
}
}
if (!function_exists('validate_data'))
{
include($this->root_path . 'includes/functions_user.' . $this->php_ext);
}
$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 = array(
'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->user->lang('PROFILE_UPDATED') . '
' . $this->user->lang('RETURN_UCP', '', '');
trigger_error($message);
}
// Replace "error" strings with their real, localised form
$error = array_map(array($this->user, 'lang'), $error);
}
$selected_date = $this->settings->cfg('mchat_date');
$template_data = $this->settings->get_date_template_data($selected_date);
$auth_count = 0;
foreach (array_keys($this->settings->ucp_settings()) as $config_name)
{
$upper = strtoupper($config_name);
$auth = $this->auth->acl_get('u_' . $config_name);
$template_data[$upper] = $this->settings->cfg($config_name);
$template_data[$upper . '_AUTH'] = $auth;
if ($auth)
{
$auth_count++;
}
}
$template_data = array_merge($template_data, array(
'MCHAT_POSTS_ENABLED_LANG' => $this->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 = array(
'template_data',
'auth_count',
'error',
);
extract($this->dispatcher->trigger_event('dmzx.mchat.ucp_modify_template_data', compact($vars)));
$this->template->assign_vars($template_data);
}
}