12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- class EntityReferenceSynonymsExtractor extends AbstractSynonymsExtractor {
- public static function fieldTypesSupported() {
- return array('entityreference');
- }
- public static function synonymsExtract($items, $field, $instance, $entity, $entity_type) {
- $synonyms = array();
-
- $target_tids = array();
- foreach ($items as $item) {
- $target_tids[] = $item['target_id'];
- }
- $entities = entity_load($field['settings']['target_type'], $target_tids);
- foreach ($entities as $entity) {
- $synonyms[] = entity_label($field['settings']['target_type'], $entity);
- }
- return $synonyms;
- }
- public static function processEntityFieldQuery($tag, EntityFieldQuery $query, $field, $instance) {
-
-
-
-
- $efq = new EntityFieldQuery();
- $efq->entityCondition('entity_type', $field['settings']['target_type']);
-
-
- $entity_info = entity_get_info($field['settings']['target_type']);
- if (!isset($entity_info['entity keys']['label'])) {
-
-
-
- self::emptyResultsCondition($query);
- return;
- }
- $efq->propertyCondition($entity_info['entity keys']['label'], '%' . $tag . '%', 'LIKE');
- $result = $efq->execute();
- if (!isset($result[$field['settings']['target_type']]) || !is_array($result[$field['settings']['target_type']])) {
- self::emptyResultsCondition($query);
- return;
- }
- $result = $result[$field['settings']['target_type']];
- $query->fieldCondition($field, 'target_id', array_keys($result));
- }
- public static function mergeEntityAsSynonym($items, $field, $instance, $synonym_entity, $synonym_entity_type) {
-
-
- $expected_synonym_entity_type = $field['settings']['target_type'];
- if ($expected_synonym_entity_type != $synonym_entity_type) {
- return array();
- }
- $synonym_entity_id = entity_id($synonym_entity_type, $synonym_entity);
- return array(array(
- 'target_id' => $synonym_entity_id,
- ));
- }
- }
|