mirror of
https://github.com/flarum/core.git
synced 2025-10-12 07:24:27 +02:00
Massive refactor
- Use contextual namespaces within Flarum\Core - Clean up and docblock everything - Refactor Activity/Notification blueprint stuff - Refactor Formatter stuff - Refactor Search stuff - Upgrade to JSON-API 1.0 - Removed “addedPosts” and “removedPosts” relationships from discussion API. This was used for adding/removing event posts after renaming a discussion etc. Instead we should make an additional request to get all new posts Todo: - Fix Extenders and extensions - Get rid of repository interfaces - Fix other bugs I’ve inevitably introduced
This commit is contained in:
@@ -1,15 +1,37 @@
|
||||
<?php namespace Flarum\Core\Support;
|
||||
|
||||
use Flarum\Core\Users\User;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
/**
|
||||
* Add a query scope to an Eloquent model that filters out records that a user
|
||||
* is not allowed to view.
|
||||
*/
|
||||
trait VisibleScope
|
||||
{
|
||||
/**
|
||||
* @var callable[]
|
||||
*/
|
||||
protected static $visibleScopes = [];
|
||||
|
||||
/**
|
||||
* Add a callback to scope a query to only include records that are visible
|
||||
* to a user.
|
||||
*
|
||||
* @param callable $scope
|
||||
*/
|
||||
public static function addVisibleScope(callable $scope)
|
||||
{
|
||||
static::$visibleScopes[] = $scope;
|
||||
}
|
||||
|
||||
public function scopeWhereVisibleTo($query, $user)
|
||||
/**
|
||||
* Scope a query to only include records that are visible to a user.
|
||||
*
|
||||
* @param Builder $query
|
||||
* @param User $user
|
||||
*/
|
||||
public function scopeWhereVisibleTo(Builder $query, User $user)
|
||||
{
|
||||
foreach (static::$visibleScopes as $scope) {
|
||||
$scope($query, $user);
|
||||
|
Reference in New Issue
Block a user