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} </span></td>