X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/88049476fe496de3a3b767a4305d985f78a96db8..refs/pull/846/head:/app/PageRevision.php diff --git a/app/PageRevision.php b/app/PageRevision.php index 52c37e390..ffcc4f9d2 100644 --- a/app/PageRevision.php +++ b/app/PageRevision.php @@ -1,26 +1,62 @@ -belongsTo('BookStack\User', 'created_by'); + return $this->belongsTo(User::class, 'created_by'); } + /** + * Get the page this revision originates from. + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ public function page() { - return $this->belongsTo('BookStack\Page'); + return $this->belongsTo(Page::class); } - public function getUrl() + /** + * Get the url for this revision. + * @param null|string $path + * @return string + */ + public function getUrl($path = null) { - return $this->page->getUrl() . '/revisions/' . $this->id; + $url = $this->page->getUrl() . '/revisions/' . $this->id; + if ($path) { + return $url . '/' . trim($path, '/'); + } + return $url; } + /** + * Get the previous revision for the same page if existing + * @return \BookStack\PageRevision|null + */ + public function getPrevious() + { + if ($id = static::where('page_id', '=', $this->page_id)->where('id', '<', $this->id)->max('id')) { + return static::find($id); + } + return null; + } + + /** + * Allows checking of the exact class, Used to check entity type. + * Included here to align with entities in similar use cases. + * (Yup, Bit of an awkward hack) + * @param $type + * @return bool + */ + public static function isA($type) + { + return $type === 'revision'; + } }