当前位置: 首页>>代码示例>>PHP>>正文


PHP _wp_post_revision_fields函数代码示例

本文整理汇总了PHP中_wp_post_revision_fields函数的典型用法代码示例。如果您正苦于以下问题:PHP _wp_post_revision_fields函数的具体用法?PHP _wp_post_revision_fields怎么用?PHP _wp_post_revision_fields使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了_wp_post_revision_fields函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: wp_get_revision_ui_diff

/**
 * Get the revision UI diff.
 *
 * @since 3.6.0
 *
 * @param object $post The post object.
 * @param int $compare_from The revision id to compare from.
 * @param int $compare_to The revision id to come to.
 *
 * @return array|bool Associative array of a post's revisioned fields and their diffs.
 * 	Or, false on failure.
 */
function wp_get_revision_ui_diff($post, $compare_from, $compare_to)
{
    if (!($post = get_post($post))) {
        return false;
    }
    if ($compare_from) {
        if (!($compare_from = get_post($compare_from))) {
            return false;
        }
    } else {
        // If we're dealing with the first revision...
        $compare_from = false;
    }
    if (!($compare_to = get_post($compare_to))) {
        return false;
    }
    // If comparing revisions, make sure we're dealing with the right post parent.
    // The parent post may be a 'revision' when revisions are disabled and we're looking at autosaves.
    if ($compare_from && $compare_from->post_parent !== $post->ID && $compare_from->ID !== $post->ID) {
        return false;
    }
    if ($compare_to->post_parent !== $post->ID && $compare_to->ID !== $post->ID) {
        return false;
    }
    if ($compare_from && strtotime($compare_from->post_date_gmt) > strtotime($compare_to->post_date_gmt)) {
        $temp = $compare_from;
        $compare_from = $compare_to;
        $compare_to = $temp;
    }
    // Add default title if title field is empty
    if ($compare_from && empty($compare_from->post_title)) {
        $compare_from->post_title = __('(no title)');
    }
    if (empty($compare_to->post_title)) {
        $compare_to->post_title = __('(no title)');
    }
    $return = array();
    foreach (_wp_post_revision_fields() as $field => $name) {
        $content_from = $compare_from ? apply_filters("_wp_post_revision_field_{$field}", $compare_from->{$field}, $field, $compare_from, 'from') : '';
        $content_to = apply_filters("_wp_post_revision_field_{$field}", $compare_to->{$field}, $field, $compare_to, 'to');
        $diff = wp_text_diff($content_from, $content_to, array('show_split_view' => true));
        if (!$diff && 'post_title' === $field) {
            // It's a better user experience to still show the Title, even if it didn't change.
            // No, you didn't see this.
            $diff = '<table class="diff"><colgroup><col class="content diffsplit left"><col class="content diffsplit middle"><col class="content diffsplit right"></colgroup><tbody><tr>';
            $diff .= '<td>' . esc_html($compare_from->post_title) . '</td><td></td><td>' . esc_html($compare_to->post_title) . '</td>';
            $diff .= '</tr></tbody>';
            $diff .= '</table>';
        }
        if ($diff) {
            $return[] = array('id' => $field, 'name' => $name, 'diff' => $diff);
        }
    }
    return $return;
}
开发者ID:pankajsinghjarial,项目名称:SYLC-AMERICAN,代码行数:67,代码来源:revision.php

示例2: diff

 public function diff()
 {
     // make sure the keys are set on $left and $right so we don't get any undefined errors
     $field_keys = array_fill_keys($this->fields_to_add, null);
     $left = array_merge($field_keys, (array) $this->left);
     $right = array_merge($field_keys, (array) $this->right);
     $identical = true;
     $rev_fields = array();
     foreach (_wp_post_revision_fields() as $field => $field_title) {
         $left_content = apply_filters("_wp_post_revision_field_{$field}", $left[$field], $field);
         $right_content = apply_filters("_wp_post_revision_field_{$field}", $right[$field], $field);
         if (!($content = wp_text_diff($left_content, $right_content))) {
             continue;
         }
         // There is no difference between left and right
         $identical = false;
         $rev_fields[] = array('field' => $field, 'title' => $field_title, 'content' => $content);
     }
     return $identical ? false : $rev_fields;
 }
开发者ID:gregoryfu,项目名称:wp-draft-revisions,代码行数:20,代码来源:Diff.php

示例3: theme


