PATH:
home
/
letacommog
/
camarsac
/
wp-content
/
plugins
/
jet-engine
/
includes
/
compatibility
/
packages
<?php /** * Class description * * @package package_name * @author Cherry Team * @license GPL-2.0+ */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } if ( ! class_exists( 'Jet_Engine_Meta_Box_Package' ) ) { /** * Define Jet_Engine_Meta_Box_Package class */ class Jet_Engine_Meta_Box_Package { private $meta_boxes = array(); public function __construct() { add_filter( 'rwmb_meta_boxes', array( $this, 'get_meta_boxes' ), 99999 ); add_filter( 'jet-engine/listings/data/sources', array( $this, 'add_field_source' ) ); add_filter( 'jet-engine/listings/dynamic-image/fields', array( $this, 'add_field_source' ) ); add_filter( 'jet-engine/listings/dynamic-link/fields', array( $this, 'add_field_source' ) ); add_action( 'jet-engine/listings/dynamic-field/source-controls', array( $this, 'field_controls' ) ); add_action( 'jet-engine/listings/dynamic-link/source-controls', array( $this, 'link_controls' ) ); add_action( 'jet-engine/listings/dynamic-image/source-controls', array( $this, 'image_controls' ) ); add_action( 'jet-engine/listings/dynamic-image/link-source-controls', array( $this, 'linked_image_controls' ) ); add_filter( 'jet-engine/listings/dynamic-image/custom-image', array( $this, 'image_render' ), 10, 2 ); add_filter( 'jet-engine/listings/dynamic-image/custom-url', array( $this, 'image_url_render' ), 10, 2 ); add_filter( 'jet-engine/listings/dynamic-link/custom-url', array( $this, 'link_render' ), 10, 2 ); add_filter( 'jet-engine/listings/dynamic-field/field-value', array( $this, 'field_render' ), 10, 2 ); if ( class_exists( 'RWMB_Group' ) ) { add_filter( 'jet-engine/listing/repeater-sources', array( $this, 'add_repeater_source' ) ); add_filter( 'jet-engine/listings/data/repeater-value/metabox_io', array( $this, 'repeater_val' ), 10, 5 ); } } /** * Returns nested repeater value * * @param [type] $value [description] * @param [type] $object [description] * @param [type] $source_field [description] * @param [type] $field [description] * @param [type] $index [description] * @return [type] [description] */ public function repeater_val( $value, $object, $source_field, $field, $index = 0 ) { if ( ! $object->ID || ! $source_field ) { return $value; } $value = get_post_meta( $object->ID, $source_field, true ); if ( empty( $value ) || empty( $value[ $index ] ) ) { return false; } $value = isset( $value[ $index ][ $field ] ) ? $value[ $index ][ $field ] : false; return $value; } /** * Metabox repeater source */ public function add_repeater_source( $sources ) { $sources['metabox_io'] = __( 'MetaBox.io', 'jet-engine' ); return $sources; } /** * Store metbaxes list to use it in controls * * @param array $meta_boxes [description] * @return [type] [description] */ public function get_meta_boxes( $meta_boxes = array() ) { $raw = $meta_boxes; foreach ( $raw as $meta_box ) { $fields = array(); if ( ! empty( $meta_box['fields'] ) ) { foreach ( $meta_box['fields'] as $field ) { $fields[ $field['id'] ] = $field; } } $meta_box['fields'] = $fields; $this->meta_boxes[] = $meta_box; } return $meta_boxes; } /** * Add field source */ public function add_field_source( $sources ) { $sources['mb_field_groups'] = __( 'Meta Box', 'jet-engine' ); return $sources; } /** * Render field * * @param [type] $result [description] * @param array $settings [description] * @return [type] [description] */ public function field_render( $result, $settings = array() ) { $key = isset( $settings['mb_field_key'] ) ? $settings['mb_field_key'] : false; if ( ! $key ) { return $result; } return jet_engine()->listings->data->get_meta( $key ); } /** * Return custom image for Meta Box * * @param [type] $result [description] * @param [type] $settings [description] * @return [type] [description] */ public function image_render( $result, $settings ) { if ( 'mb_field_groups' !== $settings['dynamic_image_source'] ) { return $result; } $key = isset( $settings['mb_field_key'] ) ? $settings['mb_field_key'] : false; if ( ! $key ) { return $result; } $image = jet_engine()->listings->data->get_meta( $key ); if ( ! $image ) { return $result; } $size = isset( $settings['dynamic_image_size'] ) ? $settings['dynamic_image_size'] : 'full'; if ( filter_var( $image, FILTER_VALIDATE_URL ) ) { return sprintf( '<img src="%1$s" alt="%2$s">', $image, '' ); } else { return wp_get_attachment_image( $image, $size, false ); } } /** * Return custom image URL for Meta Box * * @param [type] $url [description] * @param array $settings [description] * @return [type] [description] */ public function image_url_render( $url, $settings = array() ) { $custom = ! empty( $settings['image_link_source_custom'] ) ? $settings['image_link_source_custom'] : false; if ( $custom ) { return $url; } $key = isset( $settings['mb_link_field_key'] ) ? $settings['mb_link_field_key'] : false; if ( ! $key ) { return $url; } $val = jet_engine()->listings->data->get_meta( $key ); if ( 0 < absint( $val ) ) { return get_permalink( $val ); } else { return $val; } } /** * Return custom image URL for Meta Box * * @param [type] $url [description] * @param array $settings [description] * @return [type] [description] */ public function link_render( $url, $settings = array() ) { $custom = $settings['dynamic_link_source_custom']; if ( $custom ) { return $url; } $key = isset( $settings['mb_field_key'] ) ? $settings['mb_field_key'] : false; if ( ! $key ) { return $url; } $val = jet_engine()->listings->data->get_meta( $key ); if ( 0 < absint( $val ) ) { return get_permalink( $val ); } else { return $val; } } /** * Image controls * * @return [type] [description] */ public function image_controls( $widget ) { $this->add_control( $widget, array( 'group' => 'images', 'condition' => array( 'dynamic_image_source' => 'mb_field_groups', ), ) ); } public function linked_image_controls( $widget ) { $this->add_control( $widget, array( 'id' => 'mb_link_field_key', 'group' => 'links', 'condition' => array( 'linked_image' => 'yes', 'image_link_source' => 'mb_field_groups', ), ) ); } public function link_controls( $widget ) { $this->add_control( $widget, array( 'group' => 'links', 'condition' => array( 'dynamic_link_source' => 'mb_field_groups', ), ) ); } /** * Field controls * * @return [type] [description] */ public function field_controls( $widget ) { $this->add_control( $widget, array( 'group' => 'fields', 'condition' => array( 'dynamic_field_source' => 'mb_field_groups', ), ) ); } public function add_control( $widget, $args = array() ) { $group = isset( $args['group'] ) ? $args['group'] : 'fields'; $condition = isset( $args['condition'] ) ? $args['condition'] : array(); $id = isset( $args['id'] ) ? $args['id'] : 'mb_field_key'; $widget->add_control( $id, array( 'label' => __( 'Meta Box Field', 'jet-engine' ), 'type' => Elementor\Controls_Manager::SELECT, 'default' => '', 'groups' => $this->get_fields_goups( $group ), 'condition' => $condition, ) ); } public function get_fields_goups( $group = 'fields' ) { $cb = array( 'fields' => 'map_fields', 'images' => 'map_images', 'links' => 'map_links', ); $groups = $this->meta_boxes; $result = array(); if ( empty( $groups ) ) { return $result; } foreach ( $groups as $data ) { $fields = array_filter( array_map( array( $this, $cb[ $group ] ), $data['fields'] ) ); if ( ! empty( $fields ) ) { $result[] = array( 'label' => $data['title'], 'options' => $fields, ); } } return $result; } /** * Map images callback * * @param [type] $field [description] * @return [type] [description] */ public function map_images( $field ) { $whitelisted = $this->whitelisted_fields(); $type = $field['type']; if ( ! isset( $whitelisted[ $type ] ) ) { return false; } if ( ! in_array( 'image', $whitelisted[ $type ] ) ) { return false; } else { return $field['name']; } } /** * Map links callback * * @param [type] $field [description] * @return [type] [description] */ public function map_links( $field ) { $whitelisted = $this->whitelisted_fields(); $type = $field['type']; if ( ! isset( $whitelisted[ $type ] ) ) { return false; } if ( ! in_array( 'link', $whitelisted[ $type ] ) ) { return false; } else { return $field['name']; } } /** * Map fields callback * * @param [type] $field [description] * @return [type] [description] */ public function map_fields( $field ) { $whitelisted = $this->whitelisted_fields(); $type = $field['type']; if ( ! isset( $whitelisted[ $type ] ) ) { return false; } if ( ! in_array( 'field', $whitelisted[ $type ] ) ) { return false; } else { return $field['name']; } } /** * Returns whitelisted fields * * @return [type] [description] */ public function whitelisted_fields() { return array( 'text' => array( 'field' ), 'textarea' => array( 'field' ), 'url' => array( 'field', 'link' ), 'number' => array( 'field' ), 'range' => array( 'field' ), 'email' => array( 'field', 'link' ), 'wysiwyg' => array( 'field' ), 'image_advanced' => array( 'link', 'image' ), 'image_select' => array( 'link', 'image' ), 'map' => array( 'field' ), 'select' => array( 'field' ), 'radio' => array( 'field' ), 'post' => array( 'field', 'link' ), 'taxonomy' => array( 'field', 'link' ), 'datetime' => array( 'field' ), 'date' => array( 'field' ), 'time' => array( 'field' ), ); } } } new Jet_Engine_Meta_Box_Package();
[+]
..
[-] wcfm.php
[edit]
[-] polylang.php
[edit]
[-] wpml.php
[edit]
[-] meta-box.php
[edit]
[-] elementor-pro.php
[edit]
[-] acf.php
[edit]
[-] woocommerce.php
[edit]
[-] crocoblock-wizard.php
[edit]
[-] jet-popup.php
[edit]
[-] jet-theme-core.php
[edit]
[-] jet-smart-filters.php
[edit]