]> BookStack Code Mirror - bookstack/blob - app/Page.php
Closes #55. Allows you to set the primary color.
[bookstack] / app / Page.php
1 <?php
2
3 namespace BookStack;
4
5 use Illuminate\Database\Eloquent\Model;
6
7 class Page extends Entity
8 {
9     protected $fillable = ['name', 'html', 'priority'];
10
11     protected $simpleAttributes = ['name', 'id', 'slug'];
12
13     public function toSimpleArray()
14     {
15         $array = array_intersect_key($this->toArray(), array_flip($this->simpleAttributes));
16         $array['url'] = $this->getUrl();
17         return $array;
18     }
19
20     public function book()
21     {
22         return $this->belongsTo('BookStack\Book');
23     }
24
25     public function chapter()
26     {
27         return $this->belongsTo('BookStack\Chapter');
28     }
29
30     public function hasChapter()
31     {
32         return $this->chapter()->count() > 0;
33     }
34
35     public function revisions()
36     {
37         return $this->hasMany('BookStack\PageRevision')->orderBy('created_at', 'desc');
38     }
39
40     public function getUrl()
41     {
42         $bookSlug = $this->getAttribute('bookSlug') ? $this->getAttribute('bookSlug') : $this->book->slug;
43         return '/books/' . $bookSlug . '/page/' . $this->slug;
44     }
45
46     public function getExcerpt($length = 100)
47     {
48         $text = strlen($this->text) > $length ? substr($this->text, 0, $length-3) . '...' : $this->text;
49         return mb_convert_encoding($text, 'UTF-8');
50     }
51
52 }