| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-11 02:31:09 +08:00
										 |  |  | namespace BookStack; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | use Illuminate\Database\Eloquent\Model; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-16 21:51:45 +08:00
										 |  |  | class Page extends Entity | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2016-03-25 22:41:15 +08:00
										 |  |  |     protected $fillable = ['name', 'html', 'priority', 'markdown']; | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-21 05:05:26 +08:00
										 |  |  |     protected $simpleAttributes = ['name', 'id', 'slug']; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function toSimpleArray() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $array = array_intersect_key($this->toArray(), array_flip($this->simpleAttributes)); | 
					
						
							|  |  |  |         $array['url'] = $this->getUrl(); | 
					
						
							|  |  |  |         return $array; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     public function book() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-09-11 02:31:09 +08:00
										 |  |  |         return $this->belongsTo('BookStack\Book'); | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |     public function chapter() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-09-11 02:31:09 +08:00
										 |  |  |         return $this->belongsTo('BookStack\Chapter'); | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function hasChapter() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->chapter()->count() > 0; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     public function revisions() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |         return $this->hasMany('BookStack\PageRevision')->where('type', '=', 'version')->orderBy('created_at', 'desc'); | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     public function getUrl() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-11-27 07:45:04 +08:00
										 |  |  |         $bookSlug = $this->getAttribute('bookSlug') ? $this->getAttribute('bookSlug') : $this->book->slug; | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         $midText = $this->draft ? '/draft/' : '/page/'; | 
					
						
							|  |  |  |         $idComponent = $this->draft ? $this->id : $this->slug; | 
					
						
							|  |  |  |         return '/books/' . $bookSlug . $midText . $idComponent; | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-21 05:05:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |     public function getExcerpt($length = 100) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-02-21 21:15:46 +08:00
										 |  |  |         $text = strlen($this->text) > $length ? substr($this->text, 0, $length-3) . '...' : $this->text; | 
					
						
							|  |  |  |         return mb_convert_encoding($text, 'UTF-8'); | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | } |