Current Path : /home/ncdcgo/public_html/wp-content/plugins backup/duplicator-pro/ctrls/ |
Current File : /home/ncdcgo/public_html/wp-content/plugins backup/duplicator-pro/ctrls/ctrl.recovery.php |
<?php defined('ABSPATH') || defined('DUPXABSPATH') || exit; use Duplicator\Controllers\SettingsPageController; use Duplicator\Core\Controllers\ControllersManager; use Duplicator\Libs\Snap\SnapIO; use Duplicator\Libs\Snap\SnapUtil; use Duplicator\Package\Recovery\RecoveryPackage; class DUP_PRO_CTRL_recovery { const VIEW_WIDGET_NO_PACKAGE_SET = 'nop'; const VIEW_WIDGET_NOT_VALID = 'notvalid'; const VIEW_WIDGET_VALID = 'valid'; /** * * @var bool */ protected static $isError = false; /** * * @var string */ protected static $errorMessage = ''; /** * init * * @return void */ public static function init() { } /** * import installer controller * * @return void */ public static function controller() { self::doView(); } /** * Check if recovery page * * @return bool */ public static function isRecoveryPage() { if (!DUP_PRO_CTRL_Tools::isToolPage()) { return false; } return filter_input(INPUT_GET, 'tab', FILTER_SANITIZE_SPECIAL_CHARS) === 'recovery'; } /** * * @return string */ public static function getErrorMessage() { return self::$errorMessage; } /** * @return bool check if package is disallow from wp-config.php */ public static function isDisallow() { return (bool) DUPLICATOR_PRO_DISALLOW_RECOVERY; } /** * Get recovery page link * * @return string */ public static function getRecoverPageLink() { if (is_multisite()) { $url = network_admin_url('admin.php'); } else { $url = admin_url('admin.php'); } $queryStr = http_build_query(array( 'page' => 'duplicator-pro-tools', 'tab' => 'recovery', )); return $url . '?' . $queryStr; } /** * Reset recovery point * * @return bool */ public static function actionResetRecoveryPoint() { try { RecoveryPackage::removeRecoveryFolder(); RecoveryPackage::setRecoveablePackage(false); } catch (Exception $e) { self::$isError = true; self::$errorMessage = $e->getMessage(); return false; } catch (Error $e) { self::$isError = true; self::$errorMessage = $e->getMessage(); return false; } return true; } /** * Set recovery point * * @return bool */ public static function actionSetRecoveryPoint() { try { $recPackageId = SnapUtil::filterInputRequest('recovery_package', FILTER_VALIDATE_INT); if ($recPackageId === RecoveryPackage::getRecoverPackageId()) { return true; } RecoveryPackage::removeRecoveryFolder(); $errorMessage = ''; if (!RecoveryPackage::setRecoveablePackage($recPackageId, $errorMessage)) { $msg = sprintf(__("Error: <b>%s</b>", 'duplicator-pro'), $errorMessage) . '<br><br>'; $msg .= __("The old Recovery Point was removed but this package can’t be set as the Recovery Point.", 'duplicator-pro') . '<br>'; $msg .= __("Possible solutions:", 'duplicator-pro') . '<br>'; $msg .= sprintf( _x( '- In some hosting the execution of PHP scripts are blocked in the wp-content folder, %1$s[try set a custom recovery path]%2$s', '%1$s and %2$s represents the opening and closing HTML tags for an anchor or link', 'duplicator-pro' ), '<a href="' . esc_url(ControllersManager::getMenuLink(ControllersManager::SETTINGS_SUBMENU_SLUG, SettingsPageController::L2_SLUG_IMPORT)) . '" target="_blank">', '</a>' ) . '<br>'; $msg .= __( "- you may still be able to to download the package manually and perform an import or a classic backup installation. If you wish to install the package on the site where it was create the restore backup mode should be activated.", 'duplicator-pro' ); throw new Exception($msg); } } catch (Exception $e) { self::$isError = true; self::$errorMessage = $e->getMessage(); return false; } catch (Error $e) { self::$isError = true; self::$errorMessage = $e->getMessage(); return false; } return true; } /** * Render recovery widget * * @param array<string, mixed> $options widget options * @param bool $echo echo or return * * @return string */ public static function renderRecoveryWidged($options = array(), $echo = true) { ob_start(); $options = array_merge( array( 'details' => true, 'selector' => false, 'subtitle' => '', 'copyLink' => false, 'copyButton' => true, 'launch' => true, 'download' => false, 'info' => true, ), (array) $options ); $recoverPackage = RecoveryPackage::getRecoverPackage(); $recoverPackageId = RecoveryPackage::getRecoverPackageId(); $recoveablePackages = RecoveryPackage::getRecoverablesPackages(); $displayDetails = $options['details']; $selector = $options['selector']; $subtitle = $options['subtitle']; $displayCopyLink = $options['copyLink']; $displayCopyButton = $options['copyButton']; $displayLaunch = $options['launch']; $displayDownload = $options['download']; $displayInfo = $options['info']; $importFailMessage = ''; if (!$recoverPackage instanceof RecoveryPackage) { $viewMode = self::VIEW_WIDGET_NO_PACKAGE_SET; } elseif (!$recoverPackage->isImportable($importFailMessage)) { $viewMode = self::VIEW_WIDGET_NOT_VALID; } else { $viewMode = self::VIEW_WIDGET_VALID; } require(DUPLICATOR____PATH . '/views/tools/recovery/widget/recovery-widget.php'); if ($echo) { ob_end_flush(); return ''; } else { return ob_get_clean(); } } /** * Parse view for import-installer * * @return void */ protected static function doView() { $recoverPackage = RecoveryPackage::getRecoverPackage(); $recoverPackageId = RecoveryPackage::getRecoverPackageId(); $recoveablePackages = RecoveryPackage::getRecoverablesPackages(); require(DUPLICATOR____PATH . '/views/tools/recovery/recovery.php'); } }