<?xml version="1.0" encoding="UTF-8"?>

<extension engine="1.0">
	<id>most_subscribed</id>
	<title>Most Subscribed</title>
	<version>0.2</version>
	<description>Show the list of most subscribed topics.</description>
	<author>Ivan Fomichev</author>
	<minversion>1.3</minversion>
	<maxtestedon>1.3.4</maxtestedon>

	<hooks>
        <hook id="co_common"><![CDATA[
            // Include a language file
            if (file_exists($ext_info['path'] . '/lang/' . $forum_user['language'] . '.php'))
                include_once($ext_info['path'] . '/lang/' . $forum_user['language'] . '.php');
            else
                include_once($ext_info['path'] . '/lang/English.php');
        ]]></hook>

		<hook id="co_modify_url_scheme"><![CDATA[

if (file_exists($ext_info['path'].'/url/'.$forum_config['o_sef'].'.php'))
	require $ext_info['path'].'/url/'.$forum_config['o_sef'].'.php';
else
	require $ext_info['path'].'/url/Default.php';

		]]></hook>

		<hook id="sf_fn_validate_actions_start"><![CDATA[

array_push($valid_actions, 'show_most_subscribed');

		]]></hook>

		<hook id="sf_fn_generate_action_search_query_end"><![CDATA[
if ($action == 'show_most_subscribed')
{
	$query = array(
		'SELECT'	=> 't.id AS tid, t.poster, t.subject, t.first_post_id, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.closed, t.sticky, t.forum_id, f.forum_name',
		'FROM'		=> 'topics AS t',
		'JOINS'		=> array(
			array(
				'INNER JOIN'	=> 'forums AS f',
				'ON'			=> 'f.id=t.forum_id'
			),
			array(
				'LEFT JOIN'		=> 'forum_perms AS fp',
				'ON'			=> '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')'
			),
			array(
				'INNER JOIN'	=> 'subscriptions AS s',
				'ON'			=> 's.topic_id=t.id'
			)
		),
		'WHERE'		=> '(fp.read_forum IS NULL OR fp.read_forum=1)',
		'GROUP BY'	=> 't.id',
		'ORDER BY'	=> 'subscribed_times DESC, t.last_post DESC'
	);

	// With "has posted" indication
	if (!$forum_user['is_guest'] && $forum_config['o_show_dot'] == '1')
	{
		$subquery = array(
			'SELECT'	=> 'COUNT(p.id)',
			'FROM'		=> 'posts AS p',
			'WHERE'		=> 'p.poster_id='.$forum_user['id'].' AND p.topic_id=t.id'
		);
		
		($hook = get_hook('sf_fn_generate_action_search_query_qr_get_unanswered_topics_has_posted')) ? eval($hook) : null;
		$query['SELECT'] .= ', ('.$forum_db->query_build($subquery, true).') AS has_posted';
	}
	
	$query['SELECT'] .= ', COUNT(s.user_id) AS subscribed_times';
	
	$url_type = $forum_url['search_most_subscribed'];
}

        ]]></hook>

		<hook id="re_rewrite_rules"><![CDATA[

$forum_rewrite_rules['/^search[\/_-]?most-subscribed(\.html?|\/)?$/i'] = 'search.php?action=show_most_subscribed';

		]]></hook>

		<hook id="se_results_topics_pre_item_header_output"><![CDATA[

if (isset($action) && $action == 'show_most_subscribed')
{
	// dirty hack
	$forum_page['item_header']['info']['replies'] = '<strong class="info-replies">'.$lang_most_subscribed['subscribers'].'</strong>';
}

		]]></hook>

		<hook id="se_results_topics_row_pre_display"><![CDATA[

if (isset($action) && $action == 'show_most_subscribed')
{
	// dirty hack
	$forum_page['item_body']['info']['replies'] = '<li class="info-replies"><strong>'.forum_number_format($cur_set['subscribed_times']).'</strong> <span class="label">'.(($cur_set['subscribed_times'] == 1) ? $lang_most_subscribed['Subscriber'] : $lang_most_subscribed['Subscribers']).'</span></li>';
}

		]]></hook>

		<hook id="hd_visit_elements"><![CDATA[

$visit_elements['<!-- forum_visit -->'] = preg_replace('#(?=</p>)#i', ' <span><a href="'.forum_link($forum_url['search_most_subscribed']).'">'.$lang_most_subscribed['Most subscribed'].'</a></span>', $visit_elements['<!-- forum_visit -->']);

		]]></hook>
    </hooks>
</extension>
