function sp_do_sp_TopicLinkTag($args = '') { #check if forum displayed if (sp_abort_display_forum()) { return; } $defs = array('topicId' => '', 'linkText' => '%TOPICNAME%', 'beforeLink' => '', 'afterLink' => '', 'listTags' => 0, 'echo' => 1); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_TopicLinkTag_args', $a); extract($a, EXTR_SKIP); # sanitize before use $topicId = (int) $topicId; $linkText = esc_attr($linkText); $beforeLink = sp_filter_title_display($beforeLink); $afterLink = sp_filter_title_display($afterLink); $listTags = (int) $listTags; $echo = (int) $echo; if (empty($topicId)) { return ''; } sp_forum_api_support(); if (!empty($beforeLink)) { $beforeLink = trim($beforeLink) . ' '; } if (!empty($afterLink)) { $afterLink = ' ' . trim($afterLink); } $spdb = new spdbComplex(); $spdb->table = SFTOPICS; $spdb->fields = SFTOPICS . '.topic_id, ' . SFTOPICS . '.forum_id, topic_slug, topic_name, forum_name, forum_slug'; $spdb->join = array(SFFORUMS . ' ON ' . SFTOPICS . '.forum_id = ' . SFFORUMS . '.forum_id'); $spdb->where = SFTOPICS . '.topic_id=' . $topicId; $thistopic = $spdb->select(); $out = ''; if ($thistopic) { if (sp_can_view($thistopic[0]->forum_id, 'topic-title')) { $out = ''; $linkText = str_replace("%TOPICNAME%", sp_filter_title_display($thistopic[0]->topic_name), $linkText); if (empty($linkText)) { $linkText = sp_filter_title_display($thistopic[0]->topic_name); } if ($listTags) { $out .= '<li>'; } $out .= '<span>' . $beforeLink . '<a href="' . sp_build_url($thistopic[0]->forum_slug, $thistopic[0]->topic_slug, 0, 0) . '">' . $linkText . '</a>' . $afterLink . '</span>'; if ($listTags) { $out .= '</li>'; } } } else { $out = sprintf(__('Topic %s not found', 'sp-ttags'), $topicId); } $out = apply_filters('sph_TopicLinkTag', $out); if ($echo) { echo $out; } else { return $out; } }
function spa_clean_forum_children() { # Remove all child records from forums spdb_query('UPDATE ' . SFFORUMS . ' set children=""'); # Now get ALL forums $forums = spdb_table(SFFORUMS); if ($forums) { foreach ($forums as $forum) { if ($forum->parent != 0) { $spdb = new spdbComplex(); $spdb->table = SFFORUMS; $spdb->fields = 'children, group_id'; $spdb->where = 'forum_id=' . $forum->parent; $childlist = $spdb->select(); if (!empty($childlist[0]->children)) { $children = unserialize($childlist[0]->children); } else { $children = array(); } $children[] = $forum->forum_id; spdb_query('UPDATE ' . SFFORUMS . " set children='" . serialize($children) . "' WHERE forum_id={$forum->parent}"); spdb_query('UPDATE ' . SFFORUMS . " set group_id=" . $childlist[0]->group_id . " WHERE forum_id={$forum->forum_id}"); spdb_flush(); } } } }
function sp_do_sp_AdminModeratorOnlineTag($args = '') { #check if forum displayed if (sp_abort_display_forum()) { return; } $defs = array('tagId' => 'spAdminModeratorOnlineTag', 'tagClass' => 'spListTag', 'moderator' => 1, 'custom' => 1, 'customClass' => 'spAdminMessageTag', 'listTags' => 1, 'listClass' => 'spListItemTag', 'onToolTip' => __('Online', 'sp-ttags'), 'onIcon' => 'sp_UserOnlineSmall.png', 'offIcon' => 'sp_UserOfflineSmall.png', 'offToolTip' => __('Offline', 'sp-ttags'), 'useAvatar' => 0, 'avatarSize' => 25, 'echo' => 1); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_AdminModeratorOnlineTag_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $moderator = (int) $moderator; $custom = (int) $custom; $customClass = esc_attr($customClass); $listTags = (int) $listTags; $listClass = esc_attr($listClass); $onToolTip = sp_filter_title_display($onToolTip); $offToolTip = sp_filter_title_display($offToolTip); $onIcon = sp_filter_filename_save($onIcon); $offIcon = sp_filter_filename_save($offIcon); $useAvatar = (int) $useAvatar; $avatarSize = (int) $avatarSize; $echo = (int) $echo; sp_forum_api_support(); $where = 'admin=1'; if ($moderator) { $where .= ' OR moderator = 1'; } $spdb = new spdbComplex(); $spdb->table = SFMEMBERS; $spdb->fields = 'user_id AS ID, user_email, ' . SFMEMBERS . '.display_name, admin, user_options, admin_options, ' . SFTRACK . '.id AS online'; $spdb->left_join = array(SFTRACK . ' ON ' . SFMEMBERS . '.user_id = ' . SFTRACK . '.trackuserid', SFUSERS . ' ON ' . SFMEMBERS . '.user_id = ' . SFUSERS . '.ID'); $spdb->where = $where; $spdb->orderby = 'online DESC'; $admins = $spdb->select(); $out = ''; if ($admins) { $out .= $listTags ? "<ul id='{$tagId}' class='{$tagClass}'>" : "<div id='{$tagId}' class='{$tagClass}'>"; foreach ($admins as $admin) { $noAvatar = ''; $msg = ''; $userOpts = unserialize($admin->user_options); if (!$userOpts['hidestatus']) { $userName = sp_build_name_display($admin->ID, sp_filter_name_display($admin->display_name)); $icon = $admin->online ? $onIcon : $offIcon; $tip = $admin->online ? $onToolTip : $offToolTip; if (!$useAvatar) { $noAvatar .= "<img src='" . sp_find_icon(SPTHEMEICONSURL, "{$icon}") . "' alt='' title='{$tip}' />"; } if (!$admin->online && $custom) { $userOpts = unserialize($admin->admin_options); if (isset($userOpts['offline_message'])) { $msg = sp_filter_text_display($userOpts['offline_message']); if ($msg != '') { $msg = "<div class='{$customClass}'>{$msg}</div>"; } } } # begin loop display if ($listTags ? $out .= "<li class='{$listClass}'>" : ($out .= "<div class='{$listClass}'>")) { } # Avatar or Icon if ($useAvatar) { $admin->avatar = ''; $out .= sp_UserAvatar("tagClass=spAvatar&imgClass=spAvatar&size={$avatarSize}&context=user&echo=0", $admin); } else { $out .= $noAvatar; } # User name and current online status $out .= "<span class='spOnlineAdmin'><span class='spOnlineUser'>{$userName}</span> is <span class='admin{$tip}'>{$tip}</span>"; # display offline message is set $out .= $msg; $out .= '</span>'; # end loop display if ($listTags ? $out .= '<div style="clear:both;"></div></li>' : ($out .= '</div><div style="clear:both;"></div>')) { } } } $out .= $listTags ? '</ul>' : '</div>'; } $out = apply_filters('sph_AdminModeratorOnlineTag', $out); if ($echo) { echo $out; } else { return $out; } }
function sp_do_sp_ForumDropdownTag($args = '') { #check if forum displayed if (sp_abort_display_forum()) { return; } $defs = array('tagId' => 'spForumDropdownTag', 'tagClass' => 'spLinkTag', 'selectClass' => 'spSelectTag', 'forumList' => 0, 'label' => __("Select forum", 'sp-ttags'), 'length' => 30, 'echo' => 1); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_ForumDropdownTag_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $selectClass = esc_attr($selectClass); $forumList = esc_attr($forumList); $label = sp_filter_title_display($label); $length = (int) $length; $echo = (int) $echo; global $spThisUser; sp_forum_api_support(); $forum_ids = array(); if ($forumList == 0) { $forum_ids = sp_get_forum_memberships($spThisUser->ID); } else { $allforums = explode(',', $forumList); foreach ($allforums as $thisforum) { if (sp_can_view($thisforum, 'forum-title')) { $forum_ids[] = $thisforum; } } } if (empty($forum_ids)) { return; } # create where clause based on forums that current user can view $where = "forum_id IN (" . implode(",", $forum_ids) . ")"; $spdb = new spdbComplex(); $spdb->table = SFFORUMS; $spdb->fields = 'forum_slug, forum_name'; $spdb->join = array(SFGROUPS . ' ON ' . SFFORUMS . '.group_id = ' . SFGROUPS . '.group_id'); $spdb->where = $where; $spdb->orderby = 'group_seq, forum_seq'; $forums = $spdb->select(); $out = "<div id='{$tagId}' class='{$tagClass}'>"; $out .= '<select name="forumselect" class="' . $selectClass . '" onChange="javascript:spjChangeForumURL(this)">' . "\n"; $out .= '<option>' . $label . '</option>' . "\n"; foreach ($forums as $forum) { $out .= '<option value="' . sp_build_url($forum->forum_slug, '', 0, 0) . '"> ' . sp_create_name_extract(sp_filter_title_display($forum->forum_name), $length) . '</option>' . "\n"; } $out .= '</select>' . "\n"; $out .= '</div>'; $out .= '<script type="text/javascript">'; $out .= 'function spjChangeForumURL(menuObj) {'; $out .= 'var i = menuObj.selectedIndex;'; $out .= 'if(i > 0) {'; $out .= 'if(menuObj.options[i].value != "#") {'; $out .= 'window.location = menuObj.options[i].value;'; $out .= '}}}'; $out .= '</script>'; $out = apply_filters('sph_ForumDropdownTag', $out); if ($echo) { echo $out; } else { return $out; } }
function sp_do_sp_AuthorPostsTag($args = '') { #check if forum displayed if (sp_abort_display_forum()) { return; } $defs = array('tagId' => 'spAuthorPostsTag', 'tagClass' => 'spLinkTag', 'authorId' => '', 'showForum' => 1, 'showDate' => 1, 'limit' => 5, 'listTags' => 0, 'echo' => 1); $a = wp_parse_args($args, $defs); $a = apply_filters('sph_AuthorPostsTag_args', $a); extract($a, EXTR_SKIP); # sanitize before use $tagId = esc_attr($tagId); $tagClass = esc_attr($tagClass); $authorId = (int) $authorId; $showForum = (int) $showForum; $showDate = (int) $showDate; $limit = (int) $limit; $listTags = (int) $listTags; $echo = (int) $echo; if (empty($authorId)) { return; } sp_forum_api_support(); if ($limit == 0) { $limit = ''; } # limit to viewable forums based on permissions $where = SFPOSTS . '.user_id = ' . $authorId . ' AND ' . SFPOSTS . '.post_status=0 '; $forum_ids = sp_get_forum_memberships(); # create where clause based on forums that current user can view if ($forum_ids != '') { $where .= "AND " . SFPOSTS . ".forum_id IN (" . implode(",", $forum_ids) . ")"; } else { return ''; } $spdb = new spdbComplex(); $spdb->table = SFPOSTS; $spdb->distinct = true; $spdb->fields = SFPOSTS . '.post_id, ' . SFPOSTS . '.forum_id, ' . SFPOSTS . '.topic_id, ' . spdb_zone_datetime('post_date') . ', post_index, forum_slug, forum_name, topic_slug, topic_name'; $spdb->join = array(SFTOPICS . ' ON ' . SFPOSTS . '.topic_id = ' . SFTOPICS . '.topic_id', SFFORUMS . ' ON ' . SFPOSTS . '.forum_id = ' . SFFORUMS . '.forum_id'); $spdb->where = $where; $spdb->orderby = 'post_date DESC'; $spdb->limits = $limit; $sfposts = $spdb->select(); if (!$listTags) { $out = "<div id='{$tagId}' class='{$tagClass}'>"; $open = '<div>'; $close = '</div>'; } else { $out = "<ul id='{$tagId}' class='{$tagClass}'>"; $open = '<li>'; $close = '</li>'; } if ($sfposts) { foreach ($sfposts as $sfpost) { $out .= $open; if ($showForum) { $out .= sp_filter_title_display($sfpost->forum_name) . '<br />'; } $out .= '<a href="' . sp_build_url($sfpost->forum_slug, $sfpost->topic_slug, 0, $sfpost->post_id, $sfpost->post_index) . '">' . sp_filter_title_display($sfpost->topic_name) . '</a><br />' . "\n"; if ($showDate) { $out .= sp_date('d', $sfpost->post_date) . '<br />'; } $out .= $close; } } else { $out .= $open . __('No posts by this author', 'sp-ttags') . $close; } if (!$listTags) { $out .= '</div>'; } else { $out .= '</ul>'; } $out = apply_filters('sph_AuthorPostsTag', $out); if ($echo) { echo $out; } else { return $out; } }