danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * @file
|
danielebarchiesi@4
|
5 * Abstraction of the selection logic of an entity reference field.
|
danielebarchiesi@4
|
6 *
|
danielebarchiesi@4
|
7 * Implementations that wish to provide an implementation of this should
|
danielebarchiesi@4
|
8 * register it using CTools' plugin system.
|
danielebarchiesi@4
|
9 */
|
danielebarchiesi@4
|
10 interface EntityReference_SelectionHandler {
|
danielebarchiesi@4
|
11 /**
|
danielebarchiesi@4
|
12 * Factory function: create a new instance of this handler for a given field.
|
danielebarchiesi@4
|
13 *
|
danielebarchiesi@4
|
14 * @param $field
|
danielebarchiesi@4
|
15 * A field datastructure.
|
danielebarchiesi@4
|
16 * @return EntityReferenceHandler
|
danielebarchiesi@4
|
17 */
|
danielebarchiesi@4
|
18 public static function getInstance($field, $instance = NULL, $entity_type = NULL, $entity = NULL);
|
danielebarchiesi@4
|
19
|
danielebarchiesi@4
|
20 /**
|
danielebarchiesi@4
|
21 * Return a list of referencable entities.
|
danielebarchiesi@4
|
22 *
|
danielebarchiesi@4
|
23 * @return
|
danielebarchiesi@4
|
24 * An array of referencable entities, which keys are entity ids and
|
danielebarchiesi@4
|
25 * values (safe HTML) labels to be displayed to the user.
|
danielebarchiesi@4
|
26 */
|
danielebarchiesi@4
|
27 public function getReferencableEntities($match = NULL, $match_operator = 'CONTAINS', $limit = 0);
|
danielebarchiesi@4
|
28
|
danielebarchiesi@4
|
29 /**
|
danielebarchiesi@4
|
30 * Count entities that are referencable by a given field.
|
danielebarchiesi@4
|
31 */
|
danielebarchiesi@4
|
32 public function countReferencableEntities($match = NULL, $match_operator = 'CONTAINS');
|
danielebarchiesi@4
|
33
|
danielebarchiesi@4
|
34 /**
|
danielebarchiesi@4
|
35 * Validate that entities can be referenced by this field.
|
danielebarchiesi@4
|
36 *
|
danielebarchiesi@4
|
37 * @return
|
danielebarchiesi@4
|
38 * An array of entity ids that are valid.
|
danielebarchiesi@4
|
39 */
|
danielebarchiesi@4
|
40 public function validateReferencableEntities(array $ids);
|
danielebarchiesi@4
|
41
|
danielebarchiesi@4
|
42 /**
|
danielebarchiesi@4
|
43 * Validate Input from autocomplete widget that has no Id.
|
danielebarchiesi@4
|
44 *
|
danielebarchiesi@4
|
45 * @see _entityreference_autocomplete_validate()
|
danielebarchiesi@4
|
46 *
|
danielebarchiesi@4
|
47 * @param $input
|
danielebarchiesi@4
|
48 * Single string from autocomplete widget.
|
danielebarchiesi@4
|
49 * @param $element
|
danielebarchiesi@4
|
50 * The form element to set a form error.
|
danielebarchiesi@4
|
51 * @return
|
danielebarchiesi@4
|
52 * Value of a matching entity id, or NULL if none.
|
danielebarchiesi@4
|
53 */
|
danielebarchiesi@4
|
54 public function validateAutocompleteInput($input, &$element, &$form_state, $form);
|
danielebarchiesi@4
|
55
|
danielebarchiesi@4
|
56 /**
|
danielebarchiesi@4
|
57 * Give the handler a chance to alter the SelectQuery generated by EntityFieldQuery.
|
danielebarchiesi@4
|
58 */
|
danielebarchiesi@4
|
59 public function entityFieldQueryAlter(SelectQueryInterface $query);
|
danielebarchiesi@4
|
60
|
danielebarchiesi@4
|
61 /**
|
danielebarchiesi@4
|
62 * Return the label of a given entity.
|
danielebarchiesi@4
|
63 */
|
danielebarchiesi@4
|
64 public function getLabel($entity);
|
danielebarchiesi@4
|
65
|
danielebarchiesi@4
|
66 /**
|
danielebarchiesi@4
|
67 * Generate a settings form for this handler.
|
danielebarchiesi@4
|
68 */
|
danielebarchiesi@4
|
69 public static function settingsForm($field, $instance);
|
danielebarchiesi@4
|
70 }
|
danielebarchiesi@4
|
71
|
danielebarchiesi@4
|
72 /**
|
danielebarchiesi@4
|
73 * A null implementation of EntityReference_SelectionHandler.
|
danielebarchiesi@4
|
74 */
|
danielebarchiesi@4
|
75 class EntityReference_SelectionHandler_Broken implements EntityReference_SelectionHandler {
|
danielebarchiesi@4
|
76 public static function getInstance($field, $instance = NULL, $entity_type = NULL, $entity = NULL) {
|
danielebarchiesi@4
|
77 return new EntityReference_SelectionHandler_Broken($field, $instance, $entity_type, $entity);
|
danielebarchiesi@4
|
78 }
|
danielebarchiesi@4
|
79
|
danielebarchiesi@4
|
80 protected function __construct($field, $instance) {
|
danielebarchiesi@4
|
81 $this->field = $field;
|
danielebarchiesi@4
|
82 $this->instance = $instance;
|
danielebarchiesi@4
|
83 }
|
danielebarchiesi@4
|
84
|
danielebarchiesi@4
|
85 public static function settingsForm($field, $instance) {
|
danielebarchiesi@4
|
86 $form['selection_handler'] = array(
|
danielebarchiesi@4
|
87 '#markup' => t('The selected selection handler is broken.'),
|
danielebarchiesi@4
|
88 );
|
danielebarchiesi@4
|
89 return $form;
|
danielebarchiesi@4
|
90 }
|
danielebarchiesi@4
|
91
|
danielebarchiesi@4
|
92 public function getReferencableEntities($match = NULL, $match_operator = 'CONTAINS', $limit = 0) {
|
danielebarchiesi@4
|
93 return array();
|
danielebarchiesi@4
|
94 }
|
danielebarchiesi@4
|
95
|
danielebarchiesi@4
|
96 public function countReferencableEntities($match = NULL, $match_operator = 'CONTAINS') {
|
danielebarchiesi@4
|
97 return 0;
|
danielebarchiesi@4
|
98 }
|
danielebarchiesi@4
|
99
|
danielebarchiesi@4
|
100 public function validateReferencableEntities(array $ids) {
|
danielebarchiesi@4
|
101 return array();
|
danielebarchiesi@4
|
102 }
|
danielebarchiesi@4
|
103
|
danielebarchiesi@4
|
104 public function validateAutocompleteInput($input, &$element, &$form_state, $form) {
|
danielebarchiesi@4
|
105 return NULL;
|
danielebarchiesi@4
|
106 }
|
danielebarchiesi@4
|
107
|
danielebarchiesi@4
|
108 public function entityFieldQueryAlter(SelectQueryInterface $query) {}
|
danielebarchiesi@4
|
109
|
danielebarchiesi@4
|
110 public function getLabel($entity) {
|
danielebarchiesi@4
|
111 return '';
|
danielebarchiesi@4
|
112 }
|
danielebarchiesi@4
|
113 }
|