function sp_ForumIndexSubForums($args = '', $label = '', $toolTip = '') { global $spThisForum, $spThisForumSubs; if (empty($spThisForumSubs)) { return; } $defs = array('tagId' => 'spForumIndexSubForums%ID%', 'tagClass' => 'spInRowSubForums', 'labelClass' => 'spInRowLabel', 'linkClass' => 'spInRowSubForumlink', 'icon' => 'sp_SubForumIcon.png', 'unreadIcon' => 'sp_SubForumIcon.png', 'iconClass' => 'spIconSmall', 'iconWidth' => 20, 'topicCount' => 1, 'allNested' => 1, 'stack' => 0, 'truncate' => 0, 'echo' => 1, 'get' => 0); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_ForumIndexSubForums_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $labelClass = esc_attr($labelClass); $linkClass = esc_attr($linkClass); $icon = sanitize_file_name($icon); $unreadIcon = sanitize_file_name($unreadIcon); $iconClass = esc_attr($iconClass); $iconWidth = (int) $iconWidth; $topicCount = (int) $topicCount; $allNested = (int) $allNested; $stack = (int) $stack; $truncate = (int) $truncate; $echo = (int) $echo; $get = (int) $get; $toolTip = esc_attr($toolTip); $thisTagId = str_ireplace('%ID%', $spThisForum->forum_id, $tagId); if ($get) { return $spThisForumSubs; } $out = "<div id='{$thisTagId}' class='{$tagClass}'>\n"; if ($stack) { $out .= "<ul class='{$labelClass}'><li>" . sp_filter_title_display($label) . "<ul>"; } else { $out .= "<span class='{$labelClass}'>" . sp_filter_title_display($label) . "</span>\n"; } foreach ($spThisForumSubs as $sub) { # Check if a custom icon $path = SPTHEMEICONSDIR; $url = SPTHEMEICONSURL; if ($sub->unread) { $fIcon = sanitize_file_name($unreadIcon); if (!empty($sub->forum_icon_new)) { $fIcon = sanitize_file_name($sub->forum_icon_new); $path = SFCUSTOMDIR; $url = SFCUSTOMURL; } } else { $fIcon = sanitize_file_name($icon); if (!empty($sub->forum_icon)) { $fIcon = sanitize_file_name($sub->forum_icon); $path = SFCUSTOMDIR; $url = SFCUSTOMURL; } } if (!file_exists($path . $fIcon)) { $fIcon = sp_find_icon(SPTHEMEICONSURL, sanitize_file_name($icon)); } else { $fIcon = sp_find_icon($url, $fIcon); } if ($sub->parent == $spThisForum->forum_id || $allNested == true) { $thisToolTip = str_ireplace('%NAME%', htmlspecialchars($sub->forum_name, ENT_QUOTES, SFCHARSET), $toolTip); if ($stack) { $out .= "<li>"; } $out .= "<img src='" . $fIcon . "' class='{$iconClass}' width='" . $iconWidth . "' alt=''/>\n"; $thisTagId = str_ireplace('%ID%', $sub->forum_id, $tagId); $out .= "<a href='{$sub->forum_permalink}' id='{$thisTagId}' class='{$linkClass} vtip' title='{$thisToolTip}'>" . sp_truncate($sub->forum_name, $truncate) . "</a>\n"; if ($topicCount) { $out .= " ({$sub->topic_count})\n"; } if ($stack) { $out .= "</li>"; } } } if ($stack) { $out .= "</ul></li></ul>"; } $out .= "</div>\n"; $out = apply_filters('sph_ForumIndexSubForums', $out, $a); if ($echo) { echo $out; } else { return $out; } }
function sp_TopicIndexLastPost($args = '', $label = '') { global $spThisTopic; $defs = array('tagId' => 'spTopicIndexLastPost%ID%', 'tagClass' => 'spInRowPostLink', 'labelClass' => 'spInRowLabel', 'infoClass' => 'spInRowInfo', 'linkClass' => 'spInRowLastPostLink', 'iconClass' => 'spIcon', 'icon' => 'sp_ArrowRight.png', 'tip' => 1, 'nicedate' => 1, 'date' => 0, 'time' => 0, 'user' => 1, 'stackuser' => 1, 'stackdate' => 0, 'truncateUser' => 0, 'itemBreak' => '<br />', 'echo' => 1, 'get' => 0); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_TopicIndexLastPost_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $labelClass = esc_attr($labelClass); $infoClass = esc_attr($infoClass); $linkClass = esc_attr($linkClass); $iconClass = esc_attr($iconClass); $icon = sanitize_file_name($icon); $tip = (int) $tip; $nicedate = (int) $nicedate; $date = (int) $date; $time = (int) $time; $user = (int) $user; $stackuser = (int) $stackuser; $stackdate = (int) $stackdate; $truncateUser = (int) $truncateUser; $icon = $icon; $echo = (int) $echo; $get = (int) $get; $tagId = str_ireplace('%ID%', $spThisTopic->topic_id, $tagId); if ($tip && !empty($spThisTopic->last_post_tip)) { $title = "title='{$spThisTopic->last_post_tip}'"; $linkClass .= ' vtip'; } else { $title = ''; } $stackuser ? $ulb = '<br />' : ($ulb = ' '); $stackdate ? $dlb = '<br />' : ($dlb = ' - '); $out = "<div id='{$tagId}' class='{$tagClass}'>\n"; $out .= "<span class='{$labelClass}'>" . sp_filter_title_display($label) . "\n"; # Link to post $out .= "<a class='{$linkClass}' {$title} href='{$spThisTopic->last_post_permalink}'>\n"; if (!empty($icon)) { $out .= "<img src='" . sp_find_icon(SPTHEMEICONSURL, $icon) . "' class='{$iconClass}' alt=''/>\n"; } $out .= "</a></span>\n"; # user $poster = sp_build_name_display($spThisTopic->last_user_id, sp_truncate($spThisTopic->last_display_name, $truncateUser)); if (empty($poster)) { $poster = sp_truncate($spThisTopic->last_guest_name, $truncateUser); } if ($user) { $out .= "<span class='{$labelClass}'>{$ulb}{$poster}</span>"; } $out .= $itemBreak; if ($get) { $getData = new stdClass(); $getData->permalink = $spThisTopic->first_post_permalink; $getData->topic_name = $spThisTopic->topic_name; $getData->post_date = $spThisTopic->last_post_date; $getData->tooltip = $spThisTopic->last_post_tip; $getData->user = $poster; return $getData; } # date/time if ($nicedate && isset($spThisTopic->last_post_date)) { $out .= "<span class='{$labelClass}'>" . sp_nicedate($spThisTopic->last_post_date) . "</span>\n"; } else { if ($date && isset($spThisTopic->last_post_date)) { $out .= "<span class='{$labelClass}'>" . sp_date('d', $spThisTopic->last_post_date); if ($time) { $out .= $dlb . sp_date('t', $spThisTopic->last_post_date); } $out .= "</span>\n"; } } $out .= "</div>\n"; $out = apply_filters('sph_TopicIndexLastPost', $out, $a); if ($echo) { echo $out; } else { return $out; } }
function sp_do_sp_UnansweredPostsTag($args = '') { #check if forum displayed if (sp_abort_display_forum()) { return; } $defs = array('tagId' => 'spUnansweredPostsTag', 'tagClass' => 'spListTag', 'listId' => 'spListItemTag%ID%', 'listClass' => 'spListItemTag', 'linkClass' => 'spLinkTag', 'textClass' => 'spTextTag', 'avatarClass' => 'spAvatarTag', 'listTags' => 1, 'forumIds' => '', 'limit' => 5, 'itemOrder' => 'FTUD', 'linkScope' => 'forum', 'beforeForum' => __('Forum: ', 'sp-ttags'), 'afterForum' => '<br />', 'beforeTopic' => __('Topic: ', 'sp-ttags'), 'afterTopic' => '<br />', 'beforeUser' => __('By: ', 'sp-ttags'), 'afterUser' => '', 'beforeDate' => ' -', 'afterDate' => '', 'avatarSize' => 25, 'niceDate' => 1, 'postTip' => 1, 'truncate' => 0, 'echo' => 1); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_UnansweredPostsTag_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $listClass = esc_attr($listClass); $listId = esc_attr($listId); $linkClass = esc_attr($linkClass); $textClass = esc_attr($textClass); $avatarClass = esc_attr($avatarClass); $listTags = (int) $listTags; $forumIds = esc_attr($forumIds); $limit = (int) $limit; $itemOrder = esc_attr($itemOrder); $linkScope = esc_attr($linkScope); $beforeForum = sp_filter_title_display($beforeForum); $afterForum = sp_filter_title_display($afterForum); $beforeTopic = sp_filter_title_display($beforeTopic); $afterTopic = sp_filter_title_display($afterTopic); $beforeUser = sp_filter_title_display($beforeUser); $afterUser = sp_filter_title_display($afterUser); $beforeDate = sp_filter_title_display($beforeDate); $afterDate = sp_filter_title_display($afterDate); $avatarSize = (int) $avatarSize; $niceDate = (int) $niceDate; $postTip = (int) $postTip; $truncate = (int) $truncate; $echo = (int) $echo; sp_forum_api_support(); global $spPostList, $spThisPostList; $where = SFTOPICS . '.post_count=1'; # do we have forum ids specified? $where .= !empty($forumIds) ? ' AND ' . SFPOSTS . '.forum_id IN (' . $forumIds . ')' : ''; $spPostList = new spPostList($where, SFPOSTS . '.post_id DESC', $limit); if (empty($spPostList)) { return; } if (!empty($beforeForum)) { $beforeForum = trim($beforeForum) . ' '; } if (!empty($beforeTopic)) { $beforeTopic = trim($beforeTopic) . ' '; } if (!empty($beforeUser)) { $beforeUser = trim($beforeUser) . ' '; } if (!empty($beforeDate)) { $beforeDate = trim($beforeDate) . ' '; } if (!empty($afterForum)) { $afterForum = ' ' . trim($afterForum); } if (!empty($afterTopic)) { $afterTopic = ' ' . trim($afterTopic); } if (!empty($afterUser)) { $afterUser = '******' . trim($afterUser); } if (!empty($afterDate)) { $afterDate = ' ' . trim($afterDate); } $fLink = $tLink = $aLink = false; if ($linkScope == 'forum') { $fLink = $tLink = true; } if ($linkScope == 'all') { $aLink = true; } # Start building dislay $out = $listTags ? "<ul id='{$tagId}' class='{$tagClass}'>" : "<div id='{$tagId}' class='{$tagClass}'>"; # start the loop if (sp_has_postlist()) { while (sp_loop_postlist()) { sp_the_postlist(); $thisId = str_ireplace('%ID%', $spThisPostList->topic_id, $listId); $out .= $listTags ? "<li id='{$thisId}' class='{$listClass}'>" : "<div id='{$thisId}' class='{$listClass}'>"; $title = $postTip ? "title='{$spThisPostList->post_tip}'" : ''; if ($aLink) { $out .= "<a class='{$linkClass}' {$title} href='{$spThisPostList->post_permalink}'>"; } for ($x = 0; $x < strlen($itemOrder); $x++) { switch (substr($itemOrder, $x, 1)) { case 'F': # Forum $out .= $beforeForum; if ($fLink) { $out .= "<a class='{$linkClass}' href='{$spThisPostList->forum_permalink}'>"; } $out .= sp_truncate($spThisPostList->forum_name, $truncate); if ($fLink) { $out .= '</a>'; } $out .= $afterForum; break; case 'T': # Topic $out .= $beforeTopic; if ($tLink) { $out .= "<a class='{$linkClass}' {$title} href='{$spThisPostList->post_permalink}'>"; } $out .= sp_truncate($spThisPostList->topic_name, $truncate); if ($tLink) { $out .= '</a>'; } $out .= $afterTopic; break; case 'A': # Avatar $spx = $avatarSize + 10 . 'px'; $out .= sp_UserAvatar("tagClass={$avatarClass}&size={$avatarSize}&link=none&context=user&echo=0", $spThisPostList); break; case 'U': # user $out .= "<span class='{$textClass}'>{$spThisPostList->display_name}{$afterUser}</span>"; break; case 'D': # date if ($niceDate) { $out .= "<span class='{$textClass}'>" . $beforeDate . sp_nicedate($spThisPostList->post_date) . "{$afterDate}</span>\n"; } else { $out .= "<span class='{$textClass}'>" . $beforeDate . sp_date('d', $spThisPostList->post_date) . "{$afterDate}</span>\n"; } break; default: # Invalid code $out .= '<br />' . __('Invalid Tag Code Found', 'sp-ttags') . '<br />'; break; } } if ($aLink) { $out .= '</a>'; } $out .= $listTags ? '</li>' : '</div>'; } } $out .= $listTags ? '</ul>' : '</div>'; $out = apply_filters('sph_UnansweredPostsTag', $out); if ($echo) { echo $out; } else { return $out; } }
function sp_PostIndexUserName($args = '') { global $spThisPost, $spThisPostUser; $defs = array('tagId' => 'spPostIndexUserName%ID%', 'tagClass' => 'spPostUserName', 'truncateUser' => 0, 'echo' => 1, 'get' => 0); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_PostIndexUserName_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $truncateUser = (int) $truncateUser; $echo = (int) $echo; $get = (int) $get; $tagId = str_ireplace('%ID%', $spThisPost->post_id, $tagId); $out = "<div id='{$tagId}' class='{$tagClass}'>"; if ($spThisPostUser->member) { $name = sp_build_name_display($spThisPostUser->ID, sp_truncate($spThisPostUser->display_name, $truncateUser)); } else { $name = sp_truncate($spThisPost->guest_name, $truncateUser); } $out .= $name; if ($get) { return $name; } $out .= "</div>\n"; $out = apply_filters('sph_PostIndexUserName', $out, $a); if ($echo) { echo $out; } else { return $out; } }
function sp_BreadCrumbsMobile($args = '', $forumLabel = '') { $defs = array('tagId' => 'spBreadCrumbsMobile', 'tagClass' => 'spButton', 'curClass' => 'spCurrentBreadcrumb', 'truncate' => 0, 'echo' => 1); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_BreadCrumbsMobile_args', $a); extract($a, EXTR_SKIP); global $spVars, $post; # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $curClass = esc_attr($curClass); $truncate = (int) $truncate; $echo = (int) $echo; # init some vars $breadCrumbs = ''; if (!empty($forumLabel)) { $forumLabel = sp_filter_title_display($forumLabel); } # main container for breadcrumbs $breadCrumbs .= "<div id='{$tagId}'>"; # wp page link for forum $breadCrumbs .= "<a class='{$tagClass}' href='" . sp_url() . "'>{$forumLabel}</a>\n"; # parent forum links if current forum is a sub-forum if (isset($spVars['parentforumid'])) { $forumNames = array_reverse($spVars['parentforumname']); $forumSlugs = array_reverse($spVars['parentforumslug']); for ($x = 0; $x < count($forumNames); $x++) { $breadCrumbs .= "<a class='{$tagClass}' href='" . sp_build_url($forumSlugs[$x], '', 0, 0) . "'>" . sp_truncate(sp_filter_title_display($forumNames[$x]), $truncate) . "</a>\n"; } } # forum link (parent or child forum) if (!empty($spVars['forumslug']) && $spVars['forumslug'] != 'all' && !empty($spVars['forumname'])) { # if showing a topic then check the return page of forum in transient store $returnPage = empty($spVars['topicslug']) ? 1 : sp_pop_topic_page($spVars['forumid']); $breadCrumbs .= "<a class='{$tagClass}' href='" . sp_build_url($spVars['forumslug'], '', $returnPage, 0) . "'>" . sp_truncate(sp_filter_title_display($spVars['forumname']), $truncate) . "</a>\n"; } # profile link if (!empty($spVars['profile'])) { $breadCrumbs .= "<a class='{$tagClass}' href='" . sp_url('profile') . "'>" . sp_text('Profile') . "</a>\n"; } # allow plugins/themes to filter the breadcrumbs $breadCrumbs = apply_filters('sph_BreadCrumbsMobile', $breadCrumbs, $a); # close the breadcrumb container $breadCrumbs .= '</div>'; $breadCrumbs .= ' <script type="text/javascript"> jQuery(document).ready(function() { jQuery("#' . $tagId . ' a:last-child").addClass("' . $curClass . '"); }) </script> '; if ($echo) { echo $breadCrumbs; } else { return $breadCrumbs; } }
function sp_ListFirstPost($args = '', $label = '') { global $spThisListTopic; $defs = array('tagId' => 'spListFirstPost%ID%', 'tagClass' => 'spListPostLink', 'labelClass' => 'spListLabel', 'linkClass' => 'spLink', 'iconClass' => 'spIcon', 'icon' => 'sp_ArrowRight.png', 'labelLink' => 0, 'tip' => 1, 'niceDate' => 1, 'date' => 0, 'time' => 0, 'user' => 1, 'truncateUser' => 0, 'break' => 0, 'echo' => 1, 'get' => 0); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_ListFirstPost_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $labelClass = esc_attr($labelClass); $linkClass = esc_attr($linkClass); $iconClass = esc_attr($iconClass); $labelLink = (int) $labelLink; $tip = (int) $tip; $niceDate = (int) $niceDate; $date = (int) $date; $time = (int) $time; $user = (int) $user; $truncateUser = (int) $truncateUser; $break = (int) $break; $icon = sanitize_file_name($icon); $echo = (int) $echo; $get = (int) $get; $tagId = str_ireplace('%ID%', $spThisListTopic->topic_id, $tagId); if ($tip && !empty($spThisListTopic->first_post_tip)) { $title = "title='{$spThisListTopic->first_post_tip}'"; $linkClass .= ''; } else { $title = ''; } $sp = ' '; $out = "<div id='{$tagId}' class='{$tagClass}'>\n"; if ($labelLink) { $out .= "<a class='{$linkClass}' {$title} href='{$spThisListTopic->first_post_permalink}'>\n"; } $out .= "<span class='{$labelClass}'>" . sp_filter_title_display($label) . " \n"; if ($labelLink) { $out .= "</a>\n"; } # Link to post $out .= "<a class='{$linkClass}' {$title} href='{$spThisListTopic->first_post_permalink}'>\n"; $out .= sp_paint_icon($iconClass, SPTHEMEICONSURL, $icon); $out .= "</a></span>\n"; # user $poster = sp_build_name_display($spThisListTopic->first_user_id, sp_truncate($spThisListTopic->first_display_name, $truncateUser)); if (empty($poster)) { $poster = sp_truncate($spThisListTopic->first_guest_name, $truncateUser); } if ($user) { $out .= "<span class='{$labelClass}'>{$poster}</span>\n"; } if ($get) { $getData = new stdClass(); $getData->permalink = $spThisListTopic->first_post_permalink; $getData->topic_name = $spThisListTopic->topic_name; $getData->post_date = $spThisListTopic->first_post_date; $getData->tooltip = $spThisListTopic->first_post_tip; $getData->user = $poster; return $getData; } if ($break) { $sp = "<br />"; } # date/time if ($niceDate) { $out .= "<span class='{$labelClass}'>" . $sp . sp_nicedate($spThisListTopic->first_post_date) . "</span>\n"; } else { if ($date) { $out .= "<span class='{$labelClass}'>" . $sp . sp_date('d', $spThisListTopic->first_post_date); if ($time) { $out .= '-' . sp_date('t', $spThisListTopic->first_post_date); } $out .= "</span>\n"; } } $out .= "</div>\n"; $out = apply_filters('sph_ListFirstPost', $out, $a); if ($echo) { echo $out; } else { return $out; } }
function sp_ListSearchTopicName($args = '', $label = '') { global $spThisPostList; $defs = array('tagId' => 'spListPostTopicName%ID%', 'tagClass' => 'spListPostTopicRowName', 'linkClass' => 'spLink', 'truncate' => 0, 'echo' => 1, 'get' => 0); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_ListSearchTopicName_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $linkClass = esc_attr($linkClass); $truncate = (int) $truncate; $echo = (int) $echo; $get = (int) $get; $label = sp_filter_title_display($label); $tagId = str_ireplace('%ID%', $spThisPostList->post_id, $tagId); if ($get) { return sp_truncate($spThisListTopic->topic_name, $truncate); } $out = "<div id='{$tagId}' class='{$tagClass}'>{$label}\n"; $out .= "<a href='{$spThisPostList->topic_permalink}' class='{$linkClass}'>" . sp_truncate($spThisPostList->topic_name, $truncate) . "</a>\n"; $out .= "</div>\n"; $out = apply_filters('sph_ListSearchTopicName', $out, $a); if ($echo) { echo $out; } else { return $out; } }