From a4091ea6d645f779b09086e4fab0805b436cf52f Mon Sep 17 00:00:00 2001
From: Cameron <e107inc@gmail.com>
Date: Sun, 24 Sep 2017 14:12:35 -0700
Subject: [PATCH] Issue #2796 - New Forum Posts Menu query and shortcode fixes.

---
 e107_plugins/forum/newforumposts_menu.php     | 58 ++++++++++++++-----
 .../shortcodes/batch/view_shortcodes.php      | 43 +++++++++++++-
 .../templates/newforumposts_menu_template.php |  4 +-
 3 files changed, 88 insertions(+), 17 deletions(-)

diff --git a/e107_plugins/forum/newforumposts_menu.php b/e107_plugins/forum/newforumposts_menu.php
index 7ecb388ca..3f73064de 100755
--- a/e107_plugins/forum/newforumposts_menu.php
+++ b/e107_plugins/forum/newforumposts_menu.php
@@ -54,21 +54,49 @@ if(!class_exists('forum_newforumposts_menu'))
 
 			$forumList = implode(',', $this->forumObj->getForumPermList('view'));
 
-			$qry = "
-			SELECT
-				p.post_user, p.post_id, p.post_datestamp, p.post_user_anon, p.post_entry,
-				t.*,
-				u.user_id, u.user_name, u.user_image, u.user_currentvisit,
-				lu.user_name as thread_lastuser_username, 
-				f.forum_name, f.forum_sef
-			FROM `#forum_post` as p
+			$qry = '';
+
+			switch($this->menuPref['layout'])
+			{
+				case "minimal":
+				case "default":
+
+					$qry = "
+					SELECT
+					p.post_user, p.post_id, p.post_datestamp, p.post_user_anon, p.post_entry,
+					t.*,
+					u.user_id, u.user_name, u.user_image, u.user_currentvisit,
+					lu.user_name as thread_lastuser_username, 
+					f.forum_name, f.forum_sef
+					FROM `#forum_post` as p
+					LEFT JOIN `#forum_thread` AS t ON t.thread_id = p.post_thread
+					LEFT JOIN `#forum` as f ON f.forum_id = t.thread_forum_id
+					LEFT JOIN `#user` AS u ON u.user_id = p.post_user
+					LEFT JOIN `#user` AS lu ON t.thread_lastuser = lu.user_id
+					WHERE {$max_age} p.post_forum IN ({$forumList})
+					ORDER BY p.post_datestamp DESC LIMIT 0, ".vartrue($this->menuPref['display'],10);
+					break;
+
+				 // standardized field names.  thread_user_[user table fields without the '_')
+				default:
+					 $qry = "
+					SELECT t.thread_id, t.thread_name, t.thread_datestamp, t.thread_user, t.thread_views, t.thread_lastpost, t.thread_lastuser, t.thread_total_replies, t.thread_active, 
+					f.forum_id, f.forum_name, f.forum_class, f.forum_sef, 
+					u.user_name as thread_user_username,  
+					u.user_image as thread_user_userimage, 
+					u.user_currentvisit as thread_user_usercurrentvisit,
+					fp.forum_class,  fp.forum_sef as forum_parent_sef,
+					lp.user_name AS thread_lastuser_username
+					FROM #forum_thread AS t
+					LEFT JOIN #user AS u ON t.thread_user = u.user_id
+					LEFT JOIN #user AS lp ON t.thread_lastuser = lp.user_id
+					LEFT JOIN #forum AS f ON f.forum_id = t.thread_forum_id
+					LEFT JOIN #forum AS fp ON f.forum_parent = fp.forum_id
+					WHERE f.forum_id = t.thread_forum_id AND f.forum_class IN (".USERCLASS_LIST.")
+					AND fp.forum_class IN (".USERCLASS_LIST.")
+					ORDER BY t.thread_lastpost DESC LIMIT 0, ".vartrue($this->menuPref['display'],10);
+					}
 
-			LEFT JOIN `#forum_thread` AS t ON t.thread_id = p.post_thread
-			LEFT JOIN `#forum` as f ON f.forum_id = t.thread_forum_id
-			LEFT JOIN `#user` AS u ON u.user_id = p.post_user
-			LEFT JOIN `#user` AS lu ON t.thread_lastuser = lu.user_id
-			WHERE {$max_age} p.post_forum IN ({$forumList})
-			ORDER BY p.post_datestamp DESC LIMIT 0, ".vartrue($this->menuPref['display'],10);
 
 			return $qry;
 		}
