Project

General

Profile

Paste
Download (1.89 KB) Statistics
| Branch: | Revision:

root / drupal7 / modules / file / file.api.php @ 27e02aed

1
<?php
2

    
3
/**
4
 * @file
5
 * Hooks for file module.
6
 */
7

    
8
/**
9
 * Control download access to files.
10
 *
11
 * The hook is typically implemented to limit access based on the entity the
12
 * file is referenced, e.g., only users with access to a node should be allowed
13
 * to download files attached to that node.
14
 *
15
 * @param array $file_item
16
 *   The array of information about the file to check access for.
17
 * @param $entity_type
18
 *   The type of $entity; for example, 'node' or 'user'.
19
 * @param $entity
20
 *   The $entity to which $file is referenced.
21
 *
22
 * @return
23
 *   TRUE is access should be allowed by this entity or FALSE if denied. Note
24
 *   that denial may be overridden by another entity controller, making this
25
 *   grant permissive rather than restrictive.
26
 *
27
 * @see hook_field_access().
28
 */
29
function hook_file_download_access($file_item, $entity_type, $entity) {
30
  if ($entity_type == 'node') {
31
    return node_access('view', $entity);
32
  }
33
}
34

    
35
/**
36
 * Alter the access rules applied to a file download.
37
 *
38
 * Entities that implement file management set the access rules for their
39
 * individual files. Module may use this hook to create custom access rules
40
 * for file downloads.
41
 *
42
 * @see hook_file_download_access().
43
 *
44
 * @param $grants
45
 *   An array of grants gathered by hook_file_download_access(). The array is
46
 *   keyed by the module that defines the entity type's access control; the
47
 *   values are Boolean grant responses for each module.
48
 * @param array $file_item
49
 *   The array of information about the file to alter access for.
50
 * @param $entity_type
51
 *   The type of $entity; for example, 'node' or 'user'.
52
 * @param $entity
53
 *   The $entity to which $file is referenced.
54
 */
55
function hook_file_download_access_alter(&$grants, $file_item, $entity_type, $entity) {
56
  // For our example module, we always enforce the rules set by node module.
57
  if (isset($grants['node'])) {
58
    $grants = array('node' => $grants['node']);
59
  }
60
}