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} */ 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 getChangedTime() { return $this->get('changed')->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'] = file_get_mimetype($values['uri']); } } /** * {@inheritdoc} */ public function preSave(EntityStorageInterface $storage) { parent::preSave($storage); $this->setSize(filesize($this->getFileUri())); } /** * {@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); $fields['filemime'] = BaseFieldDefinition::create('string') ->setLabel(t('File MIME type')) ->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).')); $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; } }