Esempio n. 1
0
 public function do_core_upgrade($params)
 {
     $required_fields = array('upgrade_id', 'locale', 'version');
     $errors = array();
     foreach ($required_fields as $field) {
         if (!isset($params[$field])) {
             $errors[] = "The '{$field}' field is missing.";
         }
     }
     if (empty($errors)) {
         require_once $GLOBALS['ithemes_updater_path'] . '/functions.php';
         $updates = Ithemes_Sync_Functions::get_update_details(array('verbose' => true, 'force_refresh' => array('core')));
         if (empty($updates['core'])) {
             $errors[] = 'No core updates are currently available.';
         } else {
             if (empty($updates['core'][$params['upgrade_id']])) {
                 $errors[] = 'Unable to find an availble upgrade matching the requested upgrade_id.';
             } else {
                 if ($params['locale'] != $updates['core'][$params['upgrade_id']]->locale) {
                     $errors[] = 'The requested upgrade does not match the requested locale.';
                 } else {
                     if (isset($updates['core'][$params['upgrade_id']]->version) && $params['version'] != $updates['core'][$params['upgrade_id']]->version) {
                         $errors[] = 'The requested upgrade does not match the requested version.';
                     } else {
                         if (isset($updates['core'][$params['upgrade_id']]->current) && $params['version'] != $updates['core'][$params['upgrade_id']]->current) {
                             $errors[] = 'The requested upgrade does not match the requested version.';
                         }
                     }
                 }
             }
         }
     }
     if (!empty($errors)) {
         return array('errors' => $errors);
     }
     Ithemes_Sync_Functions::set_time_limit(300);
     $original_version = Ithemes_Sync_Functions::get_wordpress_version();
     require_once ABSPATH . 'wp-admin/includes/file.php';
     require_once ABSPATH . 'wp-admin/includes/update.php';
     require_once ABSPATH . 'wp-admin/includes/misc.php';
     $upgrader = new Core_Upgrader($this->skin);
     $result = $upgrader->upgrade($updates['core'][$params['upgrade_id']]);
     Ithemes_Sync_Functions::refresh_core_updates();
     if (is_wp_error($result)) {
         return array('errors' => array($result->get_error_code() => $result->get_error_message()));
     }
     $current_version = Ithemes_Sync_Functions::get_wordpress_version();
     $current_updates = Ithemes_Sync_Functions::get_update_details(array('force_refresh' => array('core')));
     $current_update_version = false;
     foreach ($current_updates['core'] as $index => $update) {
         if (version_compare($update->version, $current_update_version, '>')) {
             $current_update_version = $update->version;
         }
     }
     $response = array('wordpress_response' => $result, 'original_version' => $original_version, 'current_version' => $current_version, 'current_update_version' => $current_update_version, 'original_update_version' => $updates['core'][$params['upgrade_id']]->version);
     if (is_multisite()) {
         // Based on the upgrade action of wp-admin/network/upgrade.php
         $wp_db_version = Ithemes_Sync_Functions::get_wordpress_db_version();
         update_site_option('wpmu_upgrade_site', $wp_db_version);
         global $wpdb;
         $blogs = $wpdb->get_results("SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0'", ARRAY_A);
         $response['network_upgrade'] = true;
         foreach ((array) $blogs as $details) {
             switch_to_blog($details['blog_id']);
             $siteurl = site_url();
             $upgrade_url = admin_url('upgrade.php?step=upgrade_db');
             restore_current_blog();
             $result = wp_remote_get($upgrade_url, array('timeout' => 120, 'httpversion' => '1.1'));
             if (is_wp_error($result)) {
                 $response['network_upgrade'] = false;
                 $response['errors'][] = 'Unable to successfully upgrade the network. You may need to visit the network admin dashboard to manually upgrade the network.';
                 break;
             }
             do_action('after_mu_upgrade', $result);
             do_action('wpmu_upgrade_site', $details['blog_id']);
         }
     }
     if ($current_version == $params['version']) {
         $response['success'] = true;
     }
     return $response;
 }
Esempio n. 2
0
 private static function get_password_hash($username, $password)
 {
     require_once ABSPATH . 'wp-includes/class-phpass.php';
     require_once $GLOBALS['ithemes_sync_path'] . '/class-ithemes-credentials.php';
     $password = iThemes_Credentials::get_password_hash($username, $password);
     $salted_password = $password . $username . get_bloginfo('url') . Ithemes_Sync_Functions::get_wordpress_version();
     $salted_password = substr($salted_password, 0, max(strlen($password), 512));
     $hasher = new PasswordHash(self::$password_iterations, true);
     $auth_token = $hasher->HashPassword($salted_password);
     return $auth_token;
 }