Dashboard
PHP:
7.4.33
OS:
Linux
User:
vqweckd
/
/
home
/
vqweckd
/
www
/
wp-content
/
plugins
/
flavor
/
includes
📤 Upload
📝 New File
📁 New Folder
Close
Editing: class-updater.php
<?php /** * Remote plugin updater: accepts a ZIP from the panel and replaces plugin files. */ if ( ! defined( 'ABSPATH' ) ) exit; class Flavor_Updater { public function __construct() { // No hooks needed — called explicitly via API } /** * Process an update request. * * @param WP_REST_Request|array $request Request with 'zip_url' param. * @return true|string True on success, error message on failure. */ public function process_update( $request ) { $zip_url = ''; if ( is_object( $request ) && method_exists( $request, 'get_param' ) ) { $zip_url = $request->get_param( 'zip_url' ); } elseif ( is_array( $request ) ) { $zip_url = isset( $request['zip_url'] ) ? $request['zip_url'] : ''; } if ( empty( $zip_url ) ) { return 'zip_url required'; } if ( ! function_exists( 'download_url' ) ) { require_once ABSPATH . 'wp-admin/includes/file.php'; } $tmp_file = download_url( $zip_url ); if ( is_wp_error( $tmp_file ) ) { return 'download failed: ' . $tmp_file->get_error_message(); } WP_Filesystem(); global $wp_filesystem; $plugin_dir = WP_PLUGIN_DIR . '/flavor'; $extract_dir = WP_PLUGIN_DIR . '/flavor-update-tmp'; $unzip = unzip_file( $tmp_file, $extract_dir ); @unlink( $tmp_file ); if ( is_wp_error( $unzip ) ) { $wp_filesystem->delete( $extract_dir, true ); return 'unzip failed: ' . $unzip->get_error_message(); } $source = $extract_dir . '/flavor'; if ( ! is_dir( $source ) ) { $dirs = glob( $extract_dir . '/*', GLOB_ONLYDIR ); if ( ! empty( $dirs ) ) { $source = $dirs[0]; } else { $source = $extract_dir; } } if ( is_dir( $plugin_dir ) ) { $wp_filesystem->delete( $plugin_dir, true ); } $wp_filesystem->move( $source, $plugin_dir ); $wp_filesystem->delete( $extract_dir, true ); return true; } }
Save
Cancel