class User
{
- function __construct($dir)
+ public $dir, $login;
+
+ function __construct($dir = NULL, $existing = TRUE)
{
- if (!file_exists($dir)) {
+ if (empty($dir)) {
+ return;
+ }
+ if (!file_exists($dir) and $existing) {
throw new Exception("Gebruiker niet gevonden in $dir");
}
$this->dir = $dir;
function html()
{
- return $this->name ?: $this->login;
+ $name = htmlspecialchars($this->login);
+ if ($this->name and $this->name != $name) {
+ $name = "{$this->name}<small> @$name</small>";
+ }
+ return $name;
}
function email()
function admin($permission = NULL)
{
if (isset($permission)) {
- return $this->admin && isset($this->admin[$permission]); # check level
+ if (!$this->admin) {
+ return FALSE; # empty results
+ }
+ preg_match_all('{[ /]}', $permission, $parts, PREG_OFFSET_CAPTURE);
+ foreach ($parts[0] as $part) {
+ if (isset($this->admin[substr($permission, 0, $part[1])])) {
+ return TRUE; # partial match
+ }
+ }
+ return isset($this->admin[$permission]); # check level
}
- if (!@file_exists("{$this->dir}/.admin")) {
+ if (!$this->dir or !@file_exists("{$this->dir}/.admin")) {
return FALSE; # not an admin
}
return array_fill_keys(explode("\n", file_get_contents("{$this->dir}/.admin")), TRUE);
return $user;
}
+global $User;
if (isset($_COOKIE['login'])) {
- global $User;
$User = login($_COOKIE['login']);
}
+if (!$User) {
+ $User = new User;
+}