예제 #1
0
 /**
  * Check if MultilingualPress was installed correctly.
  *
  * @param  string $name
  * @param  string $base_name
  * @param  string $wp_version
  *
  * @return string
  */
 public function pre_install_check($name, $base_name, $wp_version)
 {
     if (!$this->is_plugin_page()) {
         return self::WRONG_PAGE_FOR_CHECK;
     }
     $php_version = phpversion();
     $check = new Mlp_Requirements_Check(new Mlp_Install_Requirements(), Mlp_Semantic_Version_Number_Factory::create($php_version), Mlp_Semantic_Version_Number_Factory::create($wp_version), $this->plugin_file);
     if ($check->is_compliant()) {
         return self::INSTALLATION_CONTEXT_OK;
     }
     $errors = $check->get_error_messages();
     $deactivate = new Mlp_Plugin_Deactivation($errors, $name, $base_name);
     add_action('admin_notices', array($deactivate, 'deactivate'), 0);
     add_action('network_admin_notices', array($deactivate, 'deactivate'), 0);
     return self::PLUGIN_DEACTIVATED;
 }
/**
 * Check current state of the WordPress installation.
 *
 * @param  string                          $pagenow
 * @param  Inpsyde_Property_List_Interface $data
 * @param  string                          $wp_version
 * @param  wpdb                            $wpdb
 *
 * @return bool
 */
function mlp_pre_run_test($pagenow, Inpsyde_Property_List_Interface $data, $wp_version, wpdb $wpdb)
{
    $self_check = new Mlp_Self_Check(__FILE__, $pagenow);
    $requirements_check = $self_check->pre_install_check($data->get('plugin_name'), $data->get('plugin_base_name'), $wp_version);
    if (Mlp_Self_Check::PLUGIN_DEACTIVATED === $requirements_check) {
        return FALSE;
    }
    $data->set('site_relations', new Mlp_Site_Relations($wpdb, 'mlp_site_relations'));
    if (Mlp_Self_Check::INSTALLATION_CONTEXT_OK === $requirements_check) {
        $deactivator = new Mlp_Network_Plugin_Deactivation();
        $last_version_option = get_site_option('mlp_version');
        $last_version = Mlp_Semantic_Version_Number_Factory::create($last_version_option);
        $current_version = Mlp_Semantic_Version_Number_Factory::create($data->get('version'));
        $upgrade_check = $self_check->is_current_version($current_version, $last_version);
        $updater = new Mlp_Update_Plugin_Data($data, $wpdb, $current_version, $last_version);
        if (Mlp_Self_Check::NEEDS_INSTALLATION === $upgrade_check) {
            $updater->install_plugin();
        }
        if (Mlp_Self_Check::NEEDS_UPGRADE === $upgrade_check) {
            $updater->update($deactivator);
        }
    }
    return TRUE;
}
 /**
  * Return the currently required WordPress version.
  *
  * @return Mlp_Semantic_Version_Number
  */
 public function get_min_wp_version()
 {
     return Mlp_Semantic_Version_Number_Factory::create('4.0.0');
 }