diff --git a/plugins/admin_multi_view/controller.php b/plugins/admin_multi_view/controller.php index 32ad18b88..f62dfeefa 100644 --- a/plugins/admin_multi_view/controller.php +++ b/plugins/admin_multi_view/controller.php @@ -11,6 +11,7 @@ if (!is_admin() or !function_exists('multiview_user_init') ) pwg_unset_session_var( 'multiview_show_queries' ); pwg_unset_session_var( 'multiview_debug_l10n' ); ?> + @@ -20,18 +21,20 @@ if (!is_admin() or !function_exists('multiview_user_init') ) $refresh_main = false; -if ( isset($_GET['view_guest']) ) +if ( isset($_GET['view_as']) ) { - pwg_set_session_var( 'multiview_as', $conf['guest_id'] ); + if ( is_adviser() and $user['id']!=$_GET['view_as'] and $conf['guest_id']!=$_GET['view_as']) + die('security error'); + pwg_set_session_var( 'multiview_as', (int)$_GET['view_as'] ); + // user change resets theme/lang + pwg_unset_session_var( 'multiview_theme' ); + pwg_unset_session_var( 'multiview_lang' ); $refresh_main = true; } -elseif ( isset($_GET['view_admin']) ) -{ - pwg_unset_session_var('multiview_as'); - $refresh_main = true; -} -$view_as = pwg_get_session_var( 'multiview_as', 0 ); - +if (pwg_get_session_var( 'multiview_as', $user['id']) != $user['id'] ) + $view_as_user = build_user( pwg_get_session_var( 'multiview_as',0), false); +else + $view_as_user = $user; if ( isset($_GET['theme']) ) { @@ -63,13 +66,47 @@ if ( isset($_GET['debug_l10n']) ) $refresh_main = true; } -$my_url = get_root_url().'plugins/'.basename(dirname(__FILE__)).'/'.basename(__FILE__); -$my_theme = get_root_url().'template/'.$user['template'].'/theme/'.$user['theme'].'/theme.css'; -$themes_html='Theme: '; +$my_url = get_root_url().'plugins/'.basename(dirname(__FILE__)).'/'.basename(__FILE__); + +// +-----------------------------------------------------------------------+ +// | users | +$query = ' +SELECT '.$conf['user_fields']['id'].' AS id,'.$conf['user_fields']['username'].' AS username +FROM '.USERS_TABLE; +if (is_adviser()) +{ + $query .=' + WHERE '.$conf['user_fields']['id']. ' IN ('.$user['id'].','.$conf['guest_id'].') +'; +} +$query .=' + ORDER BY CONVERT('.$conf['user_fields']['username'].',CHAR) +;'; +$user_map = simple_hash_from_query($query, 'id', 'username'); + +$users_html = ''; +foreach( $user_map as $id=>$username) +{ + $selected = ($id==$view_as_user['id']) ? 'selected="selected"' : ''; + $users_html .= + '' + .$username + .''; +} +$users_html.= ''; + + +// +-----------------------------------------------------------------------+ +// | templates | +$my_template = ''; +$themes_html=''; foreach (get_pwg_themes() as $pwg_template) { - $selected = $pwg_template == pwg_get_session_var( 'multiview_theme', $user['template'].'/'.$user['theme'] ) ? 'selected="selected"' : ''; + $selected = $pwg_template == pwg_get_session_var( 'multiview_theme', $view_as_user['template'].'/'.$view_as_user['theme'] ) ? 'selected="selected"' : ''; + $my_template = $selected == '' ? $my_template : $view_as_user['template'].'/theme/'.$view_as_user['theme']; $themes_html .= ''; +// +-----------------------------------------------------------------------+ +// | language | +$lang_html=''; foreach (get_languages() as $language_code => $language_name) { - $selected = $language_code == pwg_get_session_var( 'multiview_lang', $user['language'] ) ? 'selected="selected"' : ''; + $selected = $language_code == pwg_get_session_var( 'multiview_lang', $view_as_user['language'] ) ? 'selected="selected"' : ''; $lang_html .= 'Show SQL queries'; else $show_queries_html.='Hide SQL queries'; } +// +-----------------------------------------------------------------------+ +// | debug language | $debug_l10n_html=''; -if (!$conf['show_queries']) +if (!$conf['debug_l10n']) { - $debug_l10n_html = ''; if ( !pwg_get_session_var( 'multiview_debug_l10n', 0 ) ) $debug_l10n_html.='Debug language'; else $debug_l10n_html.='Revert debug language'; } -?> +?> Controller - - - +'; +} +?> + + + -View as: -admin'; - else - echo 'guest'; -?> + +User - - +Theme - - - - - +Lang + +\n", array($show_queries_html, $debug_l10n_html) ); ?> - + -