2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< ? php  namespace  BookStack ;  
						 
					
						
							
								
									
										
										
										
											2015-07-13 03:01:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-16 21:51:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  Book  extends  Entity  
						 
					
						
							
								
									
										
										
										
											2015-07-13 03:01:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    protected  $fillable  =  [ 'name' ,  'description' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Get  the  url  for  this  book . 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-14 19:29:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     *  @ param  string | bool  $path 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								     *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-14 19:29:35 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  getUrl ( $path  =  false ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 03:01:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-14 19:29:35 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( $path  !==  false )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-13 01:16:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  baseUrl ( '/books/'  .  urlencode ( $this -> slug )  .  '/'  .  trim ( $path ,  '/' )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-14 19:29:35 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-13 01:16:52 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return  baseUrl ( '/books/'  .  urlencode ( $this -> slug )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 03:01:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Get  the  edit  url  for  this  book . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 03:01:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    public  function  getEditUrl () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  $this -> getUrl ()  .  '/edit' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Get  all  pages  within  this  book . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  \Illuminate\Database\Eloquent\Relations\HasMany 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 04:31:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  pages () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return  $this -> hasMany ( Page :: class ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 04:31:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Get  all  chapters  within  this  book . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  \Illuminate\Database\Eloquent\Relations\HasMany 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-28 03:17:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  chapters () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return  $this -> hasMany ( Chapter :: class ); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-28 03:17:08 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Get  an  excerpt  of  this  book ' s  description  to  the  specified  length  or  less . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ param  int  $length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 03:11:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    public  function  getExcerpt ( $length  =  100 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-02 04:20:50 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $description  =  $this -> description ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  strlen ( $description )  >  $length  ?  substr ( $description ,  0 ,  $length - 3 )  .  '...'  :  $description ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 03:11:44 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-19 20:48:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  Return  a  generalised ,  common  raw  query  that  can  be  'unioned'  across  entities . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public  function  entityRawQuery () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  " 'BookStack \\ \\ Book' as entity_type, id, id as entity_id, slug, name,  { $this -> textField }  as text,'' as html, '0' as book_id, '0' as priority, '0' as chapter_id, '0' as draft, created_by, updated_by, updated_at, created_at " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 03:01:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}