<?php
namespace Elementor;
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
abstract class Jet_Elements_Base extends Widget_Base {
public $_context = 'render';
public $_processed_item = false;
public $_processed_index = 0;
public $_load_level = 100;
public $_include_controls = [];
public $_exclude_controls = [];
public $_new_icon_prefix = 'selected_';
/**
* [__construct description]
* @param array $data [description]
* @param [type] $args [description]
*/
public function __construct( $data = [], $args = null ) {
parent::__construct( $data, $args );
$this->_load_level = (int)jet_elements_settings()->get( 'widgets_load_level', 100 );
$widget_name = $this->get_name();
$this->_include_controls = apply_filters( "jet-elements/editor/{$widget_name}/include-controls", [], $widget_name, $this );
$this->_exclude_controls = apply_filters( "jet-elements/editor/{$widget_name}/exclude-controls", [], $widget_name, $this );
}
/**
* [get_jet_help_url description]
* @return [type] [description]
*/
public function get_jet_help_url() {
return false;
}
/**
* [get_help_url description]
* @return [type] [description]
*/
public function get_help_url() {
$url = $this->get_jet_help_url();
$style_parent_theme = wp_get_theme( get_template() );
$author_slug = strtolower( preg_replace('/\s+/', '', $style_parent_theme->get('Author') ) );
if ( ! empty( $url ) ) {
return add_query_arg(
array(
'utm_source' => $author_slug,
'utm_medium' => 'jetelements' . '_' . $this->get_name(),
'utm_campaign' => 'need-help',
),
esc_url( $url )
);
}
return false;
}
/**
* @deprecated 2.2.15
*/
public function __get_global_template( $name = null ) {
_deprecated_function( __METHOD__, '2.2.15', __CLASS__ . '::_get_global_template()' );
return $this->_get_global_template( $name );
}
/**
* Get globaly affected template
*
* @param [type] $name [description]
* @return [type] [description]
*/
public function _get_global_template( $name = null ) {
$template = call_user_func( array( $this, sprintf( '_get_%s_template', $this->_context ) ), $name );
if ( ! $template ) {
$template = jet_elements()->get_template( $this->get_name() . '/global/' . $name . '.php' );
}
return $template;
}
/**
* Get front-end template
* @param [type] $name [description]
* @return [type] [description]
*/
public function _get_render_template( $name = null ) {
return jet_elements()->get_template( $this->get_name() . '/render/' . $name . '.php' );
}
/**
* Get editor template
* @param [type] $name [description]
* @return [type] [description]
*/
public function _get_edit_template( $name = null ) {
return jet_elements()->get_template( $this->get_name() . '/edit/' . $name . '.php' );
}
/**
* @deprecated 2.2.15
*/
public function __get_global_looped_template( $name = null, $setting = null, $callback = null ) {
_deprecated_function( __METHOD__, '2.2.15', __CLASS__ . '::_get_global_looped_template()' );
$this->_get_global_looped_template( $name, $setting, $callback );
}
/**
* Get global looped template for settings
* Required only to process repeater settings.
*
* @param string $name Base template name.
* @param string $setting Repeater setting that provide data for template.
* @param string $callback Callback for preparing a loop array
* @return void
*/
public function _get_global_looped_template( $name = null, $setting = null, $callback = null ) {
$templates = array(
'start' => $this->_get_global_template( $name . '-loop-start' ),
'loop' => $this->_get_global_template( $name . '-loop-item' ),
'end' => $this->_get_global_template( $name . '-loop-end' ),
);
call_user_func(
array( $this, sprintf( '_get_%s_looped_template', $this->_context ) ), $templates, $setting, $callback
);
}
/**
* Get render mode looped template
*
* @param array $templates [description]
* @param string $setting [description]
* @param string $callback Callback for preparing a loop array
* @return void
*/
public function _get_render_looped_template( $templates = array(), $setting = null, $callback = null ) {
$loop = $this->get_settings_for_display( $setting );
$loop = apply_filters( 'jet-elements/widget/loop-items', $loop, $setting, $this );
if ( empty( $loop ) ) {
return;
}
if ( $callback && is_callable( $callback ) ) {
$loop = call_user_func( $callback, $loop );
}
if ( ! empty( $templates['start'] ) ) {
include $templates['start'];
}
foreach ( $loop as $item ) {
$this->_processed_item = $item;
if ( ! empty( $templates['loop'] ) ) {
include $templates['loop'];
}
$this->_processed_index++;
}
$this->_processed_item = false;
$this->_processed_index = 0;
if ( ! empty( $templates['end'] ) ) {
include $templates['end'];
}
}
/**
* Get edit mode looped template
*
* @param array $templates [description]
* @param [type] $setting [description]
* @return [type] [description]
*/
public function _get_edit_looped_template( $templates = array(), $setting = null ) {
?>
<# if ( settings.<?php echo $setting; ?> ) { #>
<?php
if ( ! empty( $templates['start'] ) ) {
include $templates['start'];
}
?>
<# _.each( settings.<?php echo $setting; ?>, function( item ) { #>
<?php
if ( ! empty( $templates['loop'] ) ) {
include $templates['loop'];
}
?>
<# } ); #>
<?php
if ( ! empty( $templates['end'] ) ) {
include $templates['end'];
}
?>
<# } #>
<?php
}
/**
* @deprecated 2.2.15
*/
public function __loop_item( $keys = array(), $format = '%s' ) {
_deprecated_function( __METHOD__, '2.2.15', __CLASS__ . '::_loop_item()' );
return $this->_loop_item( $keys, $format );
}
/**
* Get current looped item dependends from context.
*
* @param string $key Key to get from processed item
* @return mixed
*/
public function _loop_item( $keys = array(), $format = '%s' ) {
return call_user_func( array( $this, sprintf( '_%s_loop_item', $this->_context ) ), $keys, $format );
}
/**
* Loop edit item
*
* @param [type] $keys [description]
* @param string $format [description]
* @param boolean $nested_key [description]
* @return [type] [description]
*/
public function _edit_loop_item( $keys = array(), $format = '%s' ) {
$settings = $keys[0];
if ( isset( $keys[1] ) ) {
$settings .= '.' . $keys[1];
}
ob_start();
echo '<# if ( item.' . $settings . ' ) { #>';
printf( $format, '{{{ item.' . $settings . ' }}}' );
echo '<# } #>';
return ob_get_clean();
}
/**
* Loop render item
*
* @param string $format [description]
* @param [type] $key [description]
* @param boolean $nested_key [description]
* @return [type] [description]
*/
public function _render_loop_item( $keys = array(), $format = '%s' ) {
$item = $this->_processed_item;
$key = $keys[0];
$nested_key = isset( $keys[1] ) ? $keys[1] : false;
if ( empty( $item ) || ! isset( $item[ $key ] ) ) {
return false;
}
if ( false === $nested_key || ! is_array( $item[ $key ] ) ) {
$value = $item[ $key ];
} else {
$value = isset( $item[ $key ][ $nested_key ] ) ? $item[ $key ][ $nested_key ] : false;
}
if ( ! empty( $value ) ) {
return sprintf( $format, $value );
}
}
/**
* @deprecated 2.2.15
*/
public function __glob_inc_if( $name = null, $settings = array() ) {
_deprecated_function( __METHOD__, '2.2.15', __CLASS__ . '::_glob_inc_if()' );
$this->_glob_inc_if( $name, $settings );
}
/**
* Include global template if any of passed settings is defined
*
* @param [type] $name [description]
* @param [type] $settings [description]
* @return [type] [description]
*/
public function _glob_inc_if( $name = null, $settings = array() ) {
$template = $this->_get_global_template( $name );
call_user_func( array( $this, sprintf( '_%s_inc_if', $this->_context ) ), $template, $settings );
}
/**
* Include render template if any of passed setting is not empty
*
* @param [type] $file [description]
* @param [type] $settings [description]
* @return [type] [description]
*/
public function _render_inc_if( $file = null, $settings = array() ) {
foreach ( $settings as $setting ) {
$val = $this->get_settings_for_display( $setting );
if ( ! empty( $val ) ) {
include $file;
return;
}
}
}
/**
* Include render template if any of passed setting is not empty
*
* @param [type] $file [description]
* @param [type] $settings [description]
* @return [type] [description]
Loading ...