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 |
} |