File manager - Edit - /home/adiance/public_html/beta/wp-content/plugins/goodlayers-core/framework/function/revision.php
Back
<?php /* * Goodlayers Revision * --------------------------------------------------------------------- * File which store the revision * --------------------------------------------------------------------- */ if( !class_exists('gdlr_core_revision') ){ class gdlr_core_revision{ // static function for field registration private static $revision_fields = array(); static function add_field( $field ){ self::$revision_fields[] = $field; } // starting revision object private $num_revision; function __construct( $num_revision = 5 ){ // for revision $this->num_revision = $num_revision; add_filter('wp_revisions_to_keep', array(&$this, 'filter_function_name'), 10, 2); add_action('init', array(&$this, 'add_revision_action')); // for preview button // add_action('wp_creating_autosave', array(&$this, 'autosave_page_preview'), 10, 4); // add_filter('get_post_metadata', array(&$this, 'apply_page_preview_content'), 10, 4); } function add_revision_action(){ add_filter('wp_save_post_revision_post_has_changed', array(&$this, 'check_revision_field_changes'), 10, 3); add_action('_wp_put_post_revision', array(&$this, 'update_revision_meta_field')); add_action('wp_restore_post_revision', array(&$this, 'restore_revision_meta_filed'), 10, 2); // for preview revision global $pagenow; if( !empty($pagenow) && ( $pagenow == 'revision.php' || ($pagenow == 'admin-ajax.php' && !empty($_POST['action']) && $_POST['action'] == 'get-revision-diffs') ) ){ add_filter('_wp_post_revision_fields', array(&$this, 'add_preview_revision_fields')); foreach( self::$revision_fields as $revision_field ){ if( !empty($revision_field['callback']) ){ add_filter('_wp_post_revision_field_' . $revision_field['meta_key'], $revision_field['callback']); } } } } // define the number of revision user can stored function filter_function_name( $num, $post ) { return $this->num_revision; } // check if there are any changes to meta fields function check_revision_field_changes( $post_has_changed, $last_revision, $post ){ foreach( self::$revision_fields as $revision_field ){ if( get_post_meta($post->ID, $revision_field['meta_key'], true) != get_post_meta($last_revision->ID, $revision_field['meta_key'], true) ){ $post_has_changed = true; } } return $post_has_changed; } // update meta field when revision is updated function update_revision_meta_field( $revision_id ){ $post_parent = wp_is_post_revision($revision_id); foreach( self::$revision_fields as $revision_field ){ $meta_value = get_post_meta($post_parent, $revision_field['meta_key'], true); if( !empty($meta_value) ){ add_metadata('post', $revision_id, $revision_field['meta_key'], $meta_value); } } } // restore meta field when revision is restored function restore_revision_meta_filed( $post_id, $revision_id ){ foreach( self::$revision_fields as $revision_field ){ $revision_data = get_post_meta($revision_id, $revision_field['meta_key'], true); if( !empty($revision_data) ){ update_post_meta($post_id, $revision_field['meta_key'], $revision_data); } } } // for previewing the revision function add_preview_revision_fields( $fields ){ foreach( self::$revision_fields as $revision_field ){ $fields[$revision_field['meta_key']] = $revision_field['meta_name']; } return $fields; } // save the page preview function autosave_page_preview($new_autosave){ if( !empty($new_autosave['ID']) ){ foreach( self::$revision_fields as $revision_field ){ if( !empty($_POST[$revision_field['meta_key']]) ){ $value = json_decode(gdlr_core_process_post_data($_POST[$revision_field['meta_key']]), true); $value = wp_slash($value); if( is_array($value) ){ delete_metadata('post', $new_autosave['ID'], $revision_field['meta_key']); update_metadata('post', $new_autosave['ID'], $revision_field['meta_key'], $value); } } } } } // fetching the value for preview page function apply_page_preview_content($value, $object_id, $meta_key, $single){ if(empty($_GET['preview'])) return $value; $is_meta_field = false; foreach(self::$revision_fields as $revision_field){ if( $meta_key == $revision_field['meta_key']){ $is_meta_field = true; } } $post = get_post(); if(empty($post) || $post->ID != $object_id || !$is_meta_field || 'revision' == $post->post_type){ return $value; } $preview = wp_get_post_autosave($post->ID); if(!is_object($preview)) return $value; if( $single ){ return array(get_post_meta($preview->ID, $meta_key, $single)); }else{ return get_post_meta($preview->ID, $meta_key, $single); } } } // gdlr_core_revision } // class_exists
| ver. 1.4 |
Github
|
.
| PHP 7.3.33 | Generation time: 0.07 |
proxy
|
phpinfo
|
Settings