<?php /** * Elgg river item wrapper. * Wraps all river items. * * @todo: Clean up this logic. * It looks like this only will allow comments on non user and non group forum * topic entities. * * Different chunks are used depending on if comments exist or not. * * */ $object = get_entity($vars['item']->object_guid); $object_url = $object->getURL(); $likes_count = elgg_count_likes($object); //user //if displaying on the profile get the object owner, else the subject_guid if (elgg_get_context() == 'profile' && $object->getSubtype() == 'thewire') { $user = get_entity($object->owner_guid); } else { $user = get_entity($vars['item']->subject_guid); } // get last three comments display // want the 3 most recent comments (order by time_created desc = 3 2 1 limit 3) // but will display them with the newest at the bottom (1 2 3) if ($comments = get_annotations($vars['item']->object_guid, "", "", 'generic_comment', "", "", 3, 0, "desc")) { $comments = array_reverse($comments); } // for displaying "+N more" // -3 from the count because the 3 displayed don't count in the "more" $comment_count = count_annotations($vars['item']->object_guid, $vars['item']->type, $vars['item']->subtype, 'generic_comment'); if ($comment_count < 3) { $more_comments_count = 0; } else { $more_comments_count = $comment_count - 3; } ?> <div class="river-item riverdashboard" id="river_entity_<?php echo $object->guid; ?>"> <span class="river-item-useravatar"> <?php echo elgg_view("profile/icon",array('entity' => $user, 'size' => 'small')); ?> </span> <div class="river-item-contents clearfix"> <?php // body contents, generated by the river view in each plugin echo $vars['body']; // display latest 3 comments if there are any if ($comments){ $counter = 0; echo "<div class='river-comments-tabs clearfix'>"; echo "<a class='river-more-comments show_comments_button link'>" . elgg_echo('comments') . '</a>'; if ($likes_count != 0) { echo elgg_view('forms/likes/display', array('entity' => $object)); } echo "</div>"; // close river-comments-tabs echo "<div class='river-comments'>"; if ($likes_count != 0) { //show the users who liked the object // this is loaded via ajax to avoid pounding the server with avatar requests. echo "<div class='likes-list hidden'></div>"; } echo "<div class=\"comments_container\">"; // display appropriate comment link if ($more_comments_count > 0) { echo "<a class=\"river-more-comments show_more_button link\">" . elgg_echo('riverdashboard:n_more_comments', array($more_comments_count)) . '</a>'; echo "<a style=\"display: none\" class=\"river-more-comments show_less_button link\">" . elgg_echo('riverdashboard:show_less') . '</a>'; } echo "<div class=\"comments_list\">"; foreach ($comments as $comment) { //get the comment owner $comment_owner = get_user($comment->owner_guid); //get the comment owner's profile url $comment_owner_url = $comment_owner->getURL(); // color-code each of the 3 comments // @todo this isn't used in CSS... if( ($counter == 2 && $comment_count >= 4) || ($counter == 1 && $comment_count == 2) || ($counter == 0 && $comment_count == 1) || ($counter == 2 && $comment_count == 3) ) { $alt = 'latest'; } else if( ($counter == 1 && $comment_count >= 4) || ($counter == 0 && $comment_count == 2) || ($counter == 1 && $comment_count == 3) ) { $alt = 'penultimate'; } //display comment echo "<div class='river-comment $alt clearfix'>"; echo "<span class='river-comment-owner-icon'>"; echo elgg_view("profile/icon", array('entity' => $comment_owner, 'size' => 'tiny')); echo "</span>"; //truncate comment to 150 characters and strip tags $contents = elgg_get_excerpt($comment->value, 150); echo "<div class='river-comment-contents'>"; echo "<a href=\"{$comment_owner_url}\">" . $comment_owner->name . '</a> <span class="elgg_excerpt">' . parse_urls($contents) . '</span>'; echo "<span class='entity-subtext'>" . elgg_view_friendly_time($comment->time_created) . "</span>"; echo "</div></div>"; $counter++; } // close comments_list, comments_container and river-comments echo '</div></div>' . elgg_make_river_comment($object) . '</div>'; } else { // tab bar nav - for users that liked object if ($vars['item']->type != 'user' && $likes_count != 0) { echo "<div class='river-comments-tabs clearfix'>"; } if ($likes_count != 0) { echo elgg_view('forms/likes/display', array('entity' => $object)); } if ($vars['item']->type != 'user' && $likes_count != 0) { echo "</div>"; // close river-comments-tabs } if ($vars['item']->type != 'user') { echo "<div class='river-comments'>"; } if ($likes_count != 0) { //show the users who liked the object echo "<div class='likes-list hidden'>"; echo list_annotations($object->getGUID(), 'likes', 99); echo "</div>"; } // if there are no comments to display // and this is not a user - include the inline comment form if ($vars['item']->type != 'user') { echo elgg_make_river_comment($object); } if ($vars['item']->type != 'user') { echo "</div>"; } } ?> </div> </div>