Пример #1
0
/**
* Shows the user their menu options
*
* This shows the average Joe User their menu options. This is the user block on the left side
*
* @param        string      $help       Help file to show
* @param        string      $title      Title of Menu
* @param        string      $position   Side being shown on 'left', 'right'. Though blank works not likely.
* @see function COM_adminMenu
*
*/
function COM_userMenu($help = '', $title = '', $position = '')
{
    global $_TABLES, $_CONF, $LANG01, $LANG04, $_BLOCK_TEMPLATE;
    $retval = '';
    if (!COM_isAnonUser()) {
        $usermenu = COM_newTemplate($_CONF['path_layout']);
        if (isset($_BLOCK_TEMPLATE['useroption'])) {
            $templates = explode(',', $_BLOCK_TEMPLATE['useroption']);
            $usermenu->set_file(array('option' => $templates[0], 'current' => $templates[1]));
        } else {
            $usermenu->set_file(array('option' => 'useroption.thtml', 'current' => 'useroption_off.thtml'));
        }
        $usermenu->set_var('block_name', str_replace('_', '-', 'user_block'));
        if (empty($title)) {
            $title = DB_getItem($_TABLES['blocks'], 'title', "name='user_block'");
        }
        // what's our current URL?
        $thisUrl = COM_getCurrentURL();
        $retval .= COM_startBlock($title, $help, COM_getBlockTemplate('user_block', 'header', $position));
        // This function will show the user options for all installed plugins
        // (if any)
        $plugin_options = PLG_getUserOptions();
        $nrows = count($plugin_options);
        for ($i = 0; $i < $nrows; $i++) {
            $plg = current($plugin_options);
            $usermenu->set_var('option_label', $plg->adminlabel);
            if (!empty($plg->numsubmissions)) {
                $usermenu->set_var('option_count', '(' . $plg->numsubmissions . ')');
            } else {
                $usermenu->set_var('option_count', '');
            }
            $usermenu->set_var('option_url', $plg->adminurl);
            if ($thisUrl == $plg->adminurl) {
                $retval .= $usermenu->parse('item', 'current');
            } else {
                $retval .= $usermenu->parse('item', 'option');
            }
            next($plugin_options);
        }
        $url = $_CONF['site_url'] . '/usersettings.php';
        $usermenu->set_var('option_label', $LANG01[48]);
        $usermenu->set_var('option_count', '');
        $usermenu->set_var('option_url', $url);
        if ($thisUrl == $url) {
            $retval .= $usermenu->parse('item', 'current');
        } else {
            $retval .= $usermenu->parse('item', 'option');
        }
        $url = $_CONF['site_url'] . '/users.php?mode=logout';
        $usermenu->set_var('option_label', $LANG01[19]);
        $usermenu->set_var('option_count', '');
        $usermenu->set_var('option_url', $url);
        $retval .= $usermenu->finish($usermenu->parse('item', 'option'));
        $retval .= COM_endBlock(COM_getBlockTemplate('user_block', 'footer', $position));
    } else {
        $retval .= COM_startBlock($LANG01[47], $help, COM_getBlockTemplate('user_block', 'header', $position));
        $login = COM_newTemplate($_CONF['path_layout']);
        $login->set_file('form', 'loginform.thtml');
        $login->set_var('lang_username', $LANG01[21]);
        $login->set_var('lang_password', $LANG01[57]);
        $login->set_var('lang_forgetpassword', $LANG01[119]);
        $login->set_var('lang_login', $LANG01[58]);
        if ($_CONF['disable_new_user_registration']) {
            $login->set_var('lang_signup', '');
        } else {
            $login->set_var('lang_signup', $LANG01[59]);
        }
        // 3rd party remote authentification.
        if ($_CONF['user_login_method']['3rdparty'] && !$_CONF['usersubmission']) {
            $modules = SEC_collectRemoteAuthenticationModules();
            if (count($modules) == 0) {
                $user_templates->set_var('services', '');
            } else {
                if (!$_CONF['user_login_method']['standard'] && count($modules) == 1) {
                    $select = '<input type="hidden" name="service" value="' . $modules[0] . '"' . XHTML . '>' . $modules[0];
                } else {
                    // Build select
                    $select = '<select name="service" id="service">';
                    if ($_CONF['user_login_method']['standard']) {
                        $select .= '<option value="">' . $_CONF['site_name'] . '</option>';
                    }
                    foreach ($modules as $service) {
                        $select .= '<option value="' . $service . '">' . $service . '</option>';
                    }
                    $select .= '</select>';
                }
                $login->set_file('services', 'blockservices.thtml');
                $login->set_var('lang_service', $LANG04[121]);
                $login->set_var('select_service', $select);
                $login->parse('output', 'services');
                $login->set_var('services', $login->finish($login->get_var('output')));
            }
        } else {
            $login->set_var('services', '');
        }
        // OpenID remote authentification.
        if ($_CONF['user_login_method']['openid'] && $_CONF['usersubmission'] == 0 && !$_CONF['disable_new_user_registration']) {
            $login->set_file('openid_login', 'loginform_openid.thtml');
            $login->set_var('lang_openid_login', $LANG01[128]);
            $login->set_var('input_field_size', 18);
            $login->set_var('app_url', $_CONF['site_url'] . '/users.php');
            $login->parse('output', 'openid_login');
            $login->set_var('openid_login', $login->finish($login->get_var('output')));
        } else {
            $login->set_var('openid_login', '');
        }
        // OAuth remote authentification.
        if ($_CONF['user_login_method']['oauth'] && $_CONF['usersubmission'] == 0 && !$_CONF['disable_new_user_registration']) {
            $modules = SEC_collectRemoteOAuthModules();
            if (count($modules) == 0) {
                $login->set_var('oauth_login', '');
            } else {
                $html_oauth = '';
                foreach ($modules as $service) {
                    $login->set_file('oauth_login', 'loginform_oauth.thtml');
                    $login->set_var('oauth_service', $service);
                    // for sign in image
                    $login->set_var('oauth_sign_in_image', $_CONF['site_url'] . '/images/login-with-' . $service . '.png');
                    $login->set_var('oauth_sign_in_image_style', '');
                    $login->parse('output', 'oauth_login');
                    $html_oauth .= $login->finish($login->get_var('output'));
                }
                $login->set_var('oauth_login', $html_oauth);
            }
        } else {
            $login->set_var('oauth_login', '');
        }
        PLG_templateSetVars('loginblock', $login);
        $retval .= $login->finish($login->parse('output', 'form'));
        $retval .= COM_endBlock(COM_getBlockTemplate('user_block', 'footer', $position));
    }
    return $retval;
}
Пример #2
0
function getUserMenu()
{
    global $_SP_CONF, $_USER, $_TABLES, $LANG01, $LANG_MB01, $LANG_LOGO, $LANG_AM, $LANG29, $_CONF, $_DB_dbms, $_GROUPS;
    $item_array = array();
    if (!COM_isAnonUser()) {
        $plugin_options = PLG_getAdminOptions();
        $num_plugins = count($plugin_options);
        if (SEC_isModerator() or SEC_hasRights('story.edit,block.edit,topic.edit,user.edit,plugin.edit,user.mail,syndication.edit', 'OR') or $num_plugins > 0) {
            $url = $_CONF['site_admin_url'] . '/index.php';
            $label = $LANG29[34];
            $item_array[] = array('label' => $label, 'url' => $url);
        }
        // what's our current URL?
        $elementUrl = COM_getCurrentURL();
        $plugin_options = PLG_getUserOptions();
        $nrows = count($plugin_options);
        for ($i = 0; $i < $nrows; $i++) {
            $plg = current($plugin_options);
            $label = $plg->adminlabel;
            if (!empty($plg->numsubmissions)) {
                $label .= ' (' . $plg->numsubmissions . ')';
            }
            $url = $plg->adminurl;
            $item_array[] = array('label' => $label, 'url' => $url);
            next($plugin_options);
        }
        $url = $_CONF['site_url'] . '/usersettings.php?mode=edit';
        $label = $LANG01[48];
        $item_array[] = array('label' => $label, 'url' => $url);
        $url = $_CONF['site_url'] . '/users.php?mode=logout';
        $label = $LANG01[19];
        $item_array[] = array('label' => $label, 'url' => $url);
    } else {
        $url = $_CONF['site_url'] . '/users.php?mode=login';
        $label = $LANG01[58];
        $item_array[] = array('label' => $label, 'url' => $url);
    }
    return $item_array;
}