p_master::set_active PHP 메소드

set_active() 공개 메소드

Set active module
public set_active ( $id = false, $mode = false )
    function set_active($id = false, $mode = false)
    {
        global $request;
        $icat = false;
        $this->active_module = false;
        if ($request->variable('icat', '')) {
            $icat = $id;
            $id = $request->variable('icat', '');
        }
        // Restore the backslashes in class names
        if (strpos($id, '-') !== false) {
            $id = str_replace('-', '\\', $id);
        }
        if ($id && !is_numeric($id) && !$this->is_full_class($id)) {
            $id = $this->p_class . '_' . $id;
        }
        $category = false;
        foreach ($this->module_ary as $row_id => $item_ary) {
            // If this is a module and it's selected, active
            // If this is a category and the module is the first within it, active
            // If this is a module and no mode selected, select first mode
            // If no category or module selected, go active for first module in first category
            if (($item_ary['name'] === $id || $item_ary['name'] === $this->p_class . '_' . $id || $item_ary['id'] === (int) $id) && ($item_ary['mode'] == $mode && !$item_ary['cat'] || $icat && $item_ary['cat']) || $item_ary['parent'] === $category && !$item_ary['cat'] && !$icat && $item_ary['display'] || ($item_ary['name'] === $id || $item_ary['name'] === $this->p_class . '_' . $id || $item_ary['id'] === (int) $id) && !$mode && !$item_ary['cat'] || !$id && !$mode && !$item_ary['cat'] && $item_ary['display']) {
                if ($item_ary['cat']) {
                    $id = $icat;
                    $icat = false;
                    continue;
                }
                $this->p_id = $item_ary['id'];
                $this->p_parent = $item_ary['parent'];
                $this->p_name = $item_ary['name'];
                $this->p_mode = $item_ary['mode'];
                $this->p_left = $item_ary['left'];
                $this->p_right = $item_ary['right'];
                $this->module_cache['parents'] = $this->module_cache['parents'][$this->p_id];
                $this->active_module = $item_ary['id'];
                $this->active_module_row_id = $row_id;
                break;
            } else {
                if ($item_ary['cat'] && $item_ary['id'] === (int) $id || $item_ary['parent'] === $category && $item_ary['cat']) {
                    $category = $item_ary['id'];
                }
            }
        }
    }

Usage Example

예제 #1
0
파일: ucp.php 프로젝트: puring0815/OpenKore
    $sql = $db->sql_build_query('SELECT_DISTINCT', array('SELECT' => 'u.user_id, u.username, u.username_clean, u.user_colour, MAX(s.session_time) as online_time, MIN(s.session_viewonline) AS viewonline', 'FROM' => array(USERS_TABLE => 'u', ZEBRA_TABLE => 'z'), 'LEFT_JOIN' => array(array('FROM' => array(SESSIONS_TABLE => 's'), 'ON' => 's.session_user_id = z.zebra_id')), 'WHERE' => 'z.user_id = ' . $user->data['user_id'] . '
			AND z.friend = 1
			AND u.user_id = z.zebra_id', 'GROUP_BY' => 'z.zebra_id, u.user_id, u.username_clean, u.user_colour, u.username', 'ORDER_BY' => 'u.username_clean ASC'));
    $result = $db->sql_query($sql);
    while ($row = $db->sql_fetchrow($result)) {
        $which = time() - $update_time < $row['online_time'] && ($row['viewonline'] || $auth->acl_get('u_viewonline')) ? 'online' : 'offline';
        $template->assign_block_vars("friends_{$which}", array('USER_ID' => $row['user_id'], 'U_PROFILE' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']), 'USER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']), 'USERNAME' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']), 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'])));
    }
    $db->sql_freeresult($result);
}
// Do not display subscribed topics/forums if not allowed
if (!$config['allow_topic_notify'] && !$config['allow_forum_notify']) {
    $module->set_display('main', 'subscribed', false);
}
// Select the active module
$module->set_active($id, $mode);
// Load and execute the relevant module
$module->load_active();
// Assign data to the template engine for the list of modules
$module->assign_tpl_vars(append_sid("{$phpbb_root_path}ucp.{$phpEx}"));
// Generate the page, do not display/query online list
$module->display($module->get_page_title(), false);
/**
* Function for assigning a template var if the zebra module got included
*/
function _module_zebra($mode, &$module_row)
{
    global $template;
    $template->assign_var('S_ZEBRA_ENABLED', true);
    if ($mode == 'friends') {
        $template->assign_var('S_ZEBRA_FRIENDS_ENABLED', true);
All Usage Examples Of p_master::set_active