本文整理汇总了PHP中phpbb\db\driver\driver_interface::sql_rowseek方法的典型用法代码示例。如果您正苦于以下问题:PHP driver_interface::sql_rowseek方法的具体用法?PHP driver_interface::sql_rowseek怎么用?PHP driver_interface::sql_rowseek使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类phpbb\db\driver\driver_interface
的用法示例。
在下文中一共展示了driver_interface::sql_rowseek方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: topposts_of_period
public function topposts_of_period($tpl_loopname = 'post_of_the_day', $period = 'month')
{
switch ($period) {
case 'day':
$howmany = $this->config['post_of_the_day_how_many_today'];
$period_time = SECONDS_PER_DAY;
$slack_time = SECONDS_PER_HOUR;
$cache_time = SECONDS_PER_MINUTE;
$period_name = 'LIKES_TODAY';
break;
case 'week':
$howmany = $this->config['post_of_the_day_how_many_this_week'];
$period_time = SECONDS_PER_DAY * 7;
$slack_time = SECONDS_PER_HOUR * 12;
$cache_time = SECONDS_PER_MINUTE;
$period_name = 'LIKES_THIS_WEEK';
break;
case 'month':
$howmany = $this->config['post_of_the_day_how_many_this_month'];
$period_time = SECONDS_PER_DAY * 31;
$slack_time = SECONDS_PER_HOUR * 12;
$cache_time = SECONDS_PER_MINUTE;
$period_name = 'LIKES_THIS_MONTH';
break;
case 'year':
$howmany = $this->config['post_of_the_day_how_many_this_year'];
$period_time = SECONDS_PER_DAY * 366;
$slack_time = SECONDS_PER_HOUR * 12;
$cache_time = SECONDS_PER_MINUTE;
$period_name = 'LIKES_THIS_YEAR';
break;
}
if ($howmany == 0) {
return;
}
$forum_ary = array();
$forum_read_ary = $this->auth->acl_getf('f_read');
foreach ($forum_read_ary as $forum_id => $allowed) {
if ($allowed['f_read']) {
$forum_ary[] = (int) $forum_id;
}
}
$forum_ary = array_unique($forum_ary);
if (sizeof($forum_ary)) {
// calculate the timestamp that we are interested in
$time_threshold = time() - $period_time;
// floor to an even hour to improve sql caching performance
$time_threshold = $time_threshold - $time_threshold % $slack_time;
/**
* Select post_ids
*/
// find all the visible, liked posts in the given period
$sql = 'SELECT ' . USERS_TABLE . '.user_id, ' . USERS_TABLE . '.username, ' . USERS_TABLE . '.user_colour, ' . TOPICS_TABLE . '.topic_title, ' . TOPICS_TABLE . '.forum_id, ' . TOPICS_TABLE . '.topic_id, ' . POSTS_TABLE . '.post_id, ' . POSTS_TABLE . '.post_time, ' . TOPICS_TABLE . '.topic_last_poster_name, ' . TOPICS_TABLE . '.topic_type, ' . FORUMS_TABLE . '.forum_name, sum_likes
FROM (
SELECT post_id AS post, COUNT(*) AS sum_likes
FROM ' . POSTS_LIKES_TABLE . '
WHERE ' . POSTS_LIKES_TABLE . '.timestamp > ' . $time_threshold . '
GROUP BY post_id
ORDER BY sum_likes DESC
) AS liked_posts
LEFT JOIN ' . POSTS_TABLE . ' ON post = post_id
LEFT JOIN ' . TOPICS_TABLE . ' ON ' . POSTS_TABLE . '.topic_id = ' . TOPICS_TABLE . '.topic_id
LEFT JOIN ' . USERS_TABLE . ' ON ' . POSTS_TABLE . '.poster_id = ' . USERS_TABLE . '.user_id
LEFT JOIN ' . FORUMS_TABLE . ' ON ' . TOPICS_TABLE . '.forum_id = ' . FORUMS_TABLE . '.forum_id
WHERE ' . $this->content_visibility->get_forums_visibility_sql('post', $forum_ary, POSTS_TABLE . '.') . '
AND topic_status <> ' . ITEM_MOVED . '
ORDER BY sum_likes DESC, post_time DESC';
// cache the query for one minute
$result = $this->db->sql_query_limit($sql, $howmany, 0, $cache_time);
$forums = $ga_topic_ids = $topic_ids = array();
while ($row = $this->db->sql_fetchrow($result)) {
$topic_ids[] = $row['topic_id'];
if ($row['topic_type'] == POST_GLOBAL) {
$ga_topic_ids[] = $row['topic_id'];
} else {
$forums[$row['forum_id']][] = $row['topic_id'];
}
}
// Get topic tracking
$topic_tracking_info = array();
foreach ($forums as $forum_id => $topic_id) {
$topic_tracking_info[$forum_id] = get_complete_topic_tracking($forum_id, $topic_id, $ga_topic_ids);
}
$this->db->sql_rowseek(0, $result);
while ($row = $this->db->sql_fetchrow($result)) {
$topic_id = $row['topic_id'];
$forum_id = $row['forum_id'];
$forum_name = $row['forum_name'];
$post_unread = isset($topic_tracking_info[$forum_id][$topic_id]) && $row['post_time'] > $topic_tracking_info[$forum_id][$topic_id] ? true : false;
$view_topic_url = append_sid("{$this->phpbb_root_path}viewtopic.{$this->php_ext}", 'f=' . $row['forum_id'] . '&t=' . $row['topic_id'] . '&p=' . $row['post_id'] . '#p' . $row['post_id']);
$forum_name_url = append_sid("{$this->phpbb_root_path}viewforum.{$this->php_ext}", 'f=' . $row['forum_id']);
$topic_title = censor_text($row['topic_title']);
if (utf8_strlen($topic_title) >= 60) {
$topic_title = utf8_strlen($topic_title) > 60 + 3 ? utf8_substr($topic_title, 0, 60) . '...' : $topic_title;
}
$is_guest = $row['user_id'] == ANONYMOUS ? true : false;
$tpl_ary = array('U_TOPIC' => $view_topic_url, 'U_FORUM' => $forum_name_url, 'S_UNREAD' => $post_unread ? true : false, 'USERNAME_FULL' => $is_guest || !$this->auth->acl_get('u_viewprofile') ? $this->user->lang['POST_BY_AUTHOR'] . ' ' . get_username_string('no_profile', $row['user_id'], $row['username'], $row['user_colour'], $row['topic_last_poster_name']) : $this->user->lang['POST_BY_AUTHOR'] . ' ' . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']), 'POST_TIME' => $this->user->format_date($row['post_time']), 'TOPIC_TITLE' => $topic_title, 'FORUM_NAME' => $forum_name, 'POST_LIKES_IN_PERIOD' => $this->user->lang($period_name, $row['sum_likes']));
/**
* Modify the topic data before it is assigned to the template
*
//.........这里部分代码省略.........