mirror of
https://github.com/flarum/framework.git
synced 2024-12-11 21:43:38 +08:00
API: allow date attributes to be added
This commit is contained in:
parent
894349e9c5
commit
a4dc7ff121
|
@ -47,7 +47,6 @@ class Discussion extends Model
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $dates = ['start_time', 'last_time'];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An array of posts that have been added during this request.
|
* An array of posts that have been added during this request.
|
||||||
|
@ -62,6 +61,7 @@ class Discussion extends Model
|
||||||
* @var \Flarum\Core\Models\Post[]
|
* @var \Flarum\Core\Models\Post[]
|
||||||
*/
|
*/
|
||||||
public $removedPosts = [];
|
public $removedPosts = [];
|
||||||
|
protected static $dates = ['start_time', 'last_time'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The user for which the state relationship should be loaded.
|
* The user for which the state relationship should be loaded.
|
||||||
|
|
|
@ -17,19 +17,26 @@ use LogicException;
|
||||||
*
|
*
|
||||||
* @todo Refactor out validation, either into a trait or into a dependency.
|
* @todo Refactor out validation, either into a trait or into a dependency.
|
||||||
* The following requirements need to be fulfilled:
|
* The following requirements need to be fulfilled:
|
||||||
* - Ability for extensions to alter ruleset.
|
* - Ability for extensions to alter ruleset (add, modify, remove).
|
||||||
* - Ability for extensions to add custom rules to the validator instance.
|
* - Ability for extensions to add custom rules to the validator instance.
|
||||||
* - Use Flarum's translator with the validator instance.
|
* - Use Flarum's translator with the validator instance.
|
||||||
*/
|
*/
|
||||||
abstract class Model extends Eloquent
|
abstract class Model extends Eloquent
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Indicates if the model should be timestamped. Turn them off by default.
|
* Indicates if the model should be timestamped. Turn off by default.
|
||||||
*
|
*
|
||||||
* @var boolean
|
* @var boolean
|
||||||
*/
|
*/
|
||||||
public $timestamps = false;
|
public $timestamps = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that should be mutated to dates.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $dates = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The validation rules for this model.
|
* The validation rules for this model.
|
||||||
*
|
*
|
||||||
|
@ -162,6 +169,26 @@ abstract class Model extends Eloquent
|
||||||
return $rules;
|
return $rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the attributes that should be converted to dates.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getDates()
|
||||||
|
{
|
||||||
|
return static::$dates;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an attribute to be converted to a date.
|
||||||
|
*
|
||||||
|
* @param string $attribute
|
||||||
|
*/
|
||||||
|
public static function addDate($attribute)
|
||||||
|
{
|
||||||
|
static::$dates[] = $attribute;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an attribute from the model. If nothing is found, attempt to load
|
* Get an attribute from the model. If nothing is found, attempt to load
|
||||||
* a custom relation method with this key.
|
* a custom relation method with this key.
|
||||||
|
|
|
@ -32,6 +32,11 @@ class Model implements ExtenderInterface
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function date($attribute)
|
||||||
|
{
|
||||||
|
$this->dates[] = $attribute;
|
||||||
|
}
|
||||||
|
|
||||||
public function hasOne($relation, $related, $foreignKey = null, $localKey = null)
|
public function hasOne($relation, $related, $foreignKey = null, $localKey = null)
|
||||||
{
|
{
|
||||||
$this->relations[$relation] = function ($model) use ($relation, $related, $foreignKey, $localKey) {
|
$this->relations[$relation] = function ($model) use ($relation, $related, $foreignKey, $localKey) {
|
||||||
|
@ -73,7 +78,7 @@ class Model implements ExtenderInterface
|
||||||
$model = $this->model;
|
$model = $this->model;
|
||||||
|
|
||||||
foreach ($this->relations as $relation => $callback) {
|
foreach ($this->relations as $relation => $callback) {
|
||||||
$model::addRelationship($relation, $callback);
|
$model::setRelationMethod($relation, $callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->scopeVisible as $callback) {
|
foreach ($this->scopeVisible as $callback) {
|
||||||
|
@ -83,5 +88,9 @@ class Model implements ExtenderInterface
|
||||||
foreach ($this->allow as $info) {
|
foreach ($this->allow as $info) {
|
||||||
$model::allow($info['action'], $info['callback']);
|
$model::allow($info['action'], $info['callback']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($this->dates as $attribute) {
|
||||||
|
$model::addDate($attribute);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user