-1

I would like to echo latest forum post into my forum's first page, but when I using the following code, it shows Year 1970 instead of the real post time 2014...by any chance anyone can solve this problem?

<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');

display_forums('', $config['load_moderators']);

// Set some stats, get posts count from forums data if we... hum... retrieve all forums data
$total_posts    = $config['num_posts'];
$total_topics   = $config['num_topics'];
$total_users    = $config['num_users'];

$l_total_user_s = ($total_users == 0) ? 'TOTAL_USERS_ZERO' : 'TOTAL_USERS_OTHER';
$l_total_post_s = ($total_posts == 0) ? 'TOTAL_POSTS_ZERO' : 'TOTAL_POSTS_OTHER';
$l_total_topic_s = ($total_topics == 0) ? 'TOTAL_TOPICS_ZERO' : 'TOTAL_TOPICS_OTHER';

// Grab group details for legend display
if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
{
    $sql = 'SELECT group_id, group_name, group_colour, group_type
        FROM ' . GROUPS_TABLE . '
        WHERE group_legend = 1
        ORDER BY group_name ASC';
}
else
{
    $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type
        FROM ' . GROUPS_TABLE . ' g
        LEFT JOIN ' . USER_GROUP_TABLE . ' ug
            ON (
                g.group_id = ug.group_id
                AND ug.user_id = ' . $user->data['user_id'] . '
                AND ug.user_pending = 0
            )
        WHERE g.group_legend = 1
            AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $user->data['user_id'] . ')
        ORDER BY g.group_name ASC';
}
$result = $db->sql_query($sql);

$legend = array();
while ($row = $db->sql_fetchrow($result))
{
    $colour_text = ($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . '"' : '';
    $group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];

    if ($row['group_name'] == 'BOTS' || ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')))
    {
        $legend[] = '<span' . $colour_text . '>' . $group_name . '</span>';
    }
    else
    {
        $legend[] = '<a' . $colour_text . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $row['group_id']) . '">' . $group_name . '</a>';
    }
}
$db->sql_freeresult($result);

$legend = implode(', ', $legend);

// Generate birthday list if required ...
$birthday_list = '';
if ($config['load_birthdays'] && $config['allow_birthdays'] && $auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'))
{
    $now = phpbb_gmgetdate(time() + $user->timezone + $user->dst);

    // Display birthdays of 29th february on 28th february in non-leap-years
    $leap_year_birthdays = '';
    if ($now['mday'] == 28 && $now['mon'] == 2 && !$user->format_date(time(), 'L'))
    {
        $leap_year_birthdays = " OR u.user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', 29, 2)) . "%'";
    }

    $sql = 'SELECT u.user_id, u.username, u.user_colour, u.user_birthday
        FROM ' . USERS_TABLE . ' u
        LEFT JOIN ' . BANLIST_TABLE . " b ON (u.user_id = b.ban_userid)
        WHERE (b.ban_id IS NULL
            OR b.ban_exclude = 1)
            AND (u.user_birthday LIKE '" . $db->sql_escape(sprintf('%2d-%2d-', $now['mday'], $now['mon'])) . "%' $leap_year_birthdays)
            AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')';
    $result = $db->sql_query($sql);

    while ($row = $db->sql_fetchrow($result))
    {
        $birthday_list .= (($birthday_list != '') ? ', ' : '') . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);

        if ($age = (int) substr($row['user_birthday'], -4))
        {
            $birthday_list .= ' (' . max(0, $now['year'] - $age) . ')';
        }
    }
    $db->sql_freeresult($result);
}


// Assign index specific vars
$template->assign_vars(array(
    'TOTAL_POSTS'   => sprintf($user->lang[$l_total_post_s], $total_posts),
    'TOTAL_TOPICS'  => sprintf($user->lang[$l_total_topic_s], $total_topics),
    'TOTAL_USERS'   => sprintf($user->lang[$l_total_user_s], $total_users),
    'NEWEST_USER'   => sprintf($user->lang['NEWEST_USER'], get_username_string('full', $config['newest_user_id'], $config['newest_username'], $config['newest_user_colour'])),

    'LEGEND'        => $legend,
    'BIRTHDAY_LIST' => $birthday_list,

    'FORUM_IMG'             => $user->img('forum_read', 'NO_UNREAD_POSTS'),
    'FORUM_UNREAD_IMG'          => $user->img('forum_unread', 'UNREAD_POSTS'),
    'FORUM_LOCKED_IMG'      => $user->img('forum_read_locked', 'NO_UNREAD_POSTS_LOCKED'),
    'FORUM_UNREAD_LOCKED_IMG'   => $user->img('forum_unread_locked', 'UNREAD_POSTS_LOCKED'),

    'S_LOGIN_ACTION'            => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login'),
    'S_DISPLAY_BIRTHDAY_LIST'   => ($config['load_birthdays']) ? true : false,

    'U_MARK_FORUMS'     => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&amp;mark=forums') : '',
    'U_MCP'             => ($auth->acl_get('m_') || $auth->acl_getf_global('m_')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&amp;mode=front', true, $user->session_id) : '')
);



$sql_limit = 5;

$sql = 'SELECT t.*, p.post_text, p.bbcode_uid
    FROM ' . TOPICS_TABLE . ' t
    LEFT JOIN ' . POSTS_TABLE . ' p
        ON t.topic_id = p.topic_id
    WHERE ' . $db->sql_in_set('t.forum_id', array_keys($auth->acl_getf('f_read', true))) . '
        AND t.topic_approved = 1
    ORDER BY p.post_id DESC';
$result = $db->sql_query_limit($sql, $sql_limit);
while ($row = $db->sql_fetchrow($result))
{
    $post = $row['post_text'];
    strip_bbcode($post, $row['bbcode_uid']);
    $post = preg_replace('#http(?:\:|&\#58;)//\S+#', '', $post);

    $template->assign_block_vars('posts', array(
        'TOPIC_TITLE'   => $row['topic_title'],
        'POST_TIME'     => $user->format_date($row['post_time']),
        'POST'         => $post,

        'U_VIEW_POST'   => append_sid($phpbb_root_path . 'viewtopic.' . $phpEx, 'f=' . $row['forum_id'] . '&amp;t=' . $row['topic_id'] . '&amp;p=' . $row['post_id']) . '#p' . $row['post_id'],
    ));
}
$db->sql_freeresult($result);


//Grab the latest 50 pins from the database
    if (($user_posts = $cache->get('_board_pins')) === false)
        {
        $user_posts = array();
        $sql = 'SELECT p.*, u.username, u.user_colour, u.user_id
        FROM ' . USER_PINS . ' p, ' . USERS_TABLE . ' u
        WHERE u.user_id = p.user_id
        ORDER BY ID DESC';
        $result =$db->sql_query_limit($sql, 1);

        while ($pins_row = $db->sql_fetchrow($result))
        {
            $user_posts[$pins_row['id']] = array(
                'id'        => $pins_row['id'],
                'user_id'   => $pins_row['user_id'],
                'img_url'   => $pins_row['img_url'],
                'pintext'   => $pins_row['pintext'],
                'timedate'  => $pins_row['timedate'],
                'username'  => $pins_row['username'],
                'user_colour'  => $pins_row['user_colour'],

                );
        }
        $db->sql_freeresult($result);
        $cache->put('_board_pins', $user_posts, 300);
        }

         foreach ($user_posts as $pins_row)
         {

            $usernamelink = get_username_string('full', $pins_row['user_id'], $pins_row['username'], $pins_row['user_colour']);
            $delbutton = '';    $pinmessage = '';   $pinimage = '';   $displ = '<div style="margin-bottom:10px">';
                //Only the original poster or admins/modetators can delete pins
                if($user->data['is_registered'] && $pins_row['user_id'] == $user->data['user_id'] || $auth->acl_get('m_'))
                {
                $delbutton = '<a href="#" id="'.$pins_row['id'].'" class="delete_pin" style="float: right"><img src="./pinboard/images/delete.gif" alt="loading" id="icono" style="margin-top: 3px" /></a>';
                }
                if (strlen($pins_row['pintext']) > '')
                {
                $pinmessage = '<div class="description" style="border: 1px solid #DDD; background-color: #FFF; padding: 5px">'.$pins_row['pintext'].'</div>';
                }
                if (strlen($pins_row['img_url']) > '')
                {
                $pinimage = '<a href="' .$pins_row['img_url'] . '" target="_blank" ><img src="' .$pins_row['img_url'] . '" onerror="ImgError(this);" onload="$("#list").masonry("reload");" /></a><br>';
                }
                if ($user->data['is_registered'])
                {
                //$displ = '<div style="margin-bottom:-15px">'; 
                }


            $db->sql_freeresult($results); 
            //Output our pins to the page
            $template->assign_block_vars('pins',array(
                'P_DISPLAY'     =>  '<li class="bar'.$pins_row['id'].' pin">
                                        <div style="100%" class="pinview">
                                        '.$pinimage.'
                                        '.$pinmessage.'
                                        </div>
                                        <div class="clear"></div><br>'.$displ.'
                                        <div style="font-size:10px; float: left;">'.$usernamelink.'</div>'.$delbutton.'<br>
                                        <div class="date" style="float: left;">'.relativeTime(strtotime($pins_row['timedate'])).'</div></div>
                                    </li>',
                    ));

            }


//Display time as X seconds ago etc
function relativeTime($dt,$precision=2)
{
    $times=array(   365*24*60*60    => "year",
                    30*24*60*60     => "month",
                    7*24*60*60      => "week",
                    24*60*60        => "day",
                    60*60           => "hour",
                    60              => "minute",
                    1               => "second");

    $passed=time()-$dt;

    if($passed<5)
    {
        $output='less than 5 seconds ago';
    }
    else
    {
        $output=array();
        $exit=0;

        foreach($times as $period=>$name)
        {
            if($exit>=$precision || ($exit>0 && $period<60)) break;

            $result = floor($passed/$period);
            if($result>0)
            {
                $output[]=$result.' '.$name.($result==1?'':'s');
                $passed-=$result*$period;
                $exit++;
            }
            else if($exit>0) $exit++;
        }

        $output=implode(' and ',$output).' ago';
    }

    return $output;
}








// Output page
page_header($user->lang['INDEX']);

$template->set_filenames(array(
    'body' => 'indexn.php'


    )
);

page_footer();

?>




 <ul class="posts">
    <!-- BEGIN posts -->
        <li>
            <div><a href="{posts.U_VIEW_POST}">{posts.TOPIC_TITLE}</a> <br><br>{posts.POST_TIME}<br><br></div>


        </li>
    <!-- END posts -->
    </ul>
  • Would you explain what you have done thus far to debug this code? Generally we don't recommend pasting code here with a request to fix it - we'll _help_ you fix it, but not do it for you. – halfer Aug 17 '14 at 08:08
  • Narrow it down for us: what is the name of the date variable in this code? Is it data retrieved from the database? What is the column name, if so? Maybe it is stored in an unexpected format, and so it resets to UNIX time 0, which would indeed convert to 1970. – halfer Aug 17 '14 at 08:09

1 Answers1

0
$sql = 'SELECT t.*, p.post_text, p.bbcode_uid

You're not actually selecting post_time here. once you add that in, you should get the correct date -

$sql = 'SELECT t.*, p.post_text, p.post_time, p.bbcode_uid

edit - This is around line 143 of your file

stckrboy
  • 379
  • 10
  • 16