function media_browser_plus_folder_update_file_locations_batch in Media Browser Plus 7
Same name and namespace in other branches
- 7.3 includes/media_browser_plus.folders.inc \media_browser_plus_folder_update_file_locations_batch()
- 7.2 includes/media_browser_plus.folders.inc \media_browser_plus_folder_update_file_locations_batch()
Batch function that updates all media URIs inside the given folders.
Parameters
$folders:
$context:
1 string reference to 'media_browser_plus_folder_update_file_locations_batch'
- media_browser_plus_folder_save_folder in includes/
media_browser_plus.folders.inc - @todo Document what this function is does.
File
- includes/
media_browser_plus.folders.inc, line 492 - Folder manipulation functions
Code
function media_browser_plus_folder_update_file_locations_batch($folders, &$context) {
$per_page = 25;
$conditions = array();
$conditions[] = array(
'field' => array(
'field_folder',
'tid',
$folders,
'IN',
),
);
$options = array(
'apply_filter' => FALSE,
'count_only' => TRUE,
'conditions' => $conditions,
);
$media_count = media_browser_plus_load_multiple($options);
if (empty($context['sandbox'])) {
$context['sandbox']['progress'] = 0;
$context['sandbox']['max'] = $media_count;
}
// Look how far we got and where we have to resume.
$media_start = $context['sandbox']['progress'];
$page = $media_start == 0 ? 0 : bcdiv($media_start, $per_page, 0);
if (!isset($context['results'])) {
$context['results'] = array(
'success' => array(),
'errors' => array(),
);
}
$order = array(
array(
'property' => array(
'fid',
'ASC',
),
),
);
$attributes = array(
'apply_filter' => FALSE,
'paging' => TRUE,
'per_page' => $per_page,
'page' => $page,
'order' => $order,
'conditions' => $conditions,
);
$media_query = media_browser_plus_load_multiple($attributes);
// Checking media.
foreach ($media_query->results as $media) {
if (isset($media->field_folder[LANGUAGE_NONE][0]['tid'])) {
$path = media_browser_plus_construct_dir_path(taxonomy_term_load($media->field_folder[LANGUAGE_NONE][0]['tid']));
$media->uri = $path . '/' . array_pop(explode('/', $media->uri));
file_save($media);
}
}
// Increment start.
$media_start = $media_start + $per_page;
// Make sure start is not above max (for progress).
$media_start = $media_start > $media_count ? $media_count : $media_start;
// Set sandbox value.
$context['sandbox']['max'] = $media_count;
$context['sandbox']['progress'] = $media_start;
// Set other context values.
$context['message'] = t('Updating') . '...(' . $context['sandbox']['progress'] . '/' . $context['sandbox']['max'] . ') ';
if ($context['sandbox']['progress'] < $context['sandbox']['max']) {
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}
}