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