location = true === Fusion_App()->is_builder || ( isset( $_POST ) && isset( $_POST['fusion_front_end'] ) && $_POST['fusion_front_end'] ) ? 'front' : 'back'; // phpcs:ignore WordPress.Security.NonceVerification, WordPress.Security.ValidatedSanitizedInput // Check for action and action2 and trigger appropriate function. add_action( 'admin_init', [ $this, 'bulk_actions' ] ); } /** * Get action based on request. * phpcs:disable WordPress.Security * * @since 3.2 * @access public */ public function get_action() { if ( isset( $_REQUEST['action'] ) ) { if ( -1 !== $_REQUEST['action'] && '-1' !== $_REQUEST['action'] ) { return sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ); } } if ( isset( $_REQUEST['action2'] ) ) { if ( -1 !== $_REQUEST['action2'] && '-1' !== $_REQUEST['action2'] ) { return sanitize_text_field( wp_unslash( $_REQUEST['action2'] ) ); } } if ( ( isset( $_REQUEST['page'] ) && false !== strpos( $_REQUEST['page'], 'avada' ) ) && ( isset( $_REQUEST['action2'] ) || isset( $_REQUEST['action'] ) ) ) { $referer = fusion_get_referer(); if ( $referer ) { wp_safe_redirect( $referer ); exit; } } return false; } // phpcs:enable WordPress.Security /** * Apply bulk action. * * @since 3.2 * @access public */ public function bulk_actions() { $action = $this->get_action(); $bulk_actions = [ 'fusion_bulk_restore_element', 'fusion_bulk_delete_element', 'fusion_bulk_trash_element', 'fusion_restore_element', 'fusion_delete_element', 'fusion_trash_element', 'fusion_library_new', ]; if ( $action && in_array( $action, $bulk_actions, true ) ) { // Check referer based on actions. if ( strpos( $action, 'bulk' ) ) { check_admin_referer( 'bulk-' . $this->get_bulk_nonce_action(), '_wpnonce' ); } elseif ( 'fusion_library_new' === $action ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement // do nothing. } else { check_admin_referer( $this->get_single_nonce_action(), '_wpnonce' ); } switch ( $action ) { case 'fusion_library_new': $this->add_new_library_element(); break; case 'fusion_bulk_trash_element': case 'fusion_trash_element': $this->trash_element(); break; case 'fusion_bulk_restore_element': case 'fusion_restore_element': $this->restore_element(); break; case 'fusion_bulk_delete_element': case 'fusion_delete_element': $this->delete_element_post(); break; } } } /** * Get the nonce action for bulk actions. * * @since 3.11 * @access public */ public function get_bulk_nonce_action() { $action = 'elements'; if ( isset( $_GET['post'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $element_ids = (array) wp_unslash( $_GET['post'] ); // phpcs:ignore WordPress.Security } if ( isset( $element_ids[0] ) && ! empty( $element_ids ) ) { switch ( get_post_type( $element_ids[0] ) ) { case 'fusion_element': $action = 'elements'; break; case 'fusion_form': $action = 'forms'; break; case 'awb_off_canvas': $action = 'offcanvases'; break; case 'fusion_tb_section': $action = 'sections'; break; case 'fusion_icons': $action = 'iconsets'; break; } } return $action; } /** * Get the nonce action for single actions. * * @since 3.11 * @access public */ public function get_single_nonce_action() { $action = 'fusion-library'; if ( isset( $_GET['post'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $element_ids = (array) wp_unslash( $_GET['post'] ); // phpcs:ignore WordPress.Security } if ( isset( $element_ids[0] ) && ! empty( $element_ids ) ) { switch ( get_post_type( $element_ids[0] ) ) { case 'fusion_element': $action = 'fusion-library'; break; case 'fusion_form': $action = 'fusion-form-builder'; break; case 'awb_off_canvas': $action = 'awb-off-canvas'; break; case 'fusion_tb_section': $action = 'fusion-template-builder'; break; case 'fusion_icons': $action = 'fusion-template-builder'; break; } } return $action; } /** * Setup the post type and taxonomies. * * @since 2.2 * @access public */ public function register_layouts() { // If they are already registered, don't repeat. if ( $this->layouts_registered ) { return; } $is_builder = ( function_exists( 'fusion_is_preview_frame' ) && fusion_is_preview_frame() ) || ( function_exists( 'fusion_is_builder_frame' ) && fusion_is_builder_frame() ); $labels = [ 'name' => _x( 'Fusion Templates', 'Layout type general name', 'fusion-builder' ), 'singular_name' => _x( 'Layout', 'Layout type singular name', 'fusion-builder' ), 'add_new' => _x( 'Add New', 'Layout item', 'fusion-builder' ), 'add_new_item' => esc_html__( 'Add New Layout', 'fusion-builder' ), 'edit_item' => esc_html__( 'Edit Layout', 'fusion-builder' ), 'new_item' => esc_html__( 'New Layout', 'fusion-builder' ), 'all_items' => esc_html__( 'All Layouts', 'fusion-builder' ), 'view_item' => esc_html__( 'View Layout', 'fusion-builder' ), 'search_items' => esc_html__( 'Search Layouts', 'fusion-builder' ), 'not_found' => esc_html__( 'Nothing found', 'fusion-builder' ), 'not_found_in_trash' => esc_html__( 'Nothing found in Trash', 'fusion-builder' ), 'item_published' => esc_html__( 'Layout published.', 'fusion-builder' ), 'item_published_privately' => esc_html__( 'Layout published privately.', 'fusion-builder' ), 'item_reverted_to_draft' => esc_html__( 'Layout reverted to draft.', 'fusion-builder' ), 'item_scheduled' => esc_html__( 'Layout scheduled.', 'fusion-builder' ), 'item_updated' => esc_html__( 'Layout updated.', 'fusion-builder' ), 'parent_item_colon' => '', ]; $args = [ 'labels' => $labels, 'public' => false, 'publicly_queryable' => $is_builder, 'show_ui' => true, 'show_in_menu' => false, 'exclude_from_search' => true, 'can_export' => true, 'query_var' => true, 'has_archive' => false, 'capability_type' => 'post', 'map_meta_cap' => true, 'hierarchical' => false, 'show_in_nav_menus' => false, 'supports' => [ 'title', 'editor', 'revisions' ], ]; register_post_type( 'fusion_template', apply_filters( 'fusion_layout_template_args', $args ) ); $labels = [ 'name' => _x( 'Fusion Elements', 'element type general name', 'fusion-builder' ), 'singular_name' => _x( 'Element', 'Element type singular name', 'fusion-builder' ), 'add_new' => _x( 'Add New', 'Element item', 'fusion-builder' ), 'add_new_item' => esc_html__( 'Add New Element', 'fusion-builder' ), 'edit_item' => esc_html__( 'Edit Element', 'fusion-builder' ), 'new_item' => esc_html__( 'New Element', 'fusion-builder' ), 'all_items' => esc_html__( 'All Elements', 'fusion-builder' ), 'view_item' => esc_html__( 'View Element', 'fusion-builder' ), 'search_items' => esc_html__( 'Search Elements', 'fusion-builder' ), 'not_found' => esc_html__( 'Nothing found', 'fusion-builder' ), 'not_found_in_trash' => esc_html__( 'Nothing found in Trash', 'fusion-builder' ), 'item_published' => esc_html__( 'Element published.', 'fusion-builder' ), 'item_published_privately' => esc_html__( 'Element published privately.', 'fusion-builder' ), 'item_reverted_to_draft' => esc_html__( 'Element reverted to draft.', 'fusion-builder' ), 'item_scheduled' => esc_html__( 'Element scheduled.', 'fusion-builder' ), 'item_updated' => esc_html__( 'Element updated.', 'fusion-builder' ), 'parent_item_colon' => '', ]; $args = [ 'labels' => $labels, 'public' => false, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => false, 'exclude_from_search' => true, 'can_export' => true, 'query_var' => true, 'has_archive' => false, 'capability_type' => 'post', 'map_meta_cap' => true, 'hierarchical' => false, 'supports' => [ 'title', 'editor', 'revisions' ], /** * Removed because of a WPML issue, see #2335 'capabilities' => array( 'create_posts' => 'do_not_allow', ), */ ]; register_post_type( 'fusion_element', apply_filters( 'fusion_layout_element_args', $args ) ); $labels = [ 'name' => esc_attr__( 'Category', 'fusion-builder' ), ]; register_taxonomy( 'element_category', [ 'fusion_element' ], [ 'hierarchical' => true, 'labels' => $labels, 'publicly_queryable' => $is_builder, 'show_ui' => false, 'show_admin_column' => true, 'query_var' => true, 'show_in_nav_menus' => false, ] ); $labels = [ 'name' => esc_attr__( 'Category', 'fusion-builder' ), ]; register_taxonomy( 'template_category', [ 'fusion_template' ], [ 'hierarchical' => true, 'labels' => $labels, 'publicly_queryable' => $is_builder, 'show_ui' => false, 'show_admin_column' => false, 'query_var' => true, 'show_in_nav_menus' => false, ] ); $this->layouts_registered = true; } /** * Delete custom template or element. */ public function delete_layout() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( isset( $_POST['fusion_layout_id'] ) && '' !== $_POST['fusion_layout_id'] && current_user_can( 'delete_post', $_POST['fusion_layout_id'] ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $layout_id = (int) $_POST['fusion_layout_id']; $is_global = ( 'yes' === get_post_meta( $layout_id, '_fusion_is_global', true ) ? true : false ); if ( $is_global && ! current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_private_posts', 'avada_library', 'global_elements' ) ) ) { wp_send_json_error(); wp_die(); } wp_delete_post( $layout_id, true ); } wp_send_json_success(); wp_die(); } /** * Add custom template or element. * * @param string $post_type The post-type. * @param string $name The post-title. * @param string $content The post-content. * @param array $meta The post-meta. * @param array $taxonomy Taxonomies. * @param string $term Term. */ public function create_layout( $post_type, $name, $content, $meta = [], $taxonomy = [], $term = '' ) { if ( ! current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_posts', 'avada_library' ) ) ) { return; } $layout = [ 'post_title' => sanitize_text_field( $name ), 'post_content' => $content, 'post_status' => current_user_can( 'publish_posts' ) ? 'publish' : 'pending', 'post_type' => $post_type, ]; $layout_id = wp_insert_post( $layout ); if ( ! empty( $meta ) ) { foreach ( $meta as $meta_key => $meta_value ) { add_post_meta( $layout_id, $meta_key, sanitize_text_field( $meta_value ) ); } } if ( '' !== $term ) { wp_set_object_terms( $layout_id, $term, $taxonomy ); } do_action( 'fusion_builder_create_layout_after' ); return $layout_id; } /** * Save custom layout. */ public function save_layout() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( isset( $_POST['fusion_layout_name'] ) && '' !== $_POST['fusion_layout_name'] && current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_posts', 'avada_library' ) ) ) { $layout_name = wp_unslash( $_POST['fusion_layout_name'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $taxonomy = 'element_category'; $term = ''; $meta = []; $layout_type = ''; $global_data = ''; $global_type = [ 'elements' => 'element', 'columns' => 'column', 'sections' => 'container', 'post_cards' => 'post_card', 'mega_menus' => 'mega_menu', ]; if ( isset( $_POST['fusion_layout_post_type'] ) && '' !== $_POST['fusion_layout_post_type'] ) { $post_type = sanitize_text_field( wp_unslash( $_POST['fusion_layout_post_type'] ) ); // Make sure only our library post types can be created. $post_type_object = get_post_type_object( $post_type ); if ( ! current_user_can( $post_type_object->cap->edit_posts ) || ( 'fusion_template' !== $post_type && 'fusion_element' !== $post_type ) ) { return; } if ( isset( $_POST['fusion_current_post_id'] ) && '' !== $_POST['fusion_current_post_id'] ) { $post_id = wp_unslash( $_POST['fusion_current_post_id'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput } if ( isset( $_POST['fusion_layout_element_type'] ) && '' !== $_POST['fusion_layout_element_type'] ) { $meta['_fusion_element_type'] = wp_unslash( $_POST['fusion_layout_element_type'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $layout_type = ' fusion-element-type-' . wp_unslash( $_POST['fusion_layout_element_type'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput } if ( 'fusion_template' === $post_type ) { $meta['fusion_builder_status'] = 'active'; // Save custom css. if ( isset( $_POST['fusion_custom_css'] ) && '' !== $_POST['fusion_custom_css'] ) { $meta['_fusion_builder_custom_css'] = wp_unslash( $_POST['fusion_custom_css'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput } // Save page template. if ( isset( $_POST['fusion_page_template'] ) && '' !== $_POST['fusion_page_template'] ) { $meta['_wp_page_template'] = wp_unslash( $_POST['fusion_page_template'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput } // Save globals. $_POST['fusion_layout_content'] = apply_filters( 'content_save_pre', $_POST['fusion_layout_content'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput } // Globals. if ( isset( $_POST['fusion_save_global'] ) && 'false' !== $_POST['fusion_save_global'] && current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_private_posts', 'avada_library', 'global_elements' ) ) ) { $meta['_fusion_is_global'] = 'yes'; $global_data = 'fusion-global'; } else { $position = false; if ( isset( $_POST['fusion_layout_content'] ) ) { $position = strpos( sanitize_text_field( wp_unslash( $_POST['fusion_layout_content'] ) ), 'fusion_global' ); } if ( false !== $position ) { // Remove fusion_global attributes from content if it is simple library element. $_POST['fusion_layout_content'] = preg_replace( '/fusion_global=[^][^][0-9]*[^][^]/', '', wp_unslash( $_POST['fusion_layout_content'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput } } // Add Fusion Options to meta data. if ( isset( $_POST['fusion_options'] ) && '' !== wp_unslash( $_POST['fusion_options'] ) && is_array( wp_unslash( $_POST['fusion_options'] ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $_fusion_options = wp_unslash( $_POST['fusion_options'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( isset( $_POST['fusion_po_type'] ) && 'object' === $_POST['fusion_po_type'] ) { foreach ( $_fusion_options as $option => $value ) { $meta[ $option ] = $value; } } else { foreach ( $_fusion_options as $option ) { $meta[ $option[0] ] = $option[1]; } } } // Post category. if ( isset( $_POST['fusion_layout_new_cat'] ) && '' !== $_POST['fusion_layout_new_cat'] ) { $term = sanitize_text_field( wp_unslash( $_POST['fusion_layout_new_cat'] ) ); $global_type = $global_type[ $term ]; } $post_fusion_layout_content = ( isset( $_POST['fusion_layout_content'] ) ) ? wp_unslash( $_POST['fusion_layout_content'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $new_layout_id = $this->create_layout( $post_type, $layout_name, $post_fusion_layout_content, $meta, $taxonomy, $term ); if ( empty( $new_layout_id ) ) { die(); } ?>
  • location ) : ?>

    location ) : ?> location ) : ?> location ? get_edit_post_link( $new_layout_id ) : add_query_arg( 'fb-edit', '1', get_permalink( $new_layout_id ) ); ?> location ) : ?> location ) : ?>
  • location ) : ?> location ) : ?>
    location ) : ?> location ) : ?> location ) : ?> location ) : ?>
  • isset( $_GET['name'] ) ? sanitize_text_field( wp_unslash( $_GET['name'] ) ) : '', 'post_status' => current_user_can( 'publish_posts' ) ? 'publish' : 'pending', 'post_type' => $post_type, 'post_content' => $post_content, ]; // Set global if checked. if ( 'fusion_element' === $post_type && isset( $_GET['global'] ) && sanitize_text_field( wp_unslash( $_GET['global'] ) ) ) { $library_element['meta_input'] = [ '_fusion_is_global' => 'yes', ]; } $library_id = wp_insert_post( $library_element, true ); if ( is_wp_error( $library_id ) ) { $error_string = $library_id->get_error_message(); wp_die( esc_html( $error_string ) ); } // If we are adding element, add type. if ( 'fusion_element' === $post_type ) { $library_type = wp_set_object_terms( $library_id, $category, 'element_category' ); if ( is_wp_error( $library_type ) ) { $error_string = $library_type->get_error_message(); wp_die( esc_html( $error_string ) ); } } // if we are adding template. Set default width to 100%. if ( 'fusion_template' === $post_type ) { fusion_data()->post_meta( $library_id )->set( 'blog_width_100', 'yes' ); } // Just redirect to back-end editor. In future tie it to default editor option. wp_safe_redirect( awb_get_new_post_edit_link( $library_id ) ); die(); } /** * Load custom elements. */ public function load_custom_elements() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( isset( $_POST['cat'] ) && '' !== $_POST['cat'] ) { $cat = wp_unslash( $_POST['cat'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput // Query elements. $query = fusion_cached_query( [ 'post_status' => 'publish', 'post_type' => 'fusion_element', 'posts_per_page' => '-1', 'tax_query' => [ // phpcs:ignore WordPress.DB.SlowDBQuery [ 'taxonomy' => 'element_category', 'field' => 'slug', 'terms' => $cat, ], ], ] ); ?> set_import_options_from_request(); echo wp_json_encode( AWB_Studio_Import()->get_studio_content() ); wp_die(); } $data = []; $layout_id = (int) $_POST['fusion_layout_id']; $layout = get_post( $layout_id ); // Globals. if ( isset( $_POST['fusion_is_global'] ) && 'false' !== $_POST['fusion_is_global'] ) { $position = strpos( $layout->post_content, ']' ); if ( false !== $position ) { $layout->post_content = apply_filters( 'content_edit_pre', $layout->post_content, $layout->post_content, $layout_id ); $layout->post_content = substr_replace( $layout->post_content, ' fusion_global="' . $layout_id . '"]', $position, 1 ); } } if ( $layout ) { // Set page content. $data['post_content'] = apply_filters( 'content_edit_pre', $layout->post_content, $layout_id ); // Set page template. if ( 'fusion_template' === get_post_type( $layout_id ) ) { $page_template = get_post_meta( $layout_id, '_wp_page_template', true ); if ( isset( $page_template ) && ! empty( $page_template ) ) { $data['page_template'] = $page_template; } $custom_css = get_post_meta( $layout_id, '_fusion_builder_custom_css', true ); $data['post_meta'] = get_post_meta( $layout_id ); if ( isset( $custom_css ) && ! empty( $custom_css ) ) { $data['custom_css'] = $custom_css; } } } $json_data = wp_json_encode( $data ); die( $json_data ); // phpcs:ignore WordPress.Security.EscapeOutput } /** * Load custom page layout. */ public function load_demo() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( ! isset( $_POST['page_name'] ) && '' === $_POST['page_name'] ) { die( -1 ); } if ( ! isset( $_POST['demo_name'] ) && '' === $_POST['demo_name'] ) { die( -1 ); } if ( ! isset( $_POST['post_id'] ) && '' === $_POST['post_id'] ) { die( -1 ); } $data = []; $page_name = sanitize_text_field( wp_unslash( $_POST['page_name'] ) ); $demo_name = sanitize_text_field( wp_unslash( $_POST['demo_name'] ) ); $post_id = (int) $_POST['post_id']; $fusion_builder_demos = apply_filters( 'fusion_builder_get_demo_pages', [] ); if ( isset( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ] ) && ! empty( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ] ) ) { // Set page content. $data['post_content'] = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['content']; // Set page template. $page_template = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['page_template']; if ( isset( $page_template ) && ! empty( $page_template ) ) { $data['page_template'] = $page_template; } } if ( isset( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta'] ) && ! empty( $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta'] ) ) { $data['meta'] = $fusion_builder_demos[ $demo_name ]['pages'][ $page_name ]['meta']; } $json_data = wp_json_encode( $data ); die( $json_data ); // phpcs:ignore WordPress.Security.EscapeOutput } /** * Save custom layout. */ public function update_layout() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( isset( $_POST['fusion_layout_id'] ) && '' !== $_POST['fusion_layout_id'] && apply_filters( 'fusion_global_save', true, 'ajax' ) && current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_private_posts', 'avada_library', 'global_elements' ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $layout_id = wp_unslash( $_POST['fusion_layout_id'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $content = isset( $_POST['fusion_layout_content'] ) ? wp_unslash( $_POST['fusion_layout_content'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $to_replace = [ addslashes( ' fusion_global="' . $layout_id . '"' ), ' fusion_global="' . $layout_id . '"' ]; $content = str_replace( $to_replace, '', $content ); // Filter nested globals. $content = apply_filters( 'content_save_pre', $content, $content, $layout_id ); $post = [ 'ID' => $layout_id, 'post_content' => $content, ]; wp_update_post( $post ); } wp_die(); } /** * Get image URL from image ID. */ public function get_image_url() { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); if ( ! isset( $_POST['fusion_image_ids'] ) && '' === $_POST['fusion_image_ids'] ) { die( -1 ); } $data = []; $image_ids = wp_unslash( $_POST['fusion_image_ids'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput foreach ( $image_ids as $image_id ) { if ( '' !== $image_id ) { $image_url = wp_get_attachment_url( $image_id, 'thumbnail' ); $image_html = '
    '; $image_html .= ''; $image_html .= ''; $image_html .= '
    '; $data['images'][] = $image_html; } } $json_data = wp_json_encode( $data ); die( $json_data ); // phpcs:ignore WordPress.Security.EscapeOutput } /** * Process action for trash element. * * @since 1.0 * @return void */ public function trash_element() { if ( current_user_can( 'delete_published_pages' ) ) { $element_ids = ''; if ( isset( $_GET['post'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $element_ids = wp_unslash( $_GET['post'] ); // phpcs:ignore WordPress.Security } if ( '' !== $element_ids ) { $element_ids = (array) $element_ids; } if ( ! empty( $element_ids ) ) { foreach ( $element_ids as $id ) { wp_trash_post( $id ); } } } $referer = fusion_get_referer(); if ( $referer ) { wp_safe_redirect( $referer ); exit; } } /** * Process action for restore element. * * @since 1.0 * @return void */ public function restore_element() { if ( current_user_can( 'publish_pages' ) ) { $element_ids = ''; if ( isset( $_GET['post'] ) ) { // // phpcs:ignore WordPress.Security.NonceVerification $element_ids = wp_unslash( $_GET['post'] ); // phpcs:ignore WordPress.Security } if ( '' !== $element_ids ) { $element_ids = (array) $element_ids; } if ( ! empty( $element_ids ) ) { foreach ( $element_ids as $id ) { wp_untrash_post( $id ); } } } $referer = fusion_get_referer(); if ( $referer ) { wp_safe_redirect( $referer ); exit; } } /** * Process action for untrash element. * * @since 1.0 * @return void */ public function delete_element_post() { if ( current_user_can( 'delete_published_pages' ) ) { $element_ids = ''; if ( isset( $_GET['post'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $element_ids = wp_unslash( $_GET['post'] ); // phpcs:ignore WordPress.Security } if ( '' !== $element_ids ) { $element_ids = (array) $element_ids; } if ( ! empty( $element_ids ) ) { // Register taxonomies. $this->register_layouts(); foreach ( $element_ids as $id ) { wp_delete_post( $id, true ); } } } $referer = fusion_get_referer(); if ( $referer ) { wp_safe_redirect( $referer ); exit; } } /** * Get the library-edit link. * * @access public * @since 2.2.0 * @param int $id The post-ID. * @return string */ public function get_library_item_edit_link( $id ) { if ( 'front' === $this->location ) { return esc_url( add_query_arg( 'fb-edit', '1', get_the_permalink( $id ) ) ); } return esc_url_raw( htmlspecialchars_decode( get_edit_post_link( $id ) ) ); } /** * Display library content in builder. * * @since 1.0 * @return void */ public function display_library_content( $builder ) { global $post; $saved_post = $post; $post_type = get_query_var( 'post_type', get_post_type() ); $post_card = fusion_is_post_card(); $mega_menu = fusion_is_mega_menu(); ?>
    location ) : ?>

    registration->is_registered() ) : ?>

    registration->is_registered() ) : ?>

      global element.', 'fusion-builder' ), // phpcs:ignore WordPress.Security.EscapeOutput 'https://avada.com/documentation/avada-builder-library-global-elements/' ); ?>
      'publish', 'post_type' => 'fusion_element', 'posts_per_page' => '-1', 'tax_query' => [ // phpcs:ignore WordPress.DB.SlowDBQuery [ 'taxonomy' => 'element_category', 'field' => 'slug', 'terms' => 'sections', ], ], ] ); ?>
        have_posts() ) : $query->the_post(); $is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' ); global $post; ?>
      • location ) : ?>

        location ) : ?> location ) : ?> location ) : ?> location ) : ?>
      • location || ( 'front' !== $this->location && ! $query->have_posts() ) ) : ?>

        location ) : ?>

      global element.', 'fusion-builder' ), // phpcs:ignore WordPress.Security.EscapeOutput 'https://avada.com/documentation/avada-builder-library-global-elements/' ); ?>
      'publish', 'post_type' => 'fusion_element', 'posts_per_page' => '-1', 'tax_query' => [ // phpcs:ignore WordPress.DB.SlowDBQuery [ 'taxonomy' => 'element_category', 'field' => 'slug', 'terms' => 'columns', ], ], ] ); ?>
        have_posts() ) : ?> the_post(); $is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' ); global $post; ?>
      • location ) : ?>

        location ) : ?> location ) : ?> location ) : ?> location ) : ?>
      • location || ( 'front' !== $this->location && ! $query->have_posts() ) ) : ?>

        location ) : ?>

      global element.', 'fusion-builder' ), // phpcs:ignore WordPress.Security.EscapeOutput 'https://avada.com/documentation/avada-builder-library-global-elements/' ); ?>
      'publish', 'post_type' => 'fusion_element', 'posts_per_page' => '-1', 'tax_query' => [ // phpcs:ignore WordPress.DB.SlowDBQuery [ 'taxonomy' => 'element_category', 'field' => 'slug', 'terms' => 'elements', ], ], ] ); ?>
        have_posts() ) : $query->the_post(); $is_global = ( 'yes' === get_post_meta( get_the_ID(), '_fusion_is_global', true ) ? 'fusion-global' : '' ); global $post; $element_type = esc_attr( get_post_meta( $post->ID, '_fusion_element_type', true ) ); ?>
      • location ) : ?>

        location ) : ?> location ) : ?> location ) : ?> location ) : ?>
      • location || ( 'front' !== $this->location && ! $query->have_posts() ) ) : ?>

        location ) : ?>

      ' ); ?> location ) : ?> location ) : ?> location ) : ?> location ) : ?> location || ( 'front' !== $this->location && ! $query->have_posts() ) ) : ?>

      location ) : ?>

      post_content = fusion_is_preview_frame() ? $builder->front_end_content( $_post->post_content ) : $_post->post_content; $overrides['footer'] = $_post; } elseif ( has_term( 'page_title_bar', 'fusion_tb_category' ) ) { $_post->post_content = fusion_is_preview_frame() ? $builder->front_end_content( $_post->post_content ) : $_post->post_content; $overrides['page_title_bar'] = $_post; } elseif ( has_term( 'header', 'fusion_tb_category' ) ) { $_post->post_content = fusion_is_preview_frame() ? $builder->front_end_content( $_post->post_content ) : $_post->post_content; $overrides['header'] = $_post; } // Prevent main content being filtered. remove_filter( 'the_content', [ $builder, 'front_end_content' ], 99 ); remove_filter( 'body_class', [ $builder, 'body_class' ] ); remove_filter( 'do_shortcode_tag', [ $builder, 'create_shortcode_contents_map' ], 10, 4 ); // Create a dummy post to use as content. if ( ! isset( $overrides['content'] ) ) { $overrides['content'] = Fusion_Dummy_Post::get_dummy_post(); } } else { // Reset the content override because we are editing content directly. if ( isset( $overrides['content'] ) ) { $overrides['content'] = false; } } } return $overrides; } /** * Copies taxonomies. * * @access public * @param array $taxonomies Taxonomies. * @return array * @since 3.1 */ public function copy_taxonomies( $taxonomies ) { $taxonomies[] = 'element_category'; return $taxonomies; } /** * Saves a new element. * * @access public * @since 3.3 */ public function clone_library_element() { if ( ! ( isset( $_GET['item'] ) || isset( $_POST['item'] ) || ( isset( $_REQUEST['action'] ) && 'clone_library_element' === $_REQUEST['action'] ) ) ) { // phpcs:ignore WordPress.Security wp_die( esc_attr__( 'No element to clone.', 'fusion-builder' ) ); } if ( isset( $_REQUEST['_fusion_library_clone_nonce'] ) && check_admin_referer( 'clone_element', '_fusion_library_clone_nonce' ) && current_user_can( 'edit_others_posts' ) ) { // Get the post being copied. $id = isset( $_GET['item'] ) ? wp_unslash( $_GET['item'] ) : wp_unslash( $_POST['item'] ); // phpcs:ignore WordPress.Security $post = get_post( $id ); // Copy the section and insert it. if ( isset( $post ) && $post ) { $this->clone_element( $post ); // Redirect to the all sections screen. wp_safe_redirect( admin_url( 'admin.php?page=avada-library' ) ); exit; } else { /* translators: The ID not found. */ wp_die( sprintf( esc_attr__( 'Cloning failed. Element not found. ID: %s', 'fusion-builder' ), htmlspecialchars( $id ) ) ); // phpcs:ignore WordPress.Security } } } /** * Clones a section. * * @access public * @since 3.3 * @param object $post The post object. * @return int */ public function clone_element( $post ) { // Ignore revisions. if ( 'revision' === $post->post_type ) { return; } $post_meta = fusion_data()->post_meta( $post->ID )->get_all_meta(); $new_post_parent = $post->post_parent; $new_post = [ 'menu_order' => $post->menu_order, 'comment_status' => $post->comment_status, 'ping_status' => $post->ping_status, 'post_author' => $post->post_author, 'post_content' => $post->post_content, 'post_excerpt' => $post->post_excerpt, 'post_mime_type' => $post->post_mime_type, 'post_parent' => $new_post_parent, 'post_password' => $post->post_password, 'post_status' => 'publish', /* translators: The post title. */ 'post_title' => sprintf( esc_attr__( '%s ( Cloned )', 'fusion-builder' ), $post->post_title ), 'post_type' => $post->post_type, ]; // Add new section post. $new_post_id = wp_insert_post( $new_post ); // Set a proper slug. $post_name = wp_unique_post_slug( $post->post_name, $new_post_id, 'publish', $post->post_type, $new_post_parent ); $new_post = []; $new_post['ID'] = $new_post_id; $new_post['post_name'] = $post_name; wp_update_post( $new_post ); $taxonomy = 'fusion_element' === $post->post_type ? 'element_category' : 'template_category'; // Post terms. wp_set_object_terms( $new_post_id, wp_get_object_terms( $post->ID, $taxonomy, [ 'fields' => 'ids' ] ), $taxonomy ); // Clone section meta. if ( ! empty( $post_meta ) ) { foreach ( $post_meta as $key => $val ) { fusion_data()->post_meta( $new_post_id )->set( $key, $val ); } } return $new_post_id; } /** * Checks if footer should be rendered in Live Builder. * * @param string $default The default value. * @param string $page_id The page ID. * @return boolean */ public function should_render_footer( $default, $page_id ) { return $this->should_render_for_template( 'live_footer', $default, $page_id ); } /** * Checks if header should be rendered in Live Builder. * * @param string $default The default value. * @param string $page_id The page ID. * @return boolean */ public function should_render_header( $default, $page_id ) { return $this->should_render_for_template( 'live_header', $default, $page_id ); } /** * Checks if page title bar should be rendered in Live Builder. * * @param string $default The default value. * @param string $page_id The page ID. * @return boolean */ public function should_render_page_title_bar( $default, $page_id ) { return $this->should_render_for_template( 'live_ptb', $default, $page_id ); } /** * Checks if specific section should be rendered based on PO. * * @param string $type The render type. * @param string $default The default value. * @param string $page_id The page ID. * @return boolean */ public function should_render_for_template( $type, $default, $page_id ) { $is_builder = ( function_exists( 'fusion_is_preview_frame' ) && fusion_is_preview_frame() ) || ( function_exists( 'fusion_is_builder_frame' ) && fusion_is_builder_frame() ); $post_type = get_post_type( $page_id ); if ( $is_builder && 'fusion_template' === $post_type ) { $should_show = fusion_data()->post_meta( $page_id )->get( $type ); $default = empty( $should_show ) || 'no' === $should_show ? false : $default; } return $default; } } /** * Instantiates the Fusion_Builder_Library class. * Make sure the class is properly set-up. * * @since object 2.2 * @return object Fusion_Builder_Library */ function Fusion_Builder_Library() { // phpcs:ignore WordPress.NamingConventions return Fusion_Builder_Library::get_instance(); } Fusion_Builder_Library();