File "option.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/anywhere-elementor-pro.2.15.5/includes/modules/ae-dynamic/option.php
File
size: 5.82 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
namespace Aepro\Modules\AeDynamic;
use Aepro\Aepro;
use Elementor\Controls_Manager;
use Elementor\Core\DynamicTags\Tag;
use Elementor\Plugin;
use Aepro\Classes\AcfMaster;
use Aepro\Frontend;
class Option extends Tag
{
public function get_name()
{
return 'ae-option';
}
public function get_title()
{
return __('Repeater Option', 'ae-pro');
}
public function get_group()
{
return 'acf';
}
public function get_categories()
{
return [
\Elementor\Modules\DynamicTags\Module::TEXT_CATEGORY,
\Elementor\Modules\DynamicTags\Module::POST_META_CATEGORY,
];
}
public function get_panel_template_setting_key()
{
return 'key';
}
protected function _register_controls()
{
DynamicHelper::instance()->ae_get_group_fields($this, $this->get_supported_fields());
$this->add_control(
'display_data',
[
'label' => __('Display Data', 'ae-pro'),
'type' => Controls_Manager::SELECT,
'options' => [
'key' => __('Key', 'ae-pro'),
'value' => __('Value', 'ae-pro')
],
'default' => 'value',
]
);
$this->add_control(
'separator',
[
'label' => __('Separator', 'ae-pro'),
'type' => Controls_Manager::TEXT,
'default' => ',',
'render_type' => 'template',
]
);
}
public function get_supported_fields()
{
return [
'select',
'checkbox',
'radio',
'true_false',
'button_group',
// Pro
];
}
public function render()
{
$settings = $this->get_settings();
if(!empty($settings['acf_repeater'])){
$repeater_data = explode(':', $settings['acf_repeater']);
}
if(!empty($repeater_data[0]) && !empty($repeater_data[1]) && !empty($repeater_data[2])){
$repeater_is = $repeater_data[0];
$repeater = $repeater_data[2];
$field_name = $settings[$repeater_data[1] . ':' . $repeater_data[2]];
}
if (!empty($repeater)) {
$value = '';
$separator = '';
if (!Frontend::$_in_repeater_block) {
// echo 'editor';
if ($repeater_is == 'option') {
$field_object = get_field_object($repeater, 'option');
$repeater_field = get_field($repeater, 'option');
if(!empty($field_name)){
$field_data = acf_get_sub_field($field_name, $field_object);
$selected = $repeater_field[0][$field_name];
}
if(!empty($field_data)){
$choices = $field_data['choices'];
}
$separator = $settings['separator'];
if(!empty($choices)){
if ($settings['display_data'] == 'value') {
$value = $this->show_value($choices, $selected, $separator);
} else {
$value = $this->show_key($choices, $selected, $separator);
}
}
} else {
$post_data = Aepro::$_helper->get_demo_post_data();
$post_id = $post_data->ID;
$field_object = get_field_object($repeater, $post_id);
$repeater_field = get_field($repeater, $post_id, true);
if(!empty($field_name)){
$field_data = acf_get_sub_field($field_name, $field_object);
$selected = $repeater_field[0][$field_name];
}
if(!empty($field_data)){
$choices = $field_data['choices'];
}
$separator = $settings['separator'];
if(!empty($choices)){
if ($settings['display_data'] == 'value') {
$value = $this->show_value($choices, $selected, $separator);
} else {
$value = $this->show_key($choices, $selected, $separator);
}
}
}
} else {
// echo 'frontend';
if(!empty($field_name)){
$field_object = get_sub_field_object($field_name, true);
$selected = get_sub_field($field_name, true);
}
if(!empty($field_object)){
$choices = $field_object['choices'];
}
$separator = $settings['separator'];
if(!empty($choices)){
if ($settings['display_data'] == 'value') {
$value = $this->show_value($choices, $selected, $separator);
} else {
$value = $this->show_key($choices, $selected, $separator);
}
}
}
echo $value;
}
}
function show_value($choices, $selected, $selector)
{
$value = '';
if (is_array($selected)) {
//echo 'value array';
$selected_item = [];
foreach ($choices as $key => $choice) {
if (in_array($key, $selected, true)) {
$selected_item[] = $choice;
}
}
$value = implode($selector, $selected_item);
} else {
foreach ($choices as $key => $choice) {
if ($key === $selected) {
$value = $choice;
}
}
}
return $value;
}
function show_key($choices, $selected, $selector)
{
$value = '';
//print_r($selected);
if (is_array($selected)) {
$selected_item = [];
foreach ($choices as $key => $choice) {
if (in_array($key, $selected)) {
$selected_item[] = $key;
}
}
$value = implode($selector, $selected_item);
} else {
foreach ($choices as $key => $choice) {
if ($key === $selected) {
$value = $key;
}
}
}
return $value;
}
}