| 
									
										
										
										
											2020-11-22 08:17:45 +08:00
										 |  |  | <?php namespace BookStack\Entities\Models; | 
					
						
							| 
									
										
										
										
											2018-09-25 19:30:50 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | use BookStack\Auth\User; | 
					
						
							| 
									
										
										
										
											2020-11-22 08:17:45 +08:00
										 |  |  | use BookStack\Entities\Models\Page; | 
					
						
							| 
									
										
										
										
											2018-09-25 23:58:03 +08:00
										 |  |  | use BookStack\Model; | 
					
						
							| 
									
										
										
										
											2019-10-05 19:55:01 +08:00
										 |  |  | use Carbon\Carbon; | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-05 19:55:01 +08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Class PageRevision | 
					
						
							|  |  |  |  * @property int $page_id | 
					
						
							|  |  |  |  * @property string $slug | 
					
						
							|  |  |  |  * @property string $book_slug | 
					
						
							|  |  |  |  * @property int $created_by | 
					
						
							|  |  |  |  * @property Carbon $created_at | 
					
						
							|  |  |  |  * @property string $type | 
					
						
							|  |  |  |  * @property string $summary | 
					
						
							|  |  |  |  * @property string $markdown | 
					
						
							|  |  |  |  * @property string $html | 
					
						
							|  |  |  |  * @property int $revision_number | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  | class PageRevision extends Model | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-07-08 02:53:43 +08:00
										 |  |  |     protected $fillable = ['name', 'html', 'text', 'markdown', 'summary']; | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get the user that created the page revision | 
					
						
							|  |  |  |      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     public function createdBy() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-05-02 04:20:50 +08:00
										 |  |  |         return $this->belongsTo(User::class, 'created_by'); | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get the page this revision originates from. | 
					
						
							|  |  |  |      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     public function page() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-05-02 04:20:50 +08:00
										 |  |  |         return $this->belongsTo(Page::class); | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get the url for this revision. | 
					
						
							| 
									
										
										
										
											2016-09-29 17:10:46 +08:00
										 |  |  |      * @param null|string $path | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |      * @return string | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-09-29 17:10:46 +08:00
										 |  |  |     public function getUrl($path = null) | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-09-29 17:10:46 +08:00
										 |  |  |         $url = $this->page->getUrl() . '/revisions/' . $this->id; | 
					
						
							| 
									
										
										
										
											2018-01-29 00:58:52 +08:00
										 |  |  |         if ($path) { | 
					
						
							|  |  |  |             return $url . '/' . trim($path, '/'); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-09-29 17:10:46 +08:00
										 |  |  |         return $url; | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 01:42:21 +08:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-09-29 17:10:46 +08:00
										 |  |  |      * Get the previous revision for the same page if existing | 
					
						
							| 
									
										
										
										
											2019-10-05 19:55:01 +08:00
										 |  |  |      * @return \BookStack\Entities\PageRevision|null | 
					
						
							| 
									
										
										
										
											2016-07-08 01:42:21 +08:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function getPrevious() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-10-05 19:55:01 +08:00
										 |  |  |         $id = static::newQuery()->where('page_id', '=', $this->page_id) | 
					
						
							|  |  |  |             ->where('id', '<', $this->id) | 
					
						
							|  |  |  |             ->max('id'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($id) { | 
					
						
							|  |  |  |             return static::query()->find($id); | 
					
						
							| 
									
										
										
										
											2016-07-08 01:42:21 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-10-05 19:55:01 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-29 17:10:46 +08:00
										 |  |  |         return null; | 
					
						
							| 
									
										
										
										
											2016-07-08 01:42:21 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 22:41:33 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * 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'; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  | } |