aboutsummaryrefslogtreecommitdiff
path: root/mod/riverdashboard/views/default/river/item/wrapper.php
blob: dba6f995334144e2d1e17d76e79be4f1da4e45c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php
/**
 * Elgg river item wrapper.
 * Wraps all river items.
 */

//set required variables
$object = get_entity($vars['item']->object_guid);
//get object url
$object_url = $object->getURL();
$numoflikes = elgg_count_likes($object);

//user
//if displaying on the profile get the object owner, else the subject_guid
if(get_context() == 'profile' && $object->getSubtype() ==  'thewire')
	$user = get_entity($object->owner_guid);
else
	$user = get_entity($vars['item']->subject_guid);

//get the right annotation type
//*todo - use the same for comments, everywhere e.g. comment
switch($vars['item']->subtype){
	case 'thewire':
	$annotation_comment = 'wire_reply';
	break;
	default:
	$annotation_comment = 'generic_comment';
	break;
}

//count comment annotations
$comment_count = count_annotations($vars['item']->object_guid, $vars['item']->type, $vars['item']->subtype, $annotation_comment);

//get last three comments display
$get_comments = get_annotations($vars['item']->object_guid, "", "", $annotation_comment, "", "", 3, 0, "desc");

if($get_comments){
	//reverse the array so we can display comments in the right order
	$get_comments = array_reverse($get_comments);	
}

//minus 3 off the comment total as we display 3 by default
if($comment_count < 3)
	$num_comments = 0;
else
	$num_comments = $comment_count - 3;
?>
<div class="river_item">
	<span class="river_item_useravatar">
		<?php echo elgg_view("profile/icon",array('entity' => $user, 'size' => 'small')); ?>
	</span>
	<div class="river_item_contents clearfloat">
	<?php 
		// body contents, generated by the river view in each plugin
		echo $vars['body'];	
	
	//display latest 3 comments if there are any
	if($get_comments){
		$counter = 0;
		//$background = "";
			
		echo "<div class='river_comments_tabs clearfloat'>";
		
		if($comment_count <= 3) {
			echo "<a class='river_more_comments show_comments_button link'>Comments</a>";
		}	
		
		//display 'more comments' if there are any
		if($num_comments != 0){			
			echo "<a class='river_more_comments show_comments_button link'>Comments (+{$num_comments} more)</a>";
		}
		
		if($numoflikes != 0){
			echo elgg_view('likes/forms/display', array('entity' => $object));
		}
		echo "</div>"; // close river_comments_tabs
		
		echo "<div class='river_comments'>";

		if($numoflikes != 0){
			//show the users who liked the object
			echo "<div class='likes_list hidden'>";
			echo list_annotations($object->getGUID(), 'likes', 99);
			echo "</div>";
		}
		
		foreach($get_comments as $gc){
			//get the comment owner
			$comment_owner = get_user($gc->owner_guid);
			//get the comment owner's profile url
			$comment_owner_url = $comment_owner->getURL();
			// color-code each of the 3 comments
			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} clearfloat'>";
			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
			if(strlen($gc->value) > 150) {
		        	$gc->value = substr($gc->value, 0, strpos($gc->value, ' ', 150)) . "&hellip;";
		    }
			$contents = strip_tags($gc->value);
		    echo "<div class='river_comment_contents'>";
			echo "<a href=\"{$comment_owner_url}\">" . $comment_owner->name . "</a> " . parse_urls($contents);
			echo "<span class='entity_subtext'>" . friendly_time($gc->time_created) . "</span>";
			echo "</div></div>";
			$counter++;
		}
			echo elgg_make_river_comment($object);
			echo "</div>"; // close river_comments
	} else {
		// tab bar nav - for users that liked object
		echo "<div class='river_comments_tabs clearfloat'>";
			$numoflikes = elgg_count_likes($object);
			if($numoflikes != 0){
				echo elgg_view('likes/forms/display', array('entity' => $object));
			}	
		echo "</div>"; // close river_comments_tabs
		
		echo "<div class='river_comments'>";
		
		if($numoflikes != 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 or a group discussion entry - include the inline comment form
		if($vars['item']->type != 'user' && $vars['item']->subtype != 'groupforumtopic') {
			echo elgg_make_river_comment($object);
		}
		echo "</div>";
	}
echo "</div>"; // close river_item_contents
?>
</div>