function media_browser_plus_move_root_folder in Media Browser Plus 7.3
Same name and namespace in other branches
- 7.2 includes/media_browser_plus.folders.inc \media_browser_plus_move_root_folder()
Moves the root folder of media files.
Updates the variable media_root_folder too.
Parameters
string $source: Source path.
string $destination: Destination path.
1 call to media_browser_plus_move_root_folder()
- media_browser_plus_media_settings_submit in includes/
media_browser_plus.admin.inc - Submit handler for the Media browser plus settings form.
File
- includes/
media_browser_plus.folders.inc, line 18 - Folder manipulation functions.
Code
function media_browser_plus_move_root_folder($source, $destination) {
if (!empty($source)) {
$source .= '/';
}
if (!empty($destination)) {
$destination .= '/';
}
// Load root folder term.
$root_folder_term = media_browser_plus_get_media_root_folder();
// Prepare destination.
foreach (media_get_local_stream_wrappers() as $scheme => $scheme_info) {
$directory = file_stream_wrapper_uri_normalize($scheme . '://' . $destination);
file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
}
variable_set('media_root_folder', trim($destination, '/'));
// Move media files in root folder itself. We do this because if the root
// folder was located in the default file directory of Drupal we can't move
// all files / folders.
$file_query = new EntityFieldQuery();
$files = $file_query
->entityCondition('entity_type', 'file')
->fieldCondition('field_folder', 'tid', $root_folder_term->tid)
->execute();
if (!empty($files['file'])) {
$file_entities = file_load_multiple(array_keys($files['file']));
foreach ($file_entities as $file_entity) {
file_move($file_entity, file_stream_wrapper_uri_normalize(file_uri_scheme($file_entity->uri) . '://' . $destination));
}
}
// Collect the subfolder operations.
$batch = array(
'title' => t('Move root folder'),
'operations' => array(),
'finished' => 'media_browser_plus_move_root_folder_complete',
'file' => drupal_get_path('module', 'media_browser_plus') . '/includes/media_browser_plus.folders.inc',
);
// Set the media root folder variable to the new destination.
$batch['operations'] = array();
// Move subfolders.
$root_subfolders = taxonomy_get_children($root_folder_term->tid);
foreach ($root_subfolders as $subfolder) {
$subfolder_source = media_browser_plus_construct_dir_path($subfolder);
$subfolder_destination = $destination . str_replace($source, '', $subfolder_source);
// Already takes care of multiple stream wrappers.
$batch['operations'] = array_merge($batch['operations'], media_browser_plus_move_subfolder($subfolder, $subfolder_source, $subfolder_destination));
}
batch_set($batch);
}