예제 #1
0
 /**
  * Process the panels_data
  *
  * @param mixed $value
  * @param array $instance
  *
  * @return array|mixed|object
  */
 protected function sanitize_field_input($value, $instance)
 {
     $panels_data = json_decode($value, true);
     if (function_exists('siteorigin_panels_process_raw_widgets') && !empty($panels_data['widgets']) && is_array($panels_data['widgets'])) {
         $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']);
     }
     return $panels_data;
 }
예제 #2
0
/**
 * Edit the page builder data when we're viewing the live editor version
 *
 * @param $value
 * @param $post_id
 * @param $meta_key
 *
 * @return array
 */
function siteorigin_panels_live_editor($value, $post_id, $meta_key)
{
    if ($meta_key == 'panels_data' && current_user_can('edit_post', $post_id) && !empty($_POST['live_editor_panels_data'])) {
        $data = json_decode(wp_unslash($_POST['live_editor_panels_data']), true);
        if (!empty($data['widgets']) && (!class_exists('SiteOrigin_Widget_Field_Class_Loader') || method_exists('SiteOrigin_Widget_Field_Class_Loader', 'extend'))) {
            $data['widgets'] = siteorigin_panels_process_raw_widgets($data['widgets']);
        }
        $value = array($data);
    }
    return $value;
}
예제 #3
0
 function update($new, $old)
 {
     $new['builder_id'] = uniqid();
     if (is_string($new['panels_data']) && !empty($new['panels_data'])) {
         // This is still in a string format, so we'll convert it to an array for sanitization
         $new['panels_data'] = json_decode($new['panels_data'], true);
     }
     if (!empty($new['panels_data']) && !empty($new['panels_data']['widgets'])) {
         $new['panels_data']['widgets'] = siteorigin_panels_process_raw_widgets($new['panels_data']['widgets']);
     }
     return $new;
 }
예제 #4
0
/**
 * Get builder content based on the submitted panels_data.
 */
function siteorigin_panels_ajax_builder_content()
{
    header('content-type: text/html');
    if (!current_user_can('edit_post', $_POST['post_id'])) {
        wp_die();
    }
    if (empty($_POST['post_id']) || empty($_POST['panels_data'])) {
        echo '';
        wp_die();
    }
    // echo the content
    $panels_data = json_decode(wp_unslash($_POST['panels_data']), true);
    $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']);
    $panels_data = siteorigin_panels_styles_sanitize_all($panels_data);
    echo siteorigin_panels_render(intval($_POST['post_id']), false, $panels_data);
    wp_die();
}
예제 #5
0
/**
 * Save the panels data
 *
 * @param $post_id
 * @param $post
 *
 * @action save_post
 */
function siteorigin_panels_save_post($post_id, $post)
{
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if (empty($_POST['_sopanels_nonce']) || !wp_verify_nonce($_POST['_sopanels_nonce'], 'save')) {
        return;
    }
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    if (!isset($_POST['panels_data'])) {
        return;
    }
    if (!wp_is_post_revision($post_id)) {
        $panels_data = json_decode(wp_unslash($_POST['panels_data']), true);
        $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']);
        $panels_data = siteorigin_panels_styles_sanitize_all($panels_data);
        if (!empty($panels_data['widgets']) || !empty($panels_data['grids'])) {
            update_post_meta($post_id, 'panels_data', $panels_data);
        } else {
            // There are no widgets or rows, so delete the panels data
            delete_post_meta($post_id, 'panels_data');
        }
    } else {
        // When previewing, we don't need to wp_unslash the panels_data post variable.
        $panels_data = json_decode(wp_unslash($_POST['panels_data']), true);
        $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']);
        $panels_data = siteorigin_panels_styles_sanitize_all($panels_data);
        // Because of issue #20299, we are going to save the preview into a different variable so we don't overwrite the actual data.
        // https://core.trac.wordpress.org/ticket/20299
        if (!empty($panels_data['widgets'])) {
            update_post_meta($post_id, '_panels_data_preview', $panels_data);
        } else {
            delete_post_meta($post_id, '_panels_data_preview');
        }
    }
}
/**
 * Save the panels data
 *
 * @param $post_id
 * @param $post
 *
 * @action save_post
 */
function siteorigin_panels_save_post($post_id, $post)
{
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    $nonce = filter_input(INPUT_POST, '_sopanels_nonce', FILTER_SANITIZE_STRING);
    if (!wp_verify_nonce($nonce, 'save')) {
        return;
    }
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    $request = filter_input_array(INPUT_POST, array('panels_data' => FILTER_DEFAULT));
    if (!wp_is_post_revision($post_id)) {
        $panels_data = json_decode($request['panels_data'], true);
        $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']);
        $panels_data = siteorigin_panels_styles_sanitize_all($panels_data);
        if (!empty($panels_data['widgets'])) {
            update_post_meta($post_id, 'panels_data', $panels_data);
        } else {
            // There are no widgets, so delete the panels data.
            delete_post_meta($post_id, 'panels_data');
        }
    } else {
        // When previewing, we don't need to wp_unslash the panels_data post variable.
        $panels_data = json_decode($request['panels_data'], true);
        $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']);
        $panels_data = siteorigin_panels_styles_sanitize_all($panels_data);
        // Because of issue #20299, we are going to save the preview into a different variable so we don't overwrite the actual data.
        // https://core.trac.wordpress.org/panels_data/20299
        if (!empty($panels_data['widgets'])) {
            update_post_meta($post_id, '_panels_data_preview', $panels_data);
        }
    }
}
bloginfo('pingback_url');
?>
">
	<?php 
wp_head();
?>
</head>

<body <?php 
body_class();
?>
>
	<div id="content" class="site-content">
		<div class="entry-content">
			<?php 
if (!empty($_POST['live_editor_panels_data'])) {
    $data = json_decode(wp_unslash($_POST['live_editor_panels_data']), true);
    if (!empty($data['widgets']) && (!class_exists('SiteOrigin_Widget_Field_Class_Loader') || method_exists('SiteOrigin_Widget_Field_Class_Loader', 'extend'))) {
        $data['widgets'] = siteorigin_panels_process_raw_widgets($data['widgets']);
    }
    echo siteorigin_panels_render('l' . md5(serialize($data)), true, $data);
}
?>
		</div><!-- .entry-content -->
	</div>
	<?php 
wp_footer();
?>
</body>
</html>