@@ -131,6 +159,8 @@ if(!class_exists('forum_newforumposts_menu'))
 				{
 					$row['thread_sef'] = $this->forumObj->getThreadSef($row);
 
+
+
 					$sc->setScVar('postInfo', $row);
 					$sc->setVars($row);
 					$list .= $tp->parseTemplate($template['item'], true, $sc);
diff --git a/e107_plugins/forum/shortcodes/batch/view_shortcodes.php b/e107_plugins/forum/shortcodes/batch/view_shortcodes.php
index 3245c7bee..c4808851e 100644
--- a/e107_plugins/forum/shortcodes/batch/view_shortcodes.php
+++ b/e107_plugins/forum/shortcodes/batch/view_shortcodes.php
@@ -80,7 +80,8 @@
 
 		function sc_post_author_avatar($parm=null)
 		{
-			return $this->sc_avatar($parm);
+			return e107::getParser()->toAvatar($this->postInfo, $parm);
+		//	return $this->sc_avatar($parm);
 		}
 
 	// @todo new thread/topic shortcodes
@@ -91,6 +92,46 @@
 		}
 
 
+		function sc_topic_author_name($parm=null)
+		{
+			if($this->var['thread_user_username'])
+			{
+				return "<a href='" . e107::getUrl()->create('user/profile/view', array('name' => $this->postInfo['thread_user_username'], 'id' => $this->postInfo['thread_user'])) . "'>{$this->postInfo['thread_user_username']}</a>";
+			}
+			else
+			{
+				return '<b>' . e107::getParser()->toHTML($this->postInfo['thread_user_anon']) . '</b>';
+			}
+		}
+
+
+		function sc_topic_author_url($parm=null)
+		{
+			if(empty($this->var['thread_user_username']) || empty($this->var['thread_user']))
+			{
+				return '';
+			}
+
+			return e107::getUrl()->create('user/profile/view', array('name' => $this->var['thread_user_username'], 'id' => $this->var['thread_user']));
+		}
+
+
+		function sc_topic_author_avatar($parm=null)
+		{
+			$arr = array(
+				'user_id'           => $this->var['thread_user'],           // standardized field names.
+				'user_name'         => $this->var['thread_user_username'],
+				'user_image'        => $this->var['thread_user_userimage'],
+				'user_currentvisit' => $this->var['thread_user_usercurrentvisit']
+			);
+
+			return e107::getParser()->toAvatar($arr, $parm);
+		//	return $this->sc_avatar($parm);
+		}
+
+
+
+
 		function sc_topic_url($parm=null)
 		{
 			return e107::url('forum', 'topic', $this->var);
diff --git a/e107_plugins/forum/templates/newforumposts_menu_template.php b/e107_plugins/forum/templates/newforumposts_menu_template.php
index 3e7e3a155..3777eb34e 100644
--- a/e107_plugins/forum/templates/newforumposts_menu_template.php
+++ b/e107_plugins/forum/templates/newforumposts_menu_template.php
@@ -14,7 +14,7 @@
 															<a href='{POST_URL}'>{POST_AUTHOR_AVATAR: shape=circle}</a>
 															</div>
 															<div class='media-body'>
-																<h4 class='media-header'><a href='{POST_URL}'>{POST_TOPIC}</a></h4>{POST_CONTENT}<br /><small class='text-muted muted'>".LAN_FORUM_MENU_001." {POST_AUTHOR} {POST_DATESTAMP}</small>
+																<h4 class='media-header'><a href='{POST_URL}'>{POST_TOPIC}</a></h4>{POST_CONTENT}<br /><small class='text-muted muted'>".LAN_FORUM_MENU_001." {POST_AUTHOR_NAME} {POST_DATESTAMP}</small>
 														</div></li>";
 	 $NEWFORUMPOSTS_MENU_TEMPLATE['default']['end']     = "</ul>";
 
@@ -48,7 +48,7 @@
 	$NEWFORUMPOSTS_MENU_TEMPLATE['main']['item']        = "<tr>
 														<td style='width:5%; text-align:center' class='forumheader3'>{TOPIC_ICON}</td>
 														<td style='width:45%' class='forumheader3'><a href='{POST_URL}'>{TOPIC_NAME}</a> <small class='smalltext'>(<a href='{FORUM_URL}'>{FORUM_NAME}</a>)</small></td>
-														<td style='width:15%; text-align:center' class='forumheader3'>{POST_AUTHOR_NAME}</td>
+														<td style='width:15%; text-align:center' class='forumheader3'>{TOPIC_AUTHOR_NAME}</td>
 														<td style='width:5%; text-align:center' class='forumheader3'>{TOPIC_VIEWS}</td>
 														<td style='width:5%; text-align:center' class='forumheader3'>{TOPIC_REPLIES}</td>
 														<td style='width:25%; text-align:center' class='forumheader3'>{TOPIC_LASTPOST_AUTHOR}<br /><span class='smalltext'>{TOPIC_LASTPOST_DATE}&nbsp;</span></td>