array( 'uuid' => NULL, 'data' => NULL ), ) + parent::defaultStorageSettings(); } /** * {@inheritdoc} */ public static function defaultFieldSettings() { $settings = array( 'file_extensions' => '', 'file_directory' => 'videos/[date:custom:Y]-[date:custom:m]', ) + parent::defaultFieldSettings(); // Remove field option. unset($settings['description_field']); return $settings; } /** * {@inheritdoc} */ public static function schema(FieldStorageDefinitionInterface $field_definition) { return array( 'columns' => array( 'target_id' => array( 'description' => 'The ID of the file entity.', 'type' => 'int', 'unsigned' => TRUE, ), 'data' => array( 'description' => "Additional video metadata.", 'type' => 'varchar', 'length' => 512, ), ), 'indexes' => array( 'target_id' => array('target_id'), ), 'foreign keys' => array( 'target_id' => array( 'table' => 'file_managed', 'columns' => array('target_id' => 'fid'), ), ), ); } /** * {@inheritdoc} */ public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) { $properties = parent::propertyDefinitions($field_definition); // unset the default values from the file module unset($properties['display']); unset($properties['description']); $properties['data'] = DataDefinition::create('string') ->setLabel(t('Additional video metadata')) ->setDescription(t("Additional metadata for the uploadded or embedded video.")); return $properties; } /** * {@inheritdoc} */ public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) { $element = array(); return $element; } /** * {@inheritdoc} */ public function fieldSettingsForm(array $form, FormStateInterface $form_state) { // Get base form from FileItem. $element = parent::fieldSettingsForm($form, $form_state); // Remove the description option. unset($element['description_field']); unset($element['file_directory']); unset($element['file_extensions']); unset($element['max_filesize']); return $element; } /** * {@inheritdoc} */ public function preSave() { parent::preSave(); } /** * {@inheritdoc} */ public static function generateSampleValue(FieldDefinitionInterface $field_definition) { $random = new Random(); $settings = $field_definition->getSettings(); // Prepare destination. $dirname = static::doGetUploadLocation($settings); file_prepare_directory($dirname, FILE_CREATE_DIRECTORY); // Generate a file entity. $destination = $dirname . '/' . $random->name(10, TRUE) . '.mp4'; $data = $random->paragraphs(3); $file = file_save_data($data, $destination, FILE_EXISTS_ERROR); $values = array( 'target_id' => $file->id(), ); return $values; } /** * {@inheritdoc} */ public function isDisplayed() { // Video items do not have per-item visibility settings. return TRUE; } /** * Gets the entity manager. * * @return \Drupal\Core\Entity\EntityManagerInterface. */ protected function getEntityManager() { if (!isset($this->entityManager)) { $this->entityManager = \Drupal::entityManager(); } return $this->entityManager; } }