websiteWebsite
codingteam CodingTeam
A free forge, lightweight and extensible.

 

Browse the code

Revision log Information on the revision
Revision: 511 (differences)
Author: xbright
Log message: * Enhanced roadmap
Change revision:
<?php
//   This file is a part of CodingTeam. Take a look at <http://codingteam.org>.
//   Copyright © 2007-2012 Erwan Briand <erwan@codingteam.net>
//
//   This program is free software: you can redistribute it and/or modify it
//   under the terms of the GNU Affero General Public License as published by
//   the Free Software Foundation, version 3 only.
//
//   This program is distributed in the hope that it will be useful, but
//   WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
//   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
//   License for more details.
//
//   You should have received a copy of the GNU Affero General Public License
//   along with this program. If not, see <http://www.gnu.org/licenses/>.
 
class head_member {
    private $ct_session, $ct_db, $page;
 
    function __construct($ct_session, $ct_db, $page)
    {
        $this->ct_session = $ct_session;
        $this->ct_db = $ct_db;
        $this->page = $page;
 
        $this->config = getClass('config', $this->ct_db);
    }
 
    function treatForms()
    {
        if (isset($_SERVER['HTTP_REFERER']))
            $server_referer = $_SERVER['HTTP_REFERER'];
        else
            $server_referer = 'index';
 
        // SQL authentification method (default)
        if (CT_AUTHENTIFICATION_METHOD == 'sql')
        {
            if (isset($_POST['login_nickname']) && isset($_POST['login_password']))
            {
                if (!is_scalar($_POST['login_nickname']) &&
                    !is_scalar($_POST['login_password']))
                    exit('Error.');
        
                if (!$this->ct_session->isLogged())
                {
                    if(!empty($_POST['auto']))
                        $auto = 0;
                    else
                        $auto = 1;
 
                    $nick = $this->ct_db->cleanentry($_POST['login_nickname'], TRUE);
                    $pass = $this->ct_db->cleanentry($_POST['login_password'], TRUE);
 
                    // Clean POST values
                    unset($_POST['login_nickname'],
                          $_POST['login_password'],
                          $_POST['auto']);
 
                    $this->ct_session->login($nick, $pass, $auto,
                                             $server_referer);
                }
            }
        }
        // XMPP authentification method
        elseif (CT_AUTHENTIFICATION_METHOD == 'xmpp')
        {
            if (isset($_POST['login_jabberid']))
            {
                if (!is_scalar($_POST['login_jabberid']))
                    exit('Error.');
 
                if (!$this->ct_session->isLogged())
                {
                    if(!empty($_POST['auto']))
                        $auto = 0;
                    else
                        $auto = 1;
 
                    $jid = $this->ct_db->cleanentry($_POST['login_jabberid'], TRUE);
 
                    // Clean POST values
                    unset($_POST['login_jabberid'],
                          $_POST['auto']);
 
                    $this->ct_session->login($jid, $auto, $server_referer);
                }
            }
        }
    }
 
