You are here

function media_gallery_install in Media Gallery 7

Same name and namespace in other branches
  1. 7.2 media_gallery.install \media_gallery_install()

Implements hook_install().

File

./media_gallery.install, line 20
Install file for media_gallery. Includes field and instance definitions.

Code

function media_gallery_install() {

  // Adjust bundle settings for the media gallery content type.
  $bundle_settings = field_bundle_settings('node', 'media_gallery');

  // Enable the gallery block and full view modes.
  $bundle_settings['view_modes']['media_gallery_block']['custom_settings'] = TRUE;
  $bundle_settings['view_modes']['full']['custom_settings'] = TRUE;

  // Adjust the "Add media link" extra field so that it only displays on the
  // full node view, with the correct weight relative to the other fields. In
  // particular, we put it directly after the 'media_gallery_description'
  // field; see _media_gallery_controlled_instances().
  $bundle_settings['extra_fields']['display']['add_media_link']['full']['weight'] = 1;
  $bundle_settings['extra_fields']['display']['add_media_link']['full']['visible'] = TRUE;
  $bundle_settings['extra_fields']['display']['add_media_link']['default']['visible'] = FALSE;
  $bundle_settings['extra_fields']['display']['add_media_link']['teaser']['visible'] = FALSE;
  $bundle_settings['extra_fields']['display']['add_media_link']['media_gallery_block']['visible'] = FALSE;

  // _field_extra_fields_pre_render() requires an explicit 'weight' value for
  // all extra field settings stored in the database.
  foreach ($bundle_settings['extra_fields']['display']['add_media_link'] as $name => $view_mode) {
    $bundle_settings['extra_fields']['display']['add_media_link'][$name]['weight'] = 1;
  }

  // Save the new bundle settings.
  field_bundle_settings('node', 'media_gallery', $bundle_settings);

  // Enable custom display settings for gallery context view modes for file
  // types that can be in a gallery.
  foreach (array(
    'audio',
    'image',
    'video',
  ) as $bundle) {
    $bundle_settings = field_bundle_settings('file', $bundle);
    foreach (media_gallery_file_view_modes() as $view_mode => $label) {
      $bundle_settings['view_modes'][$view_mode]['custom_settings'] = TRUE;
    }
    field_bundle_settings('file', $bundle, $bundle_settings);
  }

  // Clear caches so that our implementation of hook_image_default_styles() is
  // correctly used when all the fields created below need it to be.
  // @todo There should obviously be a cleaner way to do this.
  cache_clear_all('*', 'cache', TRUE);
  drupal_static_reset('image_styles');
  drupal_static_reset('image_effects');
  if (module_exists('styles') && function_exists('styles_style_flush')) {
    styles_style_flush();
  }

  // Add the taxonomy vocabulary for media gallery collections.
  $vocabulary = media_gallery_create_taxonomy_vocab();

  // Make sure the standard 'field_tags' field exists.
  _media_gallery_ensure_field_tags();

  // Create fields (but not instances yet) for media_gallery nodes and
  // for the gallery collection vocabulary.
  foreach (_media_gallery_controlled_fields() as $field) {
    _media_gallery_ensure_field($field);
  }

  // Attach fields to gallery_collection taxonomy terms.
  foreach (_media_gallery_controlled_instances('taxonomy_term') as $instance) {
    _media_gallery_ensure_instance($instance);
  }

  // Now that the gallery_collection vocabulary exists and has fields attached,
  // create an "All galleries" term for galleries to belong to by default.
  media_gallery_create_taxonomy_term($vocabulary);

  // Attach fields to the media gallery node type (including a term reference
  // for the default collection).
  foreach (_media_gallery_controlled_instances('node') as $instance) {
    _media_gallery_ensure_instance($instance);
  }

  // Make sure all media bundles have the instances we expect.
  _media_gallery_ensure_media_instances();

  // Set variables for the media gallery node type.
  variable_set('node_submitted_media_gallery', FALSE);
  variable_set('node_options_media_gallery', array(
    'status',
  ));
  variable_set('comment_media_gallery', 0);
}