root/dev/common/includes/class.user.php @ 317

Revision 226, 4.0 KB (checked in by exi, 16 years ago)

if ($_POSTpassword? == config::get('post_mailto')).... NC

Line 
1<?php
2require_once('class.box.php');
3
4class user
5{
6    function user()
7    {
8        trigger_error('The class "user" may only be invoked statically.', E_USER_ERROR);
9    }
10
11    function login($login, $password)
12    {
13        if (user::loggedin())
14        {
15            return true;
16        }
17        $db = new DBQuery();
18        $db->execute('select * from kb3_user
19                      left join kb3_user_extra on kb3_user.usr_id = kb3_user_extra.use_usr_id
20                      left join kb3_user_titles on kb3_user.usr_id = kb3_user_titles.ust_usr_id
21                      left join kb3_user_roles on kb3_user.usr_id = kb3_user_roles.uro_usr_id
22                      WHERE usr_login='."'".slashfix($login)."' and usr_site='".KB_SITE."'");
23        if (!$row = $db->getRow())
24        {
25            return false;
26        }
27        if ($row['usr_pass'] != md5($password))
28        {
29            return false;
30        }
31        $user = $row;
32        $titles = $roles = array();
33        if ($row['use_key'])
34        {
35            $user[$row['use_key']] = $row['use_value'];
36        }
37
38        // user titles
39        if ($row['ust_ttl_id'])
40        {
41            $titles[] = $row['ust_ttl_id'];
42        }
43
44        // user roles
45        if ($row['uro_rol_id'])
46        {
47            $roles[] = $row['uro_rol_id'];
48        }
49
50        Session::create();
51        while ($row = $db->getRow())
52        {
53            // user extra information
54            if ($row['use_key'])
55            {
56                $user[$row['use_key']] = $row['use_value'];
57            }
58
59            // user titles
60            if ($row['ust_ttl_id'])
61            {
62                $titles[] = $row['ust_ttl_id'];
63            }
64
65            // user roles
66            if ($row['uro_rol_id'])
67            {
68                $roles[] = $row['uro_rol_id'];
69            }
70        }
71        $_SESSION['user'] = $user;
72        user::loggedin(true);
73        return true;
74    }
75
76    function role($role)
77    {
78        return false;
79    }
80
81    function loggedin($bool = null)
82    {
83        static $state;
84
85        if ($bool !== null)
86        {
87            $state = $bool;
88        }
89        if ($state == null)
90        {
91            $state = false;
92        }
93        return $state;
94    }
95
96    // generates the menu for the user
97    function menu()
98    {
99        $box = new Box('User');
100        $box->setIcon('menu-item.gif');
101
102        if (!user::loggedin())
103        {
104            $box->addOption('link', 'Login', '?a=login');
105            $box->addOption('link', 'Register', '?a=register');
106        }
107        else
108        {
109            if (user::get('usr_pilot_id'))
110            {
111                require_once('class.pilot.php');
112
113                $plt = new pilot(user::get('usr_pilot_id'));
114                $box->addOption('link', $plt->getName(), '?a=pilot_detail&plt_id='.$plt->getID());
115            }
116            $box->addOption('link', 'Logout', '?a=logout');
117        }
118
119        event::call('user_menu_create', $box);
120        return $box->generate();
121    }
122
123    function get($key)
124    {
125        if (!isset($_SESSION['user']))
126        {
127            return null;
128        }
129        return $_SESSION['user'][$key];
130    }
131
132    // login,pass,pilot
133    function register($login, $password, $pilot = null, $p_charid = null)
134    {
135        $db = new DBQuery();
136
137        $values[] = KB_SITE;
138        $values[] = $login;
139        $values[] = md5($password);
140        if ($pilot)
141        {
142             $pilot = new Pilot($pilot);
143             $values[] = $pilot->getId();
144             if ($p_charid)
145             {
146                 $pilot->setCharacterID($p_charid);
147             }
148        }
149        else
150        {
151            $values[] = 0;
152        }
153
154        // standard state
155        $values[] = 0;
156        $values = "'".join("','", $values)."'";
157        $db->execute('insert into kb3_user (usr_site, usr_login, usr_pass, usr_pilot_id, usr_state) VALUES ('.$values.')');
158        event::call('user_created', $values);
159    }
160}
161?>
Note: See TracBrowser for help on using the browser.