File: //var/www/html/triad-infosec/wp-content/themes/Avada/includes/cli/apply-patches.php
<?php
/**
* Apply Avada patches.
*
* @author ThemeFusion
* @copyright (c) Copyright by ThemeFusion
* @link https://avada.com
* @package Avada
* @subpackage CLI
* @since 7.3
*
* @usage: wp fusion patch apply
* @todo: make possible to apply only specific patch
*/
$fusion_apply_patches_cmd = function( $args, $assoc_args ) {
$patches = Fusion_Patcher_Client::get_patches( [] );
// Make sure we have a unique array.
$available_patches = array_keys( $patches );
// Sort the array by value (lowest to highest) and re-index the keys.
sort( $available_patches );
foreach ( $available_patches as $key => $patch_id ) {
// Get an array of the already applied patches.
$applied_patches = get_site_option( 'fusion_applied_patches', [] );
// Get an array of patches that failed to be applied.
$failed_patches = get_site_option( 'fusion_failed_patches', [] );
// Do not allow applying the patch initially.
// We'll have to check if they can later.
$can_apply = false;
/**
* Make sure the patch exists.
* if ( ! array_key_exists( $patch_id, $patches ) ) {
* continue;
* }
*/
// Get the patch arguments.
$patch_args = $patches[ $patch_id ];
// Has the patch been applied?
$patch_applied = ( in_array( $patch_id, $applied_patches, true ) );
// Has the patch failed?
$patch_failed = ( in_array( $patch_id, $failed_patches, true ) );
// If there is no previous patch, we can apply it.
if ( ! isset( $available_patches[ $key - 1 ] ) ) {
$can_apply = true;
}
// If the previous patch exists and has already been applied,
// then we can apply this one.
if ( isset( $available_patches[ $key - 1 ] ) ) {
if ( in_array( $available_patches[ $key - 1 ], $applied_patches, true ) ) {
$can_apply = true;
}
}
if ( $can_apply && ! $patch_applied ) {
Fusion_Patcher_Apply_Patch::apply_patch_from_args( $patch_id, Fusion_Patcher_Apply_Patch::format_patch( $patch_args ) );
WP_CLI::success( '#' . $patch_id . ' patch applied.' );
} else {
WP_CLI::log( 'Skip the patch: ' . $patch_id );
}
}
};
if ( class_exists( 'WP_CLI' ) ) {
WP_CLI::add_command( 'fusion patch apply', $fusion_apply_patches_cmd );
}
/* Omit closing PHP tag to avoid "Headers already sent" issues. */