Merge pull request #2351 from annando/1602-performance-unread-group
Optimized query for unread group postings
This commit is contained in:
		
				commit
				
					
						d0b5c16a20
					
				
			
		
					 2 changed files with 21 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -215,7 +215,7 @@ function mini_group_select($uid,$gid = 0) {
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Create group sidebar widget
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * @param string $every
 | 
			
		||||
 * @param string $each
 | 
			
		||||
 * @param string $editmode
 | 
			
		||||
| 
						 | 
				
			
			@ -234,7 +234,7 @@ function group_side($every="contacts",$each="group",$editmode = "standard", $gro
 | 
			
		|||
		return '';
 | 
			
		||||
 | 
			
		||||
	$groups = array();
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	$groups[] = array(
 | 
			
		||||
		'text' 	=> t('Everybody'),
 | 
			
		||||
		'id' => 0,
 | 
			
		||||
| 
						 | 
				
			
			@ -255,7 +255,7 @@ function group_side($every="contacts",$each="group",$editmode = "standard", $gro
 | 
			
		|||
	if(count($r)) {
 | 
			
		||||
		foreach($r as $rr) {
 | 
			
		||||
			$selected = (($group_id == $rr['id']) ? ' group-selected' : '');
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			if ($editmode == "full") {
 | 
			
		||||
				$groupedit = array(
 | 
			
		||||
					'href' => "group/".$rr['id'],
 | 
			
		||||
| 
						 | 
				
			
			@ -264,7 +264,7 @@ function group_side($every="contacts",$each="group",$editmode = "standard", $gro
 | 
			
		|||
			} else {
 | 
			
		||||
				$groupedit = null;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			$groups[] = array(
 | 
			
		||||
				'id'		=> $rr['id'],
 | 
			
		||||
				'cid'		=> $cid,
 | 
			
		||||
| 
						 | 
				
			
			@ -362,14 +362,13 @@ function groups_containing($uid,$c) {
 | 
			
		|||
 */
 | 
			
		||||
function groups_count_unseen() {
 | 
			
		||||
 | 
			
		||||
	$r = q("SELECT `group`.`id`, `group`.`name`, COUNT(`item`.`id`) AS `count` FROM `group`, `group_member`, `item`
 | 
			
		||||
			WHERE `group`.`uid` = %d
 | 
			
		||||
			AND `item`.`uid` = %d
 | 
			
		||||
			AND `item`.`unseen` AND `item`.`visible`
 | 
			
		||||
			AND NOT `item`.`deleted`
 | 
			
		||||
			AND `item`.`contact-id` = `group_member`.`contact-id`
 | 
			
		||||
			AND `group_member`.`gid` = `group`.`id`
 | 
			
		||||
			GROUP BY `group`.`id` ",
 | 
			
		||||
	$r = q("SELECT `group`.`id`, `group`.`name`,
 | 
			
		||||
			(SELECT COUNT(*) FROM `item`
 | 
			
		||||
				WHERE `uid` = %d AND `unseen` AND
 | 
			
		||||
					`contact-id` IN (SELECT `contact-id` FROM `group_member`
 | 
			
		||||
								WHERE `group_member`.`gid` = `group`.`id` AND `group_member`.`uid` = %d)) AS `count`
 | 
			
		||||
			FROM `group` WHERE `group`.`uid` = %d;",
 | 
			
		||||
		intval(local_user()),
 | 
			
		||||
		intval(local_user()),
 | 
			
		||||
		intval(local_user())
 | 
			
		||||
	);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										18
									
								
								mod/ping.php
									
										
									
									
									
								
							
							
						
						
									
										18
									
								
								mod/ping.php
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -219,19 +219,21 @@ function ping_init(&$a) {
 | 
			
		|||
				<home>$home</home>\r\n";
 | 
			
		||||
		if ($register!=0) echo "<register>$register</register>";
 | 
			
		||||
 | 
			
		||||
		if ( count($groups_unseen) ) {
 | 
			
		||||
		if (count($groups_unseen)) {
 | 
			
		||||
			echo '<groups>';
 | 
			
		||||
			foreach ($groups_unseen as $it) {
 | 
			
		||||
				echo '<group id="' . $it['id'] . '">' . $it['count'] . "</group>";
 | 
			
		||||
			}
 | 
			
		||||
			foreach ($groups_unseen as $it)
 | 
			
		||||
				if ($it['count'] > 0)
 | 
			
		||||
					echo '<group id="'.$it['id'].'">'.$it['count']."</group>";
 | 
			
		||||
 | 
			
		||||
			echo "</groups>";
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ( count($forums_unseen) ) {
 | 
			
		||||
		if (count($forums_unseen)) {
 | 
			
		||||
			echo '<forums>';
 | 
			
		||||
			foreach ($forums_unseen as $it) {
 | 
			
		||||
				echo '<forum id="' . $it['id'] . '">' . $it['count'] . "</forum>";
 | 
			
		||||
			}
 | 
			
		||||
			foreach ($forums_unseen as $it)
 | 
			
		||||
				if ($it['count'] > 0)
 | 
			
		||||
					echo '<forum id="'.$it['id'].'">'.$it['count']."</forum>";
 | 
			
		||||
 | 
			
		||||
			echo "</forums>";
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue