geno/wp-content/plugins/cartflows/admin/bsf-analytics/class-bsf-analytics-loader.php
2024-02-01 11:54:18 +00:00

118 lines
2.4 KiB
PHP

<?php
/**
* BSF analytics loader file.
*
* @version 1.0.0
*
* @package bsf-analytics
*/
if ( ! defined( 'ABSPATH' ) ) {
exit();
}
/**
* Class BSF_Analytics_Loader.
*/
class BSF_Analytics_Loader {
/**
* Analytics Entities.
*
* @access private
* @var array Entities array.
*/
private $entities = array();
/**
* Analytics Version.
*
* @access private
* @var float analytics version.
*/
private $analytics_version = '';
/**
* Analytics path.
*
* @access private
* @var string path array.
*/
private $analytics_path = '';
/**
* Instance
*
* @access private
* @var object Class object.
*/
private static $instance = null;
/**
* Get instace of class.
*
* @return object
*/
public static function get_instance() {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor
*/
public function __construct() {
add_action( 'init', array( $this, 'load_analytics' ) );
}
/**
* Set entity for analytics.
*
* @param string $data Entity attributes data.
* @return void
*/
public function set_entity( $data ) {
array_push( $this->entities, $data );
}
/**
* Load Analytics library.
*
* @return void
*/
public function load_analytics() {
$unique_entities = array();
if ( ! empty( $this->entities ) ) {
foreach ( $this->entities as $entity ) {
foreach ( $entity as $key => $data ) {
if ( isset( $data['path'] ) ) {
if ( file_exists( $data['path'] . '/version.json' ) ) {
$file_contents = file_get_contents( $data['path'] . '/version.json' ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
$analytics_version = json_decode( $file_contents, 1 );
$analytics_version = $analytics_version['bsf-analytics-ver'];
if ( version_compare( $analytics_version, $this->analytics_version, '>' ) ) {
$this->analytics_version = $analytics_version;
$this->analytics_path = $data['path'];
}
}
}
if ( ! isset( $unique_entities[ $key ] ) ) {
$unique_entities[ $key ] = $data;
}
}
}
if ( file_exists( $this->analytics_path ) && ! class_exists( 'BSF_Analytics' ) ) {
require_once $this->analytics_path . '/class-bsf-analytics.php';
new BSF_Analytics( $unique_entities, $this->analytics_path, $this->analytics_version );
}
}
}
}