e107inc/e107

View on GitHub
userposts.php

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
<?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);
}