403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/inetpub/wwwroot/forum/wp-content/plugins/simplepress/forum/content/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/inetpub/wwwroot/forum/wp-content/plugins/simplepress/forum/content/sp-group-view-functions.php
<?php
/*
Simple:Press
Template Function Handler
$LastChangedDate: 2018-08-15 07:59:04 -0500 (Wed, 15 Aug 2018) $
$Rev: 15704 $
*/

if ( ! defined( 'ABSPATH' ) ) {
	die('Access denied - you cannot directly call this file');
}

# --------------------------------------------------------------------------------------
#
#	sp_GroupHeaderIcon()
#	Display Group Icon
#	Scope:	Group Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_GroupHeaderIcon($args = '') {
	$defs = array('tagId'    => 'spGroupHeaderIcon%ID%',
	              'tagClass' => 'spHeaderIcon',
	              'icon'     => 'sp_GroupIcon.png',
	              'echo'     => 1,
	              'get'      => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_GroupHeaderIcon_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$echo     = (int) $echo;
	$get      = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisGroup->group_id, $tagId);

	$group_icon = spa_get_saved_icon( SP()->forum->view->thisGroup->group_icon );
	
	# Check if a custom icon
	if ( !empty( $group_icon['icon'] ) ) {
		
		$icon = $group_icon['icon'];

		if( 'file' === $group_icon['type'] ) {
			$icon = SP()->theme->paint_custom_icon($tagClass, SPCUSTOMURL. $icon );
		} else {
			$icon = SP()->theme->sp_paint_iconset_icon( $group_icon, $tagClass );
		}
	} else {
		$icon = SP()->theme->paint_icon($tagClass, SPTHEMEICONSURL, sanitize_file_name($icon));
	}
	
	if ($get) return $icon;

	$out = $icon;
	$out = apply_filters('sph_GroupHeaderIcon', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            array(
                'span' => array(
                    'class' => array(),
                    'title' => array(),
                    'alt' => array(),
                ),
                'img' => array(
                    'id' => array(),
                    'class' => array(),
                    'src' => array(),
                    'title' => array(),
                    'alt' => array(),
                )
            )
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_GroupHeaderName()
#	Display Group Name/Title in Header
#	Scope:	Group Loop
#	Version: 5.0
#
#	Changelog:
#	5.2.3 - 'toggleTagId' argument added
#			'collapse' argument added
#
# --------------------------------------------------------------------------------------
function sp_GroupHeaderName($args = '') {
	$defs = array('tagId'       => 'spGroupHeaderName%ID%',
	              'tagClass'    => 'spHeaderName',
	              'toggleTagId' => 'spGroupOpenClose%ID%',
	              'collapse'    => 1,
	              'truncate'    => 0,
	              'echo'        => 1,
	              'get'         => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_GroupHeaderName_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId       = esc_attr($tagId);
	$tagClass    = esc_attr($tagClass);
	$toggleTagId = esc_attr($toggleTagId);
	$collapse    = (int) $collapse;
	$truncate    = (int) $truncate;
	$echo        = (int) $echo;
	$get         = (int) $get;

	$tagId       = str_ireplace('%ID%', SP()->forum->view->thisGroup->group_id, $tagId);
	$toggleTagId = '#'.str_ireplace('%ID%', SP()->forum->view->thisGroup->group_id, $toggleTagId);

	if ($get) return SP()->primitives->truncate_name(SP()->forum->view->thisGroup->group_name, $truncate);

	$out = '';
	if (!empty(SP()->forum->view->thisGroup->group_name)) {

        $styleOut = $collapse ? " style='cursor: pointer;'" : "";
		$out .= "<div id='$tagId' class='$tagClass spGroupHeaderOpen' data-id='$toggleTagId' data-collapse='$collapse' $styleOut>";
		$out .= SP()->primitives->truncate_name(SP()->forum->view->thisGroup->group_name, $truncate)."</div>";
	}

	$out = apply_filters('sph_GroupHeaderName', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            array(
                'div' => array(
                    'id' => array(),
                    'class' => array(),
                    'data-id' => array(),
                    'data-collapse' => array(),
                    'style' => array(),
                )
            )
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_GroupHeaderDescription()
#	Display Group Description in Header
#	Scope:	Group Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_GroupHeaderDescription($args = '') {
	$defs = array('tagId'    => 'spGroupHeaderDescription%ID%',
	              'tagClass' => 'spHeaderDescription',
	              'echo'     => 1,
	              'get'      => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_GroupHeaderDescription_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$echo     = (int) $echo;
	$get      = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisGroup->group_id, $tagId);

	if ($get) return SP()->forum->view->thisGroup->group_desc;

	$out = (empty(SP()->forum->view->thisGroup->group_desc)) ? '' : "<div id='$tagId' class='$tagClass'>".SP()->forum->view->thisGroup->group_desc."</div>";
	$out = apply_filters('sph_GroupHeaderDescription', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_GroupOpenClose()
#	Display Open and Close of forum listing
#	Scope:	Group Loop
#	Version: 5.1
#
#	default values= 'open', 'closed'
#
# --------------------------------------------------------------------------------------
function sp_GroupOpenClose($args = '', $toolTipOpen = '', $toolTipClose = '') {
	$defs = array('tagId'     => 'spGroupOpenClose%ID%',
	              'tagClass'  => 'spIcon',
	              'openIcon'  => 'sp_GroupOpen.png',
	              'closeIcon' => 'sp_GroupClose.png',
	              'default'   => 'open',
	              'echo'      => 1);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_GroupOpenClose_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId        = esc_attr($tagId);
	$tagClass     = esc_attr($tagClass);
	$openIcon     = SP()->theme->paint_file_icon(SPTHEMEICONSURL, sanitize_file_name($openIcon));
	$closeIcon    = SP()->theme->paint_file_icon(SPTHEMEICONSURL, sanitize_file_name($closeIcon));
	$toolTipOpen  = esc_attr($toolTipOpen);
	$toolTipClose = esc_attr($toolTipClose);
	$default      = esc_attr($default);
	$echo         = (int) $echo;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisGroup->group_id, $tagId);
	$div   = 'groupViewForums'.SP()->forum->view->thisGroup->group_id;

	if (isset($_COOKIE[$div])) $default = $_COOKIE[$div];

	($default == 'open') ? $icon = $closeIcon : $icon = $openIcon;
	($default == 'open') ? $tooltip = $toolTipClose : $tooltip = $toolTipOpen;

	if ($default == 'closed') {
		echo '<style>#'.esc_html($div).' {display:none;}</style>';
	}

	$out = "<span id='$tagId' class='spOpenCloseGroup' data-target='$div' data-tag='$tagId' data-tclass='$tagClass' data-open='$openIcon' data-close='$closeIcon' data-toolopen='$toolTipOpen' data-toolclose='$toolTipClose'><img class='$tagClass' title='$tooltip' src='$icon' alt='' /></span>";
	$out = apply_filters('sph_GroupOpenClose', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_GroupHeaderMessage()
#	Display Special Group Message in Header
#	Scope:	Group Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_GroupHeaderMessage($args = '') {
	$defs = array('tagId'    => 'spGroupHeaderMessage%ID%',
	              'tagClass' => 'spHeaderMessage',
				  'fontClass'=> '',
	              'echo'     => 1,
	              'get'      => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_GroupHeaderMessage_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$fontClass= esc_attr($fontClass);
	$echo     = (int) $echo;
	$get      = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisGroup->group_id, $tagId);

	if ($get) return SP()->forum->view->thisGroup->group_message;

	$out = (empty(SP()->forum->view->thisGroup->group_message)) ? '' : "<div id='$tagId' class='$tagClass'><span class='$fontClass'>".SP()->forum->view->thisGroup->group_message."</span></div>";
	$out = apply_filters('sph_GroupHeaderMessage', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_GroupHeaderRSSButton()
#	Display Group Level RSS Button
#	Scope:	Group Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_GroupHeaderRSSButton($args = '', $label = '', $toolTip = '') {
	if (!SP()->forum->view->thisGroup->group_rss_active) return;

	$defs = array('tagId'     => 'spGroupHeaderRSSButton%ID%',
	              'tagClass'  => 'spLink',
	              'icon'      => 'sp_Feed.png',
	              'iconClass' => 'spIcon',
	              'echo'      => 1,
	              'get'       => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_GroupHeaderRSSButton_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId     = esc_attr($tagId);
	$tagClass  = esc_attr($tagClass);
	$icon      = sanitize_file_name($icon);
	$iconClass = esc_attr($iconClass);
	$toolTip   = esc_attr($toolTip);
	$echo      = (int) $echo;
	$get       = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisGroup->group_id, $tagId);

	# Get or construct rss url
	if (empty(SP()->forum->view->thisGroup->rss)) {
		$rssOpt = SP()->options->get('sfrss');
		if ($rssOpt['sfrssfeedkey'] && isset(SP()->user->thisUser->feedkey)) {
			$rssUrl = SP()->spPermalinks->get_query_url(trailingslashit(SP()->spPermalinks->build_url('', '', 0, 0, 0, 1)).user_trailingslashit(SP()->user->thisUser->feedkey)).'group='.SP()->forum->view->thisGroup->group_id;
		} else {
			$sym    = (strpos(SP()->spPermalinks->get_url(), '?')) ? '&' : '?';
			$rssUrl = trailingslashit(SP()->spPermalinks->build_url('', '', 0, 0, 0, 1)).SP()->spPermalinks->get_query_char()."group=".SP()->forum->view->thisGroup->group_id;
		}
	} else {
		$rssUrl = SP()->forum->view->thisGroup->rss;
	}

	if ($get) return $rssUrl;

	$out = "<a class='$tagClass' id='$tagId' title='$toolTip' rel='nofollow' href='$rssUrl'>";
	if (!empty($icon)) $out .= SP()->theme->paint_icon($iconClass, SPTHEMEICONSURL, $icon);
	if (!empty($label)) $out .= SP()->displayFilters->title($label);
	$out .= "</a>";
	$out = apply_filters('sph_GroupHeaderRSSButton', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_NoGroupMessage()
#	Display Message when no Groups can be displayed
#	Scope:	Group Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_NoGroupMessage($args = '', $deniedMessage = '', $definedMessage = '') {
	$defs = array('tagId'    => 'spNoGroupMessage',
	              'tagClass' => 'spMessage',
	              'echo'     => 1,
	              'get'      => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_NoGroupMessage_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$echo     = (int) $echo;
	$get      = (int) $get;

	# is Access denied to all groups
	if (SP()->forum->view->groups->groupViewStatus == 'no access') {
		$m = SP()->displayFilters->title($deniedMessage);
	} elseif (SP()->forum->view->groups->groupViewStatus == 'no data') {
		$m = SP()->displayFilters->title($definedMessage);
	} else {
		return;
	}

	if ($get) return $m;

	$out = "<div id='$tagId' class='$tagClass'>".$m."</div>";
	$out = apply_filters('sph_NoGroupMessage', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# ======================================================================================
#
# GROUP VIEW
# Forum Loop Functions
#
# ======================================================================================

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexIcon()
#	Display Forum Icon
#	Scope:	Forum sub Loop
#	Version: 5.0
#   Version: 5.5 added default locked forum icon
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexIcon($args = '') {
	$defs = array('tagId'      => 'spForumIndexIcon%ID%',
	              'tagClass'   => 'spRowIcon',
	              'icon'       => 'sp_ForumIcon.png',
	              'iconUnread' => 'sp_ForumIconPosts.png',
	              'iconLocked' => 'sp_ForumIconLocked.png',
	              'echo'       => 1,
	              'get'        => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexIcon_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$echo     = (int) $echo;
	$get      = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);

	$fIconType = 'file';
	
	# Check if a custom icon
	$path = SPTHEMEICONSDIR;
	$url  = SPTHEMEICONSURL;
	if (SP()->forum->view->thisForum->forum_status) {
		$fIcon = sanitize_file_name($iconLocked);
		$forum_icon = spa_get_saved_icon( SP()->forum->view->thisForum->forum_icon_locked );
		
		if ( !empty( $forum_icon['icon'] ) ) {
			
			$fIconType = $forum_icon['type'];
			$fIcon = 'file' === $forum_icon['type'] ? $forum_icon['icon'] : $forum_icon;
			$path  = SPCUSTOMDIR;
			$url   = SPCUSTOMURL;
		}
	} elseif (SP()->forum->view->thisForum->unread) {
		$fIcon = sanitize_file_name($iconUnread);
		$forum_icon = spa_get_saved_icon( SP()->forum->view->thisForum->forum_icon_new );
		
		if ( !empty( $forum_icon['icon'] ) ) {
			
			$fIconType = $forum_icon['type'];
			$fIcon = 'file' === $forum_icon['type'] ? $forum_icon['icon'] : $forum_icon;
			$path  = SPCUSTOMDIR;
			$url   = SPCUSTOMURL;
		}
	} else {
		$fIcon = sanitize_file_name($icon);
		$forum_icon = spa_get_saved_icon( SP()->forum->view->thisForum->forum_icon );
		
		if ( !empty( $forum_icon['icon'] ) ) {
			
			$fIconType = $forum_icon['type'];
			$fIcon = 'file' === $forum_icon['type'] ? $forum_icon['icon'] : $forum_icon;
			$path  = SPCUSTOMDIR;
			$url   = SPCUSTOMURL;
		}
	}
	
	if( 'file' === $fIconType ) {
		
		if (!file_exists($path.$fIcon)) {
			$fIcon = SP()->theme->paint_icon($tagClass, SPTHEMEICONSURL, sanitize_file_name($fIcon));
		} else {
			$fIcon = SP()->theme->paint_custom_icon($tagClass, $url.$fIcon);
		}
	} else {
		$fIcon = SP()->theme->sp_paint_iconset_icon( $fIcon, $tagClass );
	}

	
	if ($get) return $fIcon;

	$out = $fIcon;
	$out = apply_filters('sph_ForumIndexIcon', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexLink()
#	Display a LINK to the forum
#	Scope:	Forum sub Loop
#	Version: 6.5
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexLink($args = '', $toolTip = '') {
	$defs = array('tagId'    => 'spForumIndexLink%ID%',
	              'tagClass' => 'spRowLink',
				  'label'	 => __sp('View Forum'),
	              'truncate' => 0,
	              'echo'     => 1,
	              'get'      => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexName_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$label = esc_attr($label);
	$truncate = (int) $truncate;
	$toolTip  = esc_attr($toolTip);
	$echo     = (int) $echo;
	$get      = (int) $get;

	$tagId   = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);
	$toolTip = str_ireplace('%NAME%', htmlspecialchars(SP()->forum->view->thisForum->forum_name, ENT_QUOTES, SPCHARSET), $toolTip);

	if ($get) return SP()->primitives->truncate_name(SP()->forum->view->thisForum->forum_name, $truncate);

	$out = "<a href='".SP()->forum->view->thisForum->forum_permalink."' id='$tagId' class='$tagClass' title='$toolTip'>".$label."</a>";
	$out = apply_filters('sph_ForumIndexLink', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexName()
#	Display Forum Name/Title in Header
#	Scope:	Forum sub Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexName($args = '', $toolTip = '') {
	$defs = array('tagId'    => 'spForumIndexName%ID%',
	              'tagClass' => 'spRowName',
	              'truncate' => 0,
	              'echo'     => 1,
	              'get'      => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexName_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$truncate = (int) $truncate;
	$toolTip  = esc_attr($toolTip);
	$echo     = (int) $echo;
	$get      = (int) $get;

	$tagId   = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);
	$toolTip = str_ireplace('%NAME%', htmlspecialchars(SP()->forum->view->thisForum->forum_name, ENT_QUOTES, SPCHARSET), $toolTip);

	if ($get) return SP()->primitives->truncate_name(SP()->forum->view->thisForum->forum_name, $truncate);

	$out = "<a href='".SP()->forum->view->thisForum->forum_permalink."' id='$tagId' class='$tagClass' title='$toolTip'>".SP()->primitives->truncate_name(SP()->forum->view->thisForum->forum_name, $truncate)."</a>";
	$out = apply_filters('sph_ForumIndexName', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexDescription()
#	Display Forum Description in Header
#	Scope:	Forum sub Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexDescription($args = '') {
	$defs = array('tagId'    => 'spForumIndexDescription%ID%',
	              'tagClass' => 'spRowDescription',
	              'echo'     => 1,
	              'get'      => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumDescription_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$echo     = (int) $echo;
	$get      = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);

	if ($get) return SP()->forum->view->thisForum->forum_desc;

	$out = (empty(SP()->forum->view->thisForum->forum_desc)) ? '' : "<div id='$tagId' class='$tagClass'>".SP()->forum->view->thisForum->forum_desc."</div>";
	$out = apply_filters('sph_ForumIndexDescription', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexPageLinks()
#	Display Forum 'in row' page links
#	Scope:	Forum sub Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexPageLinks($args = '', $toolTip = '') {
	$topics_per_page = SP()->core->forumData['display']['topics']['perpage'];
	if ($topics_per_page >= SP()->forum->view->thisForum->topic_count) return '';

	$defs = array('tagId'         => 'spForumIndexPageLinks%ID%',
	              'tagClass'      => 'spInRowPageLinks',
	              'icon'          => 'sp_ArrowRightSmall.png',
	              'iconClass'     => 'spIconSmall',
	              'pageLinkClass' => 'spInRowForumPageLink',
	              'showLinks'     => 4,
	              'echo'          => 1,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexPageLinks_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId         = esc_attr($tagId);
	$tagClass      = esc_attr($tagClass);
	$icon          = sanitize_file_name($icon);
	$iconClass     = esc_attr($iconClass);
	$pageLinkClass = esc_attr($pageLinkClass);
	$showLinks     = (int) $showLinks;
	$toolTip       = esc_attr($toolTip);
	$echo          = (int) $echo;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);

	$out         = "<div id='$tagId' class='$tagClass'>";
	$total_pages = (SP()->forum->view->thisForum->topic_count / $topics_per_page);
	if (!is_int($total_pages)) $total_pages = intval($total_pages) + 1;
	($total_pages > $showLinks ? $max_count = $showLinks : $max_count = $total_pages);
	for ($x = 1; $x <= $max_count; $x++) {
		$out .= "<a class='$pageLinkClass' href='".SP()->spPermalinks->build_url(SP()->forum->view->thisForum->forum_slug, '', $x, 0)."' title='".str_ireplace('%PAGE%', $x, $toolTip)."'>$x</a>";
	}
	if ($total_pages > $showLinks) {
		if (!empty($icon)) $out .= SP()->theme->paint_icon($iconClass, SPTHEMEICONSURL, $icon);
		$out .= "<a class='$pageLinkClass' href='".SP()->spPermalinks->build_url(SP()->forum->view->thisForum->forum_slug, '', $total_pages, 0)."' title='".str_ireplace('%PAGE%', $total_pages, $toolTip)."'>$total_pages</a>";
	}
	$out .= "</div>";

	$out = apply_filters('sph_ForumIndexPageLinks', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexStatusIcons()
#	Display Forum Status (Locked/New Post/Blank)
#	Scope:	Forum sub Loop
#	Version: 5.0
#
#	Changelog
#	5.4.2:	Added property and status 'iconDenied'
#			Added propery 'showDenied'
#			Added tooltip parameter toolTipDeneied
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexStatusIcons($args = '', $toolTipLock = '', $toolTipPost = '', $toolTipAdd = '', $toolTipDenied = '') {
	$defs = array('tagId'        => 'spForumIndexStatus%ID%',
	              'tagClass'     => 'spStatusIcon',
	              'showLock'     => 1,
	              'showNewPost'  => 1,
	              'showAddTopic' => 1,
	              'showDenied'   => 1,
	              'iconLock'     => 'sp_ForumStatusLock.png',
	              'iconPost'     => 'sp_ForumStatusPost.png',
	              'iconAdd'      => 'sp_ForumStatusAdd.png',
	              'iconDenied'   => 'sp_WriteDenied.png',
	              'first'        => 0,
	              'echo'         => 1,
	              'get'          => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexStatusIcons_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId         = esc_attr($tagId);
	$tagClass      = esc_attr($tagClass);
	$showLock      = (int) $showLock;
	$showNewPost   = (int) $showNewPost;
	$showAddTopic  = (int) $showAddTopic;
	$showDenied    = (int) $showDenied;
	$toolTipPost   = esc_attr($toolTipPost);
	$toolTipLock   = esc_attr($toolTipLock);
	$toolTipAdd    = esc_attr($toolTipAdd);
	$toolTipDenied = esc_attr($toolTipDenied);
	$first         = (int) $first;
	$echo          = (int) $echo;
	$get           = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);

	if ($get) return SP()->forum->view->thisForum->forum_status;

	$out = "<div id='$tagId' class='$tagClass'>";

	# Dislay if global lock down or forum locked
	if ($showLock && !empty($iconLock)) {
		if (SP()->core->forumData['lockdown'] || SP()->forum->view->thisForum->forum_status) {
			$out .= SP()->theme->paint_icon('', SPTHEMEICONSURL, sanitize_file_name($iconLock), $toolTipLock);
		}
	}

	# New Post Popup
	if ($showNewPost && !empty($iconPost)) {
		if (SP()->forum->view->thisForum->unread) {
			$toolTipPost = str_ireplace('%COUNT%', SP()->forum->view->thisForum->unread, $toolTipPost);
			$site        = wp_nonce_url(SPAJAXURL."spUnreadPostsPopup&amp;targetaction=forum&amp;id=".SP()->forum->view->thisForum->forum_id."&amp;first=$first", 'spUnreadPostsPopup');
			$linkId      = 'spNewPostPopup'.SP()->forum->view->thisForum->forum_id;
			$out .= "<a rel='nofollow' id='$linkId' class='spUnreadPostsPopup' data-popup='1' data-site='$site' data-label='$toolTipPost' data-width='600' data-height='0' data-align='0'>";
			$out .= SP()->theme->paint_icon('', SPTHEMEICONSURL, sanitize_file_name($iconPost), $toolTipPost);
			$out .= "</a>";
		}
	}

	# add new topic icon
	if ($showAddTopic && !empty($iconAdd)) {
		if (SP()->auths->get('start_topics', SP()->forum->view->thisForum->forum_id) && ((!SP()->forum->view->thisForum->forum_status && !SP()->core->forumData['lockdown']) || SP()->user->thisUser->admin)) {
			$url = SP()->spPermalinks->build_url(SP()->forum->view->thisForum->forum_slug, '', 1, 0).SP()->spPermalinks->get_query_char().'new=topic';
			$out .= "<a href='$url' title='$toolTipAdd'>";
			$out .= SP()->theme->paint_icon('', SPTHEMEICONSURL, sanitize_file_name($iconAdd));
			$out .= "</a>";
		}
	}

	# Display if user not allowed to start topics
	if ($showDenied && !SP()->forum->view->thisForum->start_topics && !empty($toolTipDenied)) {
		$out .= SP()->theme->paint_icon('', SPTHEMEICONSURL, sanitize_file_name($iconDenied), $toolTipDenied);
	}

	$out = apply_filters('sph_ForumIndexStatusIconsLast', $out, $a);

	$out .= "</div>";

	$out = apply_filters('sph_ForumIndexStatusIcons', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexLockIcon()
#	Display Forum Status (Locked)
#	Scope:	Forum sub Loop
#	Version: 5.1
#
#	Changelog
#	5.2.3	Added 'statusClass' to icons with no action
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexLockIcon($args = '', $toolTip = '') {
	$defs = array('tagId'       => 'spForumIndexLockIcon%ID%',
	              'tagClass'    => 'spIcon',
	              'statusClass' => 'spIconNoAction',
	              'icon'        => 'sp_ForumStatusLock.png',
	              'echo'        => 1,
	              'get'         => 0);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexLockIcon_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId       = esc_attr($tagId);
	$tagClass    = esc_attr($tagClass);
	$statusClass = esc_attr($statusClass);
	$icon        = sanitize_file_name($icon);
	$echo        = (int) $echo;
	$get         = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);

	if ($get) return SP()->forum->view->thisForum->forum_status;
	$out = '';

	if (SP()->core->forumData['lockdown'] || SP()->forum->view->thisForum->forum_status) {
		$out = "<div id='$tagId' class='$tagClass $statusClass' title='$toolTip' >";
		# Dislay if global lock down or forum locked
		if (!empty($icon)) $out .= SP()->theme->paint_icon('', SPTHEMEICONSURL, $icon);
		$out .= "</div>";
		$out = apply_filters('sph_ForumIndexLockIcon', $out, $a);
	}

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexDeniedIcon()
#	Display Forum Status (Write Denied)
#	Scope:	Forum sub Loop
#	Version: 5.4.2
#
#	New for 5.4.2
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexDeniedIcon($args = '', $toolTip = '') {
	$defs = array('tagId'       => 'spForumIndexDeniedIcon%ID%',
	              'tagClass'    => 'spIcon',
	              'statusClass' => 'spIconNoAction',
	              'icon'        => 'sp_WriteDenied.png',
	              'echo'        => 1,
	              'get'         => 0);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexDeniedIcon_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId       = esc_attr($tagId);
	$tagClass    = esc_attr($tagClass);
	$statusClass = esc_attr($statusClass);
	$icon        = sanitize_file_name($icon);
	$echo        = (int) $echo;
	$get         = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);

	if ($get) return SP()->forum->view->thisForum->start_topics;
	$out = '';

	if (!SP()->forum->view->thisForum->start_topics) {
		$out = "<div id='$tagId' class='$tagClass $statusClass' title='$toolTip' >";
		if (!empty($icon)) $out .= SP()->theme->paint_icon('', SPTHEMEICONSURL, $icon);
		$out .= "</div>";
		$out = apply_filters('sph_ForumIndexDeniedIcon', $out, $a);
	}

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexAddIcon()
#	Display Forum Status (Add Topic)
#	Scope:	Forum sub Loop
#	Version: 5.1
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexAddIcon($args = '', $toolTip = '', $label = '') {
	$defs = array('tagId'    => 'spForumIndexAddIcon%ID%',
	              'tagClass' => 'spIcon',
	              'icon'     => 'sp_ForumStatusAdd.png',
	              'echo'     => 1,
	              'get'      => 0);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexAddIcon_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$icon     = sanitize_file_name($icon);
	$echo     = (int) $echo;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);
	$out   = '';

	# add new topic icon
	if (SP()->auths->get('start_topics', SP()->forum->view->thisForum->forum_id) && ((!SP()->forum->view->thisForum->forum_status && !SP()->core->forumData['lockdown']) || SP()->user->thisUser->admin)) {
		$url = SP()->spPermalinks->build_url(SP()->forum->view->thisForum->forum_slug, '', 1, 0).SP()->spPermalinks->get_query_char().'new=topic';
		$out.= "<a id ='$tagId' class='$tagClass' title='$toolTip' href='$url'>";
		if (!empty($icon)) $out .= SP()->theme->paint_icon('', SPTHEMEICONSURL, "$icon");
		if (!empty($label)) $out .= SP()->displayFilters->title($label);
		$out.= "</a>";
		$out = apply_filters('sph_ForumIndexAddIcon', $out, $a);
	}

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexPostsIcon()
#	Display Forum Status (Show Posts)
#	Scope:	Forum sub Loop
#	Version: 5.2
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexPostsIcon($args = '', $toolTip = '') {
	if (!SP()->forum->view->thisForum->unread) return;

	$defs = array('tagId'     => 'spForumIndexPostsIcon%ID%',
	              'tagClass'  => 'spIcon',
	              'icon'      => 'sp_ForumStatusPost.png',
	              'openIcon'  => 'sp_GroupOpen.png',
	              'closeIcon' => 'sp_GroupClose.png',
	              'popup'     => 1,
	              'first'     => 0,
	              'echo'      => 1,
	              'get'       => 0);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexPostsIcon_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId     = esc_attr($tagId);
	$tagClass  = esc_attr($tagClass);
	$popupIcon = SP()->theme->paint_icon('', SPTHEMEICONSURL, sanitize_file_name($icon));
	$openIcon  = SP()->theme->paint_file_icon(SPTHEMEICONSURL, sanitize_file_name($openIcon));
	$closeIcon = SP()->theme->paint_file_icon(SPTHEMEICONSURL, sanitize_file_name($closeIcon));
	$popup     = (int) $popup;
	$first     = (int) $first;
	$echo      = (int) $echo;
	$get       = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);
	$out   = '';

	# show new posts icon
	if (SP()->forum->view->thisForum->unread) {
		$toolTip = str_ireplace('%COUNT%', SP()->forum->view->thisForum->unread, $toolTip);
		$site    = wp_nonce_url(SPAJAXURL."spUnreadPostsPopup&amp;targetaction=forum&amp;id=".SP()->forum->view->thisForum->forum_id."&amp;popup=$popup&amp;first=$first", 'spUnreadPostsPopup');
		$linkId  = 'spNewPostPopup'.SP()->forum->view->thisForum->forum_id;
		$target  = 'spInlineTopics'.SP()->forum->view->thisForum->forum_id;
		$spinner = SPCOMMONIMAGES.'working.gif';
		if ($popup) {
			$out .= "<a id='$tagId' class='$tagClass spUnreadPostsPopup' title='$toolTip' rel='nofollow' id='$linkId' data-popup='1' data-site='$site' data-label='$toolTip' data-width='600' data-height='0' data-align='0'>";
			$out .= $popupIcon;
		} else {
			$out .= "<a id='$tagId' class='$tagClass spUnreadPostsPopup' title='$toolTip' rel='nofollow' id='$linkId' data-popup='0' data-site='$site' data-target='$target' data-spinner='$spinner' data-id='$tagId' data-open='$openIcon' data-close='$closeIcon'>";
			$out .= "<img src='$openIcon' alt=''>";
		}
		$out .= "</a>";
		$out = apply_filters('sph_ForumIndexPostsIcon', $out, $a);
	}

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexInlinePosts()
#	Display inline dropdopwn posts section (Show Posts)
#	Scope:	Forum sub Loop
#	Version: 5.2
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexInlinePosts() {
	echo "<div class='spInlineTopics' id='spInlineTopics".esc_html(SP()->forum->view->thisForum->forum_id)."' style='display:none;'></div>";
	sp_InsertBreak();
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexPostCount()
#	Display Forum 'in row' total post count
#	Scope:	Forum sub Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexPostCount($args = '', $label = '', $rtlLabel = '', $labelAfter = '', $rtlLabelAfter = '') {
	$defs = array('tagId'       => 'spForumIndexPostCount%ID%',
	              'tagClass'    => 'spInRowCount',
	              'labelClass'  => 'spInRowLabel',
	              'numberClass' => 'spInRowNumber',
	              'includeSubs' => 1,
	              'stack'       => 0,
	              'echo'        => 1,
	              'get'         => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexPostCount_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId       = esc_attr($tagId);
	$tagClass    = esc_attr($tagClass);
	$labelClass  = esc_attr($labelClass);
	$numberClass = esc_attr($numberClass);
	$includeSubs = (int) $includeSubs;
	$stack       = (int) $stack;
	$echo        = (int) $echo;
	$get         = (int) $get;

	$labelAfter = SP()->displayFilters->title($labelAfter);	
	$rtlLabelAfter = SP()->displayFilters->title($rtlLabelAfter);
	
	if ($includeSubs && SP()->forum->view->thisForum->forum_id_sub == 0) $includeSubs = 0;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);
	($stack ? $att = '<br />' : $att = ' ');

	$data = ($includeSubs ? SP()->forum->view->thisForum->post_count_sub : SP()->forum->view->thisForum->post_count);
	if ($get) return $data;

	if (is_rtl() && $data == 1) $label = $rtlLabel;
	if (is_rtl() && $data == 1) $labelAfter = $rtlLabelAfter;

	$out = "<div id='$tagId' class='$tagClass'>";
	$out .= "<span class='$labelClass'>".SP()->displayFilters->title($label)."$att</span>";
	$out .= "<span class='$numberClass'>$data $labelAfter</span>";
	$out .= "</div>";
	$out = apply_filters('sph_ForumIndexPostCount', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexTopicCount()
#	Display Forum 'in row' total topic count
#	Scope:	Forum sub Loop
#	Version: 5.0
#	Changelog:
#	5.5.1 = $rtlLabel parameter added
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexTopicCount($args = '', $label = '', $rtlLabel = '', $labelAfter = '', $rtlLabelAfter = '') {
	$defs = array('tagId'       => 'spForumIndexTopicCount%ID%',
	              'tagClass'    => 'spInRowCount',
	              'labelClass'  => 'spInRowLabel',
	              'numberClass' => 'spInRowNumber',
	              'includeSubs' => 1,
	              'stack'       => 0,
	              'echo'        => 1,
	              'get'         => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexTopicCount_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId       = esc_attr($tagId);
	$tagClass    = esc_attr($tagClass);
	$labelClass  = esc_attr($labelClass);
	$numberClass = esc_attr($numberClass);
	$includeSubs = (int) $includeSubs;
	$stack       = (int) $stack;
	$echo        = (int) $echo;
	$get         = (int) $get;
	
	$labelAfter = SP()->displayFilters->title($labelAfter);	
	$rtlLabelAfter = SP()->displayFilters->title($rtlLabelAfter);	

	if ($includeSubs && SP()->forum->view->thisForum->forum_id_sub == 0) $includeSubs = 0;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);
	($stack ? $att = '<br />' : $att = ' ');

	$data = ($includeSubs ? SP()->forum->view->thisForum->topic_count_sub : SP()->forum->view->thisForum->topic_count);
	if ($get) return $data;

	if (is_rtl() && $data == 1) $label = $rtlLabel;
	if (is_rtl() && $data == 1) $labelAfter = $rtlLabelAfter;

	$out = "<div id='$tagId' class='$tagClass'>";
	$out .= "<span class='$labelClass'>".SP()->displayFilters->title($label)."$att</span>";
	$out .= "<span class='$numberClass'>$data $labelAfter</span>";
	$out .= "</div>";
	$out = apply_filters('sph_ForumIndexTopicCount', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexLastPost()
#	Display Forum 'in row' link to the last post made to a topic in this forum
#	Scope:	Forum sub Loop
#	Version: 5.0
#
#	Changelog:
#	5.1.0 - 'Order' argument added
#	5.1.0 - 'ItemBreak' argument added
#	5.2.3 - 'L' Linebreak - added to Order argument
#	5.5.1 - $rtlLabel parameter added
#	6.0.0 - Added 'icon' and 'iconclass' to bring into line with forum view
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexLastPost($args = '', $lastPostLabel = '', $noTopicsLabel = '') {
	$defs = array('tagId'        => 'spForumIndexLastPost%ID%',
	              'tagClass'     => 'spInRowPostLink',
	              'labelClass'   => 'spInRowLabel',
	              'infoClass'    => 'spInRowInfo',
	              'linkClass'    => 'spInRowLastPostLink',
	              'iconClass'    => 'spIcon',
	              'icon'         => 'sp_ArrowRight.png',
	              'includeSubs'  => 1,
	              'tip'          => 1,
	              'order'        => 'UTD',
	              'nicedate'     => 1,
	              'date'         => 0,
	              'time'         => 0,
	              'stackdate'    => 0,
	              'user'         => 1,
	              'truncate'     => 0,
	              'truncateUser' => 0,
	              'itemBreak'    => '<br />',
	              'echo'         => 1,
	              'get'          => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexLastPost_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);
	$includeSubs  = (int) $includeSubs;
	$tip          = (int) $tip;
	$order        = esc_attr($order);
	$nicedate     = (int) $nicedate;
	$date         = (int) $date;
	$time         = (int) $time;
	$stackdate    = (int) $stackdate;
	$user         = (int) $user;
	$truncate     = (int) $truncate;
	$truncateUser = (int) $truncateUser;
	$echo         = (int) $echo;
	$get          = (int) $get;

	if ($includeSubs && SP()->forum->view->thisForum->forum_id_sub == 0) $includeSubs = 0;
	$postCount = ($includeSubs ? SP()->forum->view->thisForum->post_count_sub : SP()->forum->view->thisForum->post_count);

	if ($postCount) {
		$tagId   = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);
		$posttip = ($includeSubs ? SP()->forum->view->thisForum->post_tip_sub : SP()->forum->view->thisForum->post_tip);
		if ($tip && !empty($posttip)) {
			$title = "title='$posttip'";
			$linkClass .= '';
		} else {
			$title = '';
		}

		($stackdate ? $dlb = '<br />' : $dlb = ' - ');

		# user
		$poster = ($includeSubs ? SP()->user->name_display(SP()->forum->view->thisForum->user_id_sub, SP()->primitives->truncate_name(SP()->forum->view->thisForum->display_name_sub, $truncateUser)) : SP()->user->name_display(SP()->forum->view->thisForum->user_id, SP()->primitives->truncate_name(SP()->forum->view->thisForum->display_name, $truncateUser)));
		if (empty($poster)) $poster = ($includeSubs ? SP()->primitives->truncate_name(SP()->forum->view->thisForum->guest_name_sub, $truncateUser) : SP()->primitives->truncate_name(SP()->forum->view->thisForum->guest_name, $truncateUser));

		# other items
		$permalink = ($includeSubs ? SP()->forum->view->thisForum->post_permalink_sub : SP()->forum->view->thisForum->post_permalink);
		$topicname = ($includeSubs ? SP()->primitives->truncate_name(SP()->forum->view->thisForum->topic_name_sub, $truncate) : SP()->primitives->truncate_name(SP()->forum->view->thisForum->topic_name, $truncate));
		$postdate  = ($includeSubs ? SP()->forum->view->thisForum->post_date_sub : SP()->forum->view->thisForum->post_date);

		if ($get) {
			$getData             = new stdClass();
			$getData->permalink  = $permalink;
			$getData->topic_name = $topicname;
			$getData->post_date  = $postdate;
			$getData->user       = $poster;

			return $getData;
		}

		$U = $poster;
		$T = "<a class='$linkClass' $title href='$permalink'>$topicname</a>";
		if ($nicedate) {
			$D = SP()->dateTime->nice_date($postdate);
		} else {
			if ($date) {
				$D = SP()->dateTime->format_date('d', $postdate);
				if ($time) $D .= $dlb.SP()->dateTime->format_date('t', $postdate);
			}
		}
	} else {
		if ($get) {
			$getData = new stdClass();

			return $getData;
		}
	}

	$out = "<div id='$tagId' class='$tagClass'>";
	if ($postCount) {
		$out .= "<span class='$labelClass'>".SP()->displayFilters->title($lastPostLabel)." ";
		$out .= "<a class='$linkClass' $title href='$permalink'>";
		if (!empty($icon)) $out .= SP()->theme->paint_icon($iconClass, SPTHEMEICONSURL, $icon);
		$out .= "</a>";

		for ($x = 0; $x < strlen($order); $x++) {
			$i = substr($order, $x, 1);
			switch ($i) {
				case 'U':
					if ($user) {
						if ($x != 0) $out .= "<span class='$labelClass'>";
						$out .= $U."</span>";
					}
					if ($x != (strlen($order) - 1)) {
						if (substr($order, $x + 1, 1) != 'L') {
							$out .= "<span class='$labelClass'>$itemBreak</span>";
						}
					}
					break;
				case 'T':
					if ($x == 0) $out .= $itemBreak."</span>";
					$out .= "<span class='$linkClass'>";

					$out .= $T."</span>";
					if ($x != (strlen($order) - 1)) {
						if (substr($order, $x + 1, 1) != 'L') {
							$out .= "<span class='$labelClass'>$itemBreak</span>";
						}
					}
					break;
				case 'D':
					if ($x != 0) $out .= "<span class='$labelClass'>";
					$out .= $D."</span>";
					if ($x != (strlen($order) - 1)) {
						if (substr($order, $x + 1, 1) != 'L') {
							$out .= "<span class='$labelClass'>$itemBreak</span>";
						}
					}
					break;
				case 'L':
					$out .= '<br />';
					break;
			}
		}
	} else {
		$out .= "<span class='$labelClass'>".SP()->displayFilters->title($noTopicsLabel)." ";
		$out .= "</span>";
	}

	$out .= "</div>";
	$out = apply_filters('sph_ForumIndexLastPost', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexModerators()
#	Display Forum moderators
#	Scope:	Forum sub Loop
#	Version: 5.2
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexModerators($args = '', $label = '') {
	$defs = array('tagId'      => 'spForumModerators%ID%',
	              'tagClass'   => 'spForumModeratorList',
	              'listClass'  => 'spInRowLabel',
	              'labelClass' => 'spRowDescription',
	              'showEmpty'  => 0,
	              'echo'       => 1,
	              'get'        => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_ForumIndexModerators_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId      = esc_attr($tagId);
	$tagClass   = esc_attr($tagClass);
	$listClass  = esc_attr($listClass);
	$labelClass = esc_attr($labelClass);
	$showEmpty  = (int) $showEmpty;
	$echo       = (int) $echo;
	$get        = (int) $get;

	$tagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);

	$mods_data = SP()->meta->get_value('forum_moderators', 'users');
	$mods      = $mods_data[SP()->forum->view->thisForum->forum_id];

	if ($get) return $mods;

	# build mods list with name display
	if (!empty($mods)) {
		$modList = '';
		$first   = true;
		foreach ($mods as $mod) {
			if (!$first) $modList .= ', ';
			$first = false;
			$modList .= SP()->user->name_display($mod['user_id'], $mod['display_name']);
		}
	} else if ($showEmpty) {
		$modList = 'none';
	} else {
		return '';
	}

	$out = "<div id='$tagId' class='$tagClass'>";
	$out .= "<span class='$labelClass'>".SP()->displayFilters->title($label)."</span>";
	$out .= "<span class='$listClass'>$modList</span>";
	$out .= "</div>";
	$out = apply_filters('sph_ForumIndexModerators', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_ForumIndexSubForums()
#	Display Sub Forums below parent
#	Scope:	Forum sub Loop
#	Version: 5.0
#
#	Changelog:
#	5.4.2 - 'iconWidth' argument added
#
# --------------------------------------------------------------------------------------
function sp_ForumIndexSubForums($args = '', $label = '', $toolTip = '') {
	if (empty(SP()->forum->view->thisForumSubs)) 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,
				  'rule'	   => 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;
	$rule		= (int) $rule;
	$truncate   = (int) $truncate;
	$echo       = (int) $echo;
	$get        = (int) $get;
	$toolTip    = esc_attr($toolTip);

	$thisTagId = str_ireplace('%ID%', SP()->forum->view->thisForum->forum_id, $tagId);

	if ($get) return SP()->forum->view->thisForumSubs;

	$out = '';
	if ($rule) $out.= '<hr />';
	$out.= "<div id='$thisTagId' class='$tagClass'>";
	if ($stack) {
		$out .= "<ul class='$labelClass'><li>".SP()->displayFilters->title($label)."<ul>";
	} else {
		$out .= "<span class='$labelClass'>".SP()->displayFilters->title($label)."</span>";
	}
	foreach (SP()->forum->view->thisForumSubs as $sub) {

		# Check if a custom icon
		$path = SPTHEMEICONSDIR;
		$url  = SPTHEMEICONSURL;
		
		
		$fIconType = 'file';
		
		if ($sub->unread) {
			$fIcon = sanitize_file_name($unreadIcon);
			$forum_icon = spa_get_saved_icon( $sub->forum_icon_new );
			
			if ( !empty( $forum_icon['icon'] ) ) {
				
				$fIconType = $forum_icon['type'];
				$fIcon = 'file' === $forum_icon['type'] ? $forum_icon['icon'] : $forum_icon;
				$path  = SPCUSTOMDIR;
				$url   = SPCUSTOMURL;
			}
		} else {
			$fIcon = sanitize_file_name($icon);
			$forum_icon = spa_get_saved_icon( $sub->forum_icon );
			
			if ( !empty( $forum_icon['icon'] ) ) {
				
				$fIconType = $forum_icon['type'];
				$fIcon = 'file' === $forum_icon['type'] ? $forum_icon['icon'] : $forum_icon;
				$path  = SPCUSTOMDIR;
				$url   = SPCUSTOMURL;
			}
		}
		
		
		if( 'file' === $fIconType ) {
			
			if (!file_exists($path.$fIcon)) {
				$fIcon = SP()->theme->paint_icon($iconClass, SPTHEMEICONSURL, sanitize_file_name($fIcon));
			} else {
				$fIcon = SP()->theme->paint_custom_icon($iconClass, $url.$fIcon);
			}
		
		} else {
			$fIcon = SP()->theme->sp_paint_iconset_icon( $fIcon, $iconClass );
		}

		if ($sub->parent == SP()->forum->view->thisForum->forum_id || $allNested == true) {
			$thisToolTip = str_ireplace('%NAME%', htmlspecialchars($sub->forum_name, ENT_QUOTES, SPCHARSET), $toolTip);
			if ($stack) $out .= "<li>";

			$out .= str_replace("<img ", "<img width='".$iconWidth."' ", $fIcon);
			$out = str_replace(array("\n", "\t", "\r"), '', $out);  // Get rid of carriage returns, line feeds etc.

			$thisTagId = str_ireplace('%ID%', $sub->forum_id, $tagId);
			$out .= "<a href='$sub->forum_permalink' id='$thisTagId' class='$linkClass' title='$thisToolTip'>".SP()->primitives->truncate_name($sub->forum_name, $truncate)."</a>";
			if ($topicCount) $out .= " ($sub->topic_count)";
			if ($stack) $out .= "</li>";
		}
	}
	if ($stack) $out .= "</ul></li></ul>";

	$out .= "</div>";
	$out = apply_filters('sph_ForumIndexSubForums', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
	} else {
		return $out;
	}
}

# --------------------------------------------------------------------------------------
#
#	sp_NoForumsInGroupMessage()
#	Display Message when no Forums are found in a Group
#	Scope:	Forum Loop
#	Version: 5.0
#
# --------------------------------------------------------------------------------------
function sp_NoForumsInGroupMessage($args = '', $definedMessage = '') {
	$defs = array('tagId'    => 'spNoForumsInGroupMessage',
	              'tagClass' => 'spMessage',
	              'echo'     => 1,
	              'get'      => 0,);
	$a    = wp_parse_args($args, $defs);
	$a    = apply_filters('sph_NoForumsInGroupMessage_args', $a);
	extract($a, EXTR_SKIP);

	# sanitize before use
	$tagId    = esc_attr($tagId);
	$tagClass = esc_attr($tagClass);
	$echo     = (int) $echo;
	$get      = (int) $get;

	if ($get) return SP()->displayFilters->title($definedMessage);

	$out = "<div id='$tagId' class='$tagClass'>".SP()->displayFilters->title($definedMessage)."</div>";
	$out = apply_filters('sph_NoForumsInGroupMessage', $out, $a);

	if ($echo) {
        echo wp_kses(
            $out,
            SP_CORE_ALLOWED_TAGS
        );
        
	} else {
		return $out;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit