annotate sites/all/modules/entityreference_prepopulate/entityreference_prepopulate.module @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * Prepopulate entity reference values from URL.
danielebarchiesi@4 6 */
danielebarchiesi@4 7
danielebarchiesi@4 8 /**
danielebarchiesi@4 9 * Implements hook_ctools_plugin_directory().
danielebarchiesi@4 10 */
danielebarchiesi@4 11 function entityreference_prepopulate_ctools_plugin_directory($module, $plugin) {
danielebarchiesi@4 12 if ($module == 'entityreference' || $module == 'ctools') {
danielebarchiesi@4 13 return 'plugins/' . $plugin;
danielebarchiesi@4 14 }
danielebarchiesi@4 15 }
danielebarchiesi@4 16
danielebarchiesi@4 17 /**
danielebarchiesi@4 18 * Implements hook_field_create_instance().
danielebarchiesi@4 19 *
danielebarchiesi@4 20 * Add "default value function" setting to the field instance.
danielebarchiesi@4 21 * We have to do it from this hook, as we don't have another chance of setting
danielebarchiesi@4 22 * this option via the hook_field_info().
danielebarchiesi@4 23 */
danielebarchiesi@4 24 function entityreference_prepopulate_field_create_instance($instance) {
danielebarchiesi@4 25 if (empty($instance['settings']['behaviors']['prepopulate']['status'])) {
danielebarchiesi@4 26 return;
danielebarchiesi@4 27 }
danielebarchiesi@4 28
danielebarchiesi@4 29 $instance['default_value_function'] = 'entityreference_prepopulate_field_default_value';
danielebarchiesi@4 30 field_update_instance($instance);
danielebarchiesi@4 31 }
danielebarchiesi@4 32
danielebarchiesi@4 33 /**
danielebarchiesi@4 34 * Implements hook_field_update_instance().
danielebarchiesi@4 35 */
danielebarchiesi@4 36 function entityreference_prepopulate_field_update_instance($instance, $prior_instance) {
danielebarchiesi@4 37 if (empty($instance['settings']['behaviors']['prepopulate'])) {
danielebarchiesi@4 38 return;
danielebarchiesi@4 39 }
danielebarchiesi@4 40 if (isset($prior_instance['settings']['behaviors']['prepopulate']['status']) && $instance['settings']['behaviors']['prepopulate']['status'] == $prior_instance['settings']['behaviors']['prepopulate']['status']) {
danielebarchiesi@4 41 // Nothing changed.
danielebarchiesi@4 42 return;
danielebarchiesi@4 43 }
danielebarchiesi@4 44
danielebarchiesi@4 45 $instance['default_value_function'] = !empty($instance['settings']['behaviors']['prepopulate']['status']) ? 'entityreference_prepopulate_field_default_value' : '';
danielebarchiesi@4 46 field_update_instance($instance);
danielebarchiesi@4 47 }
danielebarchiesi@4 48
danielebarchiesi@4 49
danielebarchiesi@4 50 /**
danielebarchiesi@4 51 * Implements hook_field_attach_form().
danielebarchiesi@4 52 */
danielebarchiesi@4 53 function entityreference_prepopulate_field_attach_form($entity_type, $entity, &$form, &$form_state, $langcode) {
danielebarchiesi@4 54 list($id,,$bundle) = entity_extract_ids($entity_type, $entity);
danielebarchiesi@4 55
danielebarchiesi@4 56 if (!empty($form_state['triggering_element']['#ajax'])) {
danielebarchiesi@4 57 // We are inside AJAX, so values can't be taken from URL at the
danielebarchiesi@4 58 // moment.
danielebarchiesi@4 59 return;
danielebarchiesi@4 60 }
danielebarchiesi@4 61
danielebarchiesi@4 62 // Check if there is a field that needs to be prepopulated attached to the
danielebarchiesi@4 63 // given entity.
danielebarchiesi@4 64 $found = FALSE;
danielebarchiesi@4 65 foreach (field_info_instances($entity_type, $bundle) as $instance) {
danielebarchiesi@4 66 if (!empty($instance['settings']['behaviors']['prepopulate']['status'])) {
danielebarchiesi@4 67 $found = TRUE;
danielebarchiesi@4 68 break;
danielebarchiesi@4 69 }
danielebarchiesi@4 70 }
danielebarchiesi@4 71
danielebarchiesi@4 72 if (!$found) {
danielebarchiesi@4 73 return;
danielebarchiesi@4 74 }
danielebarchiesi@4 75
danielebarchiesi@4 76 foreach (element_children($form_state['field']) as $field_name) {
danielebarchiesi@4 77 foreach ($form_state['field'][$field_name] as $lang => $value) {
danielebarchiesi@4 78 $instance = $value['instance'];
danielebarchiesi@4 79 if (empty($instance['settings']['behaviors']['prepopulate']['status'])) {
danielebarchiesi@4 80 continue;
danielebarchiesi@4 81 }
danielebarchiesi@4 82 $settings = $instance['settings']['behaviors']['prepopulate'];
danielebarchiesi@4 83
danielebarchiesi@4 84 if ((!empty($settings['skip_perm']) && user_access($settings['skip_perm'])) || ($id && empty($settings['action_on_edit']))) {
danielebarchiesi@4 85 // User has access to skip the action, or the entity is already
danielebarchiesi@4 86 // saved, but "Apply action on edit", is disabled.
danielebarchiesi@4 87 continue;
danielebarchiesi@4 88 }
danielebarchiesi@4 89
danielebarchiesi@4 90 $field = $value['field'];
danielebarchiesi@4 91
danielebarchiesi@4 92 // Store prepopulated values in the form state to make them persistent,
danielebarchiesi@4 93 // in case the form is rebuilt by AJAX requests.
danielebarchiesi@4 94 $field_name = $field['field_name'];
danielebarchiesi@4 95
danielebarchiesi@4 96 if ($ids = entityreference_prepopulate_get_values($field, $instance)) {
danielebarchiesi@4 97 $form_state['entityreference_prepopulate'][$instance['entity_type']][$instance['bundle']][$field_name] = $ids;
danielebarchiesi@4 98 }
danielebarchiesi@4 99
danielebarchiesi@4 100 if ($ids || ($id && !empty($settings['action_on_edit']))) {
danielebarchiesi@4 101 // New entity with prepopualte values, or an existing entity,
danielebarchiesi@4 102 // we might need to disable/ hide the group-audience field.
danielebarchiesi@4 103 if ($settings['action'] == 'disable') {
danielebarchiesi@4 104 $form[$field_name][$lang]['#disabled'] = TRUE;
danielebarchiesi@4 105 }
danielebarchiesi@4 106 elseif ($settings['action'] == 'hide') {
danielebarchiesi@4 107 // We don't hide the field via hook_field_access(), as the
danielebarchiesi@4 108 // default value won't be set.
danielebarchiesi@4 109 $form[$field_name]['#access'] = FALSE;
danielebarchiesi@4 110 }
danielebarchiesi@4 111 }
danielebarchiesi@4 112 elseif (in_array($settings['fallback'], array('form_error', 'redirect'))) {
danielebarchiesi@4 113 $message = t('Field @label must be populated via URL.', array('@label' => $instance['label']));
danielebarchiesi@4 114 if ($settings['fallback'] == 'form_error') {
danielebarchiesi@4 115 form_error($form, $message);
danielebarchiesi@4 116 }
danielebarchiesi@4 117 elseif ($settings['fallback'] == 'redirect') {
danielebarchiesi@4 118 drupal_set_message($message, 'notice');
danielebarchiesi@4 119 drupal_goto();
danielebarchiesi@4 120 }
danielebarchiesi@4 121 }
danielebarchiesi@4 122 }
danielebarchiesi@4 123 }
danielebarchiesi@4 124 }
danielebarchiesi@4 125
danielebarchiesi@4 126 /**
danielebarchiesi@4 127 * Implements hook_field_access().
danielebarchiesi@4 128 */
danielebarchiesi@4 129 function entityreference_prepopulate_field_access($op, $field, $entity_type, $entity, $account) {
danielebarchiesi@4 130 if ($op != 'edit' || $field['type'] != 'entityreference') {
danielebarchiesi@4 131 return;
danielebarchiesi@4 132 }
danielebarchiesi@4 133
danielebarchiesi@4 134 if (empty($entity)) {
danielebarchiesi@4 135 // $entity might be NULL, so return early.
danielebarchiesi@4 136 // @see field_access().
danielebarchiesi@4 137 return;
danielebarchiesi@4 138 }
danielebarchiesi@4 139
danielebarchiesi@4 140 list($id,,$bundle) = entity_extract_ids($entity_type, $entity);
danielebarchiesi@4 141 if ($id) {
danielebarchiesi@4 142 // Entity is already saved.
danielebarchiesi@4 143 return;
danielebarchiesi@4 144 }
danielebarchiesi@4 145
danielebarchiesi@4 146 $instance = field_info_instance($entity_type, $field['field_name'], $bundle);
danielebarchiesi@4 147 if (empty($instance['settings']['behaviors']['prepopulate']['status'])) {
danielebarchiesi@4 148 return;
danielebarchiesi@4 149 }
danielebarchiesi@4 150
danielebarchiesi@4 151 $settings = $instance['settings']['behaviors']['prepopulate'];
danielebarchiesi@4 152 if (!empty($settings['skip_perm']) && user_access($settings['skip_perm'])) {
danielebarchiesi@4 153 return;
danielebarchiesi@4 154 }
danielebarchiesi@4 155 $ids = entityreference_prepopulate_get_values($field, $instance);
danielebarchiesi@4 156
danielebarchiesi@4 157 if (!$ids && $settings['fallback'] == 'hide') {
danielebarchiesi@4 158 return FALSE;
danielebarchiesi@4 159 }
danielebarchiesi@4 160 }
danielebarchiesi@4 161
danielebarchiesi@4 162 /**
danielebarchiesi@4 163 * Field default value callback.
danielebarchiesi@4 164 *
danielebarchiesi@4 165 * Set the default from the URL context. This works even if the widget is
danielebarchiesi@4 166 * not shown, e.g. due to restricted field access.
danielebarchiesi@4 167 *
danielebarchiesi@4 168 * @todo Check field cardinality.
danielebarchiesi@4 169 */
danielebarchiesi@4 170 function entityreference_prepopulate_field_default_value($entity_type, $entity, $field, $instance, $langcode) {
danielebarchiesi@4 171 $items = array();
danielebarchiesi@4 172 if ($ids = entityreference_prepopulate_get_values($field, $instance)) {
danielebarchiesi@4 173 $items = array();
danielebarchiesi@4 174 foreach ($ids as $id) {
danielebarchiesi@4 175 $items[] = array('target_id' => $id);
danielebarchiesi@4 176 }
danielebarchiesi@4 177 }
danielebarchiesi@4 178 return $items;
danielebarchiesi@4 179 }
danielebarchiesi@4 180
danielebarchiesi@4 181 /**
danielebarchiesi@4 182 * Wrapper function to get context (e.g. from URL or OG-context).
danielebarchiesi@4 183 *
danielebarchiesi@4 184 * @param $entity_type
danielebarchiesi@4 185 * The entity type the entity.
danielebarchiesi@4 186 * @param $entity
danielebarchiesi@4 187 * The entity object that is being checked.
danielebarchiesi@4 188 * @param $field
danielebarchiesi@4 189 * The field info array.
danielebarchiesi@4 190 * @param $instance
danielebarchiesi@4 191 * The instance info array.
danielebarchiesi@4 192 * @param $validate
danielebarchiesi@4 193 * Determine if access validation should be performed. Defaults to TRUE.
danielebarchiesi@4 194 *
danielebarchiesi@4 195 * @return
danielebarchiesi@4 196 * Array of IDs a user may view.
danielebarchiesi@4 197 */
danielebarchiesi@4 198 function entityreference_prepopulate_get_values($field, $instance, $validate = TRUE) {
danielebarchiesi@4 199 if (!$instance['settings']['behaviors']['prepopulate']['status']) {
danielebarchiesi@4 200 // Do nothing when prepopulate is disabled for this field.
danielebarchiesi@4 201 return;
danielebarchiesi@4 202 }
danielebarchiesi@4 203
danielebarchiesi@4 204 $field_name = $field['field_name'];
danielebarchiesi@4 205
danielebarchiesi@4 206 $cache = &drupal_static(__FUNCTION__, array());
danielebarchiesi@4 207 $identifier = array(
danielebarchiesi@4 208 $instance['entity_type'],
danielebarchiesi@4 209 $instance['bundle'],
danielebarchiesi@4 210 $field_name,
danielebarchiesi@4 211 $validate,
danielebarchiesi@4 212 );
danielebarchiesi@4 213
danielebarchiesi@4 214 if (module_exists('og') && og_is_group_audience_field($field_name)) {
danielebarchiesi@4 215 if (empty($instance['field_mode'])) {
danielebarchiesi@4 216 // Group audience field, but no field-mode provided.
danielebarchiesi@4 217 // So we iterate over the "default" and possibly "admin" field-modes,
danielebarchiesi@4 218 // and return those values together.
danielebarchiesi@4 219 $ids = array();
danielebarchiesi@4 220 $field_modes = !user_access('administer group') ? array('default') : array('default', 'admin');
danielebarchiesi@4 221 foreach ($field_modes as $field_mode) {
danielebarchiesi@4 222 $instance['field_mode'] = $field_mode;
danielebarchiesi@4 223 if ($og_ids = entityreference_prepopulate_get_values($field, $instance)) {
danielebarchiesi@4 224 $ids = array_merge($ids, $og_ids);
danielebarchiesi@4 225 }
danielebarchiesi@4 226 }
danielebarchiesi@4 227
danielebarchiesi@4 228 // Return the values.
danielebarchiesi@4 229 return $ids;
danielebarchiesi@4 230 }
danielebarchiesi@4 231
danielebarchiesi@4 232 $identifier[] = $instance['field_mode'];
danielebarchiesi@4 233 }
danielebarchiesi@4 234
danielebarchiesi@4 235 $identifier = implode(':', $identifier);
danielebarchiesi@4 236
danielebarchiesi@4 237 if (isset($cache[$identifier])) {
danielebarchiesi@4 238 return $cache[$identifier];
danielebarchiesi@4 239 }
danielebarchiesi@4 240
danielebarchiesi@4 241 $cache[$identifier] = $ids = array();
danielebarchiesi@4 242
danielebarchiesi@4 243 // Check if we have cached values.
danielebarchiesi@4 244 if (!$ids) {
danielebarchiesi@4 245 $ids = entityreference_prepopulate_get_values_from_cache($field, $instance);
danielebarchiesi@4 246 }
danielebarchiesi@4 247
danielebarchiesi@4 248 // Check if we have OG-context integration.
danielebarchiesi@4 249 if (!$ids) {
danielebarchiesi@4 250 $ids = entityreference_prepopulate_get_values_from_og_context($field, $instance);
danielebarchiesi@4 251 }
danielebarchiesi@4 252
danielebarchiesi@4 253 // Check if there are values in the URL.
danielebarchiesi@4 254 if (!$ids) {
danielebarchiesi@4 255 $ids = entityreference_prepopulate_get_values_from_url($field, $instance);
danielebarchiesi@4 256 }
danielebarchiesi@4 257
danielebarchiesi@4 258 if (!$ids || !$validate) {
danielebarchiesi@4 259 // No IDs found, or no validation is needed.
danielebarchiesi@4 260 $cache[$identifier] = $ids;
danielebarchiesi@4 261 return $ids;
danielebarchiesi@4 262 }
danielebarchiesi@4 263
danielebarchiesi@4 264 $handler = entityreference_get_selection_handler($field, $instance);
danielebarchiesi@4 265 if (!$ids = $handler->validateReferencableEntities($ids)) {
danielebarchiesi@4 266 $cache[$identifier] = FALSE;
danielebarchiesi@4 267 return;
danielebarchiesi@4 268 }
danielebarchiesi@4 269
danielebarchiesi@4 270 // Check access to the provided entities.
danielebarchiesi@4 271 $target_type = $field['settings']['target_type'];
danielebarchiesi@4 272 entity_load($target_type, $ids);
danielebarchiesi@4 273 foreach ($ids as $delta => $id) {
danielebarchiesi@4 274 $entity = entity_load_single($target_type, $id);
danielebarchiesi@4 275 if (!$entity || !entity_access('view', $target_type, $entity)) {
danielebarchiesi@4 276 unset($ids[$delta]);
danielebarchiesi@4 277 }
danielebarchiesi@4 278 }
danielebarchiesi@4 279
danielebarchiesi@4 280 $cache[$identifier] = $ids;
danielebarchiesi@4 281 return $ids;
danielebarchiesi@4 282 }
danielebarchiesi@4 283
danielebarchiesi@4 284 /**
danielebarchiesi@4 285 * Get the values from the cached form.
danielebarchiesi@4 286 *
danielebarchiesi@4 287 * @param $field
danielebarchiesi@4 288 * The field info array.
danielebarchiesi@4 289 * @param $instance
danielebarchiesi@4 290 * The instance info array.
danielebarchiesi@4 291 *
danielebarchiesi@4 292 * @see
danielebarchiesi@4 293 * entityreference_prepopulate_get_values()
danielebarchiesi@4 294 */
danielebarchiesi@4 295 function entityreference_prepopulate_get_values_from_cache($field, $instance) {
danielebarchiesi@4 296 // Try to get the form out of cache.
danielebarchiesi@4 297 if (!$form_build_id = isset($_GET['form_build_id']) ? $_GET['form_build_id'] : isset($_POST['form_build_id']) ? $_POST['form_build_id'] : NULL) {
danielebarchiesi@4 298 return;
danielebarchiesi@4 299 }
danielebarchiesi@4 300
danielebarchiesi@4 301 $field_name = $field['field_name'];
danielebarchiesi@4 302
danielebarchiesi@4 303 $form_state = array();
danielebarchiesi@4 304 form_get_cache($form_build_id, $form_state);
danielebarchiesi@4 305
danielebarchiesi@4 306 // If successful, get the value from the form_state.
danielebarchiesi@4 307 return isset($form_state['entityreference_prepopulate'][$instance['entity_type']][$instance['bundle']][$field_name]) ? $form_state['entityreference_prepopulate'][$instance['entity_type']][$instance['bundle']][$field_name] : FALSE;
danielebarchiesi@4 308 }
danielebarchiesi@4 309
danielebarchiesi@4 310 /**
danielebarchiesi@4 311 * Get values for prepopulating fields via URL.
danielebarchiesi@4 312 *
danielebarchiesi@4 313 * @param $field
danielebarchiesi@4 314 * The field info array.
danielebarchiesi@4 315 * @param $instance
danielebarchiesi@4 316 * The instance info array.
danielebarchiesi@4 317 *
danielebarchiesi@4 318 * @see
danielebarchiesi@4 319 * entityreference_prepopulate_get_values()
danielebarchiesi@4 320 */
danielebarchiesi@4 321 function entityreference_prepopulate_get_values_from_url($field, $instance) {
danielebarchiesi@4 322 $field_name = $field['field_name'];
danielebarchiesi@4 323 if (!empty($_GET[$field_name]) && is_string($_GET[$field_name])) {
danielebarchiesi@4 324 return explode(',', $_GET[$field_name]);
danielebarchiesi@4 325 }
danielebarchiesi@4 326 }
danielebarchiesi@4 327
danielebarchiesi@4 328
danielebarchiesi@4 329 /**
danielebarchiesi@4 330 * Get values for prepopulating fields OG-context.
danielebarchiesi@4 331 *
danielebarchiesi@4 332 * @param $field
danielebarchiesi@4 333 * The field info array.
danielebarchiesi@4 334 * @param $instance
danielebarchiesi@4 335 * The instance info array.
danielebarchiesi@4 336 *
danielebarchiesi@4 337 * @see
danielebarchiesi@4 338 * entityreference_prepopulate_get_values()
danielebarchiesi@4 339 */
danielebarchiesi@4 340 function entityreference_prepopulate_get_values_from_og_context($field, $instance) {
danielebarchiesi@4 341 $field_name = $field['field_name'];
danielebarchiesi@4 342
danielebarchiesi@4 343 if (!module_exists('og_context') || !og_is_group_audience_field($field_name) || !$og_context = og_context()) {
danielebarchiesi@4 344 return;
danielebarchiesi@4 345 }
danielebarchiesi@4 346
danielebarchiesi@4 347 if ($og_context['group_type'] != $field['settings']['target_type']) {
danielebarchiesi@4 348 // Context is of invalid group-type.
danielebarchiesi@4 349 return;
danielebarchiesi@4 350 }
danielebarchiesi@4 351
danielebarchiesi@4 352 return array($og_context['gid']);
danielebarchiesi@4 353 }
danielebarchiesi@4 354
danielebarchiesi@4 355
danielebarchiesi@4 356 /**
danielebarchiesi@4 357 * Return a form element with crafted links to create nodes for a group.
danielebarchiesi@4 358 *
danielebarchiesi@4 359 * @param $entity_type
danielebarchiesi@4 360 * The entity type of the referenced entity.
danielebarchiesi@4 361 * @param $entity_id
danielebarchiesi@4 362 * The entity ID of the referenced entity.
danielebarchiesi@4 363 * @param $destination
danielebarchiesi@4 364 * Optional; The destination after a node is created. Defaults to the
danielebarchiesi@4 365 * destination passed in the URL if exists, otherwise back to the current
danielebarchiesi@4 366 * page.
danielebarchiesi@4 367 * @param $types
danielebarchiesi@4 368 * Optional; An array of type names. Restrict the created links to the given
danielebarchiesi@4 369 * types.
danielebarchiesi@4 370 */
danielebarchiesi@4 371 function entityreference_prepopulate_create_node_links($entity_type, $entity_id, $field_name, $destination = NULL, $types = NULL) {
danielebarchiesi@4 372 $wrapper = entity_metadata_wrapper($entity_type, $entity_id);
danielebarchiesi@4 373 $field = field_info_field($field_name);
danielebarchiesi@4 374
danielebarchiesi@4 375 $entity = entity_load_single($entity_type, $entity_id);
danielebarchiesi@4 376 list(,, $bundle) = entity_extract_ids($entity_type, $entity);
danielebarchiesi@4 377
danielebarchiesi@4 378 $types = isset($types) ? $types : array_keys(node_type_get_types());
danielebarchiesi@4 379 $names = array();
danielebarchiesi@4 380 foreach ($types as $type_name) {
danielebarchiesi@4 381 if ($field['settings']['target_type'] != $entity_type) {
danielebarchiesi@4 382 // The entity type isn't referenced by the field.
danielebarchiesi@4 383 continue;
danielebarchiesi@4 384 }
danielebarchiesi@4 385
danielebarchiesi@4 386 if (!empty($field['settings']['handler_settings']['target_bundles']) && !in_array($bundle, $field['settings']['handler_settings']['target_bundles'])) {
danielebarchiesi@4 387 // The entity bundle isn't referenced by the field.
danielebarchiesi@4 388 continue;
danielebarchiesi@4 389 }
danielebarchiesi@4 390
danielebarchiesi@4 391 $instance = field_info_instance('node', $field_name, $type_name);
danielebarchiesi@4 392 if (empty($instance['settings']['behaviors']['prepopulate']['status'])) {
danielebarchiesi@4 393 // The field doesn't exist on the node type, or doesn't have prepopulate
danielebarchiesi@4 394 // enabled.
danielebarchiesi@4 395 continue;
danielebarchiesi@4 396 }
danielebarchiesi@4 397
danielebarchiesi@4 398 if (!node_access('create', $type_name)) {
danielebarchiesi@4 399 continue;
danielebarchiesi@4 400 }
danielebarchiesi@4 401
danielebarchiesi@4 402 $names[$type_name] = node_type_get_name($type_name);
danielebarchiesi@4 403 }
danielebarchiesi@4 404
danielebarchiesi@4 405 if (empty($names)) {
danielebarchiesi@4 406 return;
danielebarchiesi@4 407 }
danielebarchiesi@4 408
danielebarchiesi@4 409 // Sort names.
danielebarchiesi@4 410 asort($names);
danielebarchiesi@4 411
danielebarchiesi@4 412 // Build links.
danielebarchiesi@4 413 $options = array(
danielebarchiesi@4 414 'query' => array($field_name => $entity_id) + drupal_get_destination(),
danielebarchiesi@4 415 );
danielebarchiesi@4 416
danielebarchiesi@4 417 $items = array();
danielebarchiesi@4 418 foreach ($names as $type => $name) {
danielebarchiesi@4 419 $items[] = array('data' => l($name, 'node/add/' . str_replace('_', '-', $type), $options));
danielebarchiesi@4 420 }
danielebarchiesi@4 421
danielebarchiesi@4 422 $element = array();
danielebarchiesi@4 423 $element['entityreference_prepopulate'] = array(
danielebarchiesi@4 424 '#theme' => 'item_list',
danielebarchiesi@4 425 '#items' => $items,
danielebarchiesi@4 426 );
danielebarchiesi@4 427
danielebarchiesi@4 428 return $element;
danielebarchiesi@4 429 }