This repository has been archived on 2024-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
sakura/app/Forum/ForumPerms.php

50 lines
1.2 KiB
PHP
Raw Normal View History

<?php
/**
* Holds the forum permission handler.
* @package Sakura
*/
namespace Sakura\Forum;
2016-11-02 18:58:51 +00:00
use Sakura\DB;
use Sakura\User;
/**
* Forum permission handler.
* @package Sakura
* @author Julian van de Groep <me@flash.moe>
*/
class ForumPerms
{
2016-11-02 18:58:51 +00:00
private $forums = [];
private $user = 0;
private $ranks = [];
private $cache = [];
public function __construct(Forum $forum, User $user)
{
2016-11-02 18:58:51 +00:00
$this->forums = [0, $forum->id, $forum->category];
$this->user = $user->id;
$this->ranks = array_keys($user->ranks);
}
public function __get($name)
{
if (!array_key_exists($name, $this->cache)) {
$column = 'perm_' . camel_to_snake($name);
$result = array_column(DB::table('forum_perms')
2016-11-02 18:58:51 +00:00
->whereIn('forum_id', $this->forums)
->where(function ($query) {
$query->whereIn('rank_id', $this->ranks)
->orWhere('user_id', $this->user);
})
->get([$column]), $column);
$this->cache[$name] = !in_array('0', $result, true) && in_array('1', $result, true);
}
return $this->cache[$name];
}
}