/** * 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; }
/** * 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; }
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; }
/** * 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(); }
/** * 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>