Example #1
0
/**
 * Enclose audio file for podcast on save and store in custom fields.
 * Using meta boxes validation filter.
 * Added by T Hyde 9 Oct 2013; Updated by Jack 4/4/14
 *
 * @param $new
 * @param $post_id
 * @param $field
 * @return $new unchanged
 */
function wpfc_sermon_audio_validate($new, $post_id, $field)
{
    // only for sermon audio
    if ($field['id'] != 'sermon_audio') {
        return $new;
    }
    $audio = get_post_meta($post_id, 'sermon_audio', 'true');
    // Stop if PowerPress plugin is active
    // Solves conflict regarding enclosure field: http://wordpress.org/support/topic/breaks-blubrry-powerpress-plugin?replies=6
    if (defined('POWERPRESS_VERSION')) {
        return false;
    }
    // Populate enclosure field with URL, length and format, if valid URL found
    // This will set the length of the enclosure automatically
    do_enclose($audio, $post_id);
    // Set duration as post meta
    $current = get_post_meta($post_id, 'sermon_audio', 'true');
    $currentduration = get_post_meta($post_id, '_wpfc_sermon_duration', 'true');
    // only grab if different (getting data from dropbox can be a bit slow)
    if ($new != '' && ($new != $current || empty($currentduration))) {
        // get file data
        $duration = wpfc_mp3_duration($new);
        // store in hidden custom fields
        update_post_meta($post_id, '_wpfc_sermon_duration', $duration);
    } elseif ($new == '') {
        // clean up if file removed
        delete_post_meta($post_id, '_wpfc_sermon_duration');
    }
    return $new;
}
 function pushpress_send_ping($callback, $post_id, $feed_type, $secret)
 {
     global $pushpress;
     // Need to make sure that the PuSHPress options are initialized
     $pushpress->init();
     do_action('pushpress_send_ping');
     $remote_opt = array('headers' => array('format' => $feed_type), 'sslverify' => FALSE, 'timeout' => $pushpress->http_timeout, 'user-agent' => $pushpress->http_user_agent);
     $post = get_post($post_id);
     do_enclose($post->post_content, $post_id);
     update_postmeta_cache(array($post_id));
     query_posts("p={$post_id}");
     ob_start();
     $feed_url = FALSE;
     if ($feed_type == 'rss2') {
         do_action('pushpress_send_ping_rss2');
         $feed_url = get_bloginfo('rss2_url');
         $remote_opt['headers']['Content-Type'] = 'application/rss+xml';
         $remote_opt['headers']['Content-Type'] .= '; charset=' . get_option('blog_charset');
         @load_template(ABSPATH . WPINC . '/feed-rss2.php');
     } elseif ($feed_type == 'atom') {
         do_action('pushpress_send_ping_atom');
         $feed_url = get_bloginfo('atom_url');
         $remote_opt['headers']['Content-Type'] = 'application/atom+xml';
         $remote_opt['headers']['Content-Type'] .= '; charset=' . get_option('blog_charset');
         @load_template(ABSPATH . WPINC . '/feed-atom.php');
     }
     $remote_opt['body'] = ob_get_contents();
     ob_end_clean();
     // Figure out the signatur header if we have a secret on
     // on file for this callback
     if (!empty($secret)) {
         $remote_opt['headers']['X-Hub-Signature'] = 'sha1=' . hash_hmac('sha1', $remote_opt['body'], $secret);
     }
     $response = wp_remote_post($callback, $remote_opt);
     // look for failures
     if (is_wp_error($result)) {
         do_action('pushpress_ping_wp_error');
         return FALSE;
     }
     if (isset($response->errors['http_request_failed'][0])) {
         do_action('pushpress_ping_http_failure');
         return FALSE;
     }
     $status_code = (int) $response['response']['code'];
     if ($status_code < 200 || $status_code > 299) {
         do_action('pushpress_ping_not_2xx_failure');
         $pushpress->unsubscribe_callback($feed_url, $callback);
         return FALSE;
     }
 }
/**
 * Save enclosure for sermon podcasting
 *
 * When audio URL is provided, save its data to the 'enclosure' field.
 * WordPress automatically uses this data to make feeds useful for podcasting.
 *
 * @since 0.9
 * @param int $post_id ID of post being saved
 * @param object $post Post object being saved
 */
