2015-08-17 17:00:26 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								namespace  Drupal\file\Entity ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Drupal\Core\Entity\ContentEntityBase ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Drupal\Core\Entity\EntityChangedTrait ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Drupal\Core\Entity\EntityStorageInterface ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Drupal\Core\Entity\EntityTypeInterface ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Drupal\Core\Field\BaseFieldDefinition ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Drupal\file\FileInterface ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Drupal\user\UserInterface ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Defines  the  file  entity  class . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-02 15:56:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  @ ingroup  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-17 17:00:26 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 *  @ ContentEntityType ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    id  =  " file " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    label  =  @ Translation ( " File " ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    handlers  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *      " storage "  =  " Drupal \ file \ FileStorage " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *      " storage_schema "  =  " Drupal \ file \ FileStorageSchema " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *      " access "  =  " Drupal \ file \ FileAccessControlHandler " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *      " views_data "  =  " Drupal \ file \ FileViewsData " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    }, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    base_table  =  " file_managed " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    entity_keys  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *      " id "  =  " fid " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *      " label "  =  " filename " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *      " langcode "  =  " langcode " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *      " uuid "  =  " uuid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class  File  extends  ContentEntityBase  implements  FileInterface  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  use  EntityChangedTrait ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  getFilename ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'filename' ) -> value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  setFilename ( $filename )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this -> get ( 'filename' ) -> value  =  $filename ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  getFileUri ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'uri' ) -> value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  setFileUri ( $uri )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this -> get ( 'uri' ) -> value  =  $uri ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-03 14:56:31 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  @ see  file_url_transform_relative () 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-17 17:00:26 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  url ( $rel  =  'canonical' ,  $options  =  array ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  file_create_url ( $this -> getFileUri ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  getMimeType ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'filemime' ) -> value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  setMimeType ( $mime )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this -> get ( 'filemime' ) -> value  =  $mime ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  getSize ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'filesize' ) -> value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  setSize ( $size )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this -> get ( 'filesize' ) -> value  =  $size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  getCreatedTime ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'created' ) -> value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  getOwner ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'uid' ) -> entity ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  getOwnerId ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'uid' ) -> target_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  setOwnerId ( $uid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this -> set ( 'uid' ,  $uid ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  setOwner ( UserInterface  $account )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this -> set ( 'uid' ,  $account -> id ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  isPermanent ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'status' ) -> value  ==  FILE_STATUS_PERMANENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  isTemporary ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $this -> get ( 'status' ) -> value  ==  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  setPermanent ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this -> get ( 'status' ) -> value  =  FILE_STATUS_PERMANENT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  setTemporary ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this -> get ( 'status' ) -> value  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  static  function  preCreate ( EntityStorageInterface  $storage ,  array  & $values )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // Automatically detect filename if not set.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( ! isset ( $values [ 'filename' ])  &&  isset ( $values [ 'uri' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $values [ 'filename' ]  =  drupal_basename ( $values [ 'uri' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // Automatically detect filemime if not set.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( ! isset ( $values [ 'filemime' ])  &&  isset ( $values [ 'uri' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $values [ 'filemime' ]  =  \Drupal :: service ( 'file.mime_type.guesser' ) -> guess ( $values [ 'uri' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  function  preSave ( EntityStorageInterface  $storage )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    parent :: preSave ( $storage ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-02 15:56:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // The file itself might not exist or be available right now.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $uri  =  $this -> getFileUri (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $size  =  @ filesize ( $uri ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $this -> setSize ( $size ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-17 17:00:26 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  static  function  preDelete ( EntityStorageInterface  $storage ,  array  $entities )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    parent :: preDelete ( $storage ,  $entities ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $entities  as  $entity )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      // Delete all remaining references to this file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $file_usage  =  \Drupal :: service ( 'file.usage' ) -> listUsage ( $entity ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      if  ( ! empty ( $file_usage ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $file_usage  as  $module  =>  $usage )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          \Drupal :: service ( 'file.usage' ) -> delete ( $entity ,  $module ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      // Delete the actual file. Failures due to invalid files and files that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      // were already deleted are logged to watchdog but ignored, the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      // corresponding file entity will be deleted.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      file_unmanaged_delete ( $entity -> getFileUri ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  { @ inheritdoc } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  public  static  function  baseFieldDefinitions ( EntityTypeInterface  $entity_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'fid' ]  =  BaseFieldDefinition :: create ( 'integer' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'File ID' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The file ID.' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setReadOnly ( TRUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setSetting ( 'unsigned' ,  TRUE ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'uuid' ]  =  BaseFieldDefinition :: create ( 'uuid' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'UUID' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The file UUID.' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setReadOnly ( TRUE ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'langcode' ]  =  BaseFieldDefinition :: create ( 'language' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'Language code' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The file language code.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'uid' ]  =  BaseFieldDefinition :: create ( 'entity_reference' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'User ID' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The user ID of the file.' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setSetting ( 'target_type' ,  'user' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'filename' ]  =  BaseFieldDefinition :: create ( 'string' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'Filename' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'Name of the file with no path components.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'uri' ]  =  BaseFieldDefinition :: create ( 'uri' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'URI' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The URI to access the file (either local or remote).' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setSetting ( 'max_length' ,  255 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setSetting ( 'case_sensitive' ,  TRUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> addConstraint ( 'FileUriUnique' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'filemime' ]  =  BaseFieldDefinition :: create ( 'string' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'File MIME type' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setSetting ( 'is_ascii' ,  TRUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( " The file's MIME type. " )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'filesize' ]  =  BaseFieldDefinition :: create ( 'integer' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'File size' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The size of the file in bytes.' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setSetting ( 'unsigned' ,  TRUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setSetting ( 'size' ,  'big' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'status' ]  =  BaseFieldDefinition :: create ( 'boolean' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'Status' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The status of the file, temporary (FALSE) and permanent (TRUE).' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDefaultValue ( FALSE ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'created' ]  =  BaseFieldDefinition :: create ( 'created' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'Created' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The timestamp that the file was created.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $fields [ 'changed' ]  =  BaseFieldDefinition :: create ( 'changed' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setLabel ( t ( 'Changed' )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      -> setDescription ( t ( 'The timestamp that the file was last changed.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  $fields ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}