Completed
Pull Request — master (#7)
by Patrick
04:03
created

class.FlipSession.php (1 issue)

Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
require_once('Autoload.php');
3
if(!isset($_SESSION) && php_sapi_name() !== 'cli') { session_start(); }
4
if(!isset($_SESSION['ip_address']) && isset($_SERVER['REMOTE_ADDR']))
5
{
6
    $_SESSION['ip_address'] = $_SERVER['REMOTE_ADDR'];
7
}
8
if(!isset($_SESSION['init_time']))
9
{
10
    $_SESSION['init_time'] = date('c');
11
}
12
13
class FlipSession extends Singleton
14
{
15
    /**
16
     * Does the variable exist in the session
17
     *
18
     * @SuppressWarnings(PHPMD.Superglobals)
19
     */
20
    static function doesVarExist($name)
21
    {
22
        return isset($_SESSION[$name]);
23
    }
24
25
    /**
26
     * Get a variable from the session
27
     *
28
     * @SuppressWarnings(PHPMD.Superglobals)
29
     */
30
    static function getVar($name, $default = false)
31
    {
32
        if(FlipSession::doesVarExist($name))
33
        {
34
            return $_SESSION[$name];
35
        }
36
        else
37
        {
38
            return $default;
39
        }
40
    }
41
42
    /**
43
     * Set a variable in the session
44
     *
45
     * @SuppressWarnings(PHPMD.Superglobals)
46
     */
47
    static function setVar($name, $value)
48
    {
49
        $_SESSION[$name] = $value;
50
    }
51
52
    /**
53
     * Is a user currently logged in?
54
     *
55
     * @SuppressWarnings(PHPMD.Superglobals)
56
     */
57
    static function isLoggedIn()
58
    {
59
        if(isset($_SESSION['flipside_user']))
60
        {
61
            return true;
62
        }
63
        else if(isset($_SESSION['AuthMethod']) && isset($_SESSION['AuthData']))
64
        {
65
            $auth = AuthProvider::getInstance();
66
            return $auth->isLoggedIn($_SESSION['AuthData'], $_SESSION['AuthMethod']);
67
        }
68
        else
69
        {
70
            return false;
71
        }
72
    }
73
74
    /**
75
     * Get the currently logged in user
76
     *
77
     * @SuppressWarnings(PHPMD.Superglobals)
78
     */
79
    static function getUser()
80
    {
81
        if(isset($_SESSION['flipside_user']))
82
        {
83
            return $_SESSION['flipside_user'];
84
        }
85
        else if(isset($_SESSION['AuthMethod']) && isset($_SESSION['AuthData']))
86
        {
87
            $auth = AuthProvider::getInstance();
88
            $user = $auth->getUser($_SESSION['AuthData'], $_SESSION['AuthMethod']);
89
            if($user !== null)
90
            {
91
                $_SESSION['flipside_user'] = $user;
92
            }
93
            return $user;
94
        }
95
        else
96
        {
97
            return null;
98
        }
99
    }
100
101
    /**
102
     * Set the currently logged in user
103
     *
104
     * @SuppressWarnings(PHPMD.Superglobals)
105
     */
106
    static function setUser($user)
107
    {
108
        $_SESSION['flipside_user'] = $user;
109
    }
110
111
    /**
112
     * Obtain the current users email address
113
     *
114
     * @SuppressWarnings(PHPMD.Superglobals)
115
     */
116
    static function getUserEmail()
117
    {
118
        if(isset($_SESSION['flipside_email']))
119
        {
120
            return $_SESSION['flipside_email'];
121
        }
122
        $user = FlipSession::getUser();
123
        if($user === false || $user === null)
124
        {
125
            return false;
126
        }
127
        if(isset($user->mail) && isset($user->mail[0]))
128
        {
129
            $_SESSION['flipside_email'] = $user->mail[0];
130
            return $_SESSION['flipside_email'];
131
        }
132
        return false;
133
    }
134
135
    /**
136
     * This will end your session
137
     *
138
     * @SuppressWarnings(PHPMD.Superglobals)
139
     */
140
    static function end()
141
    {
142
        if(isset($_SESSION) && !empty($_SESSION))
143
        {
144
            $_SESSION = array();
145
            session_destroy();
146
        }
147
    }
148
149
    static function unserializePhpSession($sessionData)
150
    {
151
        $res = array();
152
        $offset = 0;
153
        $length = strlen($sessionData);
154
        while($offset < $length)
155
        {
156
            $pos = strpos($sessionData, "|", $offset);
157
            $len = $pos - $offset;
158
            $name = substr($sessionData, $offset, $len);
159
            if($name === false) break;
160
            $offset += $len + 1;
161
            $data = @unserialize(substr($sessionData, $offset));
162
            $res[$name] = $data;
163
            $offset += strlen(serialize($data));
164
        }
165
        return $res;
166
    }
167
168
    static function getAllSessions()
169
    {
170
        $res = array();
171
        $sessFiles = scandir(ini_get('session.save_path'));
172
        $count = count($sessFiles);
173
        for($i = 0; $i < $count; $i++)
174
        {
175
            if($sessFiles[$i][0] === '.')
176
            {
177
                continue;
178
            }
179
            $sessionId = substr($sessFiles[$i], 5);
180
            $sessionData = file_get_contents(ini_get('session.save_path').'/'.$sessFiles[$i]);
181
            if($sessionData === false)
182
            {
183
                array_push($res, array('sid' => $sessionId));
184
            }
185
            else
186
            {
187
                $tmp = FlipSession::unserializePhpSession($sessionData);
188
                $tmp['sid'] = $sessionId;
189
                array_push($res, $tmp);
190
            }
191
        }
192
        if(count($res) == 0)
193
        {
194
            return false;
195
        }
196
        return $res;
197
    }
198
199
    static function getSessionById($sid)
200
    {
201
        $sessionData = file_get_contents(ini_get('session.save_path').'/sess_'.$sid);
202
        return FlipSession::unserializePhpSession($sessionData);
203
    }
204
205
    static function deleteSessionById($sid)
206
    {
207
        return unlink(ini_get('session.save_path').'/sess_'.$sid); 
208
    }
209
}
210
/* vim: set tabstop=4 shiftwidth=4 expandtab: */
211
?>
0 ignored issues
show
It is not recommended to use PHP's closing tag ?> in files other than templates.

Using a closing tag in PHP files that only contain PHP code is not recommended as you might accidentally add whitespace after the closing tag which would then be output by PHP. This can cause severe problems, for example headers cannot be sent anymore.

A simple precaution is to leave off the closing tag as it is not required, and it also has no negative effects whatsoever.

Loading history...
212