function ctc_sermon_save_audio_enclosure($post_id, $post)
{
    // Stop if no post, auto-save (meta not submitted) or user lacks permission
    $post_type = get_post_type_object($post->post_type);
    if (empty($_POST) || defined('DOING_AUTOSAVE') && DOING_AUTOSAVE || !current_user_can($post_type->cap->edit_post, $post_id)) {
        return false;
    }
    // Stop if PowerPress plugin is active
    // Solves conflict regarding enclosure field: http://wordpress.org/support/topic/breaks-blubrry-powerpress-plugin?replies=6
    if (defined('POWERPRESS_VERSION')) {
        return false;
    }
    // Get audio URL
    $audio = get_post_meta($post_id, '_ctc_sermon_audio', true);
    // Populate enclosure field with URL, length and format, if valid URL found
    do_enclose($audio, $post_id);
}
Example #4
0
function execute_all_pings()
{
    global $wpdb;
    // Do pingbacks
    while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
        $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';");
        pingback($ping->post_content, $ping->ID);
        echo "Pingback: {$ping->post_title} : {$ping->ID}<br/>";
    }
    // Do Enclosures
    while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
        $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$enclosure->ID} AND meta_key = '_encloseme';");
        do_enclose($enclosure->post_content, $enclosure->ID);
        echo "Enclosure: {$enclosure->post_title} : {$enclosure->ID}<br/>";
    }
    // Do Trackbacks
    while ($trackback = $wpdb->get_row("SELECT ID FROM {$wpdb->posts} WHERE TRIM(to_ping) != '' AND post_status != 'draft' LIMIT 1")) {
        echo "Trackback : {$trackback->ID}<br/>";
        do_trackbacks($trackback->ID);
    }
}
/**
 * Perform all pingbacks, enclosures, trackbacks, and send to pingback services.
 *
 * @since 2.1.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 */
function do_all_pings()
{
    global $wpdb;
    // Do pingbacks
    while ($ping = $wpdb->get_row("SELECT ID, post_content, meta_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
        delete_metadata_by_mid('post', $ping->meta_id);
        pingback($ping->post_content, $ping->ID);
    }
    // Do Enclosures
    while ($enclosure = $wpdb->get_row("SELECT ID, post_content, meta_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
        delete_metadata_by_mid('post', $enclosure->meta_id);
        do_enclose($enclosure->post_content, $enclosure->ID);
    }
    // Do Trackbacks
    $trackbacks = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE to_ping <> '' AND post_status = 'publish'");
    if (is_array($trackbacks)) {
        foreach ($trackbacks as $trackback) {
            do_trackbacks($trackback);
        }
    }
    //Do Update Services/Generic Pings
    generic_ping();
}
<?php

require_once '../wp-config.php';
// Do pingbacks
while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
    $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';");
    pingback($ping->post_content, $ping->ID);
}
// Do Enclosures
while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
    $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$enclosure->ID} AND meta_key = '_encloseme';");
    do_enclose($enclosure->post_content, $enclosure->ID);
}
// Do Trackbacks
$trackbacks = $wpdb->get_results("SELECT ID FROM {$wpdb->posts} WHERE CHAR_LENGTH(TRIM(to_ping)) > 7 AND post_status != 'draft'");
if (is_array($trackbacks)) {
    foreach ($trackbacks as $trackback) {
        do_trackbacks($trackback->ID);
    }
}
Example #7
0
/**
 * Perform all pingbacks, enclosures, trackbacks, and send to pingback services.
 *
 * @since 2.1.0
 * @uses $wpdb
 */
