[wp-hackers] Re: [wp-svn] [2647] trunk/wp-admin: Consolidate post
creation code into wp_insert_post().
Robert Deaton
false.hopes at gmail.com
Sat Jun 18 22:45:14 GMT 2005
A bit of redudnacy you may want to fix:
// Set GUID
$wpdb->query("UPDATE $wpdb->posts SET guid = '" .
get_permalink($post_ID) . "' WHERE ID = '$post_ID'");
wp_set_post_cats('', $post_ID, $post_category);
$wpdb->query("UPDATE $wpdb->posts SET guid = '" .
get_permalink($post_ID) . "' WHERE ID = '$post_ID'");
Really need to set the guid twice?
On 6/18/05, m at wordpress.org <m at wordpress.org> wrote:
>
> Revision 2647 Author ryan Date 2005-06-18 19:08:38 +0000 (Sat, 18 Jun
> 2005) Log Message
>
> Consolidate post creation code into wp_insert_post().
>
> Modified Files
>
> - trunk/wp-admin/admin-functions.php<#10490da565506178_trunkwpadminadminfunctionsphp>
> - trunk/wp-admin/post.php <#10490da565506178_trunkwpadminpostphp>
> - trunk/wp-includes/functions-post.php<#10490da565506178_trunkwpincludesfunctionspostphp>
>
> Diff trunk/wp-admin/admin-functions.php (2646 => 2647)
>
> --- trunk/wp-admin/admin-functions.php 2005-06-17 00:59:58 UTC (rev 2646)
> +++ trunk/wp-admin/admin-functions.php 2005-06-18 19:08:38 UTC (rev 2647)
> @@ -1,5 +1,58 @@
> <?php
>
> +// Creates a new post from the "Write Post" form.
> +function write_post() {
> + global $user_ID;
> +
> + if ( !user_can_create_draft($user_ID) )
> + die( __('You are not allowed to create posts or drafts on this blog.') );
> +
> + // Rename.
> + $_POST['post_content'] = $_POST['content'];
> + $_POST['post_excerpt'] = $_POST['excerpt'];
> + $_POST['post_parent'] = $_POST['parent_id'];
> +
> + if (! empty($_POST['post_author_override'])) {
> + $_POST['$post_author'] = (int) $_POST['post_author_override'];
> + } else if (! empty($_POST['post_author'])) {
> + $_POST['post_author'] = (int) $_POST['post_author'];
> + } else {
> + $_POST['post_author'] = (int) $_POST['user_ID'];
> + }
> +
> + if ( !user_can_edit_user($user_ID, $post_author) )
> + die( __('You cannot post as this user.') );
> +
> + if ( 'publish' == $_POST['post_status'] && (!user_can_create_post($user_ID)) )
> + $_POST['post_status'] = 'draft';
> +
> + // What to do based on which button they pressed
> + if ('' != $_POST['saveasdraft']) $_POST['post_status'] = 'draft';
> + if ('' != $_POST['saveasprivate']) $_POST['post_status'] = 'private';
> + if ('' != $_POST['publish']) $_POST['post_status'] = 'publish';
> + if ('' != $_POST['advanced']) $_POST['post_status'] = 'draft';
> + if ('' != $_POST['savepage']) $_POST['post_status'] = 'static';
> +
> + if (user_can_set_post_date($user_ID) && (!empty($_POST['edit_date']))) {
> + $aa = $_POST['aa'];
> + $mm = $_POST['mm'];
> + $jj = $_POST['jj'];
> + $hh = $_POST['hh'];
> + $mn = $_POST['mn'];
> + $ss = $_POST['ss'];
> + $jj = ($jj > 31) ? 31 : $jj;
> + $hh = ($hh > 23) ? $hh - 24 : $hh;
> + $mn = ($mn > 59) ? $mn - 60 : $mn;
> + $ss = ($ss > 59) ? $ss - 60 : $ss;
> + $_POST['post_date'] = "$aa-$mm-$jj $hh:$mn:$ss";
> + $_POST['post_date_gmt'] = get_gmt_from_date("$aa-$mm-$jj $hh:$mn:$ss");
> + }
> +
> + // Create the post.
> + $post_ID = wp_insert_post($_POST);
> + add_meta($post_ID);
> +}
> +
> function url_shorten ($url) {
> $short_url = str_replace('http://', '', stripslashes($url));
> $short_url = str_replace('www.', '', $short_url);
>
> trunk/wp-admin/post.php (2646 => 2647)
>
> --- trunk/wp-admin/post.php 2005-06-17 00:59:58 UTC (rev 2646)
> +++ trunk/wp-admin/post.php 2005-06-18 19:08:38 UTC (rev 2647)
> @@ -30,121 +30,9 @@
> switch($action) {
> case 'post':
>
> - if ( !user_can_create_draft($user_ID) )
> - die( __('You are not allowed to create posts or drafts on this blog.') );
> + write_post();
>
> - $post_pingback = (int) $_POST['post_pingback'];
> - $content = apply_filters('content_save_pre', $_POST['content']);
> - $excerpt = apply_filters('excerpt_save_pre', $_POST['excerpt']);
> - $post_title = apply_filters('title_save_pre', $_POST['post_title']);
> - $post_categories = apply_filters('category_save_pre', $_POST['post_category']);
> - $post_status = apply_filters('status_save_pre', $_POST['post_status']);
> - $post_name = apply_filters('name_save_pre', $_POST['post_name']);
> - $post_parent = 0;
> - $menu_order = 0;
> -
> -
> - if ( isset($_POST['parent_id']) )
> - $post_parent = (int) $_POST['parent_id'];
> -
> - if ( isset($_POST['menu_order']) )
> - $menu_order = (int) $_POST['menu_order'];
> -
> - if (! empty($_POST['post_author_override'])) {
> - $post_author = (int) $_POST['post_author_override'];
> - } else if (! empty($_POST['post_author'])) {
> - $post_author = (int) $_POST['post_author'];
> - } else {
> - $post_author = (int) $_POST['user_ID'];
> - }
> - if ( !user_can_edit_user($user_ID, $post_author) )
> - die( __('You cannot post as this user.') );
> -
> - if ( empty($post_status) )
> - $post_status = 'draft';
> - // Double-check
> - if ( 'publish' == $post_status && (!user_can_create_post($user_ID)) )
> - $post_status = 'draft';
> -
> - $comment_status = $_POST['comment_status'];
> - if ( empty($comment_status) ) {
> - if ( !isset($_POST['advanced_view']) )
> - $comment_status = get_option('default_comment_status');
> - else
> - $comment_status = 'closed';
> - }
> -
> - $ping_status = $_POST['ping_status'];
> - if ( empty($ping_status) ) {
> - if ( !isset($_POST['advanced_view']) )
> - $ping_status = get_option('default_ping_status');
> - else
> - $ping_status = 'closed';
> - }
> -
> - $post_password = $_POST['post_password'];
> -
> - $trackback = $_POST['trackback_url'];
> - $trackback = preg_replace('|\s+|', "\n", $trackback);
> -
> - if (user_can_set_post_date($user_ID) && (!empty($_POST['edit_date']))) {
> - $aa = $_POST['aa'];
> - $mm = $_POST['mm'];
> - $jj = $_POST['jj'];
> - $hh = $_POST['hh'];
> - $mn = $_POST['mn'];
> - $ss = $_POST['ss'];
> - $jj = ($jj > 31) ? 31 : $jj;
> - $hh = ($hh > 23) ? $hh - 24 : $hh;
> - $mn = ($mn > 59) ? $mn - 60 : $mn;
> - $ss = ($ss > 59) ? $ss - 60 : $ss;
> - $now = "$aa-$mm-$jj $hh:$mn:$ss";
> - $now_gmt = get_gmt_from_date("$aa-$mm-$jj $hh:$mn:$ss");
> - } else {
> - $now = current_time('mysql');
> - $now_gmt = current_time('mysql', 1);
> - }
> -
> - // What to do based on which button they pressed
> - if ('' != $_POST['saveasdraft']) $post_status = 'draft';
> - if ('' != $_POST['saveasprivate']) $post_status = 'private';
> - if ('' != $_POST['publish']) $post_status = 'publish';
> - if ('' != $_POST['advanced']) $post_status = 'draft';
> - if ('' != $_POST['savepage']) $post_status = 'static';
> -
> -
> -
> - $id_result = $wpdb->get_row("SHOW TABLE STATUS LIKE '$wpdb->posts'");
> - $post_ID = $id_result->Auto_increment;
> -
> - 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);
> - }
> -
> - 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;
> - }
> - }
> -
> - $postquery ="INSERT INTO $wpdb->posts
> - (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
> - ('$post_ID', '$post_author', '$now', '$now_gmt', '$content', '$post_title', '$excerpt', '$post_status', '$comment_status', '$ping_status', '$post_password', '$post_name', '$trackback', '$now', '$now_gmt', '$post_parent', '$menu_order')
> - ";
> -
> - $result = $wpdb->query($postquery);
> -
> + // Redirect.
> if (!empty($_POST['mode'])) {
> switch($_POST['mode']) {
> case 'bookmarklet':
> @@ -167,47 +55,7 @@
> if ( '' != $_POST['advanced'] || isset($_POST['save']) )
> $location = "post.php?action=edit&post=$post_ID";
>
> - header("Location: $location"); // Send user on their way while we keep working
> -
> - // Insert categories
> - // Check to make sure there is a category, if not just set it to some default
> - if (!$post_categories) $post_categories[] = get_option('default_category');
> - foreach ($post_categories as $post_category) {
> - // Double check it's not there already
> - $exists = $wpdb->get_row("SELECT * FROM $wpdb->post2cat WHERE post_id = $post_ID AND category_id = $post_category");
> -
> - if (!$exists) {
> - $wpdb->query("
> - INSERT INTO $wpdb->post2cat
> - (post_id, category_id)
> - VALUES
> - ($post_ID, $post_category)
> - ");
> - }
> - }
> -
> - add_meta($post_ID);
> -
> - $wpdb->query("UPDATE $wpdb->posts SET guid = '" . get_permalink($post_ID) . "' WHERE ID = '$post_ID'");
> -
> - do_action('save_post', $post_ID);
> -
> - if ('publish' == $post_status) {
> - do_action('publish_post', $post_ID);
> - if ($post_pingback)
> - pingback($content, $post_ID);
> - do_enclose( $content, $post_ID );
> - do_trackbacks($post_ID);
> -
> - }
> -
> - if ($post_status == 'static') {
> - generate_page_rewrite_rules();
> - add_post_meta($post_ID, '_wp_page_template', $_POST['page_template'], true);
> - }
> -
> - require_once('admin-header.php');
> -
> + header("Location: $location");
> exit();
> break;
>
> trunk/wp-includes/functions-post.php (2646 => 2647)
>
> --- trunk/wp-includes/functions-post.php 2005-06-17 00:59:58 UTC (rev 2646)
> +++ trunk/wp-includes/functions-post.php 2005-06-18 19:08:38 UTC (rev 2647)
> @@ -6,37 +6,74 @@
> * generic function for inserting data into the posts table.
> */
> function wp_insert_post($postarr = array()) {
> - global $wpdb, $post_default_category, $allowedtags;
> + global $wpdb, $post_default_category, $allowedtags, $user_ID;
>
> // export array as variables
> extract($postarr);
> +
> + // Get the basics.
> + $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);
>
> - // Do some escapes for safety
> - $post_title = $wpdb->escape($post_title);
> - $post_name = sanitize_title($post_title);
> - $post_excerpt = $wpdb->escape($post_excerpt);
> - $post_content = $wpdb->escape($post_content);
> - $post_author = (int) $post_author;
> -
> // Make sure we set a valid category
> if (0 == count($post_category) || !is_array($post_category)) {
> $post_category = array($post_default_category);
> }
> + $post_cat = $post_category[0];
>
> - $post_cat = $post_category[0];
> + if ( empty($post_author) )
> + $post_author = $user_ID;
> +
> + if ( empty($post_status) )
> + $post_status = 'draft';
>
> + // Get the next post ID.
> + $id_result = $wpdb->get_row("SHOW TABLE STATUS LIKE '$wpdb->posts'");
> + $post_ID = $id_result->Auto_increment;
> +
> + // 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);
> + }
> +
> if (empty($post_date))
> $post_date = current_time('mysql');
> - // Make sure we have a good gmt date:
> if (empty($post_date_gmt))
> - $post_date_gmt = get_gmt_from_date($post_date);
> + $post_date_gmt = current_time('mysql', 1);
> +
> if (empty($comment_status))
> $comment_status = get_settings('default_comment_status');
> if (empty($ping_status))
> $ping_status = get_settings('default_ping_status');
> - if ( empty($post_parent) )
> + if ( empty($post_pingback) )
> + $post_pingback = get_option('default_pingback_flag');
> +
> + if ( isset($trackback_url) )
> + $trackback_url = preg_replace('|\s+|', "\n", $trackback_url);
> + else
> + $trackback_url = '';
> +
> + if ( isset($post_parent) )
> + $post_parent = (int) $post_parent;
> + else
> $post_parent = 0;
>
> + if ( isset($menu_order) )
> + $menu_order = (int) $menu_order;
> + else
> + $menu_order = 0;
> +
> + if ( !isset($post_password) )
> + $post_password = '';
> +
> 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) {
> @@ -50,24 +87,35 @@
> }
> }
>
> - $sql = "INSERT INTO $wpdb->posts
> - (post_author, post_date, post_date_gmt, post_modified, post_modified_gmt, post_content, post_title, post_excerpt, post_category, post_status, post_name, comment_status, ping_status, post_parent)
> - VALUES ('$post_author', '$post_date', '$post_date_gmt', '$post_date', '$post_date_gmt', '$post_content', '$post_title', '$post_excerpt', '$post_cat', '$post_status', '$post_name', '$comment_status', '$ping_status', '$post_parent')";
> + $postquery = "INSERT INTO $wpdb->posts
> + (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
> + ('$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', '$trackback_url', '$post_date', '$post_date_gmt', '$post_parent', '$menu_order')
> + ";
>
> - $result = $wpdb->query($sql);
> + $result = $wpdb->query($postquery);
> $post_ID = $wpdb->insert_id;
>
> // Set GUID
> $wpdb->query("UPDATE $wpdb->posts SET guid = '" . get_permalink($post_ID) . "' WHERE ID = '$post_ID'");
>
> wp_set_post_cats('', $post_ID, $post_category);
> +
> + $wpdb->query("UPDATE $wpdb->posts SET guid = '" . get_permalink($post_ID) . "' WHERE ID = '$post_ID'");
>
> if ($post_status == 'publish') {
> do_action('publish_post', $post_ID);
> + if ($post_pingback)
> + pingback($post_content, $post_ID);
> + do_enclose( $post_content, $post_ID );
> + do_trackbacks($post_ID);
> + } else if ($post_status == 'static') {
> + if ( empty($page_template) )
> + $page_template = 'Default Template';
> + generate_page_rewrite_rules();
> + add_post_meta($post_ID, '_wp_page_template', $page_template, true);
> }
>
> - pingback($content, $post_ID);
> -
> // Return insert_id if we got a good result, otherwise return zero.
> return $result ? $post_ID : 0;
> }
>
>
> _______________________________________________
> wp-svn mailing list
> wp-svn at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-svn
>
>
>
--
--Robert Deaton
http://somethingunpredictable.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://comox.textdrive.com/pipermail/wp-hackers/attachments/20050618/fb0fa6d5/attachment-0001.html
More information about the wp-hackers
mailing list