public static function mangle_update_themes($themes) { // WP saves once before checking, in case it fails static $tried = false; if (!$tried) { $tried = true; return $themes; } $ours = Sputnik::get_installed(true); if (empty($ours)) { return $themes; } $data = array(); $files = array(); foreach ($ours as $file => $theme) { // If something accidentally slipped in... if (empty($theme['Sputnik ID'])) { // ...ignore it. continue; } $name = $theme['Sputnik ID']; $files[$name] = $file; $data[$name] = $theme['Version']; } $url = Sputnik::API_BASE . '/version'; $options = array('headers' => array('X-WP-Domain' => self::domain()), 'user-agent' => 'WP eCommerce Marketplace: ' . WPSC_VERSION); $url = esc_url_raw(add_query_arg('themes', urlencode(json_encode($data)), $url)); $req = wp_safe_remote_get($url, $options); if (is_wp_error($req) || $req['response']['code'] !== 200) { return $themes; } $response = json_decode($req['body']); if (empty($response)) { return $themes; } foreach ($response as $name => $result) { $file = $files[$name]; if ($result->status === 410) { self::$suspended[$name] = $result; Sputnik::suspend_plugin($name, $file, $result); continue; } if ($result->status !== 200) { continue; } $info = (object) array('package' => $result->location, 'url' => $result->url, 'new_version' => $result->version, 'slug' => 'sputnik-' . $name, 'sputnik_id' => $name); $themes->response[$file] = $info; } return $themes; }