mirror of
https://github.com/flarum/core.git
synced 2025-08-09 01:46:35 +02:00
Move UserState class to Flarum\Discussion namespace
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
|
||||
namespace Flarum\Discussion;
|
||||
|
||||
use Flarum\Core\DiscussionState;
|
||||
use Flarum\Discussion\UserState;
|
||||
use Flarum\Post\MergeableInterface;
|
||||
use Flarum\Foundation\EventGeneratorTrait;
|
||||
use Flarum\Database\ScopeVisibilityTrait;
|
||||
@@ -44,7 +44,7 @@ use Flarum\Util\Str;
|
||||
* @property int|null $last_post_number
|
||||
* @property \Carbon\Carbon|null $hide_time
|
||||
* @property int|null $hide_user_id
|
||||
* @property DiscussionState|null $state
|
||||
* @property UserState|null $state
|
||||
* @property \Illuminate\Database\Eloquent\Collection $posts
|
||||
* @property \Illuminate\Database\Eloquent\Collection $comments
|
||||
* @property \Illuminate\Database\Eloquent\Collection $participants
|
||||
@@ -416,7 +416,7 @@ class Discussion extends AbstractModel
|
||||
{
|
||||
$user = $user ?: static::$stateUser;
|
||||
|
||||
return $this->hasOne('Flarum\Core\DiscussionState')->where('user_id', $user ? $user->id : null);
|
||||
return $this->hasOne('Flarum\Discussion\UserState')->where('user_id', $user ? $user->id : null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -424,14 +424,14 @@ class Discussion extends AbstractModel
|
||||
* exist.
|
||||
*
|
||||
* @param User $user
|
||||
* @return \Flarum\Core\DiscussionState
|
||||
* @return \Flarum\Discussion\UserState
|
||||
*/
|
||||
public function stateFor(User $user)
|
||||
{
|
||||
$state = $this->state($user)->first();
|
||||
|
||||
if (! $state) {
|
||||
$state = new DiscussionState;
|
||||
$state = new UserState;
|
||||
$state->discussion_id = $this->id;
|
||||
$state->user_id = $user->id;
|
||||
}
|
||||
|
@@ -11,19 +11,19 @@
|
||||
|
||||
namespace Flarum\Discussion\Event;
|
||||
|
||||
use Flarum\Core\DiscussionState;
|
||||
use Flarum\Discussion\UserState;
|
||||
|
||||
class UserDataSaving
|
||||
{
|
||||
/**
|
||||
* @var DiscussionState
|
||||
* @var \Flarum\Discussion\UserState
|
||||
*/
|
||||
public $state;
|
||||
|
||||
/**
|
||||
* @param DiscussionState $state
|
||||
* @param \Flarum\Discussion\UserState $state
|
||||
*/
|
||||
public function __construct(DiscussionState $state)
|
||||
public function __construct(UserState $state)
|
||||
{
|
||||
$this->state = $state;
|
||||
}
|
||||
|
@@ -11,19 +11,19 @@
|
||||
|
||||
namespace Flarum\Discussion\Event;
|
||||
|
||||
use Flarum\Core\DiscussionState;
|
||||
use Flarum\Discussion\UserState;
|
||||
|
||||
class UserRead
|
||||
{
|
||||
/**
|
||||
* @var DiscussionState
|
||||
* @var UserState
|
||||
*/
|
||||
public $state;
|
||||
|
||||
/**
|
||||
* @param DiscussionState $state
|
||||
* @param UserState $state
|
||||
*/
|
||||
public function __construct(DiscussionState $state)
|
||||
public function __construct(UserState $state)
|
||||
{
|
||||
$this->state = $state;
|
||||
}
|
||||
|
100
src/Discussion/UserState.php
Normal file
100
src/Discussion/UserState.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Flarum\Discussion;
|
||||
|
||||
use Flarum\Discussion\Discussion;
|
||||
use Flarum\Foundation\EventGeneratorTrait;
|
||||
use Flarum\Database\AbstractModel;
|
||||
use Flarum\Discussion\Event\UserRead;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
/**
|
||||
* Models a discussion-user state record in the database.
|
||||
*
|
||||
* Stores information about how much of a discussion a user has read. Can also
|
||||
* be used to store other information, if the appropriate columns are added to
|
||||
* the database, like a user's subscription status for a discussion.
|
||||
*
|
||||
* @property int $user_id
|
||||
* @property int $discussion_id
|
||||
* @property \Carbon\Carbon|null $read_time
|
||||
* @property int|null $read_number
|
||||
* @property Discussion $discussion
|
||||
* @property \Flarum\User\User $user
|
||||
*/
|
||||
class UserState extends AbstractModel
|
||||
{
|
||||
use EventGeneratorTrait;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $table = 'users_discussions';
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $dates = ['read_time'];
|
||||
|
||||
/**
|
||||
* Mark the discussion as being read up to a certain point. Raises the
|
||||
* DiscussionWasRead event.
|
||||
*
|
||||
* @param int $number
|
||||
* @return $this
|
||||
*/
|
||||
public function read($number)
|
||||
{
|
||||
if ($number > $this->read_number) {
|
||||
$this->read_number = $number;
|
||||
$this->read_time = time();
|
||||
|
||||
$this->raise(new UserRead($this));
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the relationship with the discussion that this state is for.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function discussion()
|
||||
{
|
||||
return $this->belongsTo('Flarum\Discussion\Discussion', 'discussion_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the relationship with the user that this state is for.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('Flarum\User\User', 'user_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the keys for a save update query.
|
||||
*
|
||||
* @param Builder $query
|
||||
* @return Builder
|
||||
*/
|
||||
protected function setKeysForSaveQuery(Builder $query)
|
||||
{
|
||||
$query->where('discussion_id', $this->discussion_id)
|
||||
->where('user_id', $this->user_id);
|
||||
|
||||
return $query;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user