//.........这里部分代码省略.........
                     break;
                 }
                 $post_title = '<a href="' . get_permalink() . '?action=edit' . '">' . get_the_title() . '</a>';
                 $h2 = sprintf(__('Compare Revisions of &#8220;%1$s&#8221;'), $post_title);
                 $title = __('Revisions');
                 $left = $left_revision->ID;
                 $right = $right_revision->ID;
             case 'history':
                 $args = array('format' => 'form-table', 'parent' => false, 'right' => $right, 'left' => $left);
                 if (!WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions')) {
                     $args['type'] = 'autosave';
                 }
                 if (!isset($h2)) {
                     $post_title = '<a href="' . get_permalink() . '?action=edit' . '">' . get_the_title() . '</a>';
                     $revisions = wp_get_post_revisions($post->ID);
                     $revision = array_shift($revisions);
                     $revision_title = wp_post_revision_title($revision, false);
                     $h2 = sprintf(__('Revision for &#8220;%1$s&#8221; created on %2$s'), $post_title, $revision_title);
                 }
                 $new_content .= '<h3 class="long-header">' . $h2 . '</h3>';
                 $new_content .= '<table class="form-table ie-fixed">';
                 $new_content .= '<col class="th" />';
                 if ('diff' == $action) {
                     $new_content .= '<tr id="revision">';
                     $new_content .= '<th scope="row"></th>';
                     $new_content .= '<th scope="col" class="th-full">';
                     $new_content .= '<span class="alignleft">' . sprintf(__('Older: %s', $this->translation_domain), wp_post_revision_title($left_revision, false)) . '</span>';
                     $new_content .= '<span class="alignright">' . sprintf(__('Newer: %s', $this->translation_domain), wp_post_revision_title($right_revision, false)) . '</span>';
                     $new_content .= '</th>';
                     $new_content .= '</tr>';
                 }
                 // use get_post_to_edit filters?
                 $identical = true;
                 foreach (_wp_post_revision_fields() as $field => $field_title) {
                     if ('diff' == $action) {
                         $left_content = apply_filters("_wp_post_revision_field_{$field}", $left_revision->{$field}, $field);
                         $right_content = apply_filters("_wp_post_revision_field_{$field}", $right_revision->{$field}, $field);
                         if (!($rcontent = wp_text_diff($left_content, $right_content))) {
                             continue;
                         }
                         // There is no difference between left and right
                         $identical = false;
                     } else {
                         add_filter("_wp_post_revision_field_{$field}", 'htmlspecialchars');
                         $rcontent = apply_filters("_wp_post_revision_field_{$field}", $revision->{$field}, $field);
                     }
                     $new_content .= '<tr id="revision-field-<?php echo $field; ?>">';
                     $new_content .= '<th scope="row">' . esc_html($field_title) . '</th>';
                     $new_content .= '<td><div class="pre">' . $rcontent . '</div></td>';
                     $new_content .= '</tr>';
                 }
                 if ('diff' == $action && $identical) {
                     $new_content .= '<tr><td colspan="2"><div class="updated"><p>' . __('These revisions are identical.', $this->translation_domain) . '</p></div></td></tr>';
                 }
                 $new_content .= '</table>';
                 $new_content .= '<br class="clear" />';
                 $new_content .= '<div class="incsub_wiki_revisions">' . $this->list_post_revisions($post, $args) . '</div>';
                 $redirect = false;
                 break;
             default:
                 $crumbs = array();
                 foreach ($post->ancestors as $parent_pid) {
                     $parent_post = get_post($parent_pid);
                     $crumbs[] = '<a href="' . get_permalink($parent_pid) . '" class="incsub_wiki_crumbs">' . $parent_post->post_title . '</a>';
                 }
                 $crumbs[] = '<span class="incsub_wiki_crumbs">' . $post->post_title . '</span>';
开发者ID:Esleelkartea,项目名称:asociacion-tecnicos-artes-escenicas-ATAE-,代码行数:67,代码来源:wordpress-wiki-plugin.php

示例4: get_autosave_version_if_newer

 /**
  * find newer version of post, or return null if there is no newer autosave version
  *
  * @param $pid
  * @return mixed|null
  */
 public function get_autosave_version_if_newer($pid)
 {
     // Detect if there exists an autosave newer than the post and if that autosave is different than the post
     $autosave = wp_get_post_autosave($pid);
     $post = get_post($pid);
     $newer_revision = null;
     if ($autosave && $post && mysql2date('U', $autosave->post_modified_gmt, false) >= mysql2date('U', $post->post_modified_gmt, false)) {
         foreach (_wp_post_revision_fields() as $autosave_field => $_autosave_field) {
             if (normalize_whitespace($autosave->{$autosave_field}) != normalize_whitespace($post->{$autosave_field})) {
                 if ($autosave_field === 'post_content') {
                     $newer_revision = $autosave->{$autosave_field};
                 }
             }
         }
         unset($autosave_field, $_autosave_field);
     }
     return $newer_revision;
 }
开发者ID:interfisch,项目名称:lm,代码行数:24,代码来源:lib_swifty_plugin_view.php

示例5: wp_create_post_autosave

/**
 * Creates autosave data for the specified post from $_POST data.
 *
 * @package WordPress
 * @subpackage Post_Revisions
 * @since 2.6.0
 *
 * @param mixed $post_data Associative array containing the post data or int post ID.
 * @return mixed The autosave revision ID. WP_Error or 0 on error.
 */
function wp_create_post_autosave($post_data)
{
    if (is_numeric($post_data)) {
        $post_id = $post_data;
        $post_data = $_POST;
    } else {
        $post_id = (int) $post_data['post_ID'];
    }
    $post_data = _wp_translate_postdata(true, $post_data);
    if (is_wp_error($post_data)) {
        return $post_data;
    }
    $post_author = get_current_user_id();
    // Store one autosave per author. If there is already an autosave, overwrite it.
    if ($old_autosave = wp_get_post_autosave($post_id, $post_author)) {
        $new_autosave = _wp_post_revision_data($post_data, true);
        $new_autosave['ID'] = $old_autosave->ID;
        $new_autosave['post_author'] = $post_author;
        // If the new autosave has the same content as the post, delete the autosave.
        $post = get_post($post_id);
        $autosave_is_different = false;
        foreach (array_intersect(array_keys($new_autosave), array_keys(_wp_post_revision_fields($post))) as $field) {
            if (normalize_whitespace($new_autosave[$field]) != normalize_whitespace($post->{$field})) {
                $autosave_is_different = true;
                break;
            }
        }
        if (!$autosave_is_different) {
            wp_delete_post_revision($old_autosave->ID);
            return 0;
        }
        /**
         * Fires before an autosave is stored.
         *
         * @since 4.1.0
         *
         * @param array $new_autosave Post array - the autosave that is about to be saved.
         */
        do_action('wp_creating_autosave', $new_autosave);
        return wp_update_post($new_autosave);
    }
    // _wp_put_post_revision() expects unescaped.
    $post_data = wp_unslash($post_data);
    // Otherwise create the new autosave as a special post revision
    return _wp_put_post_revision($post_data, true);
}
开发者ID:nicholasgriffintn,项目名称:WordPress,代码行数:56,代码来源:post.php

