/home/techb158/balacoffee.com/wp-content/plugins/wp-rocket/inc/Engine
Edit: /home/techb158/balacoffee.com/wp-content/plugins/wp-rocket/inc/Engine/WPRocketUninstall.php (6729B)
cache_path = trailingslashit( $cache_path );
$this->config_path = $config_path;
$this->rucss_usedcss_table = $rucss_usedcss_table;
$this->rocket_cache = $rocket_cache;
}
/**
* Deletes all plugin data and files on uninstall.
*
* @since 3.5.2
* @author Remy Perona
*
* @return void
*/
public function uninstall() {
$this->delete_plugin_data();
$this->delete_cache_files();
$this->delete_config_files();
$this->drop_rucss_database_tables();
$this->delete_preload_table();
}
/**
* Drop RUCSS database tables.
*
* @return void
*/
private function drop_rucss_database_tables() {
// If the table exist, then drop the table.
$this->drop_rucss_current_site_tables();
if ( ! is_multisite() ) {
return;
}
foreach ( get_sites( [ 'fields' => 'ids' ] ) as $site_id ) {
switch_to_blog( $site_id );
$this->drop_rucss_current_site_tables();
restore_current_blog();
}
}
/**
* Drop RUCSS tables for current active site.
*/
private function drop_rucss_current_site_tables() {
if ( $this->rucss_usedcss_table->exists() ) {
$this->rucss_usedcss_table->uninstall();
}
}
/**
* Deletes WP Rocket options, transients and events.
*
* @since 3.5.2
* @author Remy Perona
*
* @return void
*/
private function delete_plugin_data() {
delete_site_transient( 'wp_rocket_update_data' );
// Delete all user meta related to WP Rocket.
delete_metadata( 'user', '', 'rocket_boxes', '', true );
// Delete all post meta related to WP Rocket.
foreach ( $this->post_meta as $post_meta ) {
delete_post_meta_by_key( "_rocket_exclude_{$post_meta}" );
}
array_walk( $this->transients, 'delete_transient' );
array_walk( $this->options, 'delete_option' );
foreach ( $this->events as $event ) {
wp_clear_scheduled_hook( $event );
}
}
/**
* Deletes all WP Rocket cache files.
*
* @since 3.5.2
* @author Remy Perona
*
* @return void
*/
private function delete_cache_files() {
foreach ( $this->cache_dirs as $dir ) {
$this->delete( $this->cache_path . $dir );
}
}
/**
* Deletes all WP Rocket config files.
*
* @since 3.5.2
* @author Remy Perona
*
* @return void
*/
private function delete_config_files() {
$this->delete( $this->config_path );
}
/**
* Drop preload tables.
*/
private function delete_preload_table() {
// If the table exist, then drop the table.
if ( $this->rocket_cache->exists() ) {
$this->rocket_cache->uninstall();
}
if ( ! is_multisite() ) {
return;
}
foreach ( get_sites( [ 'fields' => 'ids' ] ) as $site_id ) {
switch_to_blog( $site_id );
if ( $this->rocket_cache->exists() ) {
$this->rocket_cache->uninstall();
}
restore_current_blog();
}
}
/**
* Recursively deletes files and directories.
*
* @since 3.5.2
* @author Remy Perona
*
* @param string $file Path to file or directory.
*/
private function delete( $file ) {
if ( ! is_dir( $file ) ) {
@unlink( $file ); //phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
return;
}
try {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator( $file, FilesystemIterator::SKIP_DOTS ),
RecursiveIteratorIterator::CHILD_FIRST
);
} catch ( UnexpectedValueException $e ) {
return;
}
foreach ( $iterator as $item ) {
if ( $item->isDir() ) {
@rmdir( $item ); //phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
continue;
}
@unlink( $item ); //phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
}
@rmdir( $file ); //phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
}
}