function do_all_pings()
{
    global $wpdb;
    // Do pingbacks
    while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
        $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';");
        pingback($ping->post_content, $ping->ID);
    }
    // Do Enclosures
    while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
        $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->postmeta} WHERE post_id = %d AND meta_key = '_encloseme';", $enclosure->ID));
        do_enclose($enclosure->post_content, $enclosure->ID);
    }
    // Do Trackbacks
    $trackbacks = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE to_ping <> '' AND post_status = 'publish'");
    if (is_array($trackbacks)) {
        foreach ($trackbacks as $trackback) {
            do_trackbacks($trackback);
        }
    }
    //Do Update Services/Generic Pings
    generic_ping();
}
Example #8
0
 function pushpress_send_ping($callback, $post_id, $feed_type, $secret)
 {
     global $pushpress, $current_user;
     // Do all WP_Query calcs and send feeds as logged-out user.
     $old_user_id = $current_user->ID;
     wp_set_current_user(0);
     // Need to make sure that the PuSHPress options are initialized
     $pushpress->init();
     do_action('pushpress_send_ping');
     $remote_opt = array('headers' => array('format' => $feed_type), 'sslverify' => FALSE, 'timeout' => $pushpress->http_timeout, 'user-agent' => $pushpress->http_user_agent);
     $post = get_post($post_id);
     $post_status_obj = get_post_status_object($post->post_status);
     if (!$post_status_obj->public) {
         do_action('pushpress_nonpublic_post', $post_id);
         wp_set_current_user($old_user_id);
         return false;
     }
     do_enclose($post->post_content, $post_id);
     update_postmeta_cache(array($post_id));
     // make sure the channel title stays consistent
     // without this it would append the post title as well
     add_filter('wp_title', '__return_false', 999);
     query_posts("p={$post_id}");
     ob_start();
     $feed_url = FALSE;
     if ($feed_type == 'rss2') {
         do_action('pushpress_send_ping_rss2');
         $feed_url = get_bloginfo('rss2_url');
         $remote_opt['headers']['Content-Type'] = 'application/rss+xml';
         $remote_opt['headers']['Content-Type'] .= '; charset=' . get_option('blog_charset');
         @load_template(ABSPATH . WPINC . '/feed-rss2.php');
     } elseif ($feed_type == 'atom') {
         do_action('pushpress_send_ping_atom');
         $feed_url = get_bloginfo('atom_url');
         $remote_opt['headers']['Content-Type'] = 'application/atom+xml';
         $remote_opt['headers']['Content-Type'] .= '; charset=' . get_option('blog_charset');
         @load_template(ABSPATH . WPINC . '/feed-atom.php');
     }
     $remote_opt['body'] = ob_get_contents();
     ob_end_clean();
     // Figure out the signatur header if we have a secret on
     // on file for this callback
     if (!empty($secret)) {
         $remote_opt['headers']['X-Hub-Signature'] = 'sha1=' . hash_hmac('sha1', $remote_opt['body'], $secret);
     }
     $response = wp_remote_post($callback, $remote_opt);
     // look for failures
     if (is_wp_error($response)) {
         do_action('pushpress_ping_wp_error');
         wp_set_current_user($old_user_id);
         return FALSE;
     }
     if (isset($response->errors['http_request_failed'][0])) {
         do_action('pushpress_ping_http_failure');
         wp_set_current_user($old_user_id);
         return FALSE;
     }
     $status_code = (int) $response['response']['code'];
     if ($status_code < 200 || $status_code > 299) {
         do_action('pushpress_ping_not_2xx_failure');
         $pushpress->unsubscribe_callback($feed_url, $callback);
         wp_set_current_user($old_user_id);
         return FALSE;
     }
     wp_set_current_user($old_user_id);
 }
