]> BookStack Code Mirror - bookstack/blobdiff - app/Book.php
replace GPL diff lib with MIT lib
[bookstack] / app / Book.php
index 28c47c166c6d6c1f0064a90c4e86ecdb4e82e61a..919af80a59e746c099aee6f5c166f7998d068575 100644 (file)
@@ -1,22 +1,55 @@
-<?php
+<?php namespace BookStack;
 
-namespace Oxbow;
-
-use Illuminate\Database\Eloquent\Model;
-
-class Book extends Model
+class Book extends Entity
 {
 
     protected $fillable = ['name', 'description'];
 
+    /**
+     * Get the url for this book.
+     * @return string
+     */
     public function getUrl()
     {
         return '/books/' . $this->slug;
     }
 
+    /*
+     * Get the edit url for this book.
+     * @return string
+     */
     public function getEditUrl()
     {
         return $this->getUrl() . '/edit';
     }
 
+    /**
+     * Get all pages within this book.
+     * @return \Illuminate\Database\Eloquent\Relations\HasMany
+     */
+    public function pages()
+    {
+        return $this->hasMany(Page::class);
+    }
+
+    /**
+     * Get all chapters within this book.
+     * @return \Illuminate\Database\Eloquent\Relations\HasMany
+     */
+    public function chapters()
+    {
+        return $this->hasMany(Chapter::class);
+    }
+
+    /**
+     * Get an excerpt of this book's description to the specified length or less.
+     * @param int $length
+     * @return string
+     */
+    public function getExcerpt($length = 100)
+    {
+        $description = $this->description;
+        return strlen($description) > $length ? substr($description, 0, $length-3) . '...' : $description;
+    }
+
 }