init(); } /** * Initialize the coordinator */ private function init() { // Register Heat as the coordinator $this->register_plugin('heat', array( 'name' => 'TigerStyle Heat', 'version' => TIGERSTYLE_HEAT_VERSION, 'role' => 'coordinator', 'capabilities' => array('analytics', 'seo', 'performance') )); // Hook into WordPress add_action('init', array($this, 'discover_ecosystem_plugins')); add_action('wp_ajax_tigerstyle_sync_preferences', array($this, 'handle_preference_sync')); add_action('wp_ajax_nopriv_tigerstyle_sync_preferences', array($this, 'handle_preference_sync')); // Frontend coordination add_action('wp_head', array($this, 'inject_ecosystem_coordination'), 1); // Admin coordination if (is_admin()) { add_action('admin_enqueue_scripts', array($this, 'enqueue_ecosystem_scripts')); } // Plugin communication hooks add_action('tigerstyle_ecosystem_register_plugin', array($this, 'register_plugin_from_hook'), 10, 2); add_action('tigerstyle_ecosystem_sync_preferences', array($this, 'sync_preferences_from_hook')); console.log('🔥 TigerStyle Heat: Ecosystem coordinator initialized!'); } /** * Discover other TigerStyle plugins in the ecosystem */ public function discover_ecosystem_plugins() { // Check for TigerStyle Whiskers if (class_exists('TigerStyleWhiskers')) { $this->register_plugin('whiskers', array( 'name' => 'TigerStyle Whiskers', 'version' => defined('TIGERSTYLE_WHISKERS_VERSION') ? TIGERSTYLE_WHISKERS_VERSION : '1.0.0', 'role' => 'privacy', 'capabilities' => array('gdpr', 'consent', 'privacy') )); } // Check for TigerStyle Dash if (class_exists('TigerStyleDash')) { $this->register_plugin('dash', array( 'name' => 'TigerStyle Dash', 'version' => defined('TIGERSTYLE_DASH_VERSION') ? TIGERSTYLE_DASH_VERSION : '1.0.0', 'role' => 'performance', 'capabilities' => array('caching', 'optimization', 'speed') )); } // Check for TigerStyle Life9 if (class_exists('TigerStyleLife9')) { $this->register_plugin('life9', array( 'name' => 'TigerStyle Life9', 'version' => defined('TIGERSTYLE_LIFE9_VERSION') ? TIGERSTYLE_LIFE9_VERSION : '1.0.0', 'role' => 'backup', 'capabilities' => array('backup', 'restore', 'disaster_recovery') )); } // Check for TigerStyle Scent if (class_exists('TigerStyleScent')) { $this->register_plugin('scent', array( 'name' => 'TigerStyle Scent', 'version' => defined('TIGERSTYLE_SCENT_VERSION') ? TIGERSTYLE_SCENT_VERSION : '1.0.0', 'role' => 'auth', 'capabilities' => array('oauth2', 'api', 'authentication') )); } // Allow other plugins to register do_action('tigerstyle_ecosystem_discovery', $this); } /** * Register a plugin in the ecosystem */ public function register_plugin($plugin_id, $plugin_data) { $this->registered_plugins[$plugin_id] = array_merge(array( 'name' => '', 'version' => '1.0.0', 'role' => 'member', 'capabilities' => array(), 'registered_at' => current_time('timestamp') ), $plugin_data); // Trigger ecosystem update do_action('tigerstyle_ecosystem_plugin_registered', $plugin_id, $plugin_data); } /** * Register plugin from hook */ public function register_plugin_from_hook($plugin_id, $plugin_data) { $this->register_plugin($plugin_id, $plugin_data); } /** * Get all registered plugins */ public function get_registered_plugins() { return $this->registered_plugins; } /** * Get specific plugin info */ public function get_plugin_info($plugin_id) { return isset($this->registered_plugins[$plugin_id]) ? $this->registered_plugins[$plugin_id] : null; } /** * Sync user preferences across plugins */ public function sync_user_preferences($user_id, $preferences = array()) { // Get current preferences $current_prefs = get_user_meta($user_id, 'tigerstyle_ecosystem_preferences', true); if (!is_array($current_prefs)) { $current_prefs = array(); } // Merge new preferences $updated_prefs = array_merge($current_prefs, $preferences); // Save updated preferences update_user_meta($user_id, 'tigerstyle_ecosystem_preferences', $updated_prefs); // Trigger sync across plugins do_action('tigerstyle_ecosystem_preferences_updated', $user_id, $updated_prefs); // Return updated preferences return $updated_prefs; } /** * Get user preferences */ public function get_user_preferences($user_id, $preference_key = null) { $prefs = get_user_meta($user_id, 'tigerstyle_ecosystem_preferences', true); if (!is_array($prefs)) { $prefs = array(); } if ($preference_key) { return isset($prefs[$preference_key]) ? $prefs[$preference_key] : null; } return $prefs; } /** * Handle AJAX preference sync */ public function handle_preference_sync() { // Verify nonce if (!wp_verify_nonce($_POST['nonce'], 'tigerstyle_ecosystem_sync')) { wp_die(json_encode(array('success' => false, 'message' => 'Invalid nonce'))); } $user_id = get_current_user_id(); if (!$user_id) { wp_die(json_encode(array('success' => false, 'message' => 'User not logged in'))); } $preferences = isset($_POST['preferences']) ? $_POST['preferences'] : array(); // Sanitize preferences $sanitized_prefs = array(); foreach ($preferences as $key => $value) { $sanitized_prefs[sanitize_key($key)] = sanitize_text_field($value); } // Sync preferences $updated_prefs = $this->sync_user_preferences($user_id, $sanitized_prefs); wp_die(json_encode(array( 'success' => true, 'preferences' => $updated_prefs, 'ecosystem' => $this->get_registered_plugins() ))); } /** * Sync preferences from hook */ public function sync_preferences_from_hook($preferences) { $user_id = get_current_user_id(); if ($user_id) { $this->sync_user_preferences($user_id, $preferences); } } /** * Inject ecosystem coordination script */ public function inject_ecosystem_coordination() { $ecosystem_data = array( 'plugins' => $this->get_registered_plugins(), 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('tigerstyle_ecosystem_sync'), 'user_id' => get_current_user_id() ); // Get user preferences if logged in if (get_current_user_id()) { $ecosystem_data['user_preferences'] = $this->get_user_preferences(get_current_user_id()); } echo "\n\n"; echo '' . "\n"; echo "\n"; } /** * Enqueue ecosystem scripts for admin */ public function enqueue_ecosystem_scripts($hook) { // Only load on TigerStyle admin pages if (strpos($hook, 'tigerstyle') === false) { return; } wp_enqueue_script('jquery'); // Inline ecosystem admin script $script = ' jQuery(document).ready(function($) { // Add ecosystem status to admin pages if (window.tigerstyleEcosystem && Object.keys(window.tigerstyleEcosystem.plugins).length > 1) { var ecosystemHtml = \'
\'; ecosystemHtml += \'

🐅 TigerStyle Ecosystem Active! \'; ecosystemHtml += Object.keys(window.tigerstyleEcosystem.plugins).length + \' plugins coordinating: \'; ecosystemHtml += Object.keys(window.tigerstyleEcosystem.plugins).map(function(id) { return window.tigerstyleEcosystem.plugins[id].name; }).join(", "); ecosystemHtml += \'

\'; $(".wrap h1").after(ecosystemHtml); } }); '; wp_add_inline_script('jquery', $script); } /** * Get ecosystem statistics */ public function get_ecosystem_stats() { return array( 'total_plugins' => count($this->registered_plugins), 'coordinator_version' => TIGERSTYLE_HEAT_VERSION, 'registered_plugins' => $this->registered_plugins, 'capabilities' => $this->get_all_capabilities(), 'last_sync' => get_option('tigerstyle_ecosystem_last_sync', 0) ); } /** * Get all capabilities across the ecosystem */ private function get_all_capabilities() { $all_capabilities = array(); foreach ($this->registered_plugins as $plugin_id => $plugin_data) { $all_capabilities = array_merge($all_capabilities, $plugin_data['capabilities']); } return array_unique($all_capabilities); } /** * Force ecosystem sync */ public function force_ecosystem_sync() { update_option('tigerstyle_ecosystem_last_sync', current_time('timestamp')); do_action('tigerstyle_ecosystem_force_sync'); } }