mirror of
https://github.com/WordPress/WordPress.git
synced 2024-11-14 22:56:19 +01:00
Post status = future. #2426
git-svn-id: http://svn.automattic.com/wordpress/trunk@3514 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
d6d431c1be
commit
a5fc1e9ebe
@ -33,7 +33,7 @@ function upgrade_all() {
|
|||||||
if ( $wp_current_db_version < 3308 )
|
if ( $wp_current_db_version < 3308 )
|
||||||
upgrade_160();
|
upgrade_160();
|
||||||
|
|
||||||
if ( $wp_current_db_version < 3513 )
|
if ( $wp_current_db_version < 3514 )
|
||||||
upgrade_210();
|
upgrade_210();
|
||||||
|
|
||||||
$wp_rewrite->flush_rules();
|
$wp_rewrite->flush_rules();
|
||||||
|
@ -106,7 +106,7 @@ CREATE TABLE $wpdb->posts (
|
|||||||
post_title text NOT NULL,
|
post_title text NOT NULL,
|
||||||
post_category int(4) NOT NULL default '0',
|
post_category int(4) NOT NULL default '0',
|
||||||
post_excerpt text NOT NULL,
|
post_excerpt text NOT NULL,
|
||||||
post_status enum('publish','draft','private','static','object','attachment','inherit') NOT NULL default 'publish',
|
post_status enum('publish','draft','private','static','object','attachment','inherit','future') NOT NULL default 'publish',
|
||||||
comment_status enum('open','closed','registered_only') NOT NULL default 'open',
|
comment_status enum('open','closed','registered_only') NOT NULL default 'open',
|
||||||
ping_status enum('open','closed') NOT NULL default 'open',
|
ping_status enum('open','closed') NOT NULL default 'open',
|
||||||
post_password varchar(20) NOT NULL default '',
|
post_password varchar(20) NOT NULL default '',
|
||||||
|
@ -571,14 +571,14 @@ class WP_Query {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$now = gmdate('Y-m-d H:i:59');
|
//$now = gmdate('Y-m-d H:i:59');
|
||||||
|
|
||||||
//only select past-dated posts, except if a logged in user is viewing a single: then, if they
|
//only select past-dated posts, except if a logged in user is viewing a single: then, if they
|
||||||
//can edit the post, we let them through
|
//can edit the post, we let them through
|
||||||
if ($pagenow != 'post.php' && $pagenow != 'edit.php' && !($this->is_single && $user_ID)) {
|
//if ($pagenow != 'post.php' && $pagenow != 'edit.php' && !($this->is_single && $user_ID)) {
|
||||||
$where .= " AND post_date_gmt <= '$now'";
|
// $where .= " AND post_date_gmt <= '$now'";
|
||||||
$distinct = 'DISTINCT';
|
// $distinct = 'DISTINCT';
|
||||||
}
|
//}
|
||||||
|
|
||||||
if ( $this->is_attachment ) {
|
if ( $this->is_attachment ) {
|
||||||
$where .= ' AND (post_type = "attachment")';
|
$where .= ' AND (post_type = "attachment")';
|
||||||
@ -589,7 +589,12 @@ class WP_Query {
|
|||||||
} else {
|
} else {
|
||||||
$where .= ' AND (post_type = "post" AND post_status = "publish"';
|
$where .= ' AND (post_type = "post" AND post_status = "publish"';
|
||||||
|
|
||||||
if (isset($user_ID) && ('' != intval($user_ID)))
|
if ( $pagenow == 'post.php' || $pagenow == 'edit.php' )
|
||||||
|
$where .= " OR post_status = 'future'";
|
||||||
|
else
|
||||||
|
$distinct = 'DISTINCT';
|
||||||
|
|
||||||
|
if ( is_user_logged_in() )
|
||||||
$where .= " OR post_author = $user_ID AND post_status = 'private')";
|
$where .= " OR post_author = $user_ID AND post_status = 'private')";
|
||||||
else
|
else
|
||||||
$where .= ')';
|
$where .= ')';
|
||||||
@ -641,6 +646,7 @@ class WP_Query {
|
|||||||
// Check post status to determine if post should be displayed.
|
// Check post status to determine if post should be displayed.
|
||||||
if ($this->is_single || $this->is_page) {
|
if ($this->is_single || $this->is_page) {
|
||||||
$status = get_post_status($this->posts[0]);
|
$status = get_post_status($this->posts[0]);
|
||||||
|
//$type = get_post_type($this->posts[0]);
|
||||||
if ( ('publish' != $status) ) {
|
if ( ('publish' != $status) ) {
|
||||||
if ( ! is_user_logged_in() ) {
|
if ( ! is_user_logged_in() ) {
|
||||||
// User must be logged in to view unpublished posts.
|
// User must be logged in to view unpublished posts.
|
||||||
@ -654,18 +660,16 @@ class WP_Query {
|
|||||||
$this->is_preview = true;
|
$this->is_preview = true;
|
||||||
$this->posts[0]->post_date = current_time('mysql');
|
$this->posts[0]->post_date = current_time('mysql');
|
||||||
}
|
}
|
||||||
|
} else if ('future' == $status) {
|
||||||
|
$this->is_preview = true;
|
||||||
|
if (!current_user_can('edit_post', $this->posts[0]->ID)) {
|
||||||
|
$this->posts = array ( );
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (! current_user_can('read_post', $this->posts[0]->ID))
|
if (! current_user_can('read_post', $this->posts[0]->ID))
|
||||||
$this->posts = array();
|
$this->posts = array();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (mysql2date('U', $this->posts[0]->post_date_gmt) > mysql2date('U', $now)) { //it's future dated
|
|
||||||
$this->is_preview = true;
|
|
||||||
if (!current_user_can('edit_post', $this->posts[0]->ID)) {
|
|
||||||
$this->posts = array ( );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,5 +84,6 @@ add_filter('the_author', 'ent2ncr', 8);
|
|||||||
// Actions
|
// Actions
|
||||||
add_action('publish_post', 'generic_ping');
|
add_action('publish_post', 'generic_ping');
|
||||||
add_action('wp_head', 'rsd_link');
|
add_action('wp_head', 'rsd_link');
|
||||||
|
add_action('publish_future_post', 'wp_publish_post', 10, 1);
|
||||||
|
|
||||||
?>
|
?>
|
@ -72,6 +72,9 @@ function wp_insert_post($postarr = array()) {
|
|||||||
$post_date_gmt = get_gmt_from_date($post_date);
|
$post_date_gmt = get_gmt_from_date($post_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( 'publish' == $post_status && (mysql2date('U', $post_date_gmt) > time()) )
|
||||||
|
$post_status = 'future';
|
||||||
|
|
||||||
if ( empty($comment_status) ) {
|
if ( empty($comment_status) ) {
|
||||||
if ( $update )
|
if ( $update )
|
||||||
$comment_status = 'closed';
|
$comment_status = 'closed';
|
||||||
@ -204,6 +207,9 @@ function wp_insert_post($postarr = array()) {
|
|||||||
add_post_meta($post_ID, '_wp_page_template', $page_template, true);
|
add_post_meta($post_ID, '_wp_page_template', $page_template, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( 'future' == $post_status )
|
||||||
|
wp_schedule_event(mysql2date('U', $post_date_gmt), 'once', 'publish_future_post', $post_ID);
|
||||||
|
|
||||||
do_action('save_post', $post_ID);
|
do_action('save_post', $post_ID);
|
||||||
do_action('wp_insert_post', $post_ID);
|
do_action('wp_insert_post', $post_ID);
|
||||||
|
|
||||||
@ -455,6 +461,18 @@ function wp_update_post($postarr = array()) {
|
|||||||
return wp_insert_post($postarr);
|
return wp_insert_post($postarr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function wp_publish_post($post_id) {
|
||||||
|
$post = get_post($post_id);
|
||||||
|
|
||||||
|
if ( empty($post) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( 'publish' == $post->post_status )
|
||||||
|
return;
|
||||||
|
|
||||||
|
return wp_update_post(array('post_status' => 'publish', 'ID' => $post_id));
|
||||||
|
}
|
||||||
|
|
||||||
function wp_get_post_cats($blogid = '1', $post_ID = 0) {
|
function wp_get_post_cats($blogid = '1', $post_ID = 0) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
|
@ -110,17 +110,16 @@ function get_lastpostdate($timezone = 'server') {
|
|||||||
global $cache_lastpostdate, $pagenow, $wpdb;
|
global $cache_lastpostdate, $pagenow, $wpdb;
|
||||||
$add_seconds_blog = get_settings('gmt_offset') * 3600;
|
$add_seconds_blog = get_settings('gmt_offset') * 3600;
|
||||||
$add_seconds_server = date('Z');
|
$add_seconds_server = date('Z');
|
||||||
$now = current_time('mysql', 1);
|
|
||||||
if ( !isset($cache_lastpostdate[$timezone]) ) {
|
if ( !isset($cache_lastpostdate[$timezone]) ) {
|
||||||
switch(strtolower($timezone)) {
|
switch(strtolower($timezone)) {
|
||||||
case 'gmt':
|
case 'gmt':
|
||||||
$lastpostdate = $wpdb->get_var("SELECT post_date_gmt FROM $wpdb->posts WHERE post_date_gmt <= '$now' AND post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");
|
$lastpostdate = $wpdb->get_var("SELECT post_date_gmt FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");
|
||||||
break;
|
break;
|
||||||
case 'blog':
|
case 'blog':
|
||||||
$lastpostdate = $wpdb->get_var("SELECT post_date FROM $wpdb->posts WHERE post_date_gmt <= '$now' AND post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");
|
$lastpostdate = $wpdb->get_var("SELECT post_date FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");
|
||||||
break;
|
break;
|
||||||
case 'server':
|
case 'server':
|
||||||
$lastpostdate = $wpdb->get_var("SELECT DATE_ADD(post_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_date_gmt <= '$now' AND post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");
|
$lastpostdate = $wpdb->get_var("SELECT DATE_ADD(post_date_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$cache_lastpostdate[$timezone] = $lastpostdate;
|
$cache_lastpostdate[$timezone] = $lastpostdate;
|
||||||
@ -134,17 +133,16 @@ function get_lastpostmodified($timezone = 'server') {
|
|||||||
global $cache_lastpostmodified, $pagenow, $wpdb;
|
global $cache_lastpostmodified, $pagenow, $wpdb;
|
||||||
$add_seconds_blog = get_settings('gmt_offset') * 3600;
|
$add_seconds_blog = get_settings('gmt_offset') * 3600;
|
||||||
$add_seconds_server = date('Z');
|
$add_seconds_server = date('Z');
|
||||||
$now = current_time('mysql', 1);
|
|
||||||
if ( !isset($cache_lastpostmodified[$timezone]) ) {
|
if ( !isset($cache_lastpostmodified[$timezone]) ) {
|
||||||
switch(strtolower($timezone)) {
|
switch(strtolower($timezone)) {
|
||||||
case 'gmt':
|
case 'gmt':
|
||||||
$lastpostmodified = $wpdb->get_var("SELECT post_modified_gmt FROM $wpdb->posts WHERE post_modified_gmt <= '$now' AND post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");
|
$lastpostmodified = $wpdb->get_var("SELECT post_modified_gmt FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");
|
||||||
break;
|
break;
|
||||||
case 'blog':
|
case 'blog':
|
||||||
$lastpostmodified = $wpdb->get_var("SELECT post_modified FROM $wpdb->posts WHERE post_modified_gmt <= '$now' AND post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");
|
$lastpostmodified = $wpdb->get_var("SELECT post_modified FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");
|
||||||
break;
|
break;
|
||||||
case 'server':
|
case 'server':
|
||||||
$lastpostmodified = $wpdb->get_var("SELECT DATE_ADD(post_modified_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_modified_gmt <= '$now' AND post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");
|
$lastpostmodified = $wpdb->get_var("SELECT DATE_ADD(post_modified_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified_gmt DESC LIMIT 1");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$lastpostdate = get_lastpostdate($timezone);
|
$lastpostdate = get_lastpostdate($timezone);
|
||||||
@ -1350,12 +1348,10 @@ function get_posts($args) {
|
|||||||
if ( !isset($r['order']) )
|
if ( !isset($r['order']) )
|
||||||
$r['order'] = 'DESC';
|
$r['order'] = 'DESC';
|
||||||
|
|
||||||
$now = current_time('mysql');
|
|
||||||
|
|
||||||
$posts = $wpdb->get_results(
|
$posts = $wpdb->get_results(
|
||||||
"SELECT DISTINCT * FROM $wpdb->posts " .
|
"SELECT DISTINCT * FROM $wpdb->posts " .
|
||||||
( empty( $r['category'] ) ? "" : ", $wpdb->post2cat " ) .
|
( empty( $r['category'] ) ? "" : ", $wpdb->post2cat " ) .
|
||||||
" WHERE post_date <= '$now' AND (post_type = 'post' AND post_status = 'publish') ".
|
" WHERE (post_type = 'post' AND post_status = 'publish') ".
|
||||||
( empty( $r['category'] ) ? "" : "AND $wpdb->posts.ID = $wpdb->post2cat.post_id AND $wpdb->post2cat.category_id = " . $r['category']. " " ) .
|
( empty( $r['category'] ) ? "" : "AND $wpdb->posts.ID = $wpdb->post2cat.post_id AND $wpdb->post2cat.category_id = " . $r['category']. " " ) .
|
||||||
" GROUP BY $wpdb->posts.ID ORDER BY " . $r['orderby'] . " " . $r['order'] . " LIMIT " . $r['offset'] . ',' . $r['numberposts'] );
|
" GROUP BY $wpdb->posts.ID ORDER BY " . $r['orderby'] . " " . $r['order'] . " LIMIT " . $r['offset'] . ',' . $r['numberposts'] );
|
||||||
|
|
||||||
|
@ -327,10 +327,8 @@ function get_archives($type='', $limit='', $format='html', $before = '', $after
|
|||||||
$add_hours = intval(get_settings('gmt_offset'));
|
$add_hours = intval(get_settings('gmt_offset'));
|
||||||
$add_minutes = intval(60 * (get_settings('gmt_offset') - $add_hours));
|
$add_minutes = intval(60 * (get_settings('gmt_offset') - $add_hours));
|
||||||
|
|
||||||
$now = current_time('mysql');
|
|
||||||
|
|
||||||
if ( 'monthly' == $type ) {
|
if ( 'monthly' == $type ) {
|
||||||
$arcresults = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts WHERE post_date < '$now' AND post_date != '0000-00-00 00:00:00' AND post_type = 'post' AND post_status = 'publish' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC" . $limit);
|
$arcresults = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC" . $limit);
|
||||||
if ( $arcresults ) {
|
if ( $arcresults ) {
|
||||||
$afterafter = $after;
|
$afterafter = $after;
|
||||||
foreach ( $arcresults as $arcresult ) {
|
foreach ( $arcresults as $arcresult ) {
|
||||||
@ -345,7 +343,7 @@ function get_archives($type='', $limit='', $format='html', $before = '', $after
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ( 'daily' == $type ) {
|
} elseif ( 'daily' == $type ) {
|
||||||
$arcresults = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, DAYOFMONTH(post_date) AS `dayofmonth` FROM $wpdb->posts WHERE post_date < '$now' AND post_date != '0000-00-00 00:00:00' AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC" . $limit);
|
$arcresults = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, DAYOFMONTH(post_date) AS `dayofmonth` FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC" . $limit);
|
||||||
if ( $arcresults ) {
|
if ( $arcresults ) {
|
||||||
foreach ( $arcresults as $arcresult ) {
|
foreach ( $arcresults as $arcresult ) {
|
||||||
$url = get_day_link($arcresult->year, $arcresult->month, $arcresult->dayofmonth);
|
$url = get_day_link($arcresult->year, $arcresult->month, $arcresult->dayofmonth);
|
||||||
@ -356,7 +354,7 @@ function get_archives($type='', $limit='', $format='html', $before = '', $after
|
|||||||
}
|
}
|
||||||
} elseif ( 'weekly' == $type ) {
|
} elseif ( 'weekly' == $type ) {
|
||||||
$start_of_week = get_settings('start_of_week');
|
$start_of_week = get_settings('start_of_week');
|
||||||
$arcresults = $wpdb->get_results("SELECT DISTINCT WEEK(post_date, $start_of_week) AS `week`, YEAR(post_date) AS yr, DATE_FORMAT(post_date, '%Y-%m-%d') AS yyyymmdd FROM $wpdb->posts WHERE post_date < '$now' AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC" . $limit);
|
$arcresults = $wpdb->get_results("SELECT DISTINCT WEEK(post_date, $start_of_week) AS `week`, YEAR(post_date) AS yr, DATE_FORMAT(post_date, '%Y-%m-%d') AS yyyymmdd FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC" . $limit);
|
||||||
$arc_w_last = '';
|
$arc_w_last = '';
|
||||||
if ( $arcresults ) {
|
if ( $arcresults ) {
|
||||||
foreach ( $arcresults as $arcresult ) {
|
foreach ( $arcresults as $arcresult ) {
|
||||||
@ -373,7 +371,7 @@ function get_archives($type='', $limit='', $format='html', $before = '', $after
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ( 'postbypost' == $type ) {
|
} elseif ( 'postbypost' == $type ) {
|
||||||
$arcresults = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_date < '$now' AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC" . $limit);
|
$arcresults = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC" . $limit);
|
||||||
if ( $arcresults ) {
|
if ( $arcresults ) {
|
||||||
foreach ( $arcresults as $arcresult ) {
|
foreach ( $arcresults as $arcresult ) {
|
||||||
if ( $arcresult->post_date != '0000-00-00 00:00:00' ) {
|
if ( $arcresult->post_date != '0000-00-00 00:00:00' ) {
|
||||||
|
@ -294,9 +294,7 @@ function get_next_post($in_same_cat = false, $excluded_categories = '') {
|
|||||||
$posts_in_ex_cats_sql = 'AND ID NOT IN (' . implode($posts_in_ex_cats, ',') . ')';
|
$posts_in_ex_cats_sql = 'AND ID NOT IN (' . implode($posts_in_ex_cats, ',') . ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
$now = current_time('mysql');
|
return @$wpdb->get_row("SELECT ID,post_title FROM $wpdb->posts $join WHERE post_date > '$current_post_date' AND post_type = 'post' AND post_status = 'publish' $posts_in_ex_cats_sql AND ID != $post->ID ORDER BY post_date ASC LIMIT 1");
|
||||||
|
|
||||||
return @$wpdb->get_row("SELECT ID,post_title FROM $wpdb->posts $join WHERE post_date > '$current_post_date' AND post_date < '$now' AND post_type = 'post' AND post_status = 'publish' $posts_in_ex_cats_sql AND ID != $post->ID ORDER BY post_date ASC LIMIT 1");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
// This just holds the version number, in a separate file so we can bump it without cluttering the SVN
|
// This just holds the version number, in a separate file so we can bump it without cluttering the SVN
|
||||||
|
|
||||||
$wp_version = '2.1-aplha1';
|
$wp_version = '2.1-aplha1';
|
||||||
$wp_db_version = 3513;
|
$wp_db_version = 3514;
|
||||||
|
|
||||||
?>
|
?>
|
@ -217,6 +217,7 @@ if ( file_exists(TEMPLATEPATH . "/functions.php") )
|
|||||||
|
|
||||||
function shutdown_action_hook() {
|
function shutdown_action_hook() {
|
||||||
do_action('shutdown');
|
do_action('shutdown');
|
||||||
|
wp_cron();
|
||||||
wp_cache_close();
|
wp_cache_close();
|
||||||
}
|
}
|
||||||
register_shutdown_function('shutdown_action_hook');
|
register_shutdown_function('shutdown_action_hook');
|
||||||
|
Loading…
Reference in New Issue
Block a user