diff --git a/fivestar.module b/fivestar.module index 418b7a9..3f20723 100644 --- a/fivestar.module +++ b/fivestar.module @@ -747,6 +747,22 @@ function fivestar_fivestar_target_info($field, $instance) { } } } + + // Add entityreference support. + if (module_exists('entityreference')) { + $field_names = array_keys(field_read_fields(array('module' => 'entityreference'))); + if (!empty($field_names)) { + $field_instances = field_read_instances(array('entity_type' => $entity_type, 'bundle' => $bundle, 'field_name' => $field_names)); + if (!empty($field_instances)) { + foreach ($field_instances as $field_instance) { + $options[$field_instance['field_name']] = array( + 'title' => t('Entity reference: @field', array('@field' => $field_instance['field_name'])), + 'callback' => '_fivestar_target_entityreference' + ); + } + } + } + } // Add comment module support. if ($instance['entity_type'] == 'comment') { @@ -775,6 +791,22 @@ function _fivestar_target_node_reference($entity, $field, $instance, $langcode) return $target; } +/** + * + * @return (array) array('entity_type', 'entity_id') + */ +function _fivestar_target_entityreference($entity, $field, $instance, $langcode) { + $target = array(); + + $entityreference = $instance['settings']['target']; + if (isset($entity->{$entityreference}[$langcode][0]) && is_numeric($entity->{$entityreference}[$langcode][0]['target_id'])) { + $target['entity_id'] = $entity->{$entityreference}[$langcode][0]['target_id']; + $target['entity_type'] = 'node'; + } + + return $target; +} + function _fivestar_target_comment_parent_node($entity, $field, $instance, $langcode) { return array( 'entity_id' => $entity->nid,