You are here

function media_browser_plus_uuid_entity_features_rebuild_alter in Media Browser Plus 7.3

Implements hook_uuid_entity_features_rebuild_alter().

File

./media_browser_plus.module, line 981
Media Browser Plus - enhanced file management functions.

Code

function media_browser_plus_uuid_entity_features_rebuild_alter($entity_type, &$entity) {

  // If this file is marked as child of the root folder get the current root
  // folder and set it.
  if (!empty($entity->mbp_uuid_features_root_folder)) {
    unset($entity->mbp_uuid_features_root_folder);
    $root_folder = media_browser_plus_get_media_root_folder();

    // Take all reference fields in account.
    $fields = uuid_features_get_field_items_iterator($entity, $entity_type, 'taxonomy_term_reference');
    foreach ($fields as $field_name => $field) {
      if (isset($entity->{$field_name})) {
        foreach ($field as $language => $items) {
          foreach ($items as $delta => $item) {
            if (in_array('mbp_uuid_features_root_folder', $entity->{$field_name}[$language][$delta])) {
              $entity->{$field_name}[$language][$delta]['tid'] = $root_folder->tid;
            }
          }
        }
      }
    }
    $fields = uuid_features_get_field_items_iterator($entity, $entity_type, 'entityreference');
    foreach ($fields as $field_name => $field) {
      if (isset($entity->{$field_name})) {
        foreach ($field as $language => $items) {
          foreach ($items as $delta => $item) {
            if (in_array('mbp_uuid_features_root_folder', $entity->{$field_name}[$language][$delta])) {
              $entity->{$field_name}[$language][$delta]['target_id'] = $root_folder->tid;
            }
          }
        }
      }
    }
  }

  // Ensure imported folders also have the generic media root set.
  if ($entity_type == 'taxonomy_term' && $entity->vocabulary_machine_name == 'media_folders') {
    $root_parents = array_keys($entity->parent, 'mbp_uuid_features_root_folder');
    foreach ($root_parents as $key) {
      $entity->parent[$key] = $root_folder->tid;
    }
    if ($entity->uuid == 'mbp_uuid_features_root_folder') {
      $entity->uuid = $root_folder->uuid;
      $entity->tid = $root_folder->tid;
    }
  }
}