public static function trashExtension() { ob_start(); $slug = $_POST['slug']; include_once ABSPATH . '/wp-admin/includes/plugin.php'; $thePlugin = get_plugin_data($slug); if ($thePlugin != null && $thePlugin != '') { deactivate_plugins($slug); } if (file_exists(ABSPATH . '/wp-admin/includes/screen.php')) { include_once ABSPATH . '/wp-admin/includes/screen.php'; } include_once ABSPATH . '/wp-admin/includes/file.php'; include_once ABSPATH . '/wp-admin/includes/template.php'; include_once ABSPATH . '/wp-admin/includes/misc.php'; include_once ABSPATH . '/wp-admin/includes/class-wp-upgrader.php'; include_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php'; include_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php'; MainWP_Utility::getWPFilesystem(); /** @global WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; if (empty($wp_filesystem)) { $wp_filesystem = new WP_Filesystem_Direct(null); } $pluginUpgrader = new Plugin_Upgrader(); $thePlugin = get_plugin_data($slug); if ($thePlugin != null && $thePlugin != '') { $pluginUpgrader->delete_old_plugin(null, null, null, array('plugin' => $slug)); } ob_end_clean(); die(json_encode(array('result' => 'SUCCESS'))); }
protected static function checkDirectoryMainWPDirectory() { $dirs = MainWP_Utility::getMainWPDir(); $path = $dirs[0]; if (!is_dir(dirname($path))) { //return self::renderDirectoryRow('MainWP upload directory', $path, 'Writable', 'Directory not found', false); return self::renderDirectoryRow('MainWP Upload Directory', 'Writable', 'Not Found', false, self::ERROR); } $hasWPFileSystem = MainWP_Utility::getWPFilesystem(); /** @global WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; if ($hasWPFileSystem && !empty($wp_filesystem)) { if (!$wp_filesystem->is_writable($path)) { //return self::renderDirectoryRow('MainWP upload directory', $path, 'Writable', 'Directory not writable', false); return self::renderDirectoryRow('MainWP Upload Directory', 'Writable', 'Not Writable', false, self::ERROR); } } else { if (!is_writable($path)) { //return self::renderDirectoryRow('MainWP upload directory', $path, 'Writable', 'Directory not writable', false); return self::renderDirectoryRow('MainWP Upload Directory', 'Writable', 'Not Writable', false, self::ERROR); } } //return self::renderDirectoryRow('MainWP upload directory', $path, 'Writable', '/', true); return self::renderDirectoryRow('MainWP Upload Directory', 'Writable', 'Writable', true, self::ERROR); }
public static function installPlugin($url, $activatePlugin = false) { $hasWPFileSystem = MainWP_Utility::getWPFilesystem(); /** @global WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; if (file_exists(ABSPATH . '/wp-admin/includes/screen.php')) { include_once ABSPATH . '/wp-admin/includes/screen.php'; } include_once ABSPATH . '/wp-admin/includes/template.php'; include_once ABSPATH . '/wp-admin/includes/misc.php'; include_once ABSPATH . '/wp-admin/includes/class-wp-upgrader.php'; include_once ABSPATH . '/wp-admin/includes/plugin.php'; $installer = new WP_Upgrader(); $ssl_verifyhost = get_option('mainwp_sslVerifyCertificate'); $ssl_api_verifyhost = get_option('mainwp_api_sslVerifyCertificate') === false || get_option('mainwp_api_sslVerifyCertificate') == 1 ? 1 : 0; if ($ssl_verifyhost === '0' || $ssl_api_verifyhost == 0) { add_filter('http_request_args', array(MainWP_Extensions::getClassName(), 'noSSLFilterFunction'), 99, 2); } add_filter('http_request_args', array(MainWP_Extensions::getClassName(), 'http_request_reject_unsafe_urls'), 99, 2); $result = $installer->run(array('package' => $url, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => false, 'clear_working' => true, 'hook_extra' => array())); remove_filter('http_request_args', array(MainWP_Extensions::getClassName(), 'http_request_reject_unsafe_urls'), 99, 2); if ($ssl_verifyhost === '0') { remove_filter('http_request_args', array(MainWP_Extensions::getClassName(), 'noSSLFilterFunction'), 99); } if (is_wp_error($result)) { if ($result->get_error_data() && is_string($result->get_error_data())) { $error = $result->get_error_data(); MainWP_Helper::error($error); } else { $error = $result->get_error_code(); MainWP_Helper::error(implode(', ', $error)); } } $error = $output = $plugin_slug = null; if (is_wp_error($result)) { if ($result->get_error_data() && is_string($result->get_error_data())) { $error = $result->get_error_data(); } else { $error = $result->get_error_code(); } } else { $path = $result['destination']; foreach ($result['source_files'] as $srcFile) { // to fix bug if ($srcFile == 'readme.txt') { continue; } $thePlugin = get_plugin_data($path . $srcFile); if ($thePlugin != null && $thePlugin != '' && $thePlugin['Name'] != '') { $output .= __('Successfully installed the plugin', 'mainwp') . ' ' . $thePlugin['Name'] . ' ' . $thePlugin['Version']; $plugin_slug = $result['destination_name'] . '/' . $srcFile; if ($activatePlugin) { activate_plugin($path . $srcFile, '', false, true); do_action('mainwp_api_extension_activated', $path . $srcFile); } break; } } } if (!empty($error)) { $return['error'] = $error; } else { $return['result'] = 'SUCCESS'; $return['output'] = $output; $return['slug'] = $plugin_slug; } return $return; }
/** * Save the file to the specified path * @return boolean TRUE on success */ function save($path) { $wpFileSystem = MainWP_Utility::getWPFilesystem(); if ($wpFileSystem != null) { $path = str_replace(MainWP_Utility::getBaseDir(), '', $path); $moved = $wpFileSystem->put_contents($path, file_get_contents($_FILES['qqfile']['tmp_name'])); } else { $moved = move_uploaded_file($_FILES['qqfile']['tmp_name'], $path); } if (!$moved) { return false; } return true; }