protected function format_plugin($plugin_file, $plugin_data) { $plugin = array(); $plugin['id'] = preg_replace("/(.+)\\.php\$/", "\$1", $plugin_file); $plugin['slug'] = Jetpack_Autoupdate::get_plugin_slug($plugin_file); $plugin['active'] = Jetpack::is_plugin_active($plugin_file); $plugin['name'] = $plugin_data['Name']; $plugin['plugin_url'] = $plugin_data['PluginURI']; $plugin['version'] = $plugin_data['Version']; $plugin['description'] = $plugin_data['Description']; $plugin['author'] = $plugin_data['Author']; $plugin['author_url'] = $plugin_data['AuthorURI']; $plugin['network'] = $plugin_data['Network']; $plugin['update'] = $this->get_plugin_updates($plugin_file); $plugin['next_autoupdate'] = date('Y-m-d H:i:s', wp_next_scheduled('wp_maybe_auto_update')); $autoupdate = in_array($plugin_file, Jetpack_Options::get_option('autoupdate_plugins', array())); $plugin['autoupdate'] = $autoupdate; $autoupdate_translation = in_array($plugin_file, Jetpack_Options::get_option('autoupdate_plugins_translations', array())); $plugin['autoupdate_translation'] = $autoupdate || $autoupdate_translation; $plugin['uninstallable'] = is_uninstallable_plugin($plugin_file); if (!empty($this->log[$plugin_file])) { $plugin['log'] = $this->log[$plugin_file]; } return $plugin; }
function update_translations() { include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; // Clear the cache. wp_clean_plugins_cache(); ob_start(); wp_update_plugins(); // Check for Plugin updates ob_end_clean(); $available_updates = get_site_transient('update_plugins'); if (!isset($available_updates->translations) || empty($available_updates->translations)) { return new WP_Error('nothing_to_translate'); } $update_attempted = false; $result = false; foreach ($this->plugins as $plugin) { $this->slug = Jetpack_Autoupdate::get_plugin_slug($plugin); $translation = array_filter($available_updates->translations, array($this, 'get_translation')); if (empty($translation)) { $this->log[$plugin][] = __('No update needed', 'jetpack'); continue; } /** * Pre-upgrade action * * @since 4.4 * * @param array $plugin Plugin data * @param array $plugin Array of plugin objects * @param bool $updated_attempted false for the first update, true subsequently */ do_action('jetpack_pre_plugin_upgrade_translations', $plugin, $this->plugins, $update_attempted); $update_attempted = true; $skin = new Automatic_Upgrader_Skin(); $upgrader = new Language_Pack_Upgrader($skin); $upgrader->init(); $result = $upgrader->upgrade((object) $translation[0]); $this->log[$plugin] = $upgrader->skin->get_upgrade_messages(); } if (!$this->bulk && !$result) { return new WP_Error('update_fail', __('There was an error updating your plugin', 'jetpack'), 400); } return true; }