/** * @internal */ public function _action_update_framework() { $nonce_name = '_nonce_fw_ext_update_framework'; if (!isset($_POST[$nonce_name]) || !wp_verify_nonce($_POST[$nonce_name])) { wp_die(__('Invalid nonce.', 'fw')); } if (!class_exists('_FW_Ext_Update_Framework_Upgrader_Skin')) { fw_include_file_isolated($this->get_declared_path('/includes/classes/class--fw-ext-update-framework-upgrader-skin.php')); } $skin = new _FW_Ext_Update_Framework_Upgrader_Skin(array('title' => __('Update Framework', 'fw'))); require_once ABSPATH . 'wp-admin/admin-header.php'; $skin->header(); $update = $this->get_framework_update(true); do { if ($update === false) { $skin->error(__('Failed to get framework latest version.', 'fw')); break; } elseif (is_wp_error($update)) { $skin->error($update); break; } $context = $this->context; if (!FW_WP_Filesystem::request_access($context, fw_current_url(), array($nonce_name))) { break; } $this->maintenance_mode(true); /** @var WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; $tmp_download_dir = FW_WP_Filesystem::real_path_to_filesystem_path(FW_CACHE_DIR . '/update'); // just in case it already exists, clear everything, it may contain broken/old files $wp_filesystem->rmdir($tmp_download_dir, true); if (!FW_WP_Filesystem::mkdir_recursive($tmp_download_dir)) { $skin->error(__('Cannot create directory: ' . $tmp_download_dir, 'fw')); break; } $skin->feedback(__('Downloading framework...', 'fw')); /** @var FW_Ext_Update_Service $service */ $service = $this->get_child($update['service']); $downloaded_files_dir = $service->_download_framework($update['latest_version'], $tmp_download_dir); if (!$downloaded_files_dir) { $skin->error(__('Failed to download framework.', 'fw')); break; } elseif (is_wp_error($downloaded_files_dir)) { $skin->error($downloaded_files_dir); break; } $skin->feedback(__('Installing framework...', 'fw')); $framework_dir = FW_WP_Filesystem::real_path_to_filesystem_path(FW_DIR); // remove entire framework directory $wp_filesystem->rmdir($framework_dir, true); // move downloaded directory as new framework directory $wp_filesystem->move($downloaded_files_dir, $framework_dir); $skin->feedback(__('Framework updated.', 'fw')); $wp_filesystem->delete($tmp_download_dir, true, 'd'); $skin->set_result(true); $skin->after(); } while (false); $this->maintenance_mode(false); $skin->footer(); require_once ABSPATH . 'wp-admin/admin-footer.php'; }
/** * @internal */ public function _action_update_framework() { $nonce_name = '_nonce_fw_ext_update_framework'; if (!isset($_POST[$nonce_name]) || !wp_verify_nonce($_POST[$nonce_name])) { wp_die(__('Invalid nonce.', 'fw')); } if (!class_exists('_FW_Ext_Update_Framework_Upgrader_Skin')) { fw_include_file_isolated($this->get_declared_path('/includes/classes/class--fw-ext-update-framework-upgrader-skin.php')); } $skin = new _FW_Ext_Update_Framework_Upgrader_Skin(array('title' => __('Framework Update', 'fw'))); require_once ABSPATH . 'wp-admin/admin-header.php'; $skin->header(); do { if (!FW_WP_Filesystem::request_access(fw_get_framework_directory(), fw_current_url(), array($nonce_name))) { break; } $update = $this->get_framework_update(); if ($update === false) { $skin->error(__('Failed to get framework latest version.', 'fw')); break; } elseif (is_wp_error($update)) { $skin->error($update); break; } /** @var FW_Ext_Update_Service $service */ $service = $this->get_child($update['service']); $update_result = $this->update(array('wp_fs_destination_dir' => FW_WP_Filesystem::real_path_to_filesystem_path(fw_get_framework_directory()), 'download_callback' => array($service, '_download_framework'), 'download_callback_args' => array($update['latest_version'], $this->get_wp_fs_tmp_dir()), 'skin' => $skin, 'title' => __('Framework', 'fw'))); if (is_wp_error($update_result)) { $skin->error($update_result); break; } $skin->set_result(true); $skin->after(); } while (false); $skin->footer(); require_once ABSPATH . 'wp-admin/admin-footer.php'; }