function file_entity_install in File Entity (fieldable files) 7.2
Same name and namespace in other branches
- 8.2 file_entity.install \file_entity_install()
- 7.3 file_entity.install \file_entity_install()
- 7 file_entity.install \file_entity_install()
Implements hook_install().
File
- ./file_entity.install, line 173 
- Install, update and uninstall functions for the file_entity module.
Code
function file_entity_install() {
  $schema = array();
  file_entity_schema_alter($schema);
  $spec = $schema['file_managed']['fields']['type'];
  $indexes_new = array(
    'indexes' => $schema['file_managed']['indexes'],
  );
  // If another module (e.g., Media) had added a {file_managed}.type field,
  // then change it to the expected specification. Otherwise, add the field.
  if (db_field_exists('file_managed', 'type')) {
    // db_change_field() will fail if any records have type=NULL, so update
    // them to the new default value.
    db_update('file_managed')
      ->fields(array(
      'type' => $spec['default'],
    ))
      ->isNull('type')
      ->execute();
    // Indexes using a field being changed must be dropped prior to calling
    // db_change_field(). However, the database API doesn't provide a way to do
    // this without knowing what the old indexes are. Therefore, it is the
    // responsibility of the module that added them to drop them prior to
    // allowing this module to be installed.
    db_change_field('file_managed', 'type', 'type', $spec, $indexes_new);
  }
  else {
    db_add_field('file_managed', 'type', $spec, $indexes_new);
  }
  // Set permissions.
  $roles = user_roles();
  foreach ($roles as $rid => $role) {
    user_role_grant_permissions($rid, array(
      'view files',
    ));
  }
  // Create the title and alt text fields.
  _file_entity_create_alt_title_fields();
  // Configure default pathauto variables if it is currently installed.
  if (module_exists('pathauto')) {
    variable_set('pathauto_file_pattern', 'file/[file:name]');
  }
  // Classify existing files according to the currently defined file types.
  // Queue all files to be classified during cron runs using the Queue API.
  $queue = DrupalQueue::get('file_entity_type_determine');
  $result = db_query('SELECT fid FROM {file_managed}');
  foreach ($result as $record) {
    $queue
      ->createItem($record->fid);
  }
  // Warn users that existing files will not have a file type until the queue
  // has been processed.
  if ($queue
    ->numberOfItems()) {
    drupal_set_message(t('Existing files must be classified according to the currently defined file types. These files have been queued for processing and will have their file type determined during cron runs.'));
  }
}