/** * Replace default annotation view with a starrating annotation view for registered rating annotation names * * @param string $hook Equals 'view' * @param string $type Equals 'annotation/default' * @param string $return Current view * @param array $params Additional params * @return string */ function elgg_stars_annotation_view_replacement($hook, $type, $return, $params) { $vars = elgg_extract('vars', $params); $annotation = elgg_extract('annotation', $vars); if (!$annotation instanceof ElggAnnotation) { return $return; } if (elgg_stars_is_valid_rating_annotation_name($annotation->name)) { return elgg_view('annotation/starrating', $vars); } return $return; }
* Entity rating form */ $entity = elgg_extract('entity', $vars, false); $annotation_names = elgg_extract('annotation_names', $vars); if (!elgg_instanceof($entity)) { return; } if (!$annotation_names) { $annotation_names = elgg_stars_get_rating_annotation_names($entity); } else { if (!is_array($annotation_names)) { $annotation_names = (array) $annotation_names; } } foreach ($annotation_names as $annotation_name) { if (!elgg_stars_is_valid_rating_annotation_name($annotation_name)) { elgg_log('To use custom annotation names, please use elgg_stars_register_rating_annotation_name() to register them first', 'WARNING'); return; } $entity_ratings = elgg_stars_get_entity_rating_values($entity, $annotation_name); $defaults = array('name' => $annotation_name, 'disabled' => !$entity->canAnnotate(0, $annotation_name), 'class' => 'elgg-stars-rating-input', 'data-guid' => $entity->guid); $options = array_merge($defaults, $entity_ratings); if (sizeof($annotation_names) > 1) { $body .= '<label>' . elgg_echo("rating_name:{$annotation_name}") . '</label>'; } $body .= elgg_view('input/stars', $options); $caption_attrs = array('class' => 'elgg-stars-rating-caption', 'data-guid' => $entity->guid, 'data-annotation-name' => $annotation_name); $caption_attrs_str = elgg_format_attributes($caption_attrs); $body .= "<div {$caption_attrs_str}>" . elgg_echo('stars:stats', array($options['value'], $options['max'], $options['count'])) . '</div>'; $body .= elgg_view('input/hidden', array('name' => 'annotation_names[]', 'value' => $annotation_name)); }