function get_user_strings() { global $user; global $include_path; $str = array(); if (isset($_SESSION['user_settings']['lang'])) { $lang = $_SESSION['user_settings']['lang']; } elseif ($this->default_lang) { $lang = $this->default_lang; } else { $lang = 'en_US'; } if (isset($_SESSION['selected_lang']) && $_SESSION['selected_lang'] == $lang && isset($_SESSION['str']) && !empty($_SESSION['str'])) { $str = -1; } if (empty($str)) { $file = 'lang/' . $lang . '.php'; require_check($file); $str = (require_once $include_path . $file); if (empty($str)) { echo 'FATAL: No language file found'; die; } $temp = array(); if (isset($str['charset'])) { $charset = $str['charset']; } else { $charset = false; } foreach ($str as $i => $v) { $temp[$i] = $user->htmlsafe($v, $charset, false, false, false, true); } $str = $temp; $_SESSION['selected_lang'] = $lang; $_SESSION['str'] = $str; } return $str; }
function get_plugins($pre_login = false, $force = false) { global $user; global $conf; global $available_display_hooks; global $available_work_hooks; global $force_plugin_reloading; global $include_path; global $fd; if (isset($conf['plugins'])) { $active_plugins = $conf['plugins']; } else { $active_plugins = array(); } $active_page_hooks = array(); $active_display_hooks = array(); $active_work_hooks = array(); $plugin_list = array(); $plugins_enabled = false; if ($force_plugin_reloading || $force || $user->just_logged_in && is_array($active_plugins)) { foreach ($active_plugins as $v) { if (is_dir('plugins' . $fd . $v . $fd)) { $file = 'plugins' . $fd . $v . $fd . 'config.php'; if (is_readable($file)) { require_check($file); require $include_path . $file; $name = $v . '_hooks'; $langs = $v . '_langs'; if (isset(${$name})) { foreach (${$name} as $type => $vals) { if ($type == 'page_hook' && $vals) { $active_page_hooks[] = $v; if (!in_array($v, $plugin_list)) { $plugin_list[] = $v; } $plugins_enabled = true; } elseif (is_array($vals)) { foreach ($vals as $val) { if (in_array($val, ${'available_' . $type})) { ${'active_' . $type}[$v][] = $val; $plugins_enabled = true; if (!in_array($v, $plugin_list)) { $plugin_list[] = $v; } } } } } } if (isset(${$langs})) { $_SESSION['plugin_strings'][$v] = ${$langs}; } } } } $plugins = array('work_hooks' => $active_work_hooks, 'display_hooks' => $active_display_hooks, 'page_hooks' => $active_page_hooks); if (!$pre_login) { $_SESSION['plugin_list'] = $plugin_list; $_SESSION['plugins'] = $plugins; $_SESSION['plugins_enabled'] = $plugins_enabled; } } else { $plugins = $_SESSION['plugins']; } return $plugins; }
function process_get_vals($get) { global $user; global $conf; global $tools; global $hastymail_version; global $imap; global $app_pages; global $include_path; global $fd; if ($user->is_ajax) { return; } if (is_array($get) && !empty($get)) { if (isset($get['mailbox']) && isset($_SESSION['folders'][$get['mailbox']])) { $user->page_data['mailbox'] = $get['mailbox']; $user->page_data['url_mailbox'] = urlencode($get['mailbox']); } if (isset($get['page'])) { switch (true) { case $get['page'] == 'logout': $this->url_action_login($get); break; case in_array($get['page'], $app_pages) && method_exists($this, 'url_action_' . $get['page']): $this->{'url_action_' . $get['page']}($get); break; default: $found = false; $page_hooks = array(); if (isset($_SESSION['plugins']['page_hooks'])) { $page_hooks = $_SESSION['plugins']['page_hooks']; } else { if (!$user->logged_in) { $plugins = get_plugins(true, true); if (isset($plugins['page_hooks'])) { $page_hooks = $plugins['page_hooks']; } } } if (!empty($page_hooks)) { foreach ($page_hooks as $plugin) { if ($plugin == $get['page']) { $file = 'plugins' . $fd . $plugin . $fd . 'page.php'; require_check($file); if (is_readable($file)) { require_once $include_path . $file; } $function_name = 'url_action_' . $plugin; if (function_exists($function_name)) { $user->dsp_page = $plugin; if (!$user->logged_in) { $tools[$plugin] = hm_new('plugin_tools', $plugin); } $user->page_data['plugin_data'][$plugin] = $function_name($tools[$plugin], $_GET, $_POST); if (is_readable('plugins/' . $plugin . '/css/' . $plugin . '.css')) { $user->page_data['plugin_css'][] = 'plugins/' . $plugin . '/css/' . $plugin . '.css'; } $found = true; break; } } } } if (!$found) { $this->url_action_not_found($get); $user->page_data['top_link'] = ''; } break; } } else { $this->url_action_not_found($get); $user->page_data['top_link'] = ''; } } else { if ($user->logged_in) { $this->url_action_mailbox($get); } else { $this->url_action_login($get); } } if (isset($_SESSION['just_logged_in']) && $_SESSION['just_logged_in']) { if (isset($_SESSION['updated'])) { $this->errors[] = sprintf($user->str[532], $hastymail_version); unset($_SESSION['updated']); } else { $this->errors[] = $user->str[383] . ' ' . $user->htmlsafe($_SESSION['user_data']['username']); } do_work_hook('just_logged_in'); if (isset($_SESSION['user_settings']['new_user']) && $_SESSION['user_settings']['new_user']) { $this->autocreate_folders(); $this->autocreate_profile($conf); do_work_hook('first_time_login'); $this->write_settings(true); $user->page_data['settings'] = $_SESSION['user_settings']; $imap->get_folders(true); $user->page_data['folders'] = $_SESSION['folders']; } if (isset($_SESSION['user_settings']['profiles'][0]) && empty($_SESSION['user_settings']['profiles'][0]) && count($_SESSION['user_settings']['profiles']) == 1) { $this->errors[] = $user->str[384]; } $this->set_default_profile($conf); } }