예제 #1
0
 /**
  * List information about theme 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 themes with available upgrades
  *
  * [--upgrade=<theme>]
  * : Upgrade the themes
  *
  * [--upgrade-all]
  * : Upgrade all themes
  *
  * ## EXAMPLES
  *
  *     wp mainwp theme 2,5 --list
  *     wp mainwp theme --list
  *     wp mainwp theme 2,5 --upgrade-all
  *     wp mainwp theme 2,5 --upgrade=twentysixteen
  *
  * @synopsis [<websiteid>] [--list] [--upgrade=<theme>] [--upgrade-all]
  */
 public function theme($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'])) {
         $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;
             }
             $theme_upgrades = json_decode($website->theme_upgrades, true);
             if (is_array($theme_upgrades)) {
                 $ignored_themes = json_decode($website->ignored_themes, true);
                 if (is_array($ignored_themes)) {
                     $theme_upgrades = array_diff_key($theme_upgrades, $ignored_themes);
                 }
                 $ignored_themes = json_decode($userExtension->ignored_themes, true);
                 if (is_array($ignored_themes)) {
                     $theme_upgrades = array_diff_key($theme_upgrades, $ignored_themes);
                 }
                 $tmp = array();
                 foreach ($theme_upgrades as $theme_upgrade) {
                     $tmp[] = array('name' => $theme_upgrade['update']['theme'], 'version' => $theme_upgrade['Version'], 'new_version' => $theme_upgrade['update']['new_version']);
                 }
                 $websites_to_upgrade[] = array('id' => $website->id, 'name' => $website->name, 'themes' => $tmp);
             }
         }
         $idLength = strlen('id');
         $nameLength = strlen('name');
         $themeLength = strlen('theme');
         $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['themes'] as $theme_to_upgrade) {
                 if ($themeLength < strlen($theme_to_upgrade['name'])) {
                     $themeLength = strlen($theme_to_upgrade['name']);
                 }
                 if ($oldVersionLength < strlen($theme_to_upgrade['version'])) {
                     $oldVersionLength = strlen($theme_to_upgrade['version']);
                 }
                 if ($newVersionLength < strlen($theme_to_upgrade['new_version'])) {
                     $newVersionLength = strlen($theme_to_upgrade['new_version']);
                 }
             }
         }
         WP_CLI::line(sprintf("+%'--" . ($idLength + 2) . "s+%'--" . ($nameLength + 2) . "s+%'--" . ($themeLength + 2) . "s+%'--" . ($oldVersionLength + 2) . "s+%'--" . ($newVersionLength + 2) . "s+", '', '', '', '', ''));
         WP_CLI::line(sprintf("| %-" . $idLength . "s | %-" . $nameLength . "s | %-" . $themeLength . "s | %-" . $oldVersionLength . "s | %-" . $newVersionLength . "s |", 'id', 'name', 'theme', 'version', 'new version'));
         WP_CLI::line(sprintf("+%'--" . ($idLength + 2) . "s+%'--" . ($nameLength + 2) . "s+%'--" . ($themeLength + 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['themes'] as $theme_to_upgrade) {
                 if ($i == 0) {
                     WP_CLI::line(sprintf("| %-" . $idLength . "s | %-" . $nameLength . "s | %-" . $themeLength . "s | %-" . $oldVersionLength . "s | %-" . $newVersionLength . "s |", $website_to_upgrade['id'], $website_to_upgrade['name'], $theme_to_upgrade['name'], $theme_to_upgrade['version'], $theme_to_upgrade['new_version']));
                 } else {
                     WP_CLI::line(sprintf("| %-" . $idLength . "s | %-" . $nameLength . "s | %-" . $themeLength . "s | %-" . $oldVersionLength . "s | %-" . $newVersionLength . "s |", '', '', $theme_to_upgrade['name'], $theme_to_upgrade['version'], $theme_to_upgrade['new_version']));
                 }
                 $i++;
             }
         }
         WP_CLI::line(sprintf("+%'--" . ($idLength + 2) . "s+%'--" . ($nameLength + 2) . "s+%'--" . ($themeLength + 2) . "s+%'--" . ($oldVersionLength + 2) . "s+%'--" . ($newVersionLength + 2) . "s+", '', '', '', '', ''));
     } else {
         if (isset($assoc_args['upgrade']) || isset($assoc_args['upgrade-all'])) {
             //slugs to upgrade
             $themeSlugs = array();
             if (isset($assoc_args['upgrade'])) {
                 $themeSlugs = explode(',', $assoc_args['upgrade']);
             }
             $websites = MainWP_DB::Instance()->query(MainWP_DB::Instance()->getSQLWebsitesForCurrentUser());
             $userExtension = MainWP_DB::Instance()->getUserExtension();
             while ($websites && ($website = @MainWP_DB::fetch_object($websites))) {
                 if (count($sites) > 0 && !in_array($website->id, $sites)) {
                     continue;
                 }
                 $theme_upgrades = json_decode($website->theme_upgrades, true);
                 if (is_array($theme_upgrades)) {
                     $ignored_themes = json_decode($website->ignored_themes, true);
                     if (is_array($ignored_themes)) {
                         $theme_upgrades = array_diff_key($theme_upgrades, $ignored_themes);
                     }
                     $ignored_themes = json_decode($userExtension->ignored_themes, true);
                     if (is_array($ignored_themes)) {
                         $theme_upgrades = array_diff_key($theme_upgrades, $ignored_themes);
                     }
                     $tmp = array();
                     foreach ($theme_upgrades as $key => $theme_upgrade) {
                         if (count($themeSlugs) > 0 && !in_array($theme_upgrade['update']['slug'], $themeSlugs)) {
                             continue;
                         }
                         $tmp[] = $key;
                     }
                     if (count($tmp) == 0) {
                         WP_CLI::line('No available theme upgrades for ' . $website->name);
                         continue;
                     }
                     WP_CLI::line('Upgrading ' . count($tmp) . ' themes for ' . $website->name);
                     try {
                         MainWP_Right_Now::upgradePluginThemeTranslation($website->id, 'theme', implode(',', $tmp));
                         WP_CLI::success('Upgrades completed');
                     } catch (Exception $e) {
                         WP_CLI::error('Upgrades failed: ' . MainWP_Error_Helper::getConsoleErrorMessage($e));
                     }
                 }
             }
         }
     }
 }
예제 #2
0
 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))));
     }
     if ($_POST['type'] == 'translation' && !mainwp_current_user_can('dashboard', 'update_translations')) {
         die(json_encode(array('error' => mainwp_do_not_have_permissions(__('update translations', '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::upgradePluginThemeTranslation($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()))));
     }
 }