    function getPageContent()
    {
        if (!$this->ct_session->isLogged($this->ct_db))
        {
            echo '<form action="'.getURLbyTags($this->page).'" method="post">
            <p class="links">
            '.i18n('You are not logged in.').'<br />
            <a href="users/register">'.i18n('Register').'</a>'.
            ((CT_AUTHENTIFICATION_METHOD == 'sql') ? 
            ' - <a href="users/password">'.i18n('Password remember') : '').
            '</a></p><p class="form">';
 
            if (CT_AUTHENTIFICATION_METHOD == 'sql')
                echo '<input type="text" size="15" maxlength="255" '.
                'name="login_nickname" tabindex="1" />
                &nbsp;&nbsp;<label><input type="checkbox" name="auto" '.
                'checked="checked" tabindex="3" />'.i18n('Automatic').'</label>
                <br /><input type="password" size="15" maxlength="255" '.
                'name="login_password" tabindex="2" />';
            elseif (CT_AUTHENTIFICATION_METHOD == 'xmpp')
                echo '<input type="text" size="15" maxlength="255" '.
                'name="login_jabberid" class="jabberid" tabindex="1" />'.
                '&nbsp;&nbsp;<label><input type="checkbox" name="auto" '.
                'checked="checked" tabindex="3" />'.i18n('Automatic').'</label>';
 
            echo '&nbsp;&nbsp;<input class="submit" type="submit" value="'.
            i18n('Log in').'" />
            </p>
            </form>';
        }
        else
        {
            $user = getUser($_SESSION['id'], $this->ct_db);
            $nickname = htmlspecialchars($user->getNickname());
            $avatar = htmlspecialchars($user->getAvatar());
            $jid = md5(htmlspecialchars($user->getJid()));
 
            $omnipresence = $this->config->get('jabber', 'omnipresence-url');
            
            $file = 'public/upload/avatars/'.$nickname;
            $none = 'public/images/icons/stock/generic/stock_person_big.png';
        
            if ($avatar == '!jabber!')
                $logourl = $omnipresence.'avatar.php?hash='.$jid.
                           '&amp;default='.CT_BASEURL.$none;
            elseif ($avatar == '!no!')
                $logourl = $none;
            elseif (file_exists(CT_BASEDIR.'/'.$file))
                $logourl = 'users/avatar/'.$nickname;
 
            if ($user->getUnread_messages() > 0)
                $mess = TRUE;
            else
                $mess = FALSE;
 
            $classadm = getClass('project.admins', $this->ct_db);
            $classprj = getClass('projects.projects', $this->ct_db);
 
            $_projects = array();
            foreach (array('projects', 'projects_admins') as $type)
            {
                $projects = $classadm->getAdmins($_SESSION['id'], 'user', $type);
 
                if (count($projects) > 0)
                    foreach ($projects as $project)
                    {
                        if (isset($project['projectid']))
                            $id = $project['projectid'];
                        else
                            $id = $project['id'];
 
                        $classprj->load($id);
                        $prj = array();
 
                        $prj['name'] = htmlspecialchars($classprj->getName());
                        $prj['dbname'] = htmlspecialchars($classprj->getDbname());
 
                        $logo = htmlspecialchars($classprj->getLogo());
                        $file = 'public/upload/projects/'.$prj['dbname'].
                                '/'.$logo;
 
                        if ($logo == '!none!')
                            $prj['logourl'] = 'public/images/icons'.
                            '/mimetypes/application-x-executable_big.png';
                        elseif (file_exists(CT_BASEDIR.'/'.$file))
                            $prj['logourl'] = 'project/'.$prj['dbname'].
                                              '/upload/'.$logo;
                        else
                            $prj['logourl'] = $logo;
 
                        array_push($_projects, $prj);
                        $classprj->unload();
                    }
            }
 
            function users_projects_cmp($a, $b)
            {
                if (strtoupper($a['name']) == strtoupper($b['name'])) {
                    return 0;
                }
                return (strtoupper($a['name']) < strtoupper($b['name'])) ? -1 : 1;
            }
            usort($_projects, 'users_projects_cmp');
 
            echo '<img src="'.$logourl.'" alt="avatar" class="avatar" />
            <div class="usermenu">
              <a href="users/messages">
                <img src="public/images/icons/stock/net/stock_mail'.
                (($mess) ? '-unread' : '').'.png" class="mess" alt="m" /></a>
              <a href="dashboard" class="nick"><strong>'.
                map_str($nickname, 16).'</strong></a>
 
              <ul class="usersubmenu">
                <li><a href="dashboard"><span>'.i18n('Dashboard').'</span></a></li>
                <li><a href="users/show/'.$nickname.'"><span>'.i18n('User profile').'</span></a></li>
                <li><a href="users/messages"><span>'.i18n('Messages').'</span></a></li>
                <li><a href="users/briefcase" class="double"><span>'.i18n('Briefcase').'</span></a></li>
                <li><a href="users/register/'.$nickname.'"><span>'.i18n('Edit profile').'</span></a></li>
                <li><a href="projects/add"><span>'.i18n('Add a project').'</span></a></li>
                <li><a href="team/create" class="double"><span>'.i18n('Create a team').'</span></a></li>
                <li class="sep">'.i18n('Projects').'</li>';
 
            foreach ($_projects as $prj)
                echo '<li><a href="project/'.$prj['dbname'].'"><img src="'.$prj['logourl'].'" alt="prj" /><span>'.$prj['name'].'</span></a></li>';
 
            echo '  </ul>
            </div>
            <ul>'.
                ((!$this->config->get('global', 'show-informationbox')) ?
                '<li><a href="projects/add">'.i18n('Add a project').'</a></li>'
                : '').
                 '<li><a href="users/logout">'.i18n('Log out').'</a></li>
            </ul>';
        }
    }
}
?>