示例6: wp_get_post_autosave

$form_extra = '';
if ('auto-draft' == $post->post_status) {
    if ('edit' == $action) {
        $post->post_title = '';
    }
    $autosave = false;
    $form_extra .= "<input type='hidden' id='auto_draft' name='auto_draft' value='1' />";
} else {
    $autosave = wp_get_post_autosave($post_ID);
}
$form_action = 'editpost';
$nonce_action = 'update-post_' . $post_ID;
$form_extra .= "<input type='hidden' id='post_ID' name='post_ID' value='" . esc_attr($post_ID) . "' />";
// Detect if there exists an autosave newer than the post and if that autosave is different than the post
if ($autosave && mysql2date('U', $autosave->post_modified_gmt, false) > mysql2date('U', $post->post_modified_gmt, false)) {
    foreach (_wp_post_revision_fields($post) as $autosave_field => $_autosave_field) {
        if (normalize_whitespace($autosave->{$autosave_field}) != normalize_whitespace($post->{$autosave_field})) {
            $notice = sprintf(__('There is an autosave of this post that is more recent than the version below. <a href="%s">View the autosave</a>'), get_edit_post_link($autosave->ID));
            break;
        }
    }
    // If this autosave isn't different from the current post, begone.
    if (!$notice) {
        wp_delete_post_revision($autosave->ID);
    }
    unset($autosave_field, $_autosave_field);
}
$post_type_object = get_post_type_object($post_type);
// All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action).
require_once ABSPATH . 'wp-admin/includes/meta-boxes.php';
$publish_callback_args = null;
开发者ID:atimmer,项目名称:wordpress-develop-mirror,代码行数:31,代码来源:edit-form-advanced.php

示例7: wp_ajax_revisions_data

function wp_ajax_revisions_data()
{
    check_ajax_referer('revisions-ajax-nonce', 'nonce');
    $compare_to = !empty($_GET['compare_to']) ? absint($_GET['compare_to']) : 0;
    $show_autosaves = !empty($_GET['show_autosaves']);
    $show_split_view = !empty($_GET['show_split_view']);
    $post_id = !empty($_GET['post_id']) ? absint($_GET['post_id']) : 0;
    $right_handle_at = !empty($_GET['right_handle_at']) ? (int) $_GET['right_handle_at'] : 0;
    $left_handle_at = !empty($_GET['left_handle_at']) ? (int) $_GET['left_handle_at'] : 0;
    $single_revision_id = !empty($_GET['single_revision_id']) ? absint($_GET['single_revision_id']) : 0;
    $compare_two_mode = (bool) $post_id;
    $all_the_revisions = array();
    if (!$post_id) {
        $post_id = $compare_to;
    }
    if (!current_user_can('read_post', $post_id)) {
        continue;
    }
    if (!($revisions = wp_get_post_revisions($post_id))) {
        return;
    }
    $left_revision = get_post($compare_to);
    // single model fetch mode
    // return the diff of a single revision comparison
    if ($single_revision_id) {
        $right_revision = get_post($single_revision_id);
        if (!$compare_to) {
            $left_revision = get_post($post_id);
        }
        // make sure the right revision is the most recent, except on oldest revision
        if ($compare_to && $right_revision->post_date < $left_revision->post_date) {
            $temp = $left_revision;
            $left_revision = $right_revision;
            $right_revision = $temp;
        }
        $lines_added = $lines_deleted = 0;
        $content = '';
        // compare from left to right, passed from application
        foreach (_wp_post_revision_fields() as $field => $field_value) {
            $left_content = apply_filters("_wp_post_revision_field_{$field}", $left_revision->{$field}, $field, $left_revision, 'left');
            $right_content = apply_filters("_wp_post_revision_field_{$field}", $right_revision->{$field}, $field, $right_revision, 'right');
            add_filter("_wp_post_revision_field_{$field}", 'htmlspecialchars');
            $args = array();
            if ($show_split_view) {
                $args = array('show_split_view' => true);
            }
            // compare_to == 0 means first revision, so compare to a blank field to show whats changed
            $diff = wp_text_diff_with_count(0 == $compare_to ? '' : $left_content, $right_content, $args);
            if (isset($diff['html'])) {
                $content .= sprintf('<div class="diff-label">%s</div>', $field_value);
                $content .= $diff['html'];
            }
            if (isset($diff['lines_added'])) {
                $lines_added = $lines_added + $diff['lines_added'];
            }
            if (isset($diff['lines_deleted'])) {
                $lines_deleted = $lines_deleted + $diff['lines_deleted'];
            }
        }
        $content = '' == $content ? __('No difference') : $content;
        $all_the_revisions = array('diff' => $content, 'linesDeleted' => $lines_deleted, 'linesAdded' => $lines_added);
        echo json_encode($all_the_revisions);
        exit;
    }
    // end single model fetch
    $count = -1;
    // reverse the list to start with oldest revision
    $revisions = array_reverse($revisions);
    $previous_revision_id = 0;
    /* translators: revision date format, see http://php.net/date */
    $datef = _x('j F, Y @ G:i:s', 'revision date format');
    foreach ($revisions as $revision) {
        if (!$show_autosaves && wp_is_post_autosave($revision)) {
            continue;
        }
        $revision_from_date_author = '';
        $is_current_revision = false;
        $count++;
        /**
         * return blank data for diffs to the left of the left handle (for right handel model)
         * or to the right of the right handle (for left handel model)
         * and visa versa in RTL mode
         */
        if (!is_rtl()) {
            if (0 != $left_handle_at && $count < $left_handle_at || 0 != $right_handle_at && $count > $right_handle_at - 2) {
                $all_the_revisions[] = array('ID' => $revision->ID);
                continue;
            }
        } else {
            // is_rtl
            if (0 != $left_handle_at && $count > $left_handle_at - 1 || 0 != $left_handle_at && $count < $right_handle_at) {
                $all_the_revisions[] = array('ID' => $revision->ID);
                continue;
            }
        }
        if ($compare_two_mode) {
            $compare_to_gravatar = get_avatar($left_revision->post_author, 24);
            $compare_to_author = get_the_author_meta('display_name', $left_revision->post_author);
            $compare_to_date = date_i18n($datef, strtotime($left_revision->post_modified));
            $revision_from_date_author = sprintf(_x('%1$s %2$s, %3$s ago (%4$s)', 'post revision title'), $compare_to_gravatar, $compare_to_author, human_time_diff(strtotime($left_revision->post_modified), current_time('timestamp')), $compare_to_date);
//.........这里部分代码省略.........
开发者ID:jcsilkey,项目名称:CodeReviewSecurityRepo,代码行数:101,代码来源:ajax-actions.php

示例8: wp_create_post_autosave

/**
 * Creates autosave data for the specified post from $_POST data.
 *
 * @package WordPress
 * @subpackage Post_Revisions
 * @since 2.6.0
 *
 * @uses _wp_translate_postdata()
 * @uses _wp_post_revision_fields()
 */
function wp_create_post_autosave($post_id)
{
    $translated = _wp_translate_postdata(true);
    if (is_wp_error($translated)) {
        return $translated;
    }
    // Only store one autosave.  If there is already an autosave, overwrite it.
    if ($old_autosave = wp_get_post_autosave($post_id)) {
        $new_autosave = _wp_post_revision_fields($_POST, true);
        $new_autosave['ID'] = $old_autosave->ID;
        return wp_update_post($new_autosave);
    }
    // Otherwise create the new autosave as a special post revision
    return _wp_put_post_revision($_POST, true);
}
开发者ID:schr,项目名称:wordpress,代码行数:25,代码来源:post.php

示例9: setup_is_identical

 /**
  * Determines whether left and right revisions are identical.
  *
  * This is cribbed nearly wholesale from wp-admin/revision.php. In the future I would like
  * to clean it up to be less WordPressy and more pluginish.
  *
  * @package BuddyPress Docs
  * @since 1.1
  */
 function setup_is_identical()
 {
     $this->revisions_are_identical = true;
     foreach (_wp_post_revision_fields() as $field => $field_title) {
         if ('diff' == bp_docs_history_action()) {
             $left_content = apply_filters("_wp_post_revision_field_{$field}", $this->left_revision->{$field}, $field);
             $right_content = apply_filters("_wp_post_revision_field_{$field}", $this->right_revision->{$field}, $field);
             if (!($content = wp_text_diff($left_content, $right_content))) {
                 continue;
             }
             // There is no difference between left and right
             $this->revisions_are_identical = false;
         } else {
             if (isset($this->revision) && is_object($this->revision) && isset($this->revision->{$field})) {
                 add_filter("_wp_post_revision_field_{$field}", 'htmlspecialchars');
                 $content = apply_filters("_wp_post_revision_field_{$field}", $this->revision->{$field}, $field);
             }
         }
     }
 }
开发者ID:pausaura,项目名称:agora_nodes,代码行数:29,代码来源:addon-history.php

示例10: compare_revisions_iframe

    static function compare_revisions_iframe()
    {
        //add_action('admin_init', 'register_admin_colors', 1);
        set_current_screen('revision-edit');
        $left = isset($_GET['left']) ? absint($_GET['left']) : false;
        $right = isset($_GET['right']) ? absint($_GET['right']) : false;
        if (!($left_revision = get_post($left))) {
            return;
        }
        if (!($right_revision = get_post($right))) {
            return;
        }
        if (!current_user_can('read_post', $left_revision->ID) || !current_user_can('read_post', $right_revision->ID)) {
            return;
        }
        // Don't allow reverse diffs?
        if (strtotime($right_revision->post_modified_gmt) < strtotime($left_revision->post_modified_gmt)) {
            //$redirect = add_query_arg( array( 'left' => $right, 'right' => $left ) );
            // Switch-a-roo
            $temp_revision = $left_revision;
            $left_revision = $right_revision;
            $right_revision = $temp_revision;
            unset($temp_revision);
        }
        global $post;
        if ($left_revision->ID == $right_revision->post_parent) {
            // right is a revision of left
            $post = $left_revision;
        } elseif ($left_revision->post_parent == $right_revision->ID) {
            // left is a revision of right
            $post = $right_revision;
        } elseif ($left_revision->post_parent == $right_revision->post_parent) {
            // both are revisions of common parent
            $post = get_post($left_revision->post_parent);
        } else {
            wp_die(__('Sorry, But you cant compare unrelated Revisions.', 'revision-control'));
        }
        // Don't diff two unrelated revisions
        if ($left_revision->ID == $right_revision->ID || !wp_get_post_revision($left_revision->ID) && !wp_get_post_revision($right_revision->ID)) {
            wp_die(__('Sorry, But you cant compare a Revision to itself.', 'revision-control'));
        }
        $title = sprintf(__('Compare Revisions of &#8220;%1$s&#8221;', 'revision-control'), get_the_title());
        $left = $left_revision->ID;
        $right = $right_revision->ID;
        $GLOBALS['hook_suffix'] = 'revision-control';
        wp_enqueue_style('revision-control');
        iframe_header();
        ?>
		<div class="wrap">
		
		<h2 class="long-header center"><?php 
        echo $title;
        ?>
</h2>
		
		<table class="form-table ie-fixed">
			<col class="th" />
		<tr id="revision">
			<th scope="col" class="th-full">
				<?php 
        printf(__('Older: %s', 'revision-control'), wp_post_revision_title($left_revision, false));
        ?>
				<span class="alignright"><?php 
        printf(__('Newer: %s', 'revision-control'), wp_post_revision_title($right_revision, false));
        ?>
</span>
			</th>
		</tr>
		<?php 
        $fields = _wp_post_revision_fields();
        foreach (get_object_taxonomies($post->post_type) as $taxonomy) {
            $t = get_taxonomy($taxonomy);
            $fields[$taxonomy] = $t->label;
            $left_terms = $right_terms = array();
            foreach (wp_get_object_terms($left_revision->ID, $taxonomy) as $term) {
                $left_terms[] = $term->name;
            }
            foreach (wp_get_object_terms($right_revision->ID, $taxonomy) as $term) {
                $right_terms[] = $term->name;
            }
            $left_revision->{$taxonomy} = (empty($left_terms) ? '' : "* ") . join("\n* ", $left_terms);
            $right_revision->{$taxonomy} = (empty($right_terms) ? '' : "* ") . join("\n* ", $right_terms);
        }
        $fields['postmeta'] = __('Post Meta', 'revision-control');
        $left_revision->postmeta = $right_revision->postmeta = array();
        foreach ((array) has_meta($right_revision->ID) as $meta) {
            if ('_' == $meta['meta_key'][0]) {
                continue;
            }
            $right_revision->postmeta[] = $meta['meta_key'] . ': ' . $meta['meta_value'];
            $left_val = get_post_meta('post', $left_revision->ID, $meta['meta_key'], true);
            if (!empty($left_val)) {
                $left_revision->postmeta[] = $meta['meta_key'] . ': ' . $left_val;
            }
        }
        $right_revision->postmeta = implode("\n", $right_revision->postmeta);
        $left_revision->postmeta = implode("\n", $left_revision->postmeta);
        $identical = true;
        foreach ($fields as $field => $field_title) {
            if (!($content = wp_text_diff($left_revision->{$field}, $right_revision->{$field}))) {
//.........这里部分代码省略.........
开发者ID:Karpec,项目名称:geo-mac,代码行数:101,代码来源:revision-control.php

示例11: post_updated

 function post_updated($post_id, $post_after, $post_before)
 {
     $options = $this->get_options();
     // Transitioning from an Auto Draft to Published shouldn't result in a notification.
     if ($post_before->post_status === 'auto-draft' && $post_after->post_status === 'publish') {
         return;
     }
     // If we're purely saving a draft, and don't have the draft option enabled, skip. If we're transitioning one way or the other, send a notification.
     if (0 == $options['drafts'] && in_array($post_before->post_status, array('draft', 'auto-draft')) && 'draft' == $post_after->post_status) {
         return;
     }
     if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
         return;
     }
     if (!in_array($post_before->post_type, $options['post_types'])) {
         return;
     }
     $this->left_post = $post_before;
     $this->right_post = $post_after;
     // If this is a new post, set an empty title for $this->left_post so that it appears in the diff.
     $child_posts = wp_get_post_revisions($post_id, array('numberposts' => 1));
     if (count($child_posts) == 0) {
         $this->left_post->post_title = '';
     }
     if (!$this->left_post || !$this->right_post) {
         return;
     }
     $html_diffs = array();
     $text_diffs = array();
     $identical = true;
     foreach (_wp_post_revision_fields() as $field => $field_title) {
         $left = apply_filters("_wp_post_revision_field_{$field}", $this->left_post->{$field}, $field);
         $right = apply_filters("_wp_post_revision_field_{$field}", $this->right_post->{$field}, $field);
         if (!($diff = $this->wp_text_diff($left, $right))) {
             continue;
         }
         $html_diffs[$field_title] = $diff;
         $left = normalize_whitespace($left);
         $right = normalize_whitespace($right);
         $left_lines = explode("\n", $left);
         $right_lines = explode("\n", $right);
         require_once dirname(__FILE__) . '/unified.php';
         $text_diff = new Text_Diff($left_lines, $right_lines);
         $renderer = new Text_Diff_Renderer_unified();
         $text_diffs[$field_title] = $renderer->render($text_diff);
         $identical = false;
     }
     if ($identical) {
         $this->left_post = null;
         $this->right_post = null;
         return;
     }
     // Grab the meta data
     $the_author = get_the_author_meta('display_name', get_current_user_id());
     // The revision
     $the_title = get_the_title($this->right_post->ID);
     // New title (may be same as old title)
     $the_date = gmdate('j F, Y \\a\\t G:i \\U\\T\\C', strtotime($this->right_post->post_modified_gmt . '+0000'));
     // Modified time
     $the_permalink = esc_url(get_permalink($this->right_post->ID));
     $the_edit_link = esc_url(get_edit_post_link($this->right_post->ID));
     // Send email
     $charset = apply_filters('wp_mail_charset', get_option('blog_charset'));
     $blogname = html_entity_decode(get_option('blogname'), ENT_QUOTES, $charset);
     $title = html_entity_decode($the_title, ENT_QUOTES, $charset);
     add_action('phpmailer_init', array($this, 'phpmailer_init'));
     $user_emails = array();
     foreach ($options['users'] as $user_id) {
         if (function_exists('is_multisite') && is_multisite()) {
             if (is_user_member_of_blog($user_id, get_current_blog_id())) {
                 $user_emails[] = get_user_option('user_email', $user_id);
             }
         } else {
             if ($user_email = get_user_option('user_email', $user_id)) {
                 $user_emails[] = $user_email;
             }
         }
     }
     $emails = array_unique(array_merge($options['emails'], $user_emails));
     if (!count($emails) && apply_filters('email_post_changes_admin_email_fallback', true)) {
         $emails[] = get_option('admin_email');
     }
     $emails = apply_filters('email_post_changes_emails', $emails, $this->left_post->ID, $this->right_post->ID);
     foreach ($emails as $email) {
         do_action('email_post_changes_before_email_generation', $email);
         $left_title = __('Revision');
         $right_title = sprintf(__('Current %s'), $post_type = ucfirst($this->right_post->post_type));
         $head_sprintf = __('%s made the following changes to the %s %s on %s');
         // HTML
         $html_diff_head = '<h2>' . sprintf(__('%s changed'), $post_type) . "</h2>\n";
         $html_diff_head .= '<p>' . sprintf($head_sprintf, esc_html($the_author), sprintf(_x('&#8220;%s&#8221; [%s]', '1 = link, 2 = "edit"'), "<a href='{$the_permalink}'>" . esc_html($the_title) . '</a>', "<a href='{$the_edit_link}'>" . __('edit') . '</a>'), $this->right_post->post_type, $the_date) . "</p>\n\n";
         $html_diff_head .= "<table style='width: 100%; border-collapse: collapse; border: none;'><tr>\n";
         $html_diff_head .= "<td style='width: 50%; padding: 0; margin: 0;'>" . esc_html($left_title) . ' @ ' . esc_html($this->left_post->post_date_gmt) . "</td>\n";
         $html_diff_head .= "<td style='width: 50%; padding: 0; margin: 0;'>" . esc_html($right_title) . ' @ ' . esc_html($this->right_post->post_modified_gmt) . "</td>\n";
         $html_diff_head .= "</tr></table>\n\n";
         $html_diff = '';
         foreach ($html_diffs as $field_title => $diff) {
             $html_diff .= '<h3>' . esc_html($field_title) . "</h3>\n";
             $html_diff .= "{$diff}\n\n";
         }
//.........这里部分代码省略.........
开发者ID:macconsultinggroup,项目名称:WordPress,代码行数:101,代码来源:class.email-post-changes.php

示例12: compare_revisions_iframe

    function compare_revisions_iframe()
    {
        if (function_exists('register_admin_colors')) {
            add_action('admin_init', 'register_admin_colors', 1);
        } else {
            // Hard coded translation strings here as the translations are not required, just the name and stlesheet.
            wp_admin_css_color('classic', 'Blue', admin_url("css/colors-classic.css"), array('#073447', '#21759B', '#EAF3FA', '#BBD8E7'));
            wp_admin_css_color('fresh', 'Gray', admin_url("css/colors-fresh.css"), array('#464646', '#6D6D6D', '#F1F1F1', '#DFDFDF'));
        }
        $left = isset($_GET['left']) ? absint($_GET['left']) : false;
        $right = isset($_GET['right']) ? absint($_GET['right']) : false;
        if (!($left_revision = get_post($left))) {
            break;
        }
        if (!($right_revision = get_post($right))) {
            break;
        }
        if (!current_user_can('read_post', $left_revision->ID) || !current_user_can('read_post', $right_revision->ID)) {
            break;
        }
        // Don't allow reverse diffs?
        if (strtotime($right_revision->post_modified_gmt) < strtotime($left_revision->post_modified_gmt)) {
            //$redirect = add_query_arg( array( 'left' => $right, 'right' => $left ) );
            // Switch-a-roo
            $temp_revision = $left_revision;
            $left_revision = $right_revision;
            $right_revision = $temp_revision;
            unset($temp_revision);
        }
        global $post;
        if ($left_revision->ID == $right_revision->post_parent) {
            // right is a revision of left
            $post = $left_revision;
        } elseif ($left_revision->post_parent == $right_revision->ID) {
            // left is a revision of right
            $post = $right_revision;
        } elseif ($left_revision->post_parent == $right_revision->post_parent) {
            // both are revisions of common parent
            $post = get_post($left_revision->post_parent);
        } else {
            wp_die(__('Sorry, But you cant compare unrelated Revisions.', 'revision-control'));
        }
        // Don't diff two unrelated revisions
        if ($left_revision->ID == $right_revision->ID || !wp_get_post_revision($left_revision->ID) && !wp_get_post_revision($right_revision->ID)) {
            wp_die(__('Sorry, But you cant compare a Revision to itself.', 'revision-control'));
        }
        $title = sprintf(__('Compare Revisions of &#8220;%1$s&#8221;', 'revision-control'), get_the_title());
        $left = $left_revision->ID;
        $right = $right_revision->ID;
        iframe_header();
        ?>
		<div class="wrap">
		
		<h2 class="long-header center"><?php 
        echo $title;
        ?>
</h2>
		
		<table class="form-table ie-fixed">
			<col class="th" />
		<tr id="revision">
			<th scope="col" class="th-full">
				<?php 
        printf(__('Older: %s', 'revision-control'), wp_post_revision_title($left_revision, false));
        ?>
				<span class="alignright"><?php 
        printf(__('Newer: %s', 'revision-control'), wp_post_revision_title($right_revision, false));
        ?>
</span>
			</th>
		</tr>
		<?php 
        $fields = _wp_post_revision_fields();
        foreach (get_object_taxonomies($post->post_type) as $taxonomy) {
            $t = get_taxonomy($taxonomy);
            $fields[$taxonomy] = $t->label;
            $left_terms = $right_terms = array();
            foreach (wp_get_object_terms($left_revision->ID, $taxonomy) as $term) {
                $left_terms[] = $term->name;
            }
            foreach (wp_get_object_terms($right_revision->ID, $taxonomy) as $term) {
                $right_terms[] = $term->name;
            }
            $left_revision->{$taxonomy} = (empty($left_terms) ? '' : "* ") . join("\n* ", $left_terms);
            $right_revision->{$taxonomy} = (empty($right_terms) ? '' : "* ") . join("\n* ", $right_terms);
        }
        $identical = true;
        foreach ($fields as $field => $field_title) {
            if (!($content = wp_text_diff($left_revision->{$field}, $right_revision->{$field}))) {
                continue;
            }
            // There is no difference between left and right
            $identical = false;
            ?>
			<tr>
				<th scope="row"><strong><?php 
            echo esc_html($field_title);
            ?>
</strong></th>
			</tr>
//.........这里部分代码省略.........
开发者ID:niko-lgdcom,项目名称:archives,代码行数:101,代码来源:revision-control.php

示例13: page_edit_notification

    /**
     * wiki_page_edit_notification 
     * @global <type> $wpdb
     * @param <type> $pageID
     * @return NULL
     */
    function page_edit_notification($pageID)
    {
        global $wpdb;
        // First, make sure this *is* a Wiki page -CWJ
        $p = get_post($pageID);
        if ($p->post_type == 'wiki') {
            $revisions = get_children(array('post_type' => 'revision', 'post_parent' => $pageID, 'orderby' => 'post_modified_gmt', 'order' => 'DESC'));
            $wpw_options = get_option('wpw_options');
            if ($wpw_options['email_admins'] == 1) {
                $emails = $this->getAllAdmins();
                $pageTitle = $p->post_title;
                $pagelink = get_permalink($pageID);
                $subject = "[" . get_bloginfo('title') . "] Wiki Change: " . $pageTitle;
                $message = '<p>' . sprintf(__("A Wiki Page has been modified on %s."), get_option('home'), $pageTitle) . '</p>';
                $message .= "\n\r";
                $message .= '<p>' . sprintf(__("The page title is %s"), $pageTitle) . '</p>';
                $message .= "\n\r";
                $message .= '<p>' . __('To visit this page, ') . '<a href="' . $pagelink . '">' . __('click here') . '</a></p>';
                $left_revision = reset($revisions);
                $right_revision = $p;
                ob_start();
                ?>
				<style type="text/css">
				table.diff .diff-deletedline {
					background-color: #FFDDDD;
				}
				table.diff .diff-deletedline del {
					background-color: #FF9999;
				}
				table.diff .diff-addedline {
					background-color: #DDFFDD;
				}
				table.diff diff.addedline ins {
					background-color: #99FF99;
				}
				</style>
				
				<table>
				<?php 
                $identical = true;
                foreach (_wp_post_revision_fields() as $field => $field_title) {
                    $left_content = apply_filters("_wp_post_revision_field_{$field}", $left_revision->{$field}, $field);
                    $right_content = apply_filters("_wp_post_revision_field_{$field}", $right_revision->{$field}, $field);
                    if (!($content = wp_text_diff($left_content, $right_content))) {
                        continue;
                    }
                    // There is no diff between left and right
                    $identical = false;
                    ?>

					<tr id="revision-field-<?php 
                    echo $field;
                    ?>
">
					<th scope="row"><?php 
                    echo esc_html($field_title);
                    ?>
</th>
					<td><div class="pre"><?php 
                    echo $content;
                    ?>
</div></td>
					</tr>
					<?php 
                }
                if ($identical) {
                    ?>
				<tr><td colspan="2"><div class="updated"><p><?php 
                    _e('These revisions are identical.');
                    ?>
</p></div></td></tr>
				<?php 
                }
                ?>
				</table>
				<?php 
                $message .= ob_get_clean();
                foreach ($emails as $email) {
                    add_filter('wp_mail_content_type', array($this, 'allow_html_mail'));
                    wp_mail($email, $subject, $message);
                    remove_filter('wp_mail_content_type', array($this, 'allow_html_mail'));
                }
            }
        }
    }
开发者ID:radgeek,项目名称:WikiWikiWordPress,代码行数:91,代码来源:wiki_notifications.php

示例14: front_end_editor_shortcodes

 public function front_end_editor_shortcodes($attr)
 {
     global $wp, $current_screen, $wp_meta_boxes, $post;
     $is_bac = $this->is_bac();
     $output = '';
     /**
      * Start Checking the Conditional needed to render editor
      * Define Variable needed for use in whole function
      *  
      *
      */
     if (!is_user_logged_in()) {
         if ($is_bac === true) {
             wp_safe_redirect(bon_accounts()->my_account_url());
         } else {
             if (is_woocommerce_activated()) {
                 wp_safe_redirect(get_permalink(wc_get_page_id('myaccount')));
             }
         }
     } else {
         if (!$this->is_edit()) {
             return;
         }
         $object_id = $this->get_post_to_edit();
         if (!$object_id) {
             bon_error_notice()->add('invalid_post', __('You attempted to edit an item that doesn&#8217;t exist. Perhaps it was deleted?'), 'error');
             return;
         }
         $post_object = get_post($this->get_post_to_edit());
         setup_postdata($GLOBALS['post'] =& $post_object);
         $current_post_type = get_post_type($object_id);
         if (!$post_object) {
             bon_error_notice()->add('invalid_post', __('You attempted to edit an item that doesn&#8217;t exist. Perhaps it was deleted?'), 'error');
             return;
         }
         if (!current_user_can('edit_post', $object_id)) {
             bon_error_notice()->add('permission_denied', __('You are not allowed to edit this item.'), 'error');
             return;
         }
         if (!post_type_supports($post_object->post_type, 'front-end-editor')) {
             bon_error_notice()->add('unsupported_posttype', __('The post type assigned is not supporting front end post', 'bon'), 'error');
         }
         $form_extra = '';
         $notice = false;
         if ($post_object->post_status === 'auto-draft') {
             $post_object->post_title = '';
             $post_object->comment_status = get_option('default_comment_status');
             $post_object->ping_status = get_option('default_ping_status');
             $autosave = false;
             $form_extra .= "<input type='hidden' id='auto_draft' name='auto_draft' value='1' />";
         } else {
             $autosave = wp_get_post_autosave($object_id);
         }
         $form_action = 'editpost';
         $nonce_action = 'update-post_' . $object_id;
         $form_extra .= "<input type='hidden' id='post_ID' name='post_ID' value='" . esc_attr($object_id) . "' />";
         $content_css = array(trailingslashit(get_stylesheet_directory_uri()) . 'assets/css/editor-styles.css', trailingslashit(includes_url()) . 'css/dashicons.min.css', trailingslashit(includes_url()) . 'js/mediaelement/mediaelementplayer.min.css', trailingslashit(includes_url()) . 'js/mediaelement/wp-mediaelement.css', trailingslashit(includes_url()) . 'js/tinymce/skins/wordpress/wp-content.css', trailingslashit(includes_url()) . 'css/editor.min.css');
         $content_css = join(',', array_map('esc_url', array_unique($content_css)));
         $args = array('post_ID' => $object_id, 'post_type' => $current_post_type, 'user_ID' => get_current_user_id(), 'post' => $post_object, 'post_type_object' => get_post_type_object($current_post_type), 'autosave' => $autosave, 'form_extra' => $form_extra, 'form_action' => $form_action, 'nonce_action' => $nonce_action, 'editor_settings' => array('dfw' => true, 'drag_drop_upload' => true, 'tabfocus_elements' => 'insert-media-button, save-post', 'editor_height' => 360, 'tinymce' => array('resize' => false, 'add_unload_trigger' => false, 'content_css' => $content_css)));
         ob_start();
         bon_get_template('posts/editor.php', $args);
         $args['editor'] = ob_get_clean();
         unset($args['editor_settings']);
         set_current_screen($current_post_type);
         $current_screen->set_parentage('edit.php?post_type=' . $current_post_type);
         if (!wp_check_post_lock($object_id)) {
             $args['active_post_lock'] = wp_set_post_lock($object_id);
         }
         $messages = $this->get_wp_messages($post_object);
         $message = false;
         if (isset($_GET['message'])) {
             $_GET['message'] = absint($_GET['message']);
             if (isset($messages[$current_post_type][$_GET['message']])) {
                 $message = $messages[$current_post_type][$_GET['message']];
             } elseif (!isset($messages[$current_post_type]) && isset($messages['post'][$_GET['message']])) {
                 $message = $messages['post'][$_GET['message']];
             }
         }
         // Detect if there exists an autosave newer than the post and if that autosave is different than the post
         if ($autosave && mysql2date('U', $autosave->post_modified_gmt, false) > mysql2date('U', $post_object->post_modified_gmt, false)) {
             foreach (_wp_post_revision_fields() as $autosave_field => $_autosave_field) {
                 if (normalize_whitespace($autosave->{$autosave_field}) != normalize_whitespace($post_object->{$autosave_field})) {
                     bon_error_notice()->add('autosave_exists', sprintf(__('There is an autosave of this post that is more recent than the version below. <a href="%s">View the autosave</a>'), get_edit_post_link($autosave->ID)), 'notice');
                     break;
                 }
             }
             // If this autosave isn't different from the current post, begone.
             if (!$notice) {
                 wp_delete_post_revision($autosave->ID);
             }
             unset($autosave_field, $_autosave_field);
         }
         bon_get_template('posts/post.php', $args);
         unset($GLOBALS['current_screen']);
         wp_reset_postdata();
     }
 }
开发者ID:VadimSid,项目名称:thinkgreek,代码行数:97,代码来源:class-bon-front-end-editor.php

示例15: get_autosave_notice

 function get_autosave_notice()
 {
     global $post;
     if ('auto-draft' == $post->post_status) {
         $autosave = false;
     } else {
         $autosave = wp_get_post_autosave($post->ID);
     }
     // Detect if there exists an autosave newer than the post and if that autosave is different than the post
     if ($autosave && mysql2date('U', $autosave->post_modified_gmt, false) > mysql2date('U', $post->post_modified_gmt, false)) {
         foreach (_wp_post_revision_fields() as $autosave_field => $_autosave_field) {
             if (normalize_whitespace($autosave->{$autosave_field}) !== normalize_whitespace($post->{$autosave_field})) {
                 return sprintf(__('There is an autosave of this post that is more recent than the version below. <a href="%s">View the autosave</a>'), get_edit_post_link($autosave->ID));
             }
         }
         // If this autosave isn't different from the current post, begone.
         wp_delete_post_revision($autosave->ID);
     }
     return false;
 }
开发者ID:foxpcteam,项目名称:wp-front-end-editor,代码行数:20,代码来源:class-fee.php


注:本文中的_wp_post_revision_fields函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。