mirror of
https://github.com/flarum/framework.git
synced 2025-02-16 06:12:44 +08:00
![Toby Zerner](/assets/img/avatar_default.png)
New stuff: - Signup + email confirmation. - Updated authentication strategy with remember cookies. closes #5 - New search system with some example gambits! This is cool - check out the source. Fulltext drivers will be implemented as decorators overriding the EloquentPostRepository’s findByContent method. - Lay down the foundation for bootstrapping the Ember app. - Update Web layer’s asset manager to properly publish CSS/JS files. - Console commands to run installation migrations and seeds. Refactoring: - New structure: move models, repositories, commands, and events into their own namespaces, rather than grouping by entity. - All events are classes. - Use L5 middleware and command bus implementations. - Clearer use of repositories and the Active Record pattern. Repositories are used only for retrieval of ActiveRecord objects, and then save/delete operations are called directly on those ActiveRecords. This way, we don’t over-abstract at the cost of Eloquent magic, but testing is still easy. - Refactor of Web layer so that it uses the Actions routing architecture. - “Actor” concept instead of depending on Laravel’s Auth. - General cleanup!
74 lines
1.8 KiB
PHP
74 lines
1.8 KiB
PHP
<?php namespace Flarum\Core\Models;
|
|
|
|
use Flarum\Core\Events\DiscussionWasRead;
|
|
|
|
class DiscussionState extends Model
|
|
{
|
|
/**
|
|
* The table associated with the model.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $table = 'users_discussions';
|
|
|
|
/**
|
|
* The attributes that should be mutated to dates.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $dates = ['read_time'];
|
|
|
|
/**
|
|
* Mark the discussion as read to a certain point by updating that state's
|
|
* data.
|
|
*
|
|
* @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 DiscussionWasRead($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\Core\Models\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\Core\Models\User', 'user_id');
|
|
}
|
|
|
|
/**
|
|
* Set the keys for a save update query.
|
|
*
|
|
* @param \Illuminate\Database\Eloquent\Builder $query
|
|
* @return \Illuminate\Database\Eloquent\Builder
|
|
*/
|
|
protected function setKeysForSaveQuery(\Illuminate\Database\Eloquent\Builder $query)
|
|
{
|
|
$query->where('discussion_id', $this->discussion_id)
|
|
->where('user_id', $this->user_id);
|
|
|
|
return $query;
|
|
}
|
|
}
|