1 file.pages.inc | file_usage_page($file) |
Page callback to show file usage information.
File
- core/
modules/ file/ file.pages.inc, line 1040 - Supports file operations including Manage and Delete.
Code
function file_usage_page($file) {
$rows = array();
$occurred_entities = array();
// Determine all of the locations where a file is used, then loop through the
// occurrences and filter out any duplicates.
foreach (file_usage_list($file) as $module => $type) {
foreach ($type as $entity_type => $entity_ids) {
// There are cases where the actual entity doesn't exist.
// We have to handle this.
$entity_info = entity_get_info($entity_type);
$entities = empty($entity_info) ? NULL : entity_load($entity_type, array_keys($entity_ids));
foreach ($entity_ids as $entity_id => $count) {
// If this entity has already been listed in the table, just add any
// additional usage to the total count column in the table row and
// continue on to the next iteration of the loop.
if (isset($occurred_entities[$entity_type][$entity_id])) {
$rows[$occurred_entities[$entity_type][$entity_id]][2] += $count;
continue;
}
// Retrieve the label and the URI of the entity.
$label = empty($entities[$entity_id]) ? $module : entity_label($entity_type, $entities[$entity_id]);
$entity_uri = empty($entities[$entity_id]) ? NULL : entity_uri($entity_type, $entities[$entity_id]);
// Link the label to the URI when possible.
if (!empty($entity_uri['path'])) {
$uri = $entity_uri['path'];
$entity_label = l($label, $uri);
}
else {
$entity_label = check_plain($label);
}
$rows[] = array($entity_label, $entity_type, $count);
// Record the occurrence of the entity to ensure that it isn't listed in
// the table again.
$occurred_entities[$entity_type][$entity_id] = count($rows) - 1;
}
}
}
$header = array(t('Entity'), t('Entity type'), t('Use count'));
$build['caption'] = array(
'#type' => 'help',
'#markup' => t('This table lists all of the places where @filename is used.', array('@filename' => $file->filename)),
);
$build['usage_table'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => t('This file is not currently used.'),
);
return $build;
}