= 6)) { self::$valid = $response['valid_key']; self::$version = $response['version']; self::$package = $response['package']; self::$notice = $response['notice']; self::$expiry = $response['expiry']; return $response['updates']; } else { return self::set_defaults('Unable to check for updates. Please try again.'); } } private static function set_defaults($notice = '') { self::$valid = false; self::$version = self::$local_version; self::$package = ''; self::$notice = empty($notice) ? '' : ('
'.__($notice).'
'); self::$expiry = ''; self::$updates = ''; return self::$updates; } private static function fetch_remote_or_cache($action,$cache=true){ $transient = self::add_plugin_prefix($action); $values = $cache ? get_transient($transient) : false; if ((false === $values) || is_array($values) || empty($values)) { $raw_response = self::remote_call($action, $cache); $values = (is_array($raw_response) && array_key_exists('body',$raw_response)) ? $raw_response['body'] : false; set_transient($transient, $values, 86400); //cache for 24 hours } return false === $values ? false : unserialize(gzinflate(base64_decode($values))); } private static function remote_call($action, $cache=true, $backup = false){ $options = array('method' => 'POST', 'timeout' => 3); $options['headers'] = array( 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option('blog_charset'), 'User-Agent' => 'WordPress/' . get_bloginfo("version"), 'Referer' => get_bloginfo("url") ); $raw_response = wp_remote_request(self::get_upgrader($cache, $backup). '&act='.$action , $options); if ( is_wp_error( $raw_response ) || (200 != $raw_response['response']['code']) || empty($raw_response)){ return $backup ? false : self::remote_call($action, $cache, true); } else { return $raw_response; } } private static function get_upgrader($cache = true, $backup=false){ global $wpdb; if (empty(self::$upgrader) || ($cache == false) || $backup) self::$upgrader = self::get_remote_updater($backup). sprintf("?of=%s&key=%s&v=%s&wp=%s&php=%s&mysql=%s", urlencode(self::$plugin), urlencode(self::get_licence()), urlencode(self::$local_version), urlencode(get_bloginfo("version")), urlencode(phpversion()), urlencode($wpdb->db_version())); return self::$upgrader; } private static function get_remote_updater($backup = false) { return $backup ? self::$remote_updater_backup : self::$remote_updater ; } } ?>