123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <?php
- /**
- * @file
- * Documentation for Synonyms module.
- */
- /**
- * Provide Synonyms module with names of synonyms extractor classes.
- *
- * Provide Synonyms module with names of classes that are able to extract
- * synonyms from fields. Each of the provided classes should extend
- * AbstractSynonymsExtractor base class.
- *
- * @return array
- * Array of strings, where each value is a name of synonyms extractor class
- */
- function hook_synonyms_extractor_info() {
- return array(
- // Please see below the defintion of ApiSynonymsSynonymsExtractor class
- // for your reference.
- 'ApiSynonymsSynonymsExtractor',
- );
- }
- /**
- * Dummy synonyms extractor class for documentation purposes.
- *
- * This is a copy of SynonymsSynonymsExtractor class providing an example of
- * how to write your own synonyms extractor class. See the definition of
- * AbstractSynonymsExtractor for reference and incode comments. For more
- * complicated examples take a look at EntityReferenceSynonymsExtractor class.
- */
- class ApiSynonymsSynonymsExtractor extends AbstractSynonymsExtractor {
- /**
- * Return array of supported field types for synonyms extraction.
- *
- * @return array
- * Array of Field API field types from which this class is able to extract
- * synonyms
- */
- static public function fieldTypesSupported() {
- return array('text', 'number_integer', 'number_float', 'number_decimal');
- }
- /**
- * Extract synonyms from a field attached to an entity.
- *
- * We try to pass as many info about context as possible, however, normally
- * you will only need $items to extract the synonyms.
- *
- * @param array $items
- * Array of items
- * @param array $field
- * Array of field definition according to Field API
- * @param array $instance
- * Array of instance definition according to Field API
- * @param object $entity
- * Fully loaded entity object to which the $field and $instance with $item
- * values is attached to
- * @param string $entity_type
- * Type of the entity $entity according to Field API definition of entity
- * types
- *
- * @return array
- * Array of synonyms extracted from $items
- */
- static public function synonymsExtract($items, $field, $instance, $entity, $entity_type) {
- $synonyms = array();
- foreach ($items as $item) {
- $synonyms[] = $item['value'];
- }
- return $synonyms;
- }
- /**
- * Allow you to hook in during autocomplete suggestions generation.
- *
- * Allow you to include entities for autocomplete suggestion that are possible
- * candidates based on your field as a source of synonyms. This method is
- * void, however, you have to alter and add your condition to $query
- * parameter.
- *
- * @param string $tag
- * What user has typed in into autocomplete widget. Normally you would
- * run LIKE '%$tag%' on your column
- * @param EntityFieldQuery $query
- * EntityFieldQuery object where you should add your conditions to
- * @param array $field
- * Array of field definition according to Field API, autocomplete on which
- * is fired
- * @param array $instance
- * Array of instance definition according to Field API, autocomplete on
- * which is fired
- */
- static public function processEntityFieldQuery($tag, EntityFieldQuery $query, $field, $instance) {
- $query->fieldCondition($field, 'value', '%' . $tag . '%', 'LIKE');
- }
- /**
- * Add an entity as a synonym into a field of another entity.
- *
- * Basically this method should be called when you want to add some entity
- * as a synonym to another entity (for example when you merge one entity
- * into another and besides merging want to add synonym of the merging
- * entity into the trunk entity). You should extract synonym value (according
- * to what value is expected in this field) and return it. We try to provide
- * you with as much context as possible, but normally you would only need
- * $synonym_entity and $synonym_entity_type parameters. Return an empty array
- * if entity of type $synonym_entity_type cannot be converted into a format
- * expected by $field.
- *
- * @param array $items
- * Array items that already exist in the field into which new synonyms is to
- * be added
- * @param array $field
- * Field array definition according to Field API of the field into which new
- * synonym is to be added
- * @param array $instance
- * Instance array definition according to Field API of the instance into
- * which new synonym is to be added
- * @param object $synonym_entity
- * Fully loaded entity object which has to be added as synonym
- * @param string $synonym_entity_type
- * Entity type of $synonym_entity
- *
- * @return array
- * Array of extra items to be merged into the items that already exist in
- * field values
- */
- static public function mergeEntityAsSynonym($items, $field, $instance, $synonym_entity, $synonym_entity_type) {
- $synonym = entity_label($synonym_entity_type, $synonym_entity);
- switch ($field['type']) {
- case 'text':
- break;
- // We add synonyms for numbers only if $synonym is a number.
- case 'number_integer':
- case 'number_float':
- case 'number_decimal':
- if (!is_numeric($synonym)) {
- return array();
- }
- break;
- }
- return array(array(
- 'value' => $synonym,
- ));
- }
- }
|