class MySynonymsSynonymsBehavior in Synonyms 7
Example of synonyms behavior implementation class.
You are encouraged to extend AbstractSynonymsBehavior class as that one contains a few heuristic that make your implementation easier.
Hierarchy
- class \AbstractSynonymsBehavior implements SynonymsBehavior
- class \MySynonymsSynonymsBehavior implements AutocompleteSynonymsBehavior
Expanded class hierarchy of MySynonymsSynonymsBehavior
1 string reference to 'MySynonymsSynonymsBehavior'
- hook_synonyms_behavior_implementation_info in ./
synonyms.api.php - Collect info about available synonyms behavior implementations.
File
- ./
synonyms.api.php, line 71 - Documentation for Synonyms module.
View source
class MySynonymsSynonymsBehavior extends AbstractSynonymsBehavior implements AutocompleteSynonymsBehavior {
/**
* Extract synonyms from an entity within a specific behavior implementation.
*
* @param object $entity
* Entity from which to extract synonyms
* @param string $langcode
* Language code for which to extract synonyms from the entity, if one is
* known
*
* @return array
* Array of synonyms extracted from $entity
*/
public function extractSynonyms($entity, $langcode = NULL) {
$synonyms = array();
// Do something with $entity in order to extract synonyms from it. Add all
// those synonyms into your $synonyms array.
return $synonyms;
}
/**
* Add an entity as a synonym into 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 merged entity
* into the trunk entity). You should update $trunk_entity in such a way that
* it holds $synonym_entity as a synonym (it all depends on how data is stored
* in your behavior implementation, but probably you will store entity label
* or its ID as you cannot literaly store an entity inside of another entity).
* If entity of type $synonym_entity_type cannot be converted into a format
* expected by your behavior implementation, just do nothing.
*
* @param object $trunk_entity
* Entity into which another one should be added as synonym
* @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
*/
public function mergeEntityAsSynonym($trunk_entity, $synonym_entity, $synonym_entity_type) {
// If you can add $synonym_entity into $trunk_entity, then do so.
// For example:
$trunk_entity->synonym_storage[] = $synonym_entity;
}
/**
* Look up entities by their synonyms within a behavior implementation.
*
* You are provided with a SQL condition that you should apply to the storage
* of synonyms within the provided behavior implementation. And then return
* result: what entities match by the provided condition through what
* synonyms.
*
* @param QueryConditionInterface $condition
* Condition that defines what to search for. Apart from normal SQL
* conditions as known in Drupal, it may contain the following placeholders:
* - AbstractSynonymsBehavior::COLUMN_SYNONYM_PLACEHOLDER: to denote
* synonyms column which you should replace with the actual column name
* where the synonyms data for your provider is stored in plain text.
* - AbstractSynonymsBehavior::COLUMN_ENTITY_ID_PLACEHOLDER: to denote
* column that holds entity ID. You are supposed to replace this
* placeholder with actual column name that holds entity ID in your case.
* For ease of work with these placeholders, you may extend the
* AbstractSynonymsBehavior class and then just invoke the
* AbstractSynonymsBehavior->synonymsFindProcessCondition() method, so you
* won't have to worry much about it. Important note: if you plan on
* re-using the same $condition object for multiple invocations of this
* method you must pass in here a clone of your condition object, since the
* internal implementation of this method will change the condition (will
* swap the aforementioned placeholders with actual column names)
*
* @return Traversable
* Traversable result set of found synonyms and entity IDs to which those
* belong. Each element in the result set should be an object and will have
* the following structure:
* - synonym: (string) Synonym that was found and which satisfies the
* provided condition
* - entity_id: (int) ID of the entity to which the found synonym belongs
*/
public function synonymsFind(QueryConditionInterface $condition) {
// Here, as an example, we'll query an imaginary table where your module
// supposedly keeps synonyms. We'll also use helpful
// AbstractSynonymsBehavior::synonymsFindProcessCondition() to normalize
// $condition argument.
$query = db_select('my_synonyms_storage_table', 'table');
$query
->addField('table', 'entity_id', 'entity_id');
$query
->addField('table', 'synonym', 'synonym');
$this
->synonymsFindProcessCondition($condition, 'table.synonym', 'table.entity_id');
$query
->condition($condition);
return $query
->execute();
}
/**
* Collect info on features pipe during invocation of hook_features_export().
*
* If your synonyms provider depends on some other features components, this
* method should return them.
*
* @return array
* Array of features pipe as per hook_features_export() specification
*/
public function featuresExportPipe() {
$pipe = parent::featuresExportPipe();
// Here you can add any additional features components your provider
// depends on.
return $pipe;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AbstractSynonymsBehavior:: |
protected | property | Behavior implementation on which this class was initialized. | |
AbstractSynonymsBehavior:: |
constant | Constant which denotes placeholder of an entity ID column. | ||
AbstractSynonymsBehavior:: |
constant | Constant which denotes placeholder of a synonym column. | ||
AbstractSynonymsBehavior:: |
protected | function | Process condition in 'synonymsFind' method. | |
AbstractSynonymsBehavior:: |
public | function | 2 | |
MySynonymsSynonymsBehavior:: |
public | function |
Extract synonyms from an entity within a specific behavior implementation. Overrides SynonymsBehavior:: |
|
MySynonymsSynonymsBehavior:: |
public | function |
Collect info on features pipe during invocation of hook_features_export(). Overrides AbstractSynonymsBehavior:: |
|
MySynonymsSynonymsBehavior:: |
public | function |
Add an entity as a synonym into another entity. Overrides SynonymsBehavior:: |
|
MySynonymsSynonymsBehavior:: |
public | function |
Look up entities by their synonyms within a behavior implementation. Overrides SynonymsBehavior:: |