if ($found) {
        // moving up/down
        $ref = $mode == 'moveup' ? $prec : $next;
        $inc = $mode == 'moveup' ? -5 : +5;
        if ($mode == 'moveup' && $ref != $main || $mode == 'movedw' && $ref != $fid) {
            $idx = $tree['keys'][$ref];
            $order = $tree['data'][$idx]['forum_order'] + $inc;
            // update the current one
            $sql = "UPDATE " . FORUMS_TABLE . "\n\t\t\t\t\t\tSET forum_order = " . $order . "\n\t\t\t\t\t\tWHERE forum_id = " . intval(substr($fid, 1));
            $db->sql_query($sql);
        }
    }
    // reorder
    reorder_tree();
    // add topics count and various informations
    get_user_tree($user->data);
    $mode = '';
}
// resync
if ($mode == 'resync') {
    $tkeys = array();
    $tkeys = get_auth_keys($fid, true);
    for ($i = 0; $i < sizeof($tkeys['id']); $i++) {
        $wid = $tkeys['id'][$i];
        if (substr($wid, 0, 1) == POST_FORUM_URL) {
            $class_mcp->sync('forum', intval(substr($wid, 1)));
        }
    }
    // reorder
    reorder_tree();
    // end message
            }
            // update the current one
            if (substr($fid, 0, 1) == POST_FORUM_URL) {
                $sql = "UPDATE " . FORUMS_TABLE . "\n                            SET forum_order = {$order}\n                            WHERE forum_id = " . intval(substr($fid, 1));
            } else {
                $sql = "UPDATE " . CATEGORIES_TABLE . "\n                            SET cat_order = {$order}\n                            WHERE cat_id = " . intval(substr($fid, 1));
            }
            if (!$db->sql_query($sql)) {
                message_die(GENERAL_ERROR, 'Couldn\'t update order in categories/forums table', '', __LINE__, __FILE__, $sql);
            }
        }
    }
    // reorder
    reorder_tree();
    // add topics count and various informations
    get_user_tree($userdata);
    $mode = '';
}
// resync
if ($mode == 'resync') {
    $tkeys = array();
    $tkeys = get_auth_keys($fid, true);
    for ($i = 0; $i < count($tkeys['id']); $i++) {
        $wid = $tkeys['id'][$i];
        if (substr($wid, 0, 1) == POST_FORUM_URL) {
            sync('forum', intval(substr($wid, 1)));
        }
    }
    // reorder
    reorder_tree();
    // end message
Example #3
0
 function setup($lang_set = false, $style = false)
 {
     global $db, $template, $theme, $board_config, $phpEx, $phpbb_root_path, $mvModules;
     global $nav_links;
     if ($this->data['user_id'] != ANONYMOUS) {
         $this->lang_name = file_exists($phpbb_root_path . 'language/lang_' . $this->data['user_lang'] . "/lang_main.{$phpEx}") ? $this->data['user_lang'] : $board_config['default_lang'];
         $this->date_format = $this->data['user_dateformat'];
         $this->timezone = $this->data['user_timezone'] * 3600;
         $this->dst = 0;
         // Here (Dave Leave Here)
     } else {
         $this->lang_name = $board_config['default_lang'];
         $this->date_format = $board_config['default_dateformat'];
         $this->timezone = $board_config['board_timezone'] * 3600;
         $this->dst = 0;
         // Here (Dave Leave Here)
     }
     $this->lang_path = $phpbb_root_path . 'language/lang_' . $this->lang_name . '/';
     $this->lang_module_path = $phpbb_root_path . 'modules/%s/language/lang_' . $this->lang_name . '/';
     if ($board_config['override_user_style'] || $this->data['user_id'] == ANONYMOUS) {
         // Force Default or we are a Guest
         $style = $board_config['default_style'];
     } elseif (isset($_GET['style']) && $_GET['style'] != $style) {
         // Style ID Passed via GET takes priority
         global $SID;
         $style = intval($_GET['style']);
         $SID .= '&amp;style=' . $style;
     } elseif ($style === FALSE) {
         $style = $this->data['user_style'];
     }
     $inc_langs = array();
     // Languages We Need to Include.
     $inc_langs[] = 'main';
     // $inc_langs[] = 'rate'; // HOW UGLY!!!!!!!!!!!!!!!!!!!!!!!!!
     if (defined('IN_ADMIN')) {
         $inc_langs[] = 'admin';
     }
     if (defined('IN_CASHMOD')) {
         $inc_langs[] = 'cash';
     }
     foreach ($mvModules as $name => $value) {
         if ($value['state'] != 1 && $value['state'] != 5) {
             continue;
         }
         $inc_langs[] = "{$name}:main";
         if (defined('IN_ADMIN')) {
             $inc_langs[] = "{$name}:admin";
         }
     }
     $this->add_lang($inc_langs);
     $this->add_lang($lang_set);
     $this->lang_extend();
     $theme = $this->setup_style($style);
     global $mods, $list_yes_no;
     //  get all the mods settings
     $dir = @opendir($phpbb_root_path . 'includes/mods_settings');
     while (($file = @readdir($dir)) !== FALSE) {
         if (preg_match("/^mod_.*?\\." . $phpEx . "\$/", $file)) {
             include_once $phpbb_root_path . 'includes/mods_settings/' . $file;
         }
     }
     @closedir($dir);
     global $admin_level, $level_prior, $level_desc;
     global $values_list, $tables_linked, $classes_fields, $user_maps, $user_fields;
     global $list_yes_no;
     include_once $phpbb_root_path . 'profilcp/functions_profile.' . $phpEx;
     read_cookies($this->data);
     global $tree;
     if (!isset($tree['auth']) || empty($tree['auth'])) {
         get_user_tree($this->data);
     }
     $endtime = explode(' ', microtime());
     //echo (( $endtime[0] + $endtime[1] ) - $begin_t) . "<br />";
     //echo $db->num_queries - $b4;
     unset($endtime);
     //
     // Mozilla navigation bar
     // Default items that should be valid on all pages.
     // Defined here to correctly assign the Language Variables
     // and be able to change the variables within code.
     //
     $nav_links['top'] = array('url' => append_sid($phpbb_root_path . 'index.' . $phpEx), 'title' => sprintf($this->lang['Forum_Index'], $board_config['sitename']));
     $nav_links['search'] = array('url' => append_sid($phpbb_root_path . 'search.' . $phpEx), 'title' => $this->lang['Search']);
     $nav_links['help'] = array('url' => append_sid($phpbb_root_path . 'faq.' . $phpEx), 'title' => $this->lang['FAQ']);
     $nav_links['author'] = array('url' => append_sid($phpbb_root_path . 'memberlist.' . $phpEx), 'title' => $this->lang['Memberlist']);
     return;
 }
Example #4
0
 /**
  * Setup basic user-specific items (style, language, ...)
  */
 function setup($lang_set = false, $style = false)
 {
     global $db, $cache, $config, $auth, $template;
     // We need $lang declared as global to make sure we do not miss extra $lang vars added using this function
     global $theme, $images, $lang, $nav_separator;
     global $class_settings, $tree;
     // Get all settings
     $class_settings->setup_settings();
     // Mighty Gorgon - Change Lang - BEGIN
     $test_language = request_var(LANG_URL, '');
     if (!empty($test_language)) {
         $test_language = str_replace(array('.', '/'), '', urldecode($test_language));
         $config['default_lang'] = file_exists(@phpbb_realpath($this->lang_path . 'lang_' . basename($test_language) . '/lang_main.' . PHP_EXT)) ? $test_language : $config['default_lang'];
         $this->set_cookie('lang', $config['default_lang'], $user->cookie_expire);
     } else {
         if (isset($_COOKIE[$config['cookie_name'] . '_lang']) && file_exists(@phpbb_realpath($this->lang_path . 'lang_' . basename($_COOKIE[$config['cookie_name'] . '_lang']) . '/lang_main.' . PHP_EXT))) {
             $config['default_lang'] = $_COOKIE[$config['cookie_name'] . '_lang'];
         }
     }
     // Mighty Gorgon - Change Lang - END
     if ($this->data['user_id'] != ANONYMOUS) {
         $this->lang_name = file_exists($this->lang_path . 'lang_' . basename($this->data['user_lang']) . '/lang_main.' . PHP_EXT) ? basename($this->data['user_lang']) : basename($config['default_lang']);
         $this->date_format = $this->data['user_dateformat'];
         $this->timezone = $this->data['user_timezone'] * 3600;
         $this->dst = $this->data['user_dst'] * 3600;
         $config['board_timezone'] = !empty($this->data['user_timezone']) ? $this->data['user_timezone'] : $config['board_timezone'];
         $config['default_dateformat'] = !empty($this->data['user_dateformat']) ? $this->data['user_dateformat'] : $config['default_dateformat'];
         $config['topics_per_page'] = !empty($this->data['user_topics_per_page']) ? $this->data['user_topics_per_page'] : $config['topics_per_page'];
         $config['posts_per_page'] = !empty($this->data['user_posts_per_page']) ? $this->data['user_posts_per_page'] : $config['posts_per_page'];
         $config['hot_threshold'] = !empty($this->data['user_hot_threshold']) ? $this->data['user_hot_threshold'] : $config['hot_threshold'];
         // Store CMS AUTH - BEGIN
         if (empty($this->data['user_cms_auth'])) {
             $auth_array = array();
             $auth_to_get_array = array('cmsl_admin', 'cmss_admin', 'cmsb_admin');
             foreach ($auth_to_get_array as $auth_to_get) {
                 $auth_getf = $auth->acl_getf($auth_to_get, true);
                 foreach ($auth_getf as $auth_id => $auth_value) {
                     $auth_array[$auth_to_get][$auth_id] = $auth_value[$auth_to_get];
                 }
             }
             $this->data['user_cms_auth'] = $auth_array;
             $sql = "UPDATE " . USERS_TABLE . "\n\t\t\t\t\tSET user_cms_auth = '" . $db->sql_escape(serialize($this->data['user_cms_auth'])) . "'\n\t\t\t\t\tWHERE user_id = " . $this->data['user_id'];
             $db->sql_query($sql);
         } else {
             $this->data['user_cms_auth'] = unserialize($this->data['user_cms_auth']);
         }
         // Store CMS AUTH - END
     } else {
         $this->lang_name = basename($config['default_lang']);
         $this->date_format = $config['default_dateformat'];
         $this->timezone = $config['board_timezone'] * 3600;
         $this->dst = $config['board_dst'] * 3600;
     }
     // If we've had to change the value in any way then let's write it back to the database before we go any further since it means there is something wrong with it
     if ($this->data['user_id'] != ANONYMOUS && $this->data['user_lang'] !== $this->lang_name && file_exists($this->lang_path . 'lang_' . basename($this->lang_name) . '/lang_main.' . PHP_EXT)) {
         $sql = 'UPDATE ' . USERS_TABLE . "\n\t\t\t\tSET user_lang = '" . $db->sql_escape($this->lang_name) . "'\n\t\t\t\tWHERE user_lang = '" . $this->data['user_lang'] . "'";
         $result = $db->sql_query($sql);
         $this->data['user_lang'] = $this->lang_name;
     } elseif ($this->data['user_id'] === ANONYMOUS && $config['default_lang'] !== $this->lang_name && file_exists($this->lang_path . 'lang_' . basename($this->lang_name) . '/lang_main.' . PHP_EXT)) {
         $sql = 'UPDATE ' . CONFIG_TABLE . "\n\t\t\t\tSET config_value = '" . $db->sql_escape($this->lang_name) . "'\n\t\t\t\tWHERE config_name = 'default_lang'";
         $result = $db->sql_query($sql);
     }
     $config['default_lang'] = $this->lang_name;
     // We include common language file here to not load it every time a custom language file is included
     $lang =& $this->lang;
     setup_basic_lang();
     $this->add_lang($lang_set);
     unset($lang_set);
     $nav_separator = empty($nav_separator) ? empty($lang['Nav_Separator']) ? '&nbsp;&raquo;&nbsp;' : $lang['Nav_Separator'] : $nav_separator;
     if (empty($tree['auth'])) {
         get_user_tree($this->data);
     }
     // MG Logs - BEGIN
     if ($config['mg_log_actions'] || $config['db_log_actions']) {
         include IP_ROOT_PATH . 'includes/log_http_cmd.' . PHP_EXT;
     }
     // MG Logs - END
     // UPI2DB - BEGIN
     if (!defined('IN_CMS') && $this->data['upi2db_access']) {
         if (!defined('UPI2DB_UNREAD')) {
             $this->data['upi2db_unread'] = upi2db_unread();
         }
     } else {
         $this->data['upi2db_unread'] = array();
     }
     // UPI2DB - END
     // Mighty Gorgon Edit
     // DISABLED BY MG
     /*
     //if (!empty($_GET['style']) && $auth->acl_get('a_styles') && !defined('IN_ADMIN') && !defined('IN_CMS'))
     if (!empty($_GET['style']) && !defined('IN_ADMIN') && !defined('IN_CMS'))
     {
     	global $SID, $_EXTRA_URL;
     
     	$style = request_var(STYLE_URL, 0);
     	$SID .= '&amp;' . STYLE_URL . '=' . $style;
     	$_EXTRA_URL = array(STYLE_URL . '=' . $style);
     }
     else
     {
     	// Set up style
     	$style = ($style) ? $style : ((!$config['override_user_style']) ? $this->data['user_style'] : $config['default_style']);
     }
     */
     // Call phpbb_user_session_handler() in case external application want to "bend" some variables or replace classes...
     // After calling it we continue script execution...
     phpbb_user_session_handler();
     // If this function got called from the error handler we are finished here.
     if (defined('IN_ERROR_HANDLER')) {
         return;
     }
     // Disable board if the install/ directory is still present
     // For the brave development army we do not care about this, else we need to comment out this everytime we develop locally
     // DISABLED BY MG
     /*
     if (!defined('DEBUG_EXTRA') && !defined('IN_ADMIN') && !defined('IN_CMS') && !defined('IN_INSTALL') && !defined('IN_LOGIN') && file_exists(IP_ROOT_PATH . 'install') && !is_file(IP_ROOT_PATH . 'install'))
     {
     	// Adjust the message slightly according to the permissions
     	if ($auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))
     	{
     		$message = 'REMOVE_INSTALL';
     	}
     	else
     	{
     		$message = (!empty($config['board_disable_msg'])) ? $config['board_disable_msg'] : 'BOARD_DISABLE';
     	}
     	trigger_error($message);
     }
     */
     // Is board disabled and user not an admin or moderator?
     // DISABLED BY MG
     /*
     if ($config['board_disable'] && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
     {
     	if ($this->data['is_bot'])
     	{
     		send_status_line(503, 'Service Unavailable');
     	}
     
     	$message = (!empty($config['board_disable_msg'])) ? $config['board_disable_msg'] : 'BOARD_DISABLE';
     	trigger_error($message);
     }
     */
     // Is load exceeded?
     // DISABLED BY MG
     /*
     if ($config['limit_load'] && $this->load !== false)
     {
     	if ($this->load > floatval($config['limit_load']) && !defined('IN_LOGIN') && !defined('IN_ADMIN'))
     	{
     		// Set board disabled to true to let the admins/mods get the proper notification
     		$config['board_disable'] = '1';
     
     		if (!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
     		{
     			if ($this->data['is_bot'])
     			{
     				send_status_line(503, 'Service Unavailable');
     			}
     			trigger_error('BOARD_UNAVAILABLE');
     		}
     	}
     }
     */
     // DISABLED BY MG
     /*
     if (isset($this->data['session_viewonline']))
     {
     	// Make sure the user is able to hide his session
     	if (!$this->data['session_viewonline'])
     	{
     		// Reset online status if not allowed to hide the session...
     		if (!$auth->acl_get('u_hideonline'))
     		{
     			$sql = 'UPDATE ' . SESSIONS_TABLE . '
     				SET session_viewonline = 1
     				WHERE session_user_id = ' . $this->data['user_id'];
     			$db->sql_query($sql);
     			$this->data['session_viewonline'] = 1;
     		}
     	}
     	elseif (!$this->data['user_allow_viewonline'])
     	{
     		// the user wants to hide and is allowed to -> cloaking device on.
     		if ($auth->acl_get('u_hideonline'))
     		{
     			$sql = 'UPDATE ' . SESSIONS_TABLE . '
     				SET session_viewonline = 0
     				WHERE session_user_id = ' . $this->data['user_id'];
     			$db->sql_query($sql);
     			$this->data['session_viewonline'] = 0;
     		}
     	}
     }
     */
     // Set up style
     $current_default_style = $config['default_style'];
     $change_style = false;
     $is_mobile = is_mobile();
     // For debugging purpose you can force this to true
     //$this->data['is_mobile'] = true;
     // We need to store somewhere if the user has the mobile style enabled... so we can output a link to switch between mobile style and norma style
     $this->data['mobile_style'] = false;
     $disable_mobile_style = false;
     // MOBILE STYLE DISABLING - BEGIN
     // Let's check if the user wants to disable the mobile style
     if (isset($_GET['mob'])) {
         $mob_get = isset($_GET['mob']) && intval($_GET['mob']) == 0 ? 0 : 1;
         $_GET['mob'] = $mob_get;
         $_COOKIE[$config['cookie_name'] . '_mob'] = $mob_get;
         $this->set_cookie('mob', $mob_get, $user->cookie_expire);
         if (empty($mob_get)) {
             $disable_mobile_style = true;
         }
     }
     $mob_cok = isset($_COOKIE[$config['cookie_name'] . '_mob']) && intval($_COOKIE[$config['cookie_name'] . '_mob']) == 0 ? false : true;
     if (empty($mob_cok)) {
         $disable_mobile_style = true;
     }
     // MOBILE STYLE DISABLING - END
     if (empty($disable_mobile_style) && !empty($this->data['is_mobile']) && !defined('IN_CMS') && !defined('IN_ADMIN')) {
         $this->data['mobile_style'] = true;
         $_COOKIE[$config['cookie_name'] . '_mob'] = 1;
         $this->set_cookie('mob', 1, $user->cookie_expire);
         $theme = setup_mobile_style();
     } else {
         if (empty($config['override_user_style'])) {
             // Mighty Gorgon - Change Style - BEGIN
             // Check cookie as well!!!
             $test_style = request_var(STYLE_URL, 0);
             if ($test_style > 0) {
                 $config['default_style'] = urldecode($test_style);
                 $config['default_style'] = check_style_exists($config['default_style']) == false ? $current_default_style : $config['default_style'];
                 $this->set_cookie('style', $config['default_style'], $user->cookie_expire);
                 $change_style = true;
             } else {
                 if (isset($_COOKIE[$config['cookie_name'] . '_style']) && check_style_exists($_COOKIE[$config['cookie_name'] . '_style']) != false) {
                     $config['default_style'] = $_COOKIE[$config['cookie_name'] . '_style'];
                 }
             }
             // Mighty Gorgon - Change Style - END
             $style = $this->data['user_id'] != ANONYMOUS && $this->data['user_style'] > 0 && empty($change_style) ? $this->data['user_style'] : $config['default_style'];
             if ($theme = setup_style($style, $current_default_style)) {
                 if ($this->data['user_id'] != ANONYMOUS && !empty($change_style)) {
                     // user logged in --> save new style ID in user profile
                     $sql = "UPDATE " . USERS_TABLE . "\n\t\t\t\t\t\t\tSET user_style = " . $theme['themes_id'] . "\n\t\t\t\t\t\t\tWHERE user_id = " . $this->data['user_id'];
                     $db->sql_query($sql);
                     $this->data['user_style'] = $theme['themes_id'];
                 }
                 return;
             }
         }
         $theme = setup_style($config['default_style'], $current_default_style);
     }
     return;
 }