<?php 
if(!defined('IN_MYBB'))
{
    die('Direct initialization of this file is not allowed.');
}
$plugins->add_hook('index_start', 'fic_news');
$plugins->add_hook('index_end', 'fic_news'); 

function fic_news_info()
{
    return [
        'name'          => 'ficus annoucements',
        'description'   => 'Displays latest threads from selected forum as an annoucements table.',
        'website'       => 'http://maciejfikus.pl/',
        'author'        => 'ficus',
        'authorsite'    => 'http://maciejfikus.pl/',
        'version'       => '1.0',
        'guid'          => '',
        'codename'      => '',
        'compatibility' => '18*'
    ];
}

function fic_news_activate()
{
	global $db;
    $max_disporder = $db->fetch_field($db->simple_select("settinggroups", "MAX(disporder) AS max_disporder"), "max_disporder");
    
    $settinggroups = array(
        "gid"				=> "NULL",
        "name"				=> "ficus_announcements", 
        "title"				=> $db->escape_string("ficus's Annoucements"),
        "description"		=> $db->escape_string("Settings for ficus's Annoucements plugin"),
        "disporder"			=> $max_disporder + 1,
        "isdefault"			=> "0",
    );
    $gid = $db->insert_query("settinggroups", $settinggroups);
	$settings = array();
	$settings[] = array(
        "sid"				=> "NULL",
        "name"				=> "ficus_announcements_onoff",
        "title"				=> $db->escape_string("Turn on/off"),
        "description"		=> $db->escape_string("Decide whether plugin should be activated or not"),
        "optionscode"		=> "onoff",
        "value"				=> "0",
        "disporder"			=> "4",
        "gid"				=> $gid,
        "isdefault"			=> "0",
    );
    $settings[] = array(
        "sid"				=> "NULL",
        "name"				=> "ficus_announcements_fid",
        "title"				=> $db->escape_string("Annoucements forum"),
        "description"		=> $db->escape_string("Choose forum which will be used as an annoucements area"),
        "optionscode"		=> "forumselectsingle",
        "value"				=> "0",
        "disporder"			=> "1",
        "gid"				=> $gid,
        "isdefault"			=> "0",
    );
	$settings[] = array(
        "sid"				=> "NULL",
        "name"				=> "ficus_announcements_tid",
        "title"				=> $db->escape_string("Sticked annoucements"),
        "description"		=> $db->escape_string("Write down TID of threads which are supposed to be sticked"),
        "optionscode"		=> "text",
        "value"				=> "0",
        "disporder"			=> "2",
        "gid"				=> $gid,
        "isdefault"			=> "0",
    );
	$settings[] = array(
        "sid"				=> "NULL",
        "name"				=> "ficus_announcements_limit",
        "title"				=> $db->escape_string("How many?"),
        "description"		=> $db->escape_string("Decide how many annoucements should be displayed"),
        "optionscode"		=> "numeric",
        "value"				=> "0",
        "disporder"			=> "3",
        "gid"				=> $gid,
        "isdefault"			=> "0",
    );
    $db->insert_query_multiple("settings", $settings);
    rebuild_settings(); 
   
	$templates = array();
	$templates[] = array(
		"tid" 					=> "NULL",
		"title" 				=> "fic_news",
		"template" 				=> $db->escape_string('
		<input id="getsticky" type="hidden" name="action" value="{$sticky}" />
		<table class="tborder">
			<tr>
				<td class="thead" colspan="2">Annoucements</td>
			</tr>
			{$fic_news_row}
		</table>
		<br />
		'),
		"sid" 					=> "-1",
		"version" 				=> "2.5",
		"status" 				=> "",
		"dateline" 				=> time(),
	);
	$templates[] = array(
		"tid" 					=> "NULL",
		"title" 				=> "fic_news_row",
		"template" 				=> $db->escape_string('
		<tr>
			<td id="{$subject_tid}" class="trow1">
				<a href="{$subject_link}" class="fic_subject_link">{$subject_name}</a>
				<span class="smalltext fic_date">{$subject_date}</span>
			</td>
		</tr>
		'),
		"sid" 					=> "-1",
		"version" 				=> "2.5",
		"status" 				=> "",
		"dateline" 				=> time(),
	);
	$db->insert_query_multiple("templates", $templates);	
}

function fic_news_deactivate()
{
	global $db, $cache;
	$db->delete_query("settinggroups", "name = \"ficus_announcements\"");
	$db->delete_query("settings", "name LIKE \"ficus_announcements%\"");
	rebuild_settings();
	$db->delete_query("templates", "title LIKE \"fic_%\"");
}

function fic_news() 
{	
	global $db, $mybb, $fic_news, $index, $templates;
	if($mybb->settings['ficus_announcements_onoff']) {
		$sticky = $mybb->settings['ficus_announcements_tid'];
		$fic_news_row = '';
		$sql = "SELECT subject, dateline, fid, tid
				FROM ".TABLE_PREFIX."threads
				WHERE 1=1 AND fid='{$mybb->settings['ficus_announcements_fid']}' 
				ORDER BY FIELD(tid,$sticky) DESC, tid DESC LIMIT {$mybb->settings['ficus_announcements_limit']};
		";
		$result = $db->query($sql);
		while ($row = $db->fetch_array($result))
			{	
				$subject_name = (my_strlen($row['subject']) > 30) ? my_substr($row['subject'], 0, 30) . "..." : $row['subject'];
				$subject_date = my_date('relative', $row['dateline']);
				$subject_link = get_thread_link($row['tid']);
				$subject_tid = $row['tid'];
				
				eval("\$fic_news_row .= \"" . $templates->get("fic_news_row") . "\";");
			}
		eval("\$fic_news = \"" . $templates->get("fic_news") . "\";");
	} else {
		$fic_news = '';
	}
}