function mainwp_upgradeplugintheme() { if ($_POST['type'] == 'plugin' && !mainwp_current_user_can('dashboard', 'update_plugins')) { die(json_encode(array('error' => mainwp_do_not_have_permissions(__('update plugins', 'mainwp'), $echo = false)))); } if ($_POST['type'] == 'theme' && !mainwp_current_user_can('dashboard', 'update_themes')) { die(json_encode(array('error' => mainwp_do_not_have_permissions(__('update themes', 'mainwp'), $echo = false)))); } $this->secure_request('mainwp_upgradeplugintheme'); $websiteId = null; $slugs = ''; if (isset($_POST['websiteId'])) { $websiteId = $_POST['websiteId']; if (isset($_POST['slug'])) { $slugs = $_POST['slug']; } else { $slugs = MainWP_Right_Now::getPluginThemeSlugs($websiteId, $_POST['type']); } } if (empty($slugs)) { die(json_encode(array('message' => __('Not found items slugs to update.')))); } $website = MainWP_DB::Instance()->getWebsiteById($websiteId); try { $info = array('result' => MainWP_Right_Now::upgradePluginTheme($websiteId, $_POST['type'], $slugs)); if (!empty($website)) { $info['site_url'] = esc_url($website->url); } die(json_encode($info)); } catch (MainWP_Exception $e) { die(json_encode(array('error' => array('message' => $e->getMessage(), 'extra' => $e->getMessageExtra())))); } }
/** * List information about plugin upgrades * * ## OPTIONS * * [<websiteid>] * : The id (or ids, comma separated) of the child sites that need to be listed/upgraded, when omitted all childsites are used. * * [--list] * : Get a list of plugins with available upgrades * * [--upgrade=<pluginslug>] * : Upgrade the plugin slugs * * [--upgrade-all] * : Upgrade all plugins * * ## EXAMPLES * * wp mainwp plugin 2,5 --list * wp mainwp plugin --list * wp mainwp plugin 2,5 --upgrade-all * wp mainwp plugin 2,5 --upgrade=mainwpchild * * @synopsis [<websiteid>] [--list] [--upgrade=<pluginslug>] [--upgrade-all] */ public function plugin($args, $assoc_args) { $sites = array(); if (count($args) > 0) { $args_exploded = explode(',', $args[0]); foreach ($args_exploded as $arg) { if (!is_numeric(trim($arg))) { WP_CLI::error('Child site ids should be numeric.'); } $sites[] = trim($arg); } } if (isset($assoc_args['list'])) { //list //siteid, sitename, name, version, new version $websites = MainWP_DB::Instance()->query(MainWP_DB::Instance()->getSQLWebsitesForCurrentUser()); $userExtension = MainWP_DB::Instance()->getUserExtension(); $websites_to_upgrade = array(); while ($websites && ($website = @MainWP_DB::fetch_object($websites))) { if (count($sites) > 0 && !in_array($website->id, $sites)) { continue; } $plugin_upgrades = json_decode($website->plugin_upgrades, true); if (is_array($plugin_upgrades)) { $ignored_plugins = json_decode($website->ignored_plugins, true); if (is_array($ignored_plugins)) { $plugin_upgrades = array_diff_key($plugin_upgrades, $ignored_plugins); } $ignored_plugins = json_decode($userExtension->ignored_plugins, true); if (is_array($ignored_plugins)) { $plugin_upgrades = array_diff_key($plugin_upgrades, $ignored_plugins); } $tmp = array(); foreach ($plugin_upgrades as $plugin_upgrade) { $tmp[] = array('name' => $plugin_upgrade['update']['slug'], 'version' => $plugin_upgrade['Version'], 'new_version' => $plugin_upgrade['update']['new_version']); } $websites_to_upgrade[] = array('id' => $website->id, 'name' => $website->name, 'plugins' => $tmp); } } $idLength = strlen('id'); $nameLength = strlen('name'); $pluginLength = strlen('plugin'); $oldVersionLength = strlen('version'); $newVersionLength = strlen('new version'); foreach ($websites_to_upgrade as $website_to_upgrade) { if ($idLength < strlen($website_to_upgrade['id'])) { $idLength = strlen($website_to_upgrade['id']); } if ($nameLength < strlen($website_to_upgrade['name'])) { $nameLength = strlen($website_to_upgrade['name']); } foreach ($website_to_upgrade['plugins'] as $plugin_to_upgrade) { if ($pluginLength < strlen($plugin_to_upgrade['name'])) { $pluginLength = strlen($plugin_to_upgrade['name']); } if ($oldVersionLength < strlen($plugin_to_upgrade['version'])) { $oldVersionLength = strlen($plugin_to_upgrade['version']); } if ($newVersionLength < strlen($plugin_to_upgrade['new_version'])) { $newVersionLength = strlen($plugin_to_upgrade['new_version']); } } } WP_CLI::line(sprintf("+%'--" . ($idLength + 2) . "s+%'--" . ($nameLength + 2) . "s+%'--" . ($pluginLength + 2) . "s+%'--" . ($oldVersionLength + 2) . "s+%'--" . ($newVersionLength + 2) . "s+", '', '', '', '', '')); WP_CLI::line(sprintf("| %-" . $idLength . "s | %-" . $nameLength . "s | %-" . $pluginLength . "s | %-" . $oldVersionLength . "s | %-" . $newVersionLength . "s |", 'id', 'name', 'plguin', 'version', 'new version')); WP_CLI::line(sprintf("+%'--" . ($idLength + 2) . "s+%'--" . ($nameLength + 2) . "s+%'--" . ($pluginLength + 2) . "s+%'--" . ($oldVersionLength + 2) . "s+%'--" . ($newVersionLength + 2) . "s+", '', '', '', '', '')); foreach ($websites_to_upgrade as $website_to_upgrade) { if ($idLength < strlen($website_to_upgrade['id'])) { $idLength = strlen($website_to_upgrade['id']); } if ($nameLength < strlen($website_to_upgrade['name'])) { $nameLength = strlen($website_to_upgrade['name']); } $i = 0; foreach ($website_to_upgrade['plugins'] as $plugin_to_upgrade) { if ($i == 0) { WP_CLI::line(sprintf("| %-" . $idLength . "s | %-" . $nameLength . "s | %-" . $pluginLength . "s | %-" . $oldVersionLength . "s | %-" . $newVersionLength . "s |", $website_to_upgrade['id'], $website_to_upgrade['name'], $plugin_to_upgrade['name'], $plugin_to_upgrade['version'], $plugin_to_upgrade['new_version'])); } else { WP_CLI::line(sprintf("| %-" . $idLength . "s | %-" . $nameLength . "s | %-" . $pluginLength . "s | %-" . $oldVersionLength . "s | %-" . $newVersionLength . "s |", '', '', $plugin_to_upgrade['name'], $plugin_to_upgrade['version'], $plugin_to_upgrade['new_version'])); } $i++; } } WP_CLI::line(sprintf("+%'--" . ($idLength + 2) . "s+%'--" . ($nameLength + 2) . "s+%'--" . ($pluginLength + 2) . "s+%'--" . ($oldVersionLength + 2) . "s+%'--" . ($newVersionLength + 2) . "s+", '', '', '', '', '')); } else { if (isset($assoc_args['upgrade']) || isset($assoc_args['upgrade-all'])) { //slugs to upgrade $pluginSlugs = array(); if (isset($assoc_args['upgrade'])) { $pluginSlugs = explode(',', $assoc_args['upgrade']); } $websites = MainWP_DB::Instance()->query(MainWP_DB::Instance()->getSQLWebsitesForCurrentUser()); $userExtension = MainWP_DB::Instance()->getUserExtension(); $websites_to_upgrade = array(); while ($websites && ($website = @MainWP_DB::fetch_object($websites))) { if (count($sites) > 0 && !in_array($website->id, $sites)) { continue; } $plugin_upgrades = json_decode($website->plugin_upgrades, true); if (is_array($plugin_upgrades)) { $ignored_plugins = json_decode($website->ignored_plugins, true); if (is_array($ignored_plugins)) { $plugin_upgrades = array_diff_key($plugin_upgrades, $ignored_plugins); } $ignored_plugins = json_decode($userExtension->ignored_plugins, true); if (is_array($ignored_plugins)) { $plugin_upgrades = array_diff_key($plugin_upgrades, $ignored_plugins); } $tmp = array(); foreach ($plugin_upgrades as $key => $plugin_upgrade) { if (count($pluginSlugs) > 0 && !in_array($plugin_upgrade['update']['slug'], $pluginSlugs)) { continue; } $tmp[] = $key; } WP_CLI::line('Upgrading ' . count($tmp) . ' plugins for ' . $website->name); try { MainWP_Right_Now::upgradePluginTheme($website->id, 'plugin', implode(',', $tmp)); WP_CLI::success('Upgrades completed'); } catch (Exception $e) { WP_CLI::error('Upgrades failed: ' . $e->getMessage()); } } } } } }