159 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace Elementor;
 | |
| 
 | |
| if ( ! defined( 'ABSPATH' ) ) {
 | |
| 	exit; // Exit if accessed directly.
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Elementor repeater element.
 | |
|  *
 | |
|  * Elementor repeater handler class is responsible for initializing the repeater.
 | |
|  *
 | |
|  * @since 1.0.0
 | |
|  */
 | |
| class Repeater extends Element_Base {
 | |
| 
 | |
| 	/**
 | |
| 	 * Repeater counter.
 | |
| 	 *
 | |
| 	 * Holds the Repeater counter data. Default is `0`.
 | |
| 	 *
 | |
| 	 * @since 1.0.0
 | |
| 	 * @access private
 | |
| 	 * @static
 | |
| 	 *
 | |
| 	 * @var int Repeater counter.
 | |
| 	 */
 | |
| 	private static $counter = 0;
 | |
| 
 | |
| 	/**
 | |
| 	 * Holds the count of the CURRENT instance
 | |
| 	 *
 | |
| 	 * @var int
 | |
| 	 */
 | |
| 	private $id;
 | |
| 
 | |
| 	/**
 | |
| 	 * Repeater constructor.
 | |
| 	 *
 | |
| 	 * Initializing Elementor repeater element.
 | |
| 	 *
 | |
| 	 * @since 1.0.7
 | |
| 	 * @access public
 | |
| 	 *
 | |
| 	 * @param array      $data Optional. Element data. Default is an empty array.
 | |
| 	 * @param array|null $args Optional. Element default arguments. Default is null.
 | |
| 	 *
 | |
| 	 */
 | |
| 	public function __construct( array $data = [], array $args = null ) {
 | |
| 		self::$counter++;
 | |
| 
 | |
| 		$this->id = self::$counter;
 | |
| 
 | |
| 		parent::__construct( $data, $args );
 | |
| 
 | |
| 		$this->add_control(
 | |
| 			'_id',
 | |
| 			[
 | |
| 				'type' => Controls_Manager::HIDDEN,
 | |
| 			]
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get repeater name.
 | |
| 	 *
 | |
| 	 * Retrieve the repeater name.
 | |
| 	 *
 | |
| 	 * @since 1.0.7
 | |
| 	 * @access public
 | |
| 	 *
 | |
| 	 * @return string Repeater name.
 | |
| 	 */
 | |
| 	public function get_name() {
 | |
| 		return 'repeater-' . $this->id;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get repeater type.
 | |
| 	 *
 | |
| 	 * Retrieve the repeater type.
 | |
| 	 *
 | |
| 	 * @since 1.0.0
 | |
| 	 * @access public
 | |
| 	 * @static
 | |
| 	 *
 | |
| 	 * @return string Repeater type.
 | |
| 	 */
 | |
| 	public static function get_type() {
 | |
| 		return 'repeater';
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Add new repeater control to stack.
 | |
| 	 *
 | |
| 	 * Register a repeater control to allow the user to set/update data.
 | |
| 	 *
 | |
| 	 * This method should be used inside `register_controls()`.
 | |
| 	 *
 | |
| 	 * @since 1.0.0
 | |
| 	 * @access public
 | |
| 	 *
 | |
| 	 * @param string $id      Repeater control ID.
 | |
| 	 * @param array  $args    Repeater control arguments.
 | |
| 	 * @param array  $options Optional. Repeater control options. Default is an
 | |
| 	 *                        empty array.
 | |
| 	 *
 | |
| 	 * @return bool True if repeater control added, False otherwise.
 | |
| 	 */
 | |
| 	public function add_control( $id, array $args, $options = [] ) {
 | |
| 		$current_tab = $this->get_current_tab();
 | |
| 
 | |
| 		if ( null !== $current_tab ) {
 | |
| 			$args = array_merge( $args, $current_tab );
 | |
| 		}
 | |
| 
 | |
| 		return parent::add_control( $id, $args, $options );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get repeater fields.
 | |
| 	 *
 | |
| 	 * Retrieve the fields from the current repeater control.
 | |
| 	 *
 | |
| 	 * @since 1.5.0
 | |
| 	 * @deprecated 2.1.0 Use `get_controls()` method instead.
 | |
| 	 * @access public
 | |
| 	 *
 | |
| 	 * @return array Repeater fields.
 | |
| 	 */
 | |
| 	public function get_fields() {
 | |
| 		_deprecated_function( __METHOD__, '2.1.0', 'get_controls()' );
 | |
| 
 | |
| 		return array_values( $this->get_controls() );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get default child type.
 | |
| 	 *
 | |
| 	 * Retrieve the repeater child type based on element data.
 | |
| 	 *
 | |
| 	 * Note that repeater does not support children, therefore it returns false.
 | |
| 	 *
 | |
| 	 * @since 1.0.0
 | |
| 	 * @access protected
 | |
| 	 *
 | |
| 	 * @param array $element_data Element ID.
 | |
| 	 *
 | |
| 	 * @return false Repeater default child type or False if type not found.
 | |
| 	 */
 | |
| 	protected function _get_default_child_type( array $element_data ) {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	protected function handle_control_position( array $args, $control_id, $overwrite ) {
 | |
| 		return $args;
 | |
| 	}
 | |
| }
 |