2004-05-24 03:34:57 +02:00
< ? php
/**** DB Functions ****/
/*
* generic function for inserting data into the posts table .
*/
function wp_insert_post ( $postarr = array ()) {
2005-06-18 21:17:55 +02:00
global $wpdb , $allowedtags , $user_ID ;
2005-06-19 03:33:38 +02:00
2004-05-24 03:34:57 +02:00
// export array as variables
extract ( $postarr );
2005-06-19 03:33:38 +02:00
// Are we updating or creating?
$update = false ;
if ( ! empty ( $ID ) ) {
$update = true ;
$post = & get_post ( $ID );
$previous_status = $post -> post_status ;
}
2005-06-18 21:08:38 +02:00
// Get the basics.
2005-08-05 22:44:18 +02:00
$post_content = apply_filters ( 'content_save_pre' , $post_content );
$post_excerpt = apply_filters ( 'excerpt_save_pre' , $post_excerpt );
$post_title = apply_filters ( 'title_save_pre' , $post_title );
$post_category = apply_filters ( 'category_save_pre' , $post_category );
$post_status = apply_filters ( 'status_save_pre' , $post_status );
$post_name = apply_filters ( 'name_save_pre' , $post_name );
$comment_status = apply_filters ( 'comment_status_pre' , $comment_status );
$ping_status = apply_filters ( 'ping_status_pre' , $ping_status );
2005-06-18 21:08:38 +02:00
2004-05-24 03:34:57 +02:00
// Make sure we set a valid category
if ( 0 == count ( $post_category ) || ! is_array ( $post_category )) {
2005-06-18 21:17:55 +02:00
$post_category = array ( get_option ( 'default_category' ));
2004-05-24 03:34:57 +02:00
}
$post_cat = $post_category [ 0 ];
2005-06-18 21:08:38 +02:00
if ( empty ( $post_author ) )
$post_author = $user_ID ;
if ( empty ( $post_status ) )
$post_status = 'draft' ;
2005-06-19 03:33:38 +02:00
// Get the post ID.
if ( $update ) {
$post_ID = $ID ;
} else {
$id_result = $wpdb -> get_row ( " SHOW TABLE STATUS LIKE ' $wpdb->posts ' " );
$post_ID = $id_result -> Auto_increment ;
}
2005-06-18 21:08:38 +02:00
// Create a valid post name. Drafts are allowed to have an empty
// post name.
if ( empty ( $post_name ) ) {
if ( 'draft' != $post_status )
$post_name = sanitize_title ( $post_title , $post_ID );
} else {
$post_name = sanitize_title ( $post_name , $post_ID );
}
2004-05-24 03:34:57 +02:00
if ( empty ( $post_date ))
$post_date = current_time ( 'mysql' );
if ( empty ( $post_date_gmt ))
2005-06-18 21:08:38 +02:00
$post_date_gmt = current_time ( 'mysql' , 1 );
2005-08-05 22:44:18 +02:00
if ( empty ( $comment_status ) ) {
if ( $update )
$comment_status = 'closed' ;
else
$comment_status = get_settings ( 'default_comment_status' );
}
if ( empty ( $ping_status ) )
2004-09-04 08:44:58 +02:00
$ping_status = get_settings ( 'default_ping_status' );
2005-06-18 21:08:38 +02:00
if ( empty ( $post_pingback ) )
$post_pingback = get_option ( 'default_pingback_flag' );
2005-06-19 03:33:38 +02:00
if ( isset ( $to_ping ) )
$to_ping = preg_replace ( '|\s+|' , " \n " , $to_ping );
2005-06-18 21:08:38 +02:00
else
2005-06-19 03:33:38 +02:00
$to_ping = '' ;
2005-06-18 21:08:38 +02:00
if ( isset ( $post_parent ) )
$post_parent = ( int ) $post_parent ;
else
2005-02-11 04:36:49 +01:00
$post_parent = 0 ;
2005-02-14 05:51:14 +01:00
2005-06-18 21:08:38 +02:00
if ( isset ( $menu_order ) )
$menu_order = ( int ) $menu_order ;
else
$menu_order = 0 ;
if ( ! isset ( $post_password ) )
$post_password = '' ;
2005-02-14 05:51:14 +01:00
if ( 'publish' == $post_status ) {
$post_name_check = $wpdb -> get_var ( " SELECT post_name FROM $wpdb->posts WHERE post_name = ' $post_name ' AND post_status = 'publish' AND ID != ' $post_ID ' LIMIT 1 " );
if ( $post_name_check ) {
$suffix = 2 ;
while ( $post_name_check ) {
$alt_post_name = $post_name . " - $suffix " ;
$post_name_check = $wpdb -> get_var ( " SELECT post_name FROM $wpdb->posts WHERE post_name = ' $alt_post_name ' AND post_status = 'publish' AND ID != ' $post_ID ' LIMIT 1 " );
$suffix ++ ;
}
$post_name = $alt_post_name ;
}
}
2005-06-19 03:33:38 +02:00
if ( $update ) {
$postquery =
" UPDATE $wpdb->posts SET
post_author = '$post_author' ,
post_date = '$post_date' ,
post_date_gmt = '$post_date_gmt' ,
post_content = '$post_content' ,
post_title = '$post_title' ,
post_excerpt = '$post_excerpt' ,
post_status = '$post_status' ,
comment_status = '$comment_status' ,
ping_status = '$ping_status' ,
post_password = '$post_password' ,
post_name = '$post_name' ,
to_ping = '$to_ping' ,
post_modified = '$post_date' ,
post_modified_gmt = '$post_date_gmt' ,
post_parent = '$post_parent' ,
menu_order = '$menu_order'
WHERE ID = $post_ID " ;
} else {
$postquery =
" INSERT INTO $wpdb->posts
2005-06-18 21:08:38 +02:00
( ID , post_author , post_date , post_date_gmt , post_content , post_title , post_excerpt , post_status , comment_status , ping_status , post_password , post_name , to_ping , post_modified , post_modified_gmt , post_parent , menu_order )
VALUES
2005-06-19 03:33:38 +02:00
( '$post_ID' , '$post_author' , '$post_date' , '$post_date_gmt' , '$post_content' , '$post_title' , '$post_excerpt' , '$post_status' , '$comment_status' , '$ping_status' , '$post_password' , '$post_name' , '$to_ping' , '$post_date' , '$post_date_gmt' , '$post_parent' , '$menu_order' ) " ;
}
2004-05-24 03:34:57 +02:00
2005-06-18 21:08:38 +02:00
$result = $wpdb -> query ( $postquery );
2005-09-14 02:34:04 +02:00
wp_set_post_cats ( '' , $post_ID , $post_category );
if ( 'static' == $post_status )
clean_page_cache ( $post_ID );
else
clean_post_cache ( $post_ID );
2004-09-05 04:03:51 +02:00
// Set GUID
2005-06-19 03:33:38 +02:00
if ( ! $update )
$wpdb -> query ( " UPDATE $wpdb->posts SET guid = ' " . get_permalink ( $post_ID ) . " ' WHERE ID = ' $post_ID ' " );
2005-06-18 21:08:38 +02:00
2005-06-19 03:33:38 +02:00
if ( $update ) {
2005-09-14 02:34:04 +02:00
if ( $previous_status != 'publish' && $post_status == 'publish' ) {
// Reset GUID if transitioning to publish.
$wpdb -> query ( " UPDATE $wpdb->posts SET guid = ' " . get_permalink ( $post_ID ) . " ' WHERE ID = ' $post_ID ' " );
2005-06-19 03:33:38 +02:00
do_action ( 'private_to_published' , $post_ID );
2005-09-14 02:34:04 +02:00
}
2005-06-19 03:33:38 +02:00
do_action ( 'edit_post' , $post_ID );
}
2004-05-24 03:34:57 +02:00
if ( $post_status == 'publish' ) {
do_action ( 'publish_post' , $post_ID );
2005-09-11 00:44:14 +02:00
if ( $post_pingback && ! defined ( 'WP_IMPORTING' ))
2005-09-02 18:56:28 +02:00
$result = $wpdb -> query ( "
INSERT INTO $wpdb -> postmeta
( post_id , meta_key , meta_value )
VALUES ( '$post_ID' , '_pingme' , '1' )
" );
$result = $wpdb -> query ( "
INSERT INTO $wpdb -> postmeta
( post_id , meta_key , meta_value )
VALUES ( '$post_ID' , '_encloseme' , '1' )
" );
//register_shutdown_function('do_trackbacks', $post_ID);
2005-06-18 21:08:38 +02:00
} else if ( $post_status == 'static' ) {
2005-06-19 03:33:38 +02:00
generate_page_rewrite_rules ();
2005-06-18 21:08:38 +02:00
if ( empty ( $page_template ) )
$page_template = 'Default Template' ;
2005-06-19 03:33:38 +02:00
if ( ! update_post_meta ( $post_ID , '_wp_page_template' , $page_template ))
add_post_meta ( $post_ID , '_wp_page_template' , $page_template , true );
2004-05-24 03:34:57 +02:00
}
2005-09-16 01:34:54 +02:00
return $post_ID ;
2004-05-24 03:34:57 +02:00
}
function wp_get_single_post ( $postid = 0 , $mode = OBJECT ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-05-24 03:34:57 +02:00
2005-06-19 03:33:38 +02:00
$post = get_post ( $postid , $mode );
2004-05-24 03:34:57 +02:00
// Set categories
2005-02-05 21:45:50 +01:00
if ( $mode == OBJECT ) {
2005-06-19 03:33:38 +02:00
$post -> post_category = wp_get_post_cats ( '' , $postid );
2005-02-05 21:45:50 +01:00
}
else {
2005-06-19 03:33:38 +02:00
$post [ 'post_category' ] = wp_get_post_cats ( '' , $postid );
2005-02-05 21:45:50 +01:00
}
2004-05-24 03:34:57 +02:00
2005-06-19 03:33:38 +02:00
return $post ;
2004-05-24 03:34:57 +02:00
}
function wp_get_recent_posts ( $num = 10 ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-05-24 03:34:57 +02:00
// Set the limit clause, if we got a limit
if ( $num ) {
$limit = " LIMIT $num " ;
}
2005-02-12 06:25:09 +01:00
$sql = " SELECT * FROM $wpdb->posts WHERE post_status IN ('publish', 'draft', 'private') ORDER BY post_date DESC $limit " ;
2004-05-24 03:34:57 +02:00
$result = $wpdb -> get_results ( $sql , ARRAY_A );
return $result ? $result : array ();
}
function wp_update_post ( $postarr = array ()) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-05-24 03:34:57 +02:00
2005-06-19 03:33:38 +02:00
// First, get all of the original fields
$post = wp_get_single_post ( $postarr [ 'ID' ], ARRAY_A );
2005-01-07 02:21:12 +01:00
2005-06-19 03:33:38 +02:00
// Escape data pulled from DB.
2005-07-03 20:33:03 +02:00
$post = add_magic_quotes ( $post );
2004-05-24 03:34:57 +02:00
2005-07-03 20:33:03 +02:00
// Passed post category list overwrites existing category list if not empty.
if ( isset ( $postarr [ 'post_category' ]) && is_array ( $postarr [ 'post_category' ])
&& 0 != count ( $postarr [ 'post_category' ]) )
2005-06-19 03:33:38 +02:00
$post_cats = $postarr [ 'post_category' ];
else
$post_cats = $post [ 'post_category' ];
2005-01-07 02:21:12 +01:00
2005-06-19 03:33:38 +02:00
// Merge old and new fields with new fields overwriting old ones.
$postarr = array_merge ( $post , $postarr );
$postarr [ 'post_category' ] = $post_cats ;
2005-01-07 02:21:12 +01:00
2005-06-19 03:33:38 +02:00
return wp_insert_post ( $postarr );
2004-05-24 03:34:57 +02:00
}
function wp_get_post_cats ( $blogid = '1' , $post_ID = 0 ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-05-24 03:34:57 +02:00
$sql = " SELECT category_id
2004-05-24 10:22:18 +02:00
FROM $wpdb -> post2cat
2004-05-24 03:34:57 +02:00
WHERE post_id = $post_ID
ORDER BY category_id " ;
$result = $wpdb -> get_col ( $sql );
2005-07-02 19:28:06 +02:00
if ( ! $result )
$result = array ();
2004-05-24 03:34:57 +02:00
return array_unique ( $result );
}
function wp_set_post_cats ( $blogid = '1' , $post_ID = 0 , $post_categories = array ()) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-05-24 03:34:57 +02:00
// If $post_categories isn't already an array, make it one:
2005-07-03 20:33:03 +02:00
if ( ! is_array ( $post_categories ) || 0 == count ( $post_categories ))
$post_categories = array ( get_option ( 'default_category' ));
2004-05-24 03:34:57 +02:00
$post_categories = array_unique ( $post_categories );
// First the old categories
$old_categories = $wpdb -> get_col ( "
SELECT category_id
2004-05-24 10:22:18 +02:00
FROM $wpdb -> post2cat
2004-05-24 03:34:57 +02:00
WHERE post_id = $post_ID " );
if ( ! $old_categories ) {
$old_categories = array ();
} else {
$old_categories = array_unique ( $old_categories );
}
2004-10-11 18:49:52 +02:00
$oldies = printr ( $old_categories , 1 );
$newbies = printr ( $post_categories , 1 );
2004-05-24 03:34:57 +02:00
// Delete any?
$delete_cats = array_diff ( $old_categories , $post_categories );
if ( $delete_cats ) {
foreach ( $delete_cats as $del ) {
$wpdb -> query ( "
2004-05-24 10:22:18 +02:00
DELETE FROM $wpdb -> post2cat
2004-05-24 03:34:57 +02:00
WHERE category_id = $del
AND post_id = $post_ID
" );
}
}
// Add any?
$add_cats = array_diff ( $post_categories , $old_categories );
if ( $add_cats ) {
foreach ( $add_cats as $new_cat ) {
$wpdb -> query ( "
2004-05-24 10:22:18 +02:00
INSERT INTO $wpdb -> post2cat ( post_id , category_id )
2004-05-24 03:34:57 +02:00
VALUES ( $post_ID , $new_cat ) " );
}
}
} // wp_set_post_cats()
function wp_delete_post ( $postid = 0 ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2005-01-02 00:13:38 +01:00
$postid = ( int ) $postid ;
2004-05-24 03:34:57 +02:00
2005-01-02 00:13:38 +01:00
if ( ! $post = $wpdb -> get_row ( " SELECT * FROM $wpdb->posts WHERE ID = $postid " ) )
return $post ;
2004-11-27 05:47:54 +01:00
2005-01-02 00:13:38 +01:00
if ( 'static' == $post -> post_status )
$wpdb -> query ( " UPDATE $wpdb->posts SET post_parent = $post->post_parent WHERE post_parent = $postid AND post_status = 'static' " );
2004-11-27 05:47:54 +01:00
2005-01-02 00:13:38 +01:00
$wpdb -> query ( " DELETE FROM $wpdb->posts WHERE ID = $postid " );
2004-11-27 05:47:54 +01:00
$wpdb -> query ( " DELETE FROM $wpdb->comments WHERE comment_post_ID = $postid " );
$wpdb -> query ( " DELETE FROM $wpdb->post2cat WHERE post_id = $postid " );
$wpdb -> query ( " DELETE FROM $wpdb->postmeta WHERE post_id = $postid " );
2005-06-19 04:51:48 +02:00
if ( 'static' == $post -> post_status )
generate_page_rewrite_rules ();
do_action ( 'delete_post' , $postid );
2004-05-24 03:34:57 +02:00
2005-01-02 00:13:38 +01:00
return $post ;
2004-05-24 03:34:57 +02:00
}
/**** /DB Functions ****/
/**** Misc ****/
// get permalink from post ID
2004-09-05 02:24:28 +02:00
function post_permalink ( $post_id = 0 , $mode = '' ) { // $mode legacy
return get_permalink ( $post_id );
2004-05-24 03:34:57 +02:00
}
// Get the name of a category from its ID
function get_cat_name ( $cat_id ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-05-24 03:34:57 +02:00
$cat_id -= 0 ; // force numeric
2004-05-24 10:22:18 +02:00
$name = $wpdb -> get_var ( " SELECT cat_name FROM $wpdb->categories WHERE cat_ID= $cat_id " );
2004-05-24 03:34:57 +02:00
return $name ;
}
// Get the ID of a category from its name
function get_cat_ID ( $cat_name = 'General' ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-05-24 03:34:57 +02:00
2004-05-24 10:22:18 +02:00
$cid = $wpdb -> get_var ( " SELECT cat_ID FROM $wpdb->categories WHERE cat_name=' $cat_name ' " );
2004-05-24 03:34:57 +02:00
return $cid ? $cid : 1 ; // default to cat 1
}
// Get author's preferred display name
2005-01-07 02:11:51 +01:00
function get_author_name ( $auth_id ) {
$authordata = get_userdata ( $auth_id );
2004-05-24 03:34:57 +02:00
2005-06-13 01:22:06 +02:00
return $authordata -> display_name ;
2004-05-24 03:34:57 +02:00
}
// get extended entry info (<!--more-->)
function get_extended ( $post ) {
2005-01-07 02:11:51 +01:00
list ( $main , $extended ) = explode ( '<!--more-->' , $post , 2 );
2004-05-24 03:34:57 +02:00
// Strip leading and trailing whitespace
$main = preg_replace ( '/^[\s]*(.*)[\s]*$/' , '\\1' , $main );
$extended = preg_replace ( '/^[\s]*(.*)[\s]*$/' , '\\1' , $extended );
return array ( 'main' => $main , 'extended' => $extended );
}
// do trackbacks for a list of urls
// borrowed from edit.php
// accepts a comma-separated list of trackback urls and a post id
function trackback_url_list ( $tb_list , $post_id ) {
if ( ! empty ( $tb_list )) {
// get post data
$postdata = wp_get_single_post ( $post_id , ARRAY_A );
// import postdata as variables
extract ( $postdata );
// form an excerpt
$excerpt = strip_tags ( $post_excerpt ? $post_excerpt : $post_content );
if ( strlen ( $excerpt ) > 255 ) {
2004-08-25 16:22:39 +02:00
$excerpt = substr ( $excerpt , 0 , 252 ) . '...' ;
2004-05-24 03:34:57 +02:00
}
$trackback_urls = explode ( ',' , $tb_list );
foreach ( $trackback_urls as $tb_url ) {
$tb_url = trim ( $tb_url );
trackback ( $tb_url , stripslashes ( $post_title ), $excerpt , $post_id );
}
}
}
2005-01-10 21:21:06 +01:00
function wp_blacklist_check ( $author , $email , $url , $comment , $user_ip , $user_agent ) {
global $wpdb ;
2005-02-06 04:40:08 +01:00
do_action ( 'wp_blacklist_check' , $author , $email , $url , $comment , $user_ip , $user_agent );
2005-01-10 21:26:10 +01:00
2005-01-11 23:42:09 +01:00
if ( preg_match_all ( '/&#(\d+);/' , $comment . $author . $url , $chars ) ) {
2005-01-10 21:21:06 +01:00
foreach ( $chars [ 1 ] as $char ) {
// If it's an encoded char in the normal ASCII set, reject
if ( $char < 128 )
return true ;
}
}
2004-10-15 18:20:25 +02:00
2005-01-10 21:21:06 +01:00
$mod_keys = trim ( get_settings ( 'blacklist_keys' ) );
if ( '' == $mod_keys )
return false ; // If moderation keys are empty
$words = explode ( " \n " , $mod_keys );
foreach ( $words as $word ) {
$word = trim ( $word );
// Skip empty lines
if ( empty ( $word ) ) { continue ; }
// Do some escaping magic so that '#' chars in the
// spam words don't break things:
$word = preg_quote ( $word , '#' );
$pattern = " # $word #i " ;
if ( preg_match ( $pattern , $author ) ) return true ;
if ( preg_match ( $pattern , $email ) ) return true ;
if ( preg_match ( $pattern , $url ) ) return true ;
if ( preg_match ( $pattern , $comment ) ) return true ;
if ( preg_match ( $pattern , $user_ip ) ) return true ;
if ( preg_match ( $pattern , $user_agent ) ) return true ;
}
2005-02-02 09:40:44 +01:00
2005-02-16 22:35:58 +01:00
if ( isset ( $_SERVER [ 'REMOTE_ADDR' ]) ) {
2005-02-16 23:01:52 +01:00
if ( wp_proxy_check ( $_SERVER [ 'REMOTE_ADDR' ]) ) return true ;
2005-02-16 22:35:58 +01:00
}
return false ;
}
function wp_proxy_check ( $ipnum ) {
if ( get_option ( 'open_proxy_check' ) && isset ( $ipnum ) ) {
$rev_ip = implode ( '.' , array_reverse ( explode ( '.' , $ipnum ) ) );
2005-02-02 09:40:44 +01:00
$lookup = $rev_ip . '.opm.blitzed.org' ;
if ( $lookup != gethostbyname ( $lookup ) )
return true ;
}
2005-01-10 21:21:06 +01:00
return false ;
}
function wp_new_comment ( $commentdata , $spam = false ) {
2004-09-07 04:34:12 +02:00
global $wpdb ;
2004-12-16 03:57:05 +01:00
2005-01-05 22:11:42 +01:00
$commentdata = apply_filters ( 'preprocess_comment' , $commentdata );
2004-09-07 04:34:12 +02:00
extract ( $commentdata );
2004-09-22 21:44:35 +02:00
$comment_post_ID = ( int ) $comment_post_ID ;
2004-09-07 04:34:12 +02:00
2005-01-31 07:38:12 +01:00
$user_id = apply_filters ( 'pre_user_id' , $user_ID );
2004-12-16 03:57:05 +01:00
$author = apply_filters ( 'pre_comment_author_name' , $comment_author );
$email = apply_filters ( 'pre_comment_author_email' , $comment_author_email );
$url = apply_filters ( 'pre_comment_author_url' , $comment_author_url );
$comment = apply_filters ( 'pre_comment_content' , $comment_content );
$comment = apply_filters ( 'post_comment_text' , $comment ); // Deprecated
2005-01-26 21:35:13 +01:00
$comment = apply_filters ( 'comment_content_presave' , $comment ); // Deprecated
2004-09-07 04:34:12 +02:00
2004-12-16 03:57:05 +01:00
$user_ip = apply_filters ( 'pre_comment_user_ip' , $_SERVER [ 'REMOTE_ADDR' ]);
$user_domain = apply_filters ( 'pre_comment_user_domain' , gethostbyaddr ( $user_ip ) );
$user_agent = apply_filters ( 'pre_comment_user_agent' , $_SERVER [ 'HTTP_USER_AGENT' ]);
2004-09-07 04:34:12 +02:00
2004-12-16 03:57:05 +01:00
$now = current_time ( 'mysql' );
2004-09-07 04:34:12 +02:00
$now_gmt = current_time ( 'mysql' , 1 );
2004-09-27 13:45:15 +02:00
2005-04-20 05:37:23 +02:00
if ( $user_id ) {
$userdata = get_userdata ( $user_id );
2005-07-15 03:24:08 +02:00
$user = new WP_User ( $user_id );
2005-04-20 05:37:23 +02:00
$post_author = $wpdb -> get_var ( " SELECT post_author FROM $wpdb->posts WHERE ID = ' $comment_post_ID ' LIMIT 1 " );
}
2005-04-20 23:56:28 +02:00
// Simple duplicate check
$dupe = " SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = ' $comment_post_ID ' AND ( comment_author = ' $author ' " ;
if ( $email ) $dupe .= " OR comment_author_email = ' $email ' " ;
$dupe .= " ) AND comment_content = ' $comment ' LIMIT 1 " ;
if ( $wpdb -> get_var ( $dupe ) )
die ( __ ( 'Duplicate comment detected; it looks as though you\'ve already said that!' ) );
2004-09-07 04:34:12 +02:00
// Simple flood-protection
2004-12-16 03:57:05 +01:00
if ( $lasttime = $wpdb -> get_var ( " SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_author_IP = ' $user_ip ' OR comment_author_email = ' $email ' ORDER BY comment_date DESC LIMIT 1 " ) ) {
$time_lastcomment = mysql2date ( 'U' , $lasttime );
$time_newcomment = mysql2date ( 'U' , $now_gmt );
2005-01-11 19:47:07 +01:00
if ( ( $time_newcomment - $time_lastcomment ) < 15 ) {
2005-02-06 04:40:08 +01:00
do_action ( 'comment_flood_trigger' , $time_lastcomment , $time_newcomment );
2004-09-07 04:34:12 +02:00
die ( __ ( 'Sorry, you can only post a new comment once every 15 seconds. Slow down cowboy.' ) );
2005-01-11 19:47:07 +01:00
}
2004-09-07 04:34:12 +02:00
}
2005-07-15 03:24:08 +02:00
if ( $userdata && ( $user_id == $post_author || $user -> has_cap ( 'level_9' ) ) ) {
2005-04-20 05:37:23 +02:00
$approved = 1 ;
2005-04-28 01:55:06 +02:00
} else {
if ( check_comment ( $author , $email , $url , $comment , $user_ip , $user_agent , $comment_type ) )
$approved = 1 ;
else
$approved = 0 ;
if ( wp_blacklist_check ( $author , $email , $url , $comment , $user_ip , $user_agent ) )
$approved = 'spam' ;
}
2005-04-20 05:37:23 +02:00
2005-01-10 21:26:10 +01:00
$approved = apply_filters ( 'pre_comment_approved' , $approved );
2004-09-07 04:34:12 +02:00
$result = $wpdb -> query ( " INSERT INTO $wpdb->comments
2005-01-31 07:38:12 +01:00
( comment_post_ID , comment_author , comment_author_email , comment_author_url , comment_author_IP , comment_date , comment_date_gmt , comment_content , comment_approved , comment_agent , comment_type , user_id )
2004-09-07 04:34:12 +02:00
VALUES
2005-01-31 07:38:12 +01:00
( '$comment_post_ID' , '$author' , '$email' , '$url' , '$user_ip' , '$now' , '$now_gmt' , '$comment' , '$approved' , '$user_agent' , '$comment_type' , '$user_id' )
2004-09-07 04:34:12 +02:00
" );
2004-12-16 03:57:05 +01:00
$comment_id = $wpdb -> insert_id ;
2005-02-06 04:40:08 +01:00
do_action ( 'comment_post' , $comment_id , $approved );
2004-12-16 03:57:05 +01:00
2005-01-24 09:27:53 +01:00
if ( 'spam' !== $approved ) { // If it's spam save it silently for later crunching
if ( '0' == $approved )
2005-01-10 21:21:06 +01:00
wp_notify_moderator ( $comment_id );
if ( get_settings ( 'comments_notify' ) && $approved )
2005-01-15 02:07:53 +01:00
wp_notify_postauthor ( $comment_id , $comment_type );
2005-01-10 21:21:06 +01:00
}
2004-09-07 04:34:12 +02:00
return $result ;
}
2005-06-26 21:55:12 +02:00
function wp_update_comment ( $commentarr ) {
global $wpdb ;
// First, get all of the original fields
$comment = get_comment ( $commentarr [ 'comment_ID' ], ARRAY_A );
// Escape data pulled from DB.
foreach ( $comment as $key => $value )
$comment [ $key ] = $wpdb -> escape ( $value );
// Merge old and new fields with new fields overwriting old ones.
$commentarr = array_merge ( $comment , $commentarr );
// Now extract the merged array.
extract ( $commentarr );
$comment_content = apply_filters ( 'comment_save_pre' , $comment_content );
$result = $wpdb -> query (
" UPDATE $wpdb->comments SET
comment_content = '$comment_content' ,
comment_author = '$comment_author' ,
comment_author_email = '$comment_author_email' ,
comment_approved = '$comment_approved' ,
comment_author_url = '$comment_author_url' ,
comment_date = '$comment_date'
WHERE comment_ID = $comment_ID " );
$rval = $wpdb -> rows_affected ;
do_action ( 'edit_comment' , $comment_ID );
return $rval ;
}
2004-10-14 09:26:41 +02:00
function do_trackbacks ( $post_id ) {
global $wpdb ;
$post = $wpdb -> get_row ( " SELECT * FROM $wpdb->posts WHERE ID = $post_id " );
$to_ping = get_to_ping ( $post_id );
$pinged = get_pung ( $post_id );
2005-05-18 05:17:55 +02:00
if ( empty ( $to_ping ) )
return ;
2005-03-14 01:55:21 +01:00
if ( empty ( $post -> post_excerpt ))
$excerpt = apply_filters ( 'the_content' , $post -> post_content );
2004-10-14 09:26:41 +02:00
else
2005-03-14 01:55:21 +01:00
$excerpt = apply_filters ( 'the_excerpt' , $post -> post_excerpt );
$excerpt = str_replace ( ']]>' , ']]>' , $excerpt );
$excerpt = strip_tags ( $excerpt );
$excerpt = substr ( $excerpt , 0 , 252 ) . '...' ;
$post_title = apply_filters ( 'the_title' , $post -> post_title );
$post_title = strip_tags ( $post_title );
2004-10-14 09:26:41 +02:00
if ( $to_ping ) : foreach ( $to_ping as $tb_ping ) :
$tb_ping = trim ( $tb_ping );
if ( ! in_array ( $tb_ping , $pinged ) )
trackback ( $tb_ping , $post_title , $excerpt , $post_id );
endforeach ; endif ;
}
function get_pung ( $post_id ) { // Get URIs already pung for a post
global $wpdb ;
$pung = $wpdb -> get_var ( " SELECT pinged FROM $wpdb->posts WHERE ID = $post_id " );
$pung = trim ( $pung );
$pung = preg_split ( '/\s/' , $pung );
2005-08-03 02:40:42 +02:00
$pung = apply_filters ( 'get_pung' , $pung );
2004-10-14 09:26:41 +02:00
return $pung ;
}
2005-02-12 09:58:10 +01:00
function get_enclosed ( $post_id ) { // Get enclosures already enclosed for a post
global $wpdb ;
$custom_fields = get_post_custom ( $post_id );
$pung = array ();
2005-08-03 02:40:42 +02:00
if ( ! is_array ( $custom_fields ) )
return $pung ;
foreach ( $custom_fields as $key => $val ) {
if ( 'enclosure' != $key || ! is_array ( $val ) )
continue ;
foreach ( $val as $enc ) {
$enclosure = split ( " \n " , $enc );
$pung [] = trim ( $enclosure [ 0 ] );
2005-02-12 09:58:10 +01:00
}
}
2005-08-03 02:40:42 +02:00
$pung = apply_filters ( 'get_enclosed' , $pung );
2005-02-12 09:58:10 +01:00
return $pung ;
}
2004-10-14 09:26:41 +02:00
function get_to_ping ( $post_id ) { // Get any URIs in the todo list
global $wpdb ;
$to_ping = $wpdb -> get_var ( " SELECT to_ping FROM $wpdb->posts WHERE ID = $post_id " );
$to_ping = trim ( $to_ping );
2005-05-18 05:17:55 +02:00
$to_ping = preg_split ( '/\s/' , $to_ping , - 1 , PREG_SPLIT_NO_EMPTY );
2005-08-03 02:40:42 +02:00
$to_ping = apply_filters ( 'get_to_ping' , $to_ping );
2004-10-14 09:26:41 +02:00
return $to_ping ;
}
function add_ping ( $post_id , $uri ) { // Add a URI to those already pung
global $wpdb ;
$pung = $wpdb -> get_var ( " SELECT pinged FROM $wpdb->posts WHERE ID = $post_id " );
$pung = trim ( $pung );
$pung = preg_split ( '/\s/' , $pung );
$pung [] = $uri ;
$new = implode ( " \n " , $pung );
2005-08-03 02:40:42 +02:00
$new = apply_filters ( 'add_ping' , $new );
2004-10-14 09:26:41 +02:00
return $wpdb -> query ( " UPDATE $wpdb->posts SET pinged = ' $new ' WHERE ID = $post_id " );
}
2005-06-19 04:51:48 +02:00
function generate_page_rewrite_rules () {
global $wpdb ;
$posts = $wpdb -> get_results ( " SELECT ID, post_name FROM $wpdb->posts WHERE post_status = 'static' ORDER BY post_parent DESC " );
$page_rewrite_rules = array ();
if ( $posts ) {
foreach ( $posts as $post ) {
// URI => page name
$uri = get_page_uri ( $post -> ID );
$page_rewrite_rules [ $uri ] = $post -> post_name ;
}
update_option ( 'page_uris' , $page_rewrite_rules );
save_mod_rewrite_rules ();
}
}
2005-04-28 01:55:06 +02:00
?>