File "interactions-collector.php"
Full Path: /home/stylijtl/public_html/wp-content/plugins/elementor/modules/interactions/interactions-collector.php
File size: 1.63 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Elementor\Modules\Interactions;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* Collects interaction data from all rendered documents and provides centralized access.
*/
class Interactions_Collector {
/**
* @var Interactions_Collector
*/
private static $instance = null;
/**
* @var array Stores interaction data keyed by element ID
* Format: [ 'element_id' => [ interaction_items... ] ]
*/
private $interactions_data = [];
/**
* Get singleton instance.
*
* @return Interactions_Collector
*/
public static function instance() {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Register interaction data for an element.
*
* @param string $element_id The element ID (data-id attribute value)
* @param array $interactions The full interactions array from the element
*/
public function register( $element_id, $interactions ) {
if ( empty( $element_id ) || empty( $interactions ) ) {
return;
}
$this->interactions_data[ $element_id ] = $interactions;
}
/**
* Get all collected interaction data.
*
* @return array Format: [ 'element_id' => interactions_array ]
*/
public function get_all() {
return $this->interactions_data;
}
/**
* Get interaction data for a specific element.
*
* @param string $element_id The element ID
* @return array|null
*/
public function get( $element_id ) {
return $this->interactions_data[ $element_id ] ?? null;
}
/**
* Reset collected data (useful for testing or page reloads).
*/
public function reset() {
$this->interactions_data = [];
}
}