'likes', 'text' => elgg_view('likes/button', array('entity' => $entity)), 'href' => false, 'priority' => 1000, ); $return[] = ElggMenuItem::factory($options); // likes count $count = elgg_view('likes/count', array('entity' => $entity)); if ($count) { $options = array( 'name' => 'likes_count', 'text' => $count, 'href' => false, 'priority' => 1001, ); $return[] = ElggMenuItem::factory($options); } return $return; } /** * Add a like button to river actions */ function likes_river_menu_setup($hook, $type, $return, $params) { if (elgg_is_logged_in()) { $item = $params['item']; // only like group creation #3958 if ($item->type == "group" && $item->view != "river/group/create") { return $return; } // don't like users #4116 if ($item->type == "user") { return $return; } $object = $item->getObjectEntity(); if (!elgg_in_context('widgets') && $item->annotation_id == 0) { if ($object->canAnnotate(0, 'likes')) { // like button $options = array( 'name' => 'likes', 'href' => false, 'text' => elgg_view('likes/button', array('entity' => $object)), 'is_action' => true, 'priority' => 100, ); $return[] = ElggMenuItem::factory($options); // likes count $count = elgg_view('likes/count', array('entity' => $object)); if ($count) { $options = array( 'name' => 'likes_count', 'text' => $count, 'href' => false, 'priority' => 101, ); $return[] = ElggMenuItem::factory($options); } } } } return $return; } /** * Count how many people have liked an entity. * * @param ElggEntity $entity * * @return int Number of likes */ function likes_count($entity) { $type = $entity->getType(); $params = array('entity' => $entity); $number = elgg_trigger_plugin_hook('likes:count', $type, $params, false); if ($number) { return $number; } else { return $entity->countAnnotations('likes'); } } /** * Notify $user that $liker liked his $entity. * * @param type $user * @param type $liker * @param type $entity */ function likes_notify_user(ElggUser $user, ElggUser $liker, ElggEntity $entity) { if (!$user instanceof ElggUser) { return false; } if (!$liker instanceof ElggUser) { return false; } if (!$entity instanceof ElggEntity) { return false; } $title_str = $entity->title; if (!$title_str) { $title_str = elgg_get_excerpt($entity->description); } $site = get_config('site'); $subject = elgg_echo('likes:notifications:subject', array( $liker->name, $title_str )); $body = elgg_echo('likes:notifications:body', array( $user->name, $liker->name, $title_str, $site->name, $entity->getURL(), $liker->getURL() )); notify_user($user->guid, $liker->guid, $subject, $body ); }