public static function determineLatestVersion($bypassCache = false) { $latest_backupbuddy_version_cache_minutes = 60 * 12; // Define how many minutes to cache the latest backupbuddy version number. function pb_backupbuddy_split2($string, $needle, $nth) { $max = strlen($string); $n = 0; for ($i = 0; $i < $max; $i++) { if ($string[$i] == $needle) { $n++; if ($n >= $nth) { break; } } } $arr[] = substr($string, 0, $i); $arr[] = substr($string, $i + 1, $max); return $arr; } if (true === $bypassCache) { $latest_backupbuddy_version = false; } else { $latest_backupbuddy_version = get_transient('pb_backupbuddy_latest_version'); } if (false === $latest_backupbuddy_version || !is_array($latest_backupbuddy_version)) { $response = wp_remote_get('http://api.ithemes.com/product/version?apikey=ixho7dk0p244n0ob&package=backupbuddy&channel=stable', array('method' => 'GET', 'timeout' => 7, 'redirection' => 3, 'httpversion' => '1.0', 'headers' => array(), 'body' => null, 'cookies' => array())); if (is_wp_error($response)) { $latest_backupbuddy_version = array(0, 0); // Set to 0 for transient to prevent hitting server again for a bit since something went wrong. } else { $minorVersion = $response['body']; $majorVersion = pb_backupbuddy_split2($minorVersion, '.', 3); $majorVersion = $majorVersion[0]; $latest_backupbuddy_version = array($minorVersion, $majorVersion); } set_transient('pb_backupbuddy_latest_version', $latest_backupbuddy_version, 60 * $latest_backupbuddy_version_cache_minutes); } // end not cached. if (0 == $latest_backupbuddy_version[0] && 0 == $latest_backupbuddy_version[1]) { // Server not responding. return false; } return $latest_backupbuddy_version; }
$arr[] = substr($string, 0, $i); $arr[] = substr($string, $i + 1, $max); return $arr; } $latest_backupbuddy_version = get_transient('pb_backupbuddy_latest_version'); if (false === $latest_backupbuddy_version) { $response = wp_remote_get('http://api.ithemes.com/product/version?apikey=ixho7dk0p244n0ob&package=backupbuddy&channel=stable', array('method' => 'GET', 'timeout' => 15, 'redirection' => 3, 'httpversion' => '1.0', 'headers' => array(), 'body' => null, 'cookies' => array())); if (is_wp_error($response)) { $latest_backupbuddy_version = '{Err:' . $response->get_error_message() . '}'; } else { $latest_backupbuddy_version = $response['body']; set_transient('pb_backupbuddy_latest_version', $response['body'], 60 * $latest_backupbuddy_version_cache_minutes); } } // end not cached. $latest_backupbuddy_nonminor_version = pb_backupbuddy_split2($latest_backupbuddy_version, '.', 3); $latest_backupbuddy_nonminor_version = $latest_backupbuddy_nonminor_version[0]; $suggestion_text = $latest_backupbuddy_nonminor_version; if ($latest_backupbuddy_nonminor_version != $latest_backupbuddy_version) { // Minor version available that is newer than latest major. $suggestion_text .= ' (major) or ' . $latest_backupbuddy_version . ' (minor)'; } else { $suggestion_text .= ' (latest)'; } $parent_class_test = array('title' => 'BackupBuddy Version', 'suggestion' => $suggestion_text, 'value' => pb_backupbuddy::settings('version'), 'tip' => __('Version of BackupBuddy currently running on this site.', 'it-l10n-backupbuddy')); if (version_compare(pb_backupbuddy::settings('version'), $latest_backupbuddy_nonminor_version, '<')) { $parent_class_test['status'] = __('WARNING', 'it-l10n-backupbuddy'); } else { $parent_class_test['status'] = __('OK', 'it-l10n-backupbuddy'); } array_push($tests, $parent_class_test);