<?php
if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}
$api_url = PMTHEMES_UPDT_URL;
if(function_exists('wp_get_theme')){
    $theme_data    = wp_get_theme(get_option('template'));
    $theme_version = $theme_data->Version;
} else {
    $theme_data = wp_get_theme( get_template_directory() . '/style.css');
    $theme_version = $theme_data['Version'];
}
$theme_base = get_option('template');
add_filter('pre_set_site_transient_update_themes', 'pmthemes_theme_new_update');
function pmthemes_theme_new_update($checked_data) {
    global $wp_version, $theme_version, $theme_base, $api_url;
    $request = array(
        'slug'    => $theme_base,
        'version' => $theme_version,
    );
    // Start checking for an update
    $send_for_check = array(
        'body' => array(
            'action'  => 'theme_update',
            'request' => serialize($request),
            'api-key' => md5(home_url()),
        ),
        'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url()
    );
    $raw_response = wp_remote_post($api_url, $send_for_check);
    if (!is_wp_error($raw_response) && ($raw_response['response']['code'] == 200))
        $response = unserialize($raw_response['body']);
    // Feed the update data into WP updater
    if (!empty($response))
        $checked_data->response[$theme_base] = $response;
    return $checked_data;
}
// Take over the Theme info screen on WP multisite
add_filter('themes_api', 'pmthemes_api_call', 10, 3);

function pmthemes_api_call($def, $action, $args) {
    global $theme_base, $theme_version, $wp_version, $api_url;
    if ( ! isset( $args->slug ) ) {
        return false;
    }
    if ( $args->slug != $theme_base ) {
        return false;
    }
    // Get the current version.
    $args->version = $theme_version;
    $request_args  = array(
        'body' => array(
            'action'  => $action,
            'request' => serialize( $args ),
            'api-key' => md5( home_url() ),
        ),
        'user-agent' => 'WordPress/'. $wp_version .'; '. home_url(),
    );
    $request = wp_remote_post( $api_url, $request_args );
    if (is_wp_error($request)) {
        $res = new WP_Error('themes_api_failed', __('An Unexpected HTTP Error occurred during the API request.</p> <p><a href="?" onclick="document.location.reload(); return false;">Try again</a>','pmthemes'), $request->get_error_message());
    } else {
        $res = unserialize($request['body']);
        if ($res === false)
            $res = new WP_Error('themes_api_failed', __('An unknown error occurred','pmthemes'), $request['body']);
    }
    return $res;
}
if (is_admin())
    $current = get_transient('update_themes');