Page 1 of 1

Count newpost, unread incompatible with Full Drafts MOD

Posted: 13. February 2012 02:33
by Leinad4Mind
How can I fix the counting of unread and newposts on User Menu in Portal, to not counting the drafts?

Cause with the Save Full Drafts MOD installed, I need to count with some restriction.

Can anyone check that and fix that?! Please.

Thanks!

Re: Count newpost, unread incompatible with Full Drafts MOD

Posted: 13. February 2012 05:06
by Leinad4Mind
Diff of my attempt: http://diffchecker.com/t10l298

I have change this code:

Code: Select all

		if ($user->data['is_registered'])
		{
			//
			// + new posts since last visit & you post number
			//
			$ex_fid_ary = array_unique(array_merge(array_keys($auth->acl_getf('!f_read', true)), array_keys($auth->acl_getf('!f_search', true))));
			
			if ($auth->acl_get('m_approve'))
			{
				$m_approve_fid_ary = array(-1);
				$m_approve_fid_sql = '';
			}
			else if ($auth->acl_getf_global('m_approve'))
			{
				$m_approve_fid_ary = array_diff(array_keys($auth->acl_getf('!m_approve', true)), $ex_fid_ary);
				$m_approve_fid_sql = ' AND (p.post_approved = 1' . ((sizeof($m_approve_fid_ary)) ? ' OR ' . $db->sql_in_set('p.forum_id', $m_approve_fid_ary, true) : '') . ')';
			}
			else
			{
				$m_approve_fid_ary = array();
				$m_approve_fid_sql = ' AND p.post_approved = 1';
			}

			$sql = 'SELECT COUNT(distinct t.topic_id) as total
						FROM ' . TOPICS_TABLE . ' t
						WHERE t.topic_last_post_time > ' . $user->data['user_lastvisit'] . '
							AND t.topic_moved_id = 0
							' . str_replace(array('p.', 'post_'), array('t.', 'topic_'), $m_approve_fid_sql) . '
							' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '');
			$result = $db->sql_query($sql);
			$new_posts_count = (int) $db->sql_fetchfield('total');
			$db->sql_freeresult($result);
			
			// unread posts
			$sql_where = 'AND t.topic_moved_id = 0
							' . str_replace(array('p.', 'post_'), array('t.', 'topic_'), $m_approve_fid_sql) . '
							' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '');
			$unread_list = array();
			$unread_list = get_unread_topics($user->data['user_id'], $sql_where, 'ORDER BY t.topic_id DESC');
			$unread_posts_count = sizeof($unread_list);


			// Get user avatar and rank
			$user_id = $user->data['user_id'];
			$username = $user->data['username'];
			$colour = $user->data['user_colour'];
			$avatar_img = get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']);
			$rank_title = $rank_img = '';
			$group_id = $user->data['group_id'];
			get_user_rank($user->data['user_rank'], $user->data['user_posts'], $rank_title, $rank_img, $rank_img_src, $group_id);

			// Assign specific vars
			$template->assign_vars(array(
				'L_NEW_POSTS'	=> $user->lang['SEARCH_NEW'] . ' (' . $new_posts_count . ')',
				'L_SELF_POSTS'	=> $user->lang['SEARCH_SELF'] . ' (' . $user->data['user_posts'] . ')',
				'L_UNREAD_POSTS'=> $user->lang['SEARCH_UNREAD'] . ' (' . $unread_posts_count . ')',

				'B3P_AVATAR_IMG'    => $avatar_img,
				'B3P_RANK_TITLE'    => $rank_title,
				'B3P_RANK_IMG'        => $rank_img,
				'RANK_IMG_SRC'    => $rank_img_src,

				'USERNAME_FULL'        => get_username_string('full', $user_id, $username, $colour),
				'U_VIEW_PROFILE'	=> get_username_string('profile', $user_id, $username, $colour),

				'U_NEW_POSTS'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts'),
				'U_SELF_POSTS'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=egosearch'),
				'U_UNREAD_POSTS'		=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unreadposts'),
				'U_UM_BOOKMARKS'		=> ($config['allow_bookmarks']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=main&mode=bookmarks') : '',
				'U_UM_MAIN_SUBSCRIBED'	=> append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=main&mode=subscribed'),
				'U_UM_MCP'				=> ($auth->acl_get('m_') || $auth->acl_getf_global('m_')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=front', true, $user->session_id) : '',
				'S_DISPLAY_SUBSCRIPTIONS' => ($config['allow_topic_notify'] || $config['allow_forum_notify']) ? true : false,
			));

			return 'user_menu_side.html';
		}
To this code:

Code: Select all

		if ($user->data['is_registered'])
		{
			//
			// + new posts since last visit & you post number
			//
			$ex_fid_ary = array_unique(array_merge(array_keys($auth->acl_getf('!f_read', true)), array_keys($auth->acl_getf('!f_search', true))));
			
			if ($auth->acl_get('m_approve'))
			{
				$m_approve_fid_ary = array(-1);
				// start mod save full drafts (and end mod too)...added test in next line to exclude drafts
				$m_approve_fid_sql = ' AND p.post_approved <> ' . POST_DRAFT;
			}
			else if ($auth->acl_getf_global('m_approve'))
			{
				$m_approve_fid_ary = array_diff(array_keys($auth->acl_getf('!m_approve', true)), $ex_fid_ary);
				// start mod save full drafts (and end mod too)...added test in next line to exclude drafts 
				$m_approve_fid_sql = ' AND (p.post_approved = 1' . ((sizeof($m_approve_fid_ary)) ? ' OR (' . $db->sql_in_set('p.forum_id', $m_approve_fid_ary, true) . ' AND p.post_approved <> ' . POST_DRAFT . ')': '') . ')';
			}
			else
			{
				$m_approve_fid_ary = array();
				$m_approve_fid_sql = ' AND p.post_approved = 1';
			}

			$sql = 'SELECT COUNT(distinct t.topic_id) as total
						FROM ' . TOPICS_TABLE . ' t
						WHERE t.topic_last_post_time > ' . $user->data['user_lastvisit'] . '
							AND t.topic_moved_id = 0
							' . str_replace(array('p.', 'post_'), array('t.', 'topic_'), $m_approve_fid_sql) . '
							' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '');
			$result = $db->sql_query($sql);
			$new_posts_count = (int) $db->sql_fetchfield('total');
			$db->sql_freeresult($result);
			
			// unread posts
			$sql_where = 'AND t.topic_moved_id = 0
							' . str_replace(array('p.', 'post_'), array('t.', 'topic_'), $m_approve_fid_sql) . '
							' . ((sizeof($ex_fid_ary)) ? 'AND ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) : '');
			$unread_list = array();
			$unread_list = get_unread_topics($user->data['user_id'], $sql_where, 'ORDER BY t.topic_id DESC');
			$unread_posts_count = sizeof($unread_list);


			// Get user avatar and rank
			$user_id = $user->data['user_id'];
			$username = $user->data['username'];
			$colour = $user->data['user_colour'];
			$avatar_img = get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']);
			$rank_title = $rank_img = '';
			$group_id = $user->data['group_id'];
			get_user_rank($user->data['user_rank'], $user->data['user_posts'], $rank_title, $rank_img, $rank_img_src, $group_id);

			// Assign specific vars
			$template->assign_vars(array(
				'L_NEW_POSTS'	=> $user->lang['SEARCH_NEW'] . '&nbsp;(' . $new_posts_count . ')',
				'L_SELF_POSTS'	=> $user->lang['SEARCH_SELF'] . '&nbsp;(' . $user->data['user_posts'] . ')',
				'L_UNREAD_POSTS'=> $user->lang['SEARCH_UNREAD'] . '&nbsp;(' . $unread_posts_count . ')',

				'B3P_AVATAR_IMG'    => $avatar_img,
				'B3P_RANK_TITLE'    => $rank_title,
				'B3P_RANK_IMG'        => $rank_img,
				'RANK_IMG_SRC'    => $rank_img_src,

				'USERNAME_FULL'        => get_username_string('full', $user_id, $username, $colour),
				'U_VIEW_PROFILE'	=> get_username_string('profile', $user_id, $username, $colour),

				'U_NEW_POSTS'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts'),
				'U_SELF_POSTS'			=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=egosearch'),
				'U_UNREAD_POSTS'		=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unreadposts'),
				'U_UM_BOOKMARKS'		=> ($config['allow_bookmarks']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=main&mode=bookmarks') : '',
				'U_UM_MAIN_SUBSCRIBED'	=> append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=main&mode=subscribed'),
				'U_UM_MCP'				=> ($auth->acl_get('m_') || $auth->acl_getf_global('m_')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=front', true, $user->session_id) : '',
				'S_DISPLAY_SUBSCRIPTIONS' => ($config['allow_topic_notify'] || $config['allow_forum_notify']) ? true : false,
			));

			return 'user_menu_side.html';
		}
Did I make any error?! :mrgreen: