mirror of
https://github.com/WordPress/WordPress.git
synced 2025-02-08 16:41:44 +01:00
Improve paging by days. Retabify source.
git-svn-id: http://svn.automattic.com/wordpress/trunk@1610 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
de4665574b
commit
d97d4b74d7
@ -162,7 +162,7 @@ class WP_Query {
|
||||
$this->is_page = true;
|
||||
}
|
||||
|
||||
if ('' != $qv['error'] || '404' == $qv['pagename']) {
|
||||
if ('404' == $qv['error']) {
|
||||
$this->is_404 = true;
|
||||
}
|
||||
|
||||
@ -435,6 +435,32 @@ class WP_Query {
|
||||
}
|
||||
}
|
||||
|
||||
if ($q['p'] == 'all') {
|
||||
$where = '';
|
||||
}
|
||||
|
||||
$now = gmdate('Y-m-d H:i:59');
|
||||
|
||||
if ($pagenow != 'post.php' && $pagenow != 'edit.php') {
|
||||
if ((empty($q['poststart'])) || (empty($q['postend'])) || !($q['postend'] > $q['poststart'])) {
|
||||
$where .= " AND post_date_gmt <= '$now'";
|
||||
}
|
||||
|
||||
$distinct = 'DISTINCT';
|
||||
}
|
||||
|
||||
if ('' != $q['static']) {
|
||||
$where .= ' AND (post_status = "static"';
|
||||
} else {
|
||||
$where .= ' AND (post_status = "publish"';
|
||||
}
|
||||
|
||||
// Get private posts
|
||||
if (isset($user_ID) && ('' != intval($user_ID)))
|
||||
$where .= " OR post_author = $user_ID AND post_status != 'draft' AND post_status != 'static')";
|
||||
else
|
||||
$where .= ')';
|
||||
|
||||
// Paging
|
||||
if ( !empty($q['postend']) && ($q['postend'] > $q['poststart']) ) {
|
||||
if ($q['what_to_show'] == 'posts') {
|
||||
@ -464,50 +490,53 @@ class WP_Query {
|
||||
$pgstrt = (intval($page) -1) * $q['posts_per_page'] . ', ';
|
||||
$limits = 'LIMIT '.$pgstrt.$q['posts_per_page'];
|
||||
} elseif ($q['what_to_show'] == 'days') {
|
||||
$lastpostdate = get_lastpostdate();
|
||||
$lastpostdate = mysql2date('Y-m-d 00:00:00',$lastpostdate);
|
||||
$lastpostdate = mysql2date('U',$lastpostdate);
|
||||
$startdate = date('Y-m-d H:i:s', ($lastpostdate - ((intval($page) -1) * ($q['posts_per_page']-1) * 86400)));
|
||||
$enddate = date('Y-m-d H:i:s', ($lastpostdate - (intval($page) * ($q['posts_per_page']-1) * 86400)));
|
||||
$post_dates = $wpdb->get_col('SELECT post_date FROM ' . $wpdb->posts . ' WHERE (1=1) ' . $where . ' ORDER BY post_date DESC');
|
||||
$number_of_days = $q['posts_per_page'];
|
||||
$page_number = -1;
|
||||
$day_number = $number_of_days;
|
||||
foreach ($post_dates as $post_date) {
|
||||
if (($day_number % $number_of_days) == 0) {
|
||||
$previousDay = (int)mysql2date('d', $post_date);
|
||||
$previousMonth = (int)mysql2date('m', $post_date);
|
||||
$previousYear = (int)mysql2date('Y', $post_date);
|
||||
$page_number++;
|
||||
$day_number = 1;
|
||||
if ($page_number == $page) {
|
||||
$end_date = $post_date;
|
||||
break;
|
||||
} else {
|
||||
$start_date = $post_date;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$thisDay = (int)mysql2date('d', $post_date);
|
||||
$thisMonth = (int)mysql2date('m', $post_date);
|
||||
$thisYear = (int)mysql2date('Y', $post_date);
|
||||
|
||||
if (($thisDay != $previousDay) || ($thisMonth != $previousMonth) ||
|
||||
($thisYear != $previousYear)) {
|
||||
$previousDay = (int)mysql2date('d', $post_date);
|
||||
$previousMonth = (int)mysql2date('m', $post_date);
|
||||
$previousYear = (int)mysql2date('Y', $post_date);
|
||||
$previous_date = $post_date;
|
||||
$day_number++;
|
||||
}
|
||||
}
|
||||
|
||||
if ($page > 1) {
|
||||
$where .= " AND post_date > '$enddate' AND post_date < '$startdate'";
|
||||
$where .= " AND post_date > '$end_date' AND post_date <= '$start_date'";
|
||||
} else {
|
||||
$where .= " AND post_date > '$enddate'";
|
||||
$where .= " AND post_date > '$end_date'";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($q['p'] == 'all') {
|
||||
$where = '';
|
||||
}
|
||||
|
||||
$now = gmdate('Y-m-d H:i:59');
|
||||
|
||||
if ($pagenow != 'post.php' && $pagenow != 'edit.php') {
|
||||
if ((empty($q['poststart'])) || (empty($q['postend'])) || !($q['postend'] > $q['poststart'])) {
|
||||
$where .= " AND post_date_gmt <= '$now'";
|
||||
}
|
||||
|
||||
$distinct = 'DISTINCT';
|
||||
}
|
||||
|
||||
if ('' != $q['static']) {
|
||||
$where .= ' AND (post_status = "static"';
|
||||
} else {
|
||||
$where .= ' AND (post_status = "publish"';
|
||||
}
|
||||
|
||||
// Get private posts
|
||||
if (isset($user_ID) && ('' != intval($user_ID)))
|
||||
$where .= " OR post_author = $user_ID AND post_status != 'draft' AND post_status != 'static')";
|
||||
else
|
||||
$where .= ')';
|
||||
|
||||
echo "where: $where <br />";
|
||||
$where = apply_filters('posts_where', $where);
|
||||
$where .= " GROUP BY $wpdb->posts.ID";
|
||||
$request = " SELECT $distinct * FROM $wpdb->posts $join WHERE 1=1".$where." ORDER BY post_" . $q['orderby'] . " $limits";
|
||||
|
||||
|
||||
if ($q['preview']) {
|
||||
$request = 'SELECT 1-1'; // dummy mysql query for the preview
|
||||
// little funky fix for IEwin, rawk on that code
|
||||
|
Loading…
Reference in New Issue
Block a user