1 file.pages.inc | _file_usage_list_links(File $file, &$known_count, &$unknown_count) |
Build a list of links to content that references a file.
Parameters
File $file: The file entity for which a list of links should be generated.
int $known_count: The number of usages that are found and to which the user has access.
int $unknown_count: The number of usages which cannot be displayed in the list of links.
Return value
array: An array of strings suitable for passing into theme('item_list').
File
- core/
modules/ file/ file.pages.inc, line 918 - Supports file operations including Manage and Delete.
Code
function _file_usage_list_links(File $file, &$known_count, &$unknown_count) {
// Make a list of links showing where this file is in use. Files in use by
// known entities are linked. Orphaned usages or ones not associated with an
// entities are considered an "Unknown" usage. If the user does not have
// access to the associated entity, it is considered unknown and no link is
// shown.
$known_count = 0;
$unknown_count = 0;
$entity_list = array();
if ($file_usage_list = file_usage_list($file)) {
foreach ($file_usage_list as $module_name => $module_usages) {
foreach ($module_usages as $entity_type => $entity_usages) {
$entity_type_info = entity_get_info($entity_type);
$entity_ids = array();
foreach ($entity_usages as $entity_id => $usage_count) {
if ($entity_type_info) {
$entity_ids[] = $entity_id;
}
else {
$unknown_count += $usage_count;
}
}
if ($entity_ids) {
$entities = entity_load_multiple($entity_type, $entity_ids);
// Perform an access check on all given entities.
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', $entity_type);
$query->entityCondition('entity_id', $entity_ids);
$query->addTag($entity_type . '_access');
$result = $query->execute();
foreach ($entities as $entity) {
// If the entity is in the EFQ result, access is allowed.
if (isset($result[$entity_type][$entity->id()])) {
$uri = $entity->uri();
$entity_list[] = l($entity->label(), $uri['path'], $uri['options']);
$known_count++;
}
// If not, do not show a link and consider it an unknown location.
else {
$unknown_count++;
}
}
}
}
}
}
return $entity_list;
}