/
var
/
www
/
barefootlaw.org
/
wp-content
/
plugins
/
happy-elementor-addons
/
classes
/
Upload File
HOME
<?php namespace Happy_Addons\Elementor; defined( 'ABSPATH' ) || die(); use WPML_PB_String; use IWPML_Page_Builders_Module; use WPML_Elementor_Translatable_Nodes; /** * Class WPML_Module_With_Items */ abstract class WPML_Module_With_Items implements IWPML_Page_Builders_Module { /** * @param string $field * * @return string */ abstract protected function get_title( $field ); /** @return array */ abstract protected function get_fields(); /** * @param string $field * * @return string mixed */ abstract protected function get_editor_type( $field ); /** * @return string */ abstract public function get_items_field(); /** * @param string|int $node_id * @param array $element * @param WPML_PB_String[] $strings * * @return WPML_PB_String[] */ public function get( $node_id, $element, $strings ) { foreach ( $this->get_items( $element ) as $item ) { foreach( $this->get_fields() as $key => $field ) { if ( ! is_array( $field ) ) { if ( ! isset( $item[ $field ] ) ) { continue; } $strings[] = new WPML_PB_String( $item[ $field ], $this->get_string_name( $node_id, $item[ $field ], $field, $element['widgetType'], $item['_id'] ), $this->get_title( $field ), $this->get_editor_type( $field ) ); } else { foreach ( $field as $inner_field ) { if ( ! isset( $item[ $key ][ $inner_field ] ) ) { continue; } $strings[] = new WPML_PB_String( $item[ $key ][ $inner_field ], $this->get_string_name( $node_id, $item[ $key ][ $inner_field ], $key . '_' . $inner_field, $element['widgetType'], $item['_id'] ), $this->get_title( $key ), $this->get_editor_type( $key ) ); } } } } return $strings; } /** * @param int|string $node_id * @param mixed $element * @param WPML_PB_String $string * * @return mixed */ public function update( $node_id, $element, WPML_PB_String $string ) { foreach ( $this->get_items( $element ) as $key => $item ) { foreach( $this->get_fields() as $field_key => $field ) { if ( ! is_array( $field ) ) { if ( ! isset( $item[ $field ] ) ) { continue; } if ( $this->get_string_name( $node_id, $item[ $field ], $field, $element['widgetType'], $item['_id'] ) === $string->get_name() ) { $item[ $field ] = $string->get_value(); $item['index'] = $key; return $item; } } else { foreach ( $field as $inner_field ) { if ( ! isset( $item[ $field_key ][ $inner_field ] ) ) { continue; } if ( $this->get_string_name( $node_id, $item[ $field_key ][ $inner_field ], $field_key . '_' . $inner_field, $element['widgetType'], $item['_id'] ) === $string->get_name() ) { $item[ $field_key ][ $inner_field ] = $string->get_value(); $item['index'] = $key; return $item; } } } } } } /** * @param string $node_id * @param string $value * @param string $type * @param string $key * @param string $item_id * * @return string */ private function get_string_name( $node_id, $value, $type, $key = '', $item_id = '' ) { return $key . '-' . $type . '-' . $node_id . '-' . $item_id; } /** * @param $element * * @return mixed */ public function get_items( $element ) { return $element[ WPML_Elementor_Translatable_Nodes::SETTINGS_FIELD ][ $this->get_items_field() ]; } }