_escape($args); $url = $args['url']; //return (print_r($args, true)); ob_start(); include_once(ABSPATH . 'wp-admin/includes/file.php'); include_once(ABSPATH . 'wp-admin/includes/theme.php'); include_once(ABSPATH . 'wp-admin/includes/misc.php'); include_once(ABSPATH . 'wp-admin/includes/template.php'); include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'); $upgrader = new Theme_Upgrader(); $result = $upgrader->install($url); ob_end_clean(); if(is_wp_error($upgrader->skin->result) || !$upgrader->skin->result){ $error = 'Failed to upload theme. Check your URL.' ; return array('bool' => false, 'message' => $error) ; }else { $theme = $upgrader->theme_info(); return array('bool' => true, 'message' => 'Theme '.$upgrader->result[destination_name].' successfully installed '); } } function upgrade_all($params){ $upgradable_themes = $this->_get_upgradable_themes(); $ready_for_upgrade = array(); if(!empty($upgradable_themes)){ foreach($upgradable_themes as $upgrade ){ $ready_for_upgrade[] = $upgrade['theme_tmp']; } } if(!empty($ready_for_upgrade)){ include_once(ABSPATH . 'wp-admin/includes/file.php'); include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $upgrader = new Theme_Upgrader(new Bulk_Theme_Upgrader_Skin( compact('title', 'nonce', 'url', 'theme') )); $result = $upgrader->bulk_upgrade($ready_for_upgrade); $results = array(); if(!empty($result)){ foreach($result as $theme_tmp => $info){ if(is_wp_error($info) || !$info){ $results[$theme_tmp] = ''.$theme_tmp.' was not upgraded.
'; } else { $results[$theme_tmp] = ''.$theme_tmp.' succesfully upgraded.
'; } } return array('upgraded' => implode('', $results)); } else return array('error' => 'Could not initialize upgrader.'); }else { return array('error' => 'No themes available for upgrade.'); } } function _get_upgradable_themes(){ $all_themes = get_themes(); $upgrade_themes = array(); $current = $this->mmb_get_transient('update_themes'); foreach ((array)$all_themes as $theme_template => $theme_data){ if(!empty($current->response)){ foreach ($current->response as $current_themes => $theme){ if ($theme_data['Template'] == $current_themes) { $current->response[$current_themes]['name'] = $theme_data['Name']; $current->response[$current_themes]['old_version'] = $theme_data['Version']; $current->response[$current_themes]['theme_tmp'] = $theme_data['Template']; $upgrade_themes[] = $current->response[$current_themes]; continue; } } } } return $upgrade_themes; } }