$wp_installer_instance, 'version' => '1.8.3' ); /* EXCEPTIONS ********************************************************************************************/ // Exception: When WPML prior 3.2 is used, that instance must be used regardless of another newer instance // Case 1: WPML loaded before Types - eliminate other instances if( defined('ICL_SITEPRESS_VERSION') && version_compare(ICL_SITEPRESS_VERSION, '3.2', '<') ) { foreach($wp_installer_instances as $key => $instance) { if(isset($instance['args']['site_key_nags'])){ $wp_installer_instances[$key]['version'] = '9.9'; }else{ $wp_installer_instances[$key]['version'] = '0'; } } } // Exception: Types 1.8.9 (Installer 1.7.0) with WPML before 3.3 (Installer before 1.7.0) // New products file http://d2salfytceyqoe.cloudfront.net/wpml-products33.json overrides the old one // while the WPML's instance is being used // => Force using the new Installer Instance if( defined('ICL_SITEPRESS_VERSION') && version_compare(ICL_SITEPRESS_VERSION, '3.3.1', '<') ) { // if Installer 1.7.0+ is present, unregister Installer from old WPML // Force Installer 1.7.0+ being used over older Installer versions $installer_171_plus_on = false; foreach($wp_installer_instances as $key => $instance) { if( version_compare( $instance['version'], '1.7.1', '>=' ) ){ $installer_171_plus_on = true; break; } } if( $installer_171_plus_on ){ foreach($wp_installer_instances as $key => $instance) { if( version_compare( $instance['version'], '1.7.0', '<' ) ){ unset( $wp_installer_instances[$key] ); } } } } // Exception: When using the embedded plugins module allow the set up to run completely with the // Installer instance that triggers it if( isset( $_POST['installer_instance'] ) && isset( $wp_installer_instances[$_POST['installer_instance']] ) ){ $wp_installer_instances[$_POST['installer_instance']]['version'] = '999'; } /* EXCEPTIONS ********************************************************************************************/ // Only one of these in the end remove_action('after_setup_theme', 'wpml_installer_instance_delegator', 1); add_action('after_setup_theme', 'wpml_installer_instance_delegator', 1); // When all plugins load pick the newest version if(!function_exists('wpml_installer_instance_delegator')){ function wpml_installer_instance_delegator(){ global $wp_installer_instances; // version based election foreach($wp_installer_instances as $instance){ if(!isset($delegate)){ $delegate = $instance; continue; } if(version_compare($instance['version'], $delegate['version'], '>')){ $delegate = $instance; } } // priority based election $highest_priority = null; foreach($wp_installer_instances as $instance) { if(isset($instance['args']['high_priority'])){ if(is_null($highest_priority) || $instance['args']['high_priority'] <= $highest_priority){ $highest_priority = $instance['args']['high_priority']; $delegate = $instance; } } } // Exception: When WPML prior 3.2 is used, that instance must be used regardless of another newer instance // Case 2: WPML loaded after Types if( defined('ICL_SITEPRESS_VERSION') && version_compare(ICL_SITEPRESS_VERSION, '3.2', '<') ) { foreach($wp_installer_instances as $key => $instance) { if(isset($instance['args']['site_key_nags'])){ $delegate = $instance; $wp_installer_instances = array($key => $delegate); //Eliminate other instances break; } } } include_once $delegate['bootfile']; // set configuration if(strpos(realpath($delegate['bootfile']), realpath(TEMPLATEPATH)) === 0){ $delegate['args']['in_theme_folder'] = dirname(ltrim(str_replace(realpath(TEMPLATEPATH), '', realpath($delegate['bootfile'])), '\\/')); } if(isset($delegate['args']) && is_array($delegate['args'])){ foreach($delegate['args'] as $key => $value){ WP_Installer()->set_config($key, $value); } } } } if(!function_exists('WP_Installer_Setup')){ // $args: // plugins_install_tab = true|false (default: true) // repositories_include = array() (default: all) // repositories_exclude = array() (default: none) // template = name (default: default) // // Ext function function WP_Installer_Setup($wp_installer_instance, $args = array()){ global $wp_installer_instances; $wp_installer_instances[$wp_installer_instance]['args'] = $args; } }