root / drupal7 / sites / all / modules / field_collection / field_collection.api.php @ 5e632cae
1 | 31a5a6d6 | Assos Assos | <?php
|
---|---|---|---|
2 | |||
3 | /**
|
||
4 | * @file
|
||
5 | a1cafe7e | Assos Assos | * Contains API documentation and examples for the Field Collection.
|
6 | 31a5a6d6 | Assos Assos | */
|
7 | |||
8 | /**
|
||
9 | * @addtogroup hooks
|
||
10 | * @{
|
||
11 | */
|
||
12 | |||
13 | /**
|
||
14 | * Alter whether a field collection item is considered empty.
|
||
15 | *
|
||
16 | * This hook allows modules to determine whether a field collection is empty
|
||
17 | * before it is saved.
|
||
18 | *
|
||
19 | 950416da | Assos Assos | * @param bool $is_empty
|
20 | 31a5a6d6 | Assos Assos | * Whether or not the field should be considered empty.
|
21 | * @param FieldCollectionItemEntity $item
|
||
22 | * The field collection we are currently operating on.
|
||
23 | */
|
||
24 | function hook_field_collection_is_empty_alter(&$is_empty, FieldCollectionItemEntity $item) { |
||
25 | if (isset($item->my_field) && empty($item->my_field)) { |
||
26 | $is_empty = TRUE; |
||
27 | } |
||
28 | } |
||
29 | |||
30 | /**
|
||
31 | * Acts on field collections being loaded from the database.
|
||
32 | *
|
||
33 | * This hook is invoked during field collection item loading, which is handled
|
||
34 | * by entity_load(), via the EntityCRUDController.
|
||
35 | *
|
||
36 | * @param array $entities
|
||
37 | * An array of field collection item entities being loaded, keyed by id.
|
||
38 | *
|
||
39 | * @see hook_entity_load()
|
||
40 | */
|
||
41 | function hook_field_collection_item_load(array $entities) { |
||
42 | $result = db_query('SELECT pid, foo FROM {mytable} WHERE pid IN(:ids)', array(':ids' => array_keys($entities))); |
||
43 | foreach ($result as $record) { |
||
44 | $entities[$record->pid]->foo = $record->foo; |
||
45 | } |
||
46 | } |
||
47 | |||
48 | /**
|
||
49 | * Responds when a field collection item is inserted.
|
||
50 | *
|
||
51 | * This hook is invoked after the field collection item is inserted into the
|
||
52 | * database.
|
||
53 | *
|
||
54 | * @param FieldCollectionItemEntity $field_collection_item
|
||
55 | * The field collection item that is being inserted.
|
||
56 | *
|
||
57 | * @see hook_entity_insert()
|
||
58 | */
|
||
59 | function hook_field_collection_item_insert(FieldCollectionItemEntity $field_collection_item) { |
||
60 | db_insert('mytable')->fields(array( |
||
61 | 'id' => entity_id('field_collection_item', $field_collection_item), |
||
62 | 'extra' => print_r($field_collection_item, TRUE), |
||
63 | ))->execute(); |
||
64 | } |
||
65 | |||
66 | /**
|
||
67 | * Acts on a field collection item being inserted or updated.
|
||
68 | *
|
||
69 | a1cafe7e | Assos Assos | * This hook is invoked before the field collection item is saved to the
|
70 | * database.
|
||
71 | 31a5a6d6 | Assos Assos | *
|
72 | * @param FieldCollectionItemEntity $field_collection_item
|
||
73 | * The field collection item that is being inserted or updated.
|
||
74 | *
|
||
75 | * @see hook_entity_presave()
|
||
76 | */
|
||
77 | function hook_field_collection_item_presave(FieldCollectionItemEntity $field_collection_item) { |
||
78 | $field_collection_item->name = 'foo'; |
||
79 | } |
||
80 | |||
81 | /**
|
||
82 | * Responds to a field collection item being updated.
|
||
83 | *
|
||
84 | * This hook is invoked after the field collection item has been updated in the
|
||
85 | * database.
|
||
86 | *
|
||
87 | * @param FieldCollectionItemEntity $field_collection_item
|
||
88 | * The field collection item that is being updated.
|
||
89 | *
|
||
90 | * @see hook_entity_update()
|
||
91 | */
|
||
92 | function hook_field_collection_item_update(FieldCollectionItemEntity $field_collection_item) { |
||
93 | db_update('mytable')
|
||
94 | ->fields(array('extra' => print_r($field_collection_item, TRUE))) |
||
95 | ->condition('id', entity_id('field_collection_item', $field_collection_item)) |
||
96 | ->execute(); |
||
97 | } |
||
98 | |||
99 | /**
|
||
100 | * Responds to field collection item deletion.
|
||
101 | *
|
||
102 | * This hook is invoked after the field collection item has been removed from
|
||
103 | * the database.
|
||
104 | *
|
||
105 | * @param FieldCollectionItemEntity $field_collection_item
|
||
106 | * The field collection item that is being deleted.
|
||
107 | *
|
||
108 | * @see hook_entity_delete()
|
||
109 | */
|
||
110 | function hook_field_collection_item_delete(FieldCollectionItemEntity $field_collection_item) { |
||
111 | db_delete('mytable')
|
||
112 | ->condition('pid', entity_id('field_collection_item', $field_collection_item)) |
||
113 | ->execute(); |
||
114 | } |
||
115 | |||
116 | 5e632cae | Assos Assos | /**
|
117 | * Responds to field collection item archiving.
|
||
118 | *
|
||
119 | * This hook is invoked after the field collection item has been archived while
|
||
120 | * removing it from its host entity.
|
||
121 | *
|
||
122 | * @param FieldCollectionItemEntity $field_collection_item
|
||
123 | * The field collection item that is being archived.
|
||
124 | */
|
||
125 | function hook_field_collection_item_archive(FieldCollectionItemEntity $field_collection_item) { |
||
126 | db_update('mytable')
|
||
127 | ->fields(array('archived' => 1)) |
||
128 | ->condition('id', entity_id('field_collection_item', $field_collection_item)) |
||
129 | ->execute(); |
||
130 | } |
||
131 | |||
132 | 31a5a6d6 | Assos Assos | /**
|
133 | * Act on a field collection item that is being assembled before rendering.
|
||
134 | *
|
||
135 | * @param $field_collection_item
|
||
136 | * The field collection item entity.
|
||
137 | * @param $view_mode
|
||
138 | * The view mode the field collection item is rendered in.
|
||
139 | * @param $langcode
|
||
140 | * The language code used for rendering.
|
||
141 | *
|
||
142 | * The module may add elements to $field_collection_item->content prior to
|
||
143 | * rendering. The structure of $field_collection_item->content is a renderable
|
||
144 | * array as expected by drupal_render().
|
||
145 | *
|
||
146 | * @see hook_entity_prepare_view()
|
||
147 | * @see hook_entity_view()
|
||
148 | */
|
||
149 | function hook_field_collection_item_view($field_collection_item, $view_mode, $langcode) { |
||
150 | $field_collection_item->content['my_additional_field'] = array( |
||
151 | '#markup' => $additional_field, |
||
152 | '#weight' => 10, |
||
153 | '#theme' => 'mymodule_my_additional_field', |
||
154 | ); |
||
155 | } |
||
156 | |||
157 | /**
|
||
158 | * Alter the results of entity_view() for field collection items.
|
||
159 | *
|
||
160 | a1cafe7e | Assos Assos | * This hook is called after the content has been assembled in a structured
|
161 | 31a5a6d6 | Assos Assos | * array and may be used for doing processing which requires that the complete
|
162 | * field collection item content structure has been built.
|
||
163 | *
|
||
164 | * If the module wishes to act on the rendered HTML of the field collection item
|
||
165 | * rather than the structured content array, it may use this hook to add a
|
||
166 | * #post_render callback. See drupal_render() and theme() documentation
|
||
167 | * respectively for details.
|
||
168 | *
|
||
169 | * @param $build
|
||
170 | * A renderable array representing the field collection item content.
|
||
171 | *
|
||
172 | * @see hook_entity_view_alter()
|
||
173 | */
|
||
174 | function hook_field_collection_item_view_alter($build) { |
||
175 | if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) { |
||
176 | // Change its weight.
|
||
177 | $build['an_additional_field']['#weight'] = -10; |
||
178 | |||
179 | // Add a #post_render callback to act on the rendered HTML of the entity.
|
||
180 | $build['#post_render'][] = 'my_module_post_render'; |
||
181 | } |
||
182 | } |
||
183 | |||
184 | /**
|
||
185 | * Alter the label for a field collection.
|
||
186 | *
|
||
187 | * @param FieldCollectionItemEntity $item
|
||
188 | * The field collection item object.
|
||
189 | * @param $host
|
||
190 | * The host entity of the field collection item.
|
||
191 | * @param $field
|
||
192 | * The field information about the item.
|
||
193 | *
|
||
194 | * @return $label
|
||
195 | * A string to represent the label for this item type.
|
||
196 | */
|
||
197 | function hook_field_collection_item_label($item, $host, $field) { |
||
198 | switch ($item->field_name) { |
||
199 | case 'field_my_first_collection': |
||
200 | $item_wrapper = entity_metadata_wrapper('field_collection_item', $item); |
||
201 | |||
202 | 950416da | Assos Assos | $title = $item_wrapper->field_title->value(); |
203 | 31a5a6d6 | Assos Assos | $author = $item_wrapper->field_author->value(); |
204 | |||
205 | return "{$title} by {$author}"; |
||
206 | } |
||
207 | } |
||
208 | |||
209 | |||
210 | /**
|
||
211 | * @}
|
||
212 | */ |