/var/www/hkosl.com/aga/wp-content/plugins/siteorigin-panels/inc/revisions.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php

/**
 * Class SiteOrigin_Panels_Revisions
 *
 * Handles Page Builder revisions.
 */
class SiteOrigin_Panels_Revisions {

    function 
__construct() {
        
add_action'save_post', array( $this'save_post' ), 11);
        
add_action'wp_restore_post_revision', array( $this'revisions_restore' ), 10);

        
add_filter'_wp_post_revision_fields', array( $this'revisions_fields' ) );
        
add_filter'_wp_post_revision_field_panels_data_field', array( $this'revisions_field' ), 10);
    }

    
/**
     * @return SiteOrigin_Panels_Admin
     */
    
public static function single() {
        static 
$single;
        return empty( 
$single ) ? $single = new self() : $single;
    }

    
/**
     * Store the Page Builder meta in the revision.
     *
     * @param $post_id
     * @param $post
     */
    
function save_post$post_id$post ) {
        if( 
is_preview() ) return;

        
$parent_id wp_is_post_revision$post_id );
        if ( 
$parent_id ) {
            
// Check whether the panels data needs to be copied to the revision.
            
$panels_data get_metadata'post'$post_id'panels_data'true );
            if ( empty( 
$panels_data ) ) {
                
// If the panels data meta exists for the post parent, copy it into the revision.
                
$panels_data get_post_meta$parent_id'panels_data'true );
                if ( ! empty( 
$panels_data ) ) {
                    
add_metadata'post'$post_id'panels_data'$panels_data );
                }
            }
        }
    }

    
/**
     * Restore a revision.
     *
     * @param $post_id
     * @param $revision_id
     */
    
function revisions_restore$post_id$revision_id ) {
        
$panels_data get_metadata'post'$revision_id'panels_data'true );
        if ( ! empty( 
$panels_data ) ) {
            
update_post_meta$post_id'panels_data'map_deep$panels_data, array( 'SiteOrigin_Panels_Admin''double_slash_string' ) ) );
        } else {
            
delete_post_meta$post_id'panels_data' );
        }
    }

    
/**
     * Add the Page Builder content revision field.
     *
     * @param $fields
     *
     * @return mixed
     */
    
function revisions_fields$fields ) {
        
// Prevent the autosave message.
        // TODO figure out how to include Page Builder data into the autosave.
        
if ( ! function_exists'get_current_screen' ) ) {
            return 
$fields;
        }

        
$screen get_current_screen();
        if ( ! empty( 
$screen ) && $screen->base == 'post' ) {
            return 
$fields;
        }

        
$fields['panels_data_field'] = __'Page Builder Content''siteorigin-panels' );

        return 
$fields;
    }

    
/**
     * Display the Page Builder content for the revision.
     *
     * @param $value
     * @param $field
     * @param $revision
     *
     * @return string
     */
    
function revisions_field$value$field$revision ) {
        
$parent_id   wp_is_post_revision$revision->ID );
        
$panels_data get_metadata'post'$revision->ID'panels_data'true );

        if ( empty( 
$panels_data ) ) {
            return 
'';
        }

        return 
siteorigin_panels_render$parent_idfalse$panels_data );
    }
}