<?php
/*
 * e107 website system
 *
 * Copyright (C) 2008-2011 e107 Inc (e107.org)
 * Released under the terms and conditions of the
 * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
 *
 * User posts page
 *
 * $URL$
 * $Id$
 *
*/
require_once('class2.php');

e107::coreLan('userposts');

require_once(e_HANDLER.'comment_class.php');
$cobj = new comment();

$e107 = e107::getInstance();
$sql = e107::getDb();
$pref = e107::getPref();
$tp = e107::getParser();
$ns = e107::getRender();

require_once(HEADERF);


$action = 'exit';
if (e_QUERY)
{
  $tmp = explode('.', e_QUERY);
  $from = intval($tmp[0]);			// Always defined
  $action = varset($tmp[1],'exit');
  if (!isset($tmp[2])) $action = 'exit';
  $id = intval(varset($tmp[2],0));
  if ($id <= 0) $action = 'exit';
  if (($id != USERID) && !check_class(varset($pref['memberlist_access'], 253))) $action = 'exit';
  unset($tmp);
}
if(isset($_POST['fsearch']))
{
	$action = 'forums';
}

if ($action == 'exit')
{
	e107::redirect();
	exit;
}

if ($action == "comments")
{

		if($id == e107::getUser()->getId())
		{
			$user_name = USERNAME;
		}
		else
		{
			$user_name = e107::getSystemUser($id, false)->getName(LAN_ANONYMOUS);
		}


	// new template engine - override in THEME/templates/userposts_template.php
	$USERPOSTS_TEMPLATE = e107::getCoreTemplate('userposts');

	$sql2 = e107::getDb('sql2');
	if($user_name)
	{
		$ccaption = str_replace('[x]', $user_name, UP_LAN_1);

		$ctotal = e107::getSystemUser($id, false)->getValue('comments', 0); // user_* getter shorthand
		$data = $cobj->getCommentData(10, $from, 'comment_author_id ='.$id);
	}
	else // posts by IP currently disabled (see Query filtering - top of the page)
	{
		e107::redirect();
		exit;
		/*$dip = $id;
		if (strlen($dip) == 8)
		{  // Legacy decode (IPV4 address as it used to be stored - hex string)
		  $hexip = explode('.', chunk_split($dip, 2, '.'));
		  $dip = hexdec($hexip[0]). '.' . hexdec($hexip[1]) . '.' . hexdec($hexip[2]) . '.' . hexdec($hexip[3]);

		}
		$ccaption = UP_LAN_1.$dip;
		$data = $cobj->getCommentData($amount='10', $from, "comment_ip = '".$id."'");
		$data = $cobj->getCommentData(10, $from, 'comment_ip ='.$tp->toDB($user_ip));*/
	}

	$ctext = '';
	if(empty($data) || !is_array($data))
	{
		$ctext = "<span class='mediumtext'>".UP_LAN_7."</span>";
	}

	else
	{
		$userposts_comments_table_string = '';
		foreach($data as $row)
		{
			$userposts_comments_table_string .= parse_userposts_comments_table($row, $USERPOSTS_TEMPLATE['comments_table']);
		}

		$parms = $ctotal.",10,".$from.",".e_REQUEST_SELF."?[FROM].comments.".$id;
		$nextprev = $ctotal ? $tp->parseTemplate("{NEXTPREV={$parms}}") : '';
		if($nextprev) $nextprev = str_replace('{USERPOSTS_NEXTPREV}', $nextprev, $USERPOSTS_TEMPLATE['np_table']);
		$vars = new e_vars(array(
			'NEXTPREV' => $nextprev
		));

		// preg_replace("/\{(.*?)\}/e", '$\1', $USERPOSTS_TEMPLATE['comments_table_start']);
		$userposts_comments_table_start = $tp->simpleParse($USERPOSTS_TEMPLATE['comments_table_start'], $vars);
		// preg_replace("/\{(.*?)\}/e", '$\1', $USERPOSTS_TEMPLATE['comments_table_end'])
		$userposts_comments_table_end = $tp->simpleParse($USERPOSTS_TEMPLATE['comments_table_end'], $vars);

		$ctext .= $userposts_comments_table_start.$userposts_comments_table_string.$userposts_comments_table_end;

	}
	$ns->tablerender($ccaption, $ctext);
}



elseif ($action == 'forums')
{
	require_once (e_PLUGIN.'forum/forum_class.php');
	$forum = new e107forum();

	$forumList = implode(',', $forum->getForumPermList('view'));


	/*if(is_numeric($id))
	{
		$uinfo = e107::user($id);
		$fcaption = UP_LAN_0.' '.$uinfo['user_name'];
	}
	else
	{
		$user_name = 0;
	}*/
	if($id == e107::getUser()->getId())
	{
		$user_name = USERNAME;
	}
	else
	{
		$user_name = e107::getSystemUser($id, false)->getName(LAN_ANONYMOUS);
	}

	if(!$user_name)
	{
		e107::redirect();
		exit;
	}

//	$fcaption = UP_LAN_0.' '.$user_name;
	$fcaption = str_replace('[x]', $user_name, UP_LAN_0);
/*
	if (!$USERPOSTS_FORUM_TABLE)
	{
		if (file_exists(THEME.'userposts_template.php'))
		{
			require_once(THEME.'userposts_template.php');
		}
		else
		{
			require_once(e_BASE.$THEMES_DIRECTORY.'templates/userposts_template.php');
		}
	}*/
	// new template engine - override in THEME/templates/userposts_template.php
	$USERPOSTS_TEMPLATE = e107::getCoreTemplate('userposts');

	$s_info = '';
	$_POST['f_query'] = trim(varset($_POST['f_query']));
	if ($_POST['f_query'] !== '')
	{
		$f_query = $tp->toDB($_POST['f_query']);
		$s_info = "AND (t.thread_name REGEXP('".$f_query."') OR p.post_entry REGEXP('".$f_query."'))";
		$fcaption = UP_LAN_12.' '.$user_name;
	}

	$qry = "
	SELECT SQL_CALC_FOUND_ROWS p.*, t.*, f.* FROM `#forum_post` AS p
	LEFT JOIN `#forum_thread` AS t ON t.thread_id = p.post_thread
	LEFT JOIN `#forum` AS f ON f.forum_id = p.post_forum
	WHERE p.post_user = {$id}
	AND p.post_forum IN ({$forumList})
	{$s_info}
	ORDER BY p.post_datestamp DESC LIMIT {$from}, 10
	";

	$debug = deftrue('e_DEBUG');

	$sqlp = e107::getDb('posts');

	if (!$sqlp->gen($qry))
	{
		$ftext .= "<span class='mediumtext'>".UP_LAN_8.'</span>';
	}
	else
	{
		$gen = e107::getDateConvert();
		$vars = new e_vars();

		$userposts_forum_table_string = '';
		while($row = $sqlp->fetch())
		{

			if(empty($row))
			{
				continue; 
			}

			$datestamp = $gen->convert_date($row['post_datestamp'], 'short');
			if ($row['thread_datestamp'] == $row['post_datestamp'])
			{
				$vars->USERPOSTS_FORUM_TOPIC_PRE = UP_LAN_2.': ';
			}
			else
			{
				$vars->USERPOSTS_FORUM_TOPIC_PRE = UP_LAN_15.': ';
			}


			$row['forum_sef'] = $forum->getForumSef($row);
			$row['thread_sef'] = $forum->getThreadSef($row);

			$forumUrl = e107::url('forum', 'forum', $row);

			$postNum = $forum->postGetPostNum($row['post_thread'], $row['post_id']);
			$postPage = ceil($postNum / $forum->prefs->get('postspage'));

			$postUrl = e107::url('forum', 'topic', $row, array('query' => array('p' => $postPage), 'fragment' => 'post-' . $row['post_id']));

			if(!defined('IMODE')) define('IMODE', 'lite'); // BC

			$vars->USERPOSTS_FORUM_ICON = "<img src='".e_PLUGIN."forum/images/".IMODE."/new_small.png' alt='' />";
			$vars->USERPOSTS_FORUM_TOPIC_HREF_PRE = "<a href='".$postUrl."'>"; //$e107->url->getUrl('forum', 'thread', "func=post&id={$row['post_id']}")
			$vars->USERPOSTS_FORUM_TOPIC = $tp->toHTML($row['thread_name'], true, 'USER_BODY', $id); 
			$vars->USERPOSTS_FORUM_NAME_HREF_PRE = "<a href='".$forumUrl."'>"; //$e107->url->getUrl('forum', 'forum', "func=view&id={$row['post_forum']}")
			$vars->USERPOSTS_FORUM_NAME = $tp->toHTML($row['forum_name'], true, 'USER_BODY', $id);
			$vars->USERPOSTS_FORUM_THREAD = $tp->toHTML($row['post_entry'], true, 'USER_BODY', $id);
			$vars->USERPOSTS_FORUM_DATESTAMP = UP_LAN_11." ".$datestamp;

			//$userposts_forum_table_string .= preg_replace("/\{(.*?)\}/e", '$\1', $USERPOSTS_FORUM_TABLE);
			$userposts_forum_table_string .= $tp->simpleParse($USERPOSTS_TEMPLATE['forum_table'], $vars);
		}

		$vars->emptyVars();

		$ftotal = $sqlp->foundRows();

		$parms = $ftotal.",10,".$from.",".e_REQUEST_SELF."?[FROM].forums.".$id;
		$vars->NEXTPREV = $ftotal ? $tp->parseTemplate("{NEXTPREV={$parms}}") : '';
		if($vars->NEXTPREV) $vars->NEXTPREV =  str_replace('{USERPOSTS_NEXTPREV}', $vars->NEXTPREV, $USERPOSTS_TEMPLATE['np_table']);
		$vars->USERPOSTS_FORUM_SEARCH_VALUE = htmlspecialchars($_POST['f_query'], ENT_QUOTES, CHARSET);
		$vars->USERPOSTS_FORUM_SEARCH_FIELD = "<input class='tbox input' type='text' name='f_query' size='20' value='{$vars->USERPOSTS_FORUM_SEARCH_VALUE}' maxlength='50' />";
		$vars->USERPOSTS_FORUM_SEARCH_BUTTON = "<input class='btn btn-default btn-secondary button' type='submit' name='fsearch' value='".UP_LAN_12."' />";
		$vars->USERPOSTS_FORUM_SEARCH = "<input class='tbox' type='text' name='f_query' size='20' value='{$vars->USERPOSTS_FORUM_SEARCH_VALUE}' maxlength='50' /> <input class='btn btn-default btn-secondary button' type='submit' name='fsearch' value='".UP_LAN_12."' />";

		// $userposts_forum_table_start = preg_replace("/\{(.*?)\}/e", '$\1', $USERPOSTS_FORUM_TABLE_START);
		$userposts_forum_table_start = $tp->simpleParse($USERPOSTS_TEMPLATE['forum_table_start'], $vars);
		//$userposts_forum_table_end = preg_replace("/\{(.*?)\}/e", '$\1', $USERPOSTS_FORUM_TABLE_END);
		$userposts_forum_table_end = $tp->simpleParse($USERPOSTS_TEMPLATE['forum_table_end'], $vars);

		$ftext = $userposts_forum_table_start.$userposts_forum_table_string.$userposts_forum_table_end;
	}

	$ns->tablerender($fcaption, $ftext);
	/*$ftotal = $e107->sql->total_results;
	$parms = $ftotal.",10,".$from.",".e_SELF."?[FROM].forums.".$id;
	$USERPOSTS_NEXTPREV = $tp->parseTemplate("{NEXTPREV={$parms}}");
	echo preg_replace("/\{(.*?)\}/e", '$\1', $USERPOSTS_NP_TABLE);*/
}
else
{
	e107::redirect();
	exit;
}




require_once(FOOTERF);


function parse_userposts_comments_table($row, $template)
{
//	global $USERPOSTS_COMMENTS_TABLE, $pref, $gen, $tp, $id, $sql2, $comment_files;

	$gen = e107::getDateConvert();
	$datestamp = $gen->convert_date($row['comment_datestamp'], "short");
	$bullet = '';
	if(defined('BULLET'))
	{
		$bullet = '<img src="'.THEME_ABS.'images/'.BULLET.'" alt="" class="icon" />';
	}
	elseif(file_exists(THEME.'images/bullet2.gif'))
	{
		$bullet = '<img src="'.THEME_ABS.'images/bullet2.gif" alt="" class="icon" />';
	}
	$vars = new e_vars();

	$vars->USERPOSTS_COMMENTS_ICON		= $bullet;
	$vars->USERPOSTS_COMMENTS_DATESTAMP	= UP_LAN_11." ".$datestamp;
	$vars->USERPOSTS_COMMENTS_HEADING	= $row['comment_title'];
	$vars->USERPOSTS_COMMENTS_COMMENT	= $row['comment_comment'];
	$vars->USERPOSTS_COMMENTS_HREF_PRE	= "<a href='".$row['comment_url']."'>";
	$vars->USERPOSTS_COMMENTS_TYPE		= $row['comment_type'];

	//return(preg_replace("/\{(.*?)\}/e", '$\1', $USERPOSTS_COMMENTS_TABLE));
	return e107::getParser()->simpleParse($template, $vars);
}