Example #9
0
function cultiv8_sermon_save_audio_enclosure($post_id, $post)
{
    // Stop if no post, auto-save (meta not submitted) or user lacks permission
    if ('ctc_sermon' != $post->post_type) {
        return;
    }
    $post_type = get_post_type_object($post->post_type);
    if (empty($_POST) || defined('DOING_AUTOSAVE') && DOING_AUTOSAVE || !current_user_can($post_type->cap->edit_post, $post_id)) {
        return false;
    }
    // Stop if PowerPress plugin is active
    // Solves conflict regarding enclosure field: http://wordpress.org/support/topic/breaks-blubrry-powerpress-plugin?replies=6
    if (defined('POWERPRESS_VERSION')) {
        return false;
    }
    // Get audio URL
    $audio = get_post_meta($post_id, '_ctc_sermon_audio', true);
    // The built-in do_enclose method goes a roundabout way of getting the file
    // length, which involves an http fetch to get the right length. On some server
    // configurations if the fetch fails the enclosure isn't added. While the fetch
    // is necessary if the file is remote, it's frustrating if the file is on the
    // same server, where WP can get all the information without the http fetch.
    // This method now does the handling of the enclosure data using WP methods if the
    // file is local and then falls back to the normal do_enclose method if it's
    // a remote file
    // Populate enclosure field with URL, length and format, if valid URL found
    $uploads = wp_upload_dir();
    // A local file is assume to be one living in the uploads directory
    $is_local = stripos($audio, $uploads['baseurl']);
    if (!(false === $is_local)) {
        // Get the path to the file
        $audio_src = str_replace($uploads['baseurl'], $uploads['basedir'], $audio);
        // Get meta data
        $metadata = wp_read_audio_metadata($audio_src);
        if ($metadata) {
            // Make sure we got metadata and read the mime_type
            // and filesize values which are needed for the enclosure
            $mime = $metadata['mime_type'];
            $length = $metadata['filesize'];
            if ($mime) {
                // We've got data, add enclosure meta
                update_post_meta($post_id, 'enclosure', "{$audio}\n{$length}\n{$mime}\n");
            }
        }
    } else {
        // Leave do_enclose for remote files
        do_enclose($audio, $post_id);
    }
}
Example #10
0
function podcasting_save_form($postID)
{
    global $wpdb;
    // Security prevention
    if (!current_user_can('edit_post', $postID)) {
        return $postID;
    }
    // Extra security prevention
    if (isset($_POST['comment_post_ID'])) {
        return $postID;
    }
    if (isset($_POST['not_spam'])) {
        return $postID;
    }
    // akismet fix
    if (isset($_POST['comment'])) {
        return $postID;
    }
    // moderation.php fix
    // Ignore save_post action for revisions and autosaves
    if (function_exists('wp_is_post_revision') && function_exists('wp_is_post_autosave')) {
        if (wp_is_post_revision($postID) || wp_is_post_autosave($postID)) {
            return $postID;
        }
    }
    // Add new enclosures
    if ($_POST['pod_new_enclosure_ids'] != '') {
        $pod_new_enclosure_ids = explode(',', substr($_POST['pod_new_enclosure_ids'], 0, -1));
        $pod_ignore_enclosure_ids = explode(',', substr($_POST['pod_ignore_enclosure_ids'], 0, -1));
        $added_enclosure_ids = array();
        foreach ($pod_new_enclosure_ids as $pod_enclosure_id) {
            $pod_enclosure_id = (int) $pod_enclosure_id;
            // Check if the enclosure is on the ignore list
            if (!in_array($pod_enclosure_id, $pod_ignore_enclosure_ids)) {
                $pod_content = podcasting_urlencode($_POST['pod_new_file_' . $pod_enclosure_id]);
                $pod_format = $_POST['pod_new_format_' . $pod_enclosure_id];
                $enclosed = get_enclosed($postID);
                do_enclose($pod_content, $postID);
                // Add relationship if new enclosure
                if (!in_array($pod_content, $enclosed)) {
                    $pod_enclosure_id2 = $wpdb->get_var("SELECT meta_id FROM {$wpdb->postmeta} WHERE post_id = {$postID} AND meta_key = 'enclosure' ORDER BY meta_id DESC");
                    // Find the enclosure we just added
                    wp_set_object_terms($pod_enclosure_id2, $pod_format, 'podcast_format', false);
                }
                $added_enclosure_ids[] = $pod_enclosure_id;
            }
        }
    }
    // Update enclosures
    if (isset($_POST['pod_enclosure_ids'])) {
        $pod_enclosure_ids = explode(',', $_POST['pod_enclosure_ids']);
        $pod_new_enclosure_ids = explode(',', substr($_POST['pod_new_enclosure_ids'], 0, -1));
        $pod_ignore_enclosure_ids = explode(',', substr($_POST['pod_ignore_enclosure_ids'], 0, -1));
        $pod_delete_enclosure_ids = explode(',', substr($_POST['pod_delete_enclosure_ids'], 0, -1));
        $enclosures = $wpdb->get_results("SELECT meta_id, meta_value FROM {$wpdb->postmeta} WHERE post_id = {$postID} AND meta_key = 'enclosure' ORDER BY meta_id", ARRAY_A);
        $i = 0;
        if ($_POST['pod_enclosure_ids'] != '') {
            foreach ($pod_enclosure_ids as $pod_enclosure_id) {
                // Ensure we're dealing with an ID
                $pod_enclosure_id = (int) $pod_enclosure_id;
                $itunes = serialize(array('format' => $_POST['pod_format_' . $pod_enclosure_id], 'keywords' => $_POST['pod_keywords_' . $pod_enclosure_id], 'author' => $_POST['pod_author_' . $pod_enclosure_id], 'length' => $_POST['pod_length_' . $pod_enclosure_id], 'explicit' => $_POST['pod_explicit_' . $pod_enclosure_id]));
                // Update format
                wp_set_object_terms($pod_enclosure_id, $_POST['pod_format_' . $pod_enclosure_id], 'podcast_format', false);
                // Update enclsoure
                $enclosure = explode("\n", $enclosures[$i]['meta_value']);
                $enclosure[3] = $itunes;
                update_post_meta($postID, 'enclosure', implode("\n", $enclosure), $enclosures[$i]['meta_value']);
                $i++;
                // Delete enclosure
                if (in_array($pod_enclosure_id, $pod_delete_enclosure_ids)) {
                    // Remove format
                    wp_delete_object_term_relationships($pod_enclosure_id, 'podcast_format');
                    // Remove enclosure
                    delete_meta($pod_enclosure_id);
                }
            }
        }
        if (count($added_enclosure_ids) > 0) {
            foreach ($added_enclosure_ids as $pod_enclosure_id) {
                // Ensure we're dealing with an ID
                $pod_enclosure_id = (int) $pod_enclosure_id;
                // Check if the enclosure is on the ignore list
                if (!in_array($pod_enclosure_id, $pod_ignore_enclosure_ids)) {
                    $itunes = serialize(array('format' => $_POST['pod_new_format_' . $pod_enclosure_id], 'keywords' => $_POST['pod_new_keywords_' . $pod_enclosure_id], 'author' => $_POST['pod_new_author_' . $pod_enclosure_id], 'length' => $_POST['pod_new_length_' . $pod_enclosure_id], 'explicit' => $_POST['pod_new_explicit_' . $pod_enclosure_id]));
                    // Update format
                    $meta_id = $enclosures[$i]['meta_id'];
                    wp_set_object_terms($meta_id, $_POST['pod_new_format_' . $pod_enclosure_id], 'podcast_format', false);
                    // Update enclsoure
                    $enclosure = explode("\n", $enclosures[$i]['meta_value']);
                    $enclosure[3] = $itunes;
                    $enclosure_insert = implode("\n", $enclosure);
                    $wpdb->query("UPDATE {$wpdb->postmeta} SET meta_value = '{$enclosure_insert}' WHERE meta_id = '{$meta_id}'");
                    $i++;
                }
            }
        }
    }
    return $postID;
}
function podcasting_save_form($postID)
{
    global $wpdb;
    // Security prevention
    if (!current_user_can('edit_post', $postID)) {
        return $postID;
    }
    // Extra security prevention
    if (isset($_POST['comment_post_ID'])) {
        return $postID;
    }
    if (isset($_POST['not_spam'])) {
        return $postID;
    }
    // akismet fix
    if (isset($_POST['comment'])) {
        return $postID;
    }
    // moderation.php fix
    // Update enclosures
    $enclosure_ids = explode(',', $_POST['enclosure_ids']);
    $enclosures = get_post_meta($postID, 'enclosure');
    $i = 0;
    foreach ($enclosure_ids as $enclosure_id) {
        // Ensure we're dealing with an ID
        $enclosure_id = (int) $enclosure_id;
        $itunes = serialize(array('format' => $_POST['pod_format_' . $enclosure_id], 'keywords' => $_POST['pod_keywords_' . $enclosure_id], 'author' => $_POST['pod_author_' . $enclosure_id], 'length' => $_POST['pod_length_' . $enclosure_id], 'explicit' => $_POST['pod_explicit_' . $enclosure_id]));
        // Update format
        wp_set_object_terms($enclosure_id, $_POST['pod_format_' . $enclosure_id], 'podcast_format', false);
        // Update enclsoure
        $enclosure = explode("\n", $enclosures[$i]);
        $enclosure[3] = $itunes;
        update_post_meta($postID, 'enclosure', implode("\n", $enclosure), $enclosures[$i]);
        $i++;
        // Delete enclosure
        if (isset($_POST['delete_pod_' . $enclosure_id])) {
            // Remove format
            wp_delete_object_term_relationships($enclosure_id, 'podcast_format');
            // Remove enclosure
            delete_meta($enclosure_id);
            // Fake a save
            $_POST['save'] = 'Update';
        }
    }
    // Add new enclosures
    if (isset($_POST['pod_new_file']) && '' != $_POST['pod_new_file']) {
        $content = $_POST['pod_new_file'];
        $enclosed = get_enclosed($postID);
        do_enclose($content, $postID);
        // Add relationship if new enclosure
        if (!in_array($content, $enclosed)) {
            $enclosure_id = $wpdb->get_var("SELECT meta_id FROM {$wpdb->postmeta} WHERE post_id = {$postID} AND meta_key = 'enclosure' ORDER BY meta_id DESC");
            // Find the enclosure we just added
            wp_set_object_terms($enclosure_id, 'default-format', 'podcast_format', false);
        }
    }
    return $postID;
}
	
	// Add any?
	foreach ($post_categories as $new_cat) {
		if (!in_array($new_cat, $old_categories))
			$wpdb->query("INSERT INTO $wpdb->post2cat (post_id, category_id) VALUES ($post_ID, $new_cat)");
	}

	if ($prev_status != 'publish' && $post_status == 'publish')
		do_action('private_to_published', $post_ID);

	do_action('edit_post', $post_ID);

	if ($post_status == 'publish') {
		do_action('publish_post', $post_ID);
		do_trackbacks($post_ID);
		do_enclose( $content, $post_ID );
		if ( get_option('default_pingback_flag') )
			pingback($content, $post_ID);
	}

	if ($post_status == 'static') {
		generate_page_rewrite_rules();

		if ( ! update_post_meta($post_ID, '_wp_page_template',  $_POST['page_template'])) {
			add_post_meta($post_ID, '_wp_page_template',  $_POST['page_template'], true);
		}
	}

	exit();
	break;
 /**
  * Copy of WP's "generic_ping".
  * Uses another function to send the actual XML-RPC messages.
  * @param string $post_title Title of the post
  * @param integer $post_type Future post or current post
  */
 function mbpoPingServices($post_title, $post_type)
 {
     global $wpdb;
     $this->already_pinged = array();
     $this->_post_type = $post_type;
     if (strpos($post_title, '~#') !== false) {
         $post_id_title = explode('~#', $post_title);
         $this->_post_title = $post_id_title[1];
         $this->_post_url = get_permalink($post_id_title[0]);
     } else {
         $this->_post_title = $post_title;
         $this->_post_url = '';
     }
     if ($this->mbpo_wp_version >= 2.1) {
         // Do pingbacks
         while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
             $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';");
             pingback($ping->post_content, $ping->ID);
         }
         // Do Enclosures
         while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
             $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$enclosure->ID} AND meta_key = '_encloseme';");
             do_enclose($enclosure->post_content, $enclosure->ID);
         }
         // Do Trackbacks
         $trackbacks = $wpdb->get_results("SELECT ID FROM {$wpdb->posts} WHERE CHAR_LENGTH(TRIM(to_ping)) > 7 AND post_status = 'publish'");
         if (is_array($trackbacks)) {
             foreach ($trackbacks as $trackback) {
                 do_trackbacks($trackback->ID);
             }
         }
     }
     $services = get_settings('ping_sites');
     $services = preg_replace("|(\\s)+|", '$1', $services);
     $services = trim($services);
     if ('' != $services) {
         set_time_limit(300);
         $services = explode("\n", $services);
         foreach ($services as $service) {
             $this->mbpoSendXmlrpc($service);
         }
     }
     unset($this->already_pinged);
     set_time_limit(60);
 }
 function mw_editPost($args)
 {
     global $wpdb, $post_default_category;
     $this->escape($args);
     $post_ID = $args[0];
     $user_login = $args[1];
     $user_pass = $args[2];
     $content_struct = $args[3];
     $publish = $args[4];
     if (!$this->login_pass_ok($user_login, $user_pass)) {
         return $this->error;
     }
     $user_data = get_userdatabylogin($user_login);
     if (!user_can_edit_post($user_data->ID, $post_ID)) {
         return new IXR_Error(401, 'Sorry, you can not edit this post.');
     }
     $postdata = wp_get_single_post($post_ID, ARRAY_A);
     extract($postdata);
     $this->escape($postdata);
     $post_title = $content_struct['title'];
     $post_content = apply_filters('content_save_pre', $content_struct['description']);
     $catnames = $content_struct['categories'];
     $post_category = array();
     if (is_array($catnames)) {
         foreach ($catnames as $cat) {
             $post_category[] = get_cat_ID($cat);
         }
     }
     $post_excerpt = $content_struct['mt_excerpt'];
     $post_more = $content_struct['mt_text_more'];
     $post_status = $publish ? 'publish' : 'draft';
     if ($post_more) {
         $post_content = $post_content . "\n<!--more-->\n" . $post_more;
     }
     $to_ping = $content_struct['mt_tb_ping_urls'];
     $comment_status = empty($content_struct['mt_allow_comments']) ? get_settings('default_comment_status') : $content_struct['mt_allow_comments'];
     $ping_status = empty($content_struct['mt_allow_pings']) ? get_settings('default_ping_status') : $content_struct['mt_allow_pings'];
     // Do some timestamp voodoo
     $dateCreatedd = $content_struct['dateCreated'];
     if (!empty($dateCreatedd)) {
         $dateCreated = $dateCreatedd->getIso();
         $post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
         $post_date_gmt = iso8601_to_datetime($dateCreated, GMT);
     } else {
         $post_date = $postdata['post_date'];
         $post_date_gmt = $postdata['post_date_gmt'];
     }
     // We've got all the data -- post it:
     $newpost = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'comment_status', 'ping_status', 'post_date', 'post_date_gmt', 'to_ping');
     $result = wp_update_post($newpost);
     if (!$result) {
         return new IXR_Error(500, 'Sorry, your entry could not be edited. Something wrong happened.');
     }
     logIO('O', "(MW) Edited ! ID: {$post_ID}");
     // FIXME: do we pingback always? pingback($content, $post_ID);
     // trackback_url_list($content_struct['mt_tb_ping_urls'], $post_ID);
     if ('publish' == $post_status) {
         if ($post_pingback) {
             pingback($content, $post_ID);
         }
         do_enclose($content, $post_ID);
         do_trackbacks($post_ID);
         do_action('publish_post', $post_ID);
     }
     do_action('edit_post', $post_ID);
     return true;
 }
 /**
  * Copy of WP's "generic_ping".
  * Uses another function to send the actual XML-RPC messages.
  * @param string $post_title Title of the post
  * @param integer $post_type Future post or current post
  */
 function mbpoPingServices($post_title, $post_type)
 {
     global $wpdb;
     $this->already_pinged = array();
     $this->_post_type = $post_type;
     if (strpos($post_title, '~#') !== false) {
         $post_id_title = explode('~#', $post_title);
         $this->_post_title = $post_id_title[1];
         $this->_post_url = get_permalink($post_id_title[0]);
     } else {
         $this->_post_title = $post_title;
         $this->_post_url = '';
     }
     if ($this->mbpo_wp_version >= 2.1) {
         // Do pingbacks
         $ping = $this->__mpoGetPingbackPost();
         $this->__mpoDeletePingBack($ping->ID);
         pingback($ping->post_content, $ping->ID);
         // Do Enclosures
         $enclosure = $this->__mpoGetEnclosurePost();
         $this->__mpoDeleteEnclosure($enclosure->ID);
         do_enclose($enclosure->post_content, $enclosure->ID);
         // Do Trackbacks
         $trackbacks = $this->__mpoGetTrackbacks();
         if (is_array($trackbacks)) {
             foreach ($trackbacks as $trackback) {
                 do_trackbacks($trackback->ID);
             }
         }
     }
     $services = get_option('mbp_ping_sites');
     $services = preg_replace("|(\\s)+|", '$1', $services);
     $services = trim($services);
     if ('' != $services) {
         set_time_limit(300);
         $services = explode("\n", $services);
         foreach ($services as $service) {
             $this->mbpoSendXmlrpc($service);
         }
     }
     unset($this->already_pinged);
     set_time_limit(60);
 }