function vp_show_undo_confirm() { if (vp_is_ajax()) { require_once VERSIONPRESS_PLUGIN_DIR . '/admin/undo.php'; } else { // @codingStandardsIgnoreLine wp_safe_redirect(admin_url('admin.php?page=versionpress/admin/undo.php&method=' . $_GET['method'] . '&commit=' . $_GET['commit'])); exit; } }
use VersionPress\Git\Reverter; if (!in_array($_GET['method'], ['undo', 'rollback'])) { exit; } global $versionPressContainer; /** @var GitRepository $repository */ $repository = $versionPressContainer->resolve(VersionPressServices::GIT_REPOSITORY); /** @var Reverter $reverter */ $reverter = $versionPressContainer->resolve(VersionPressServices::REVERTER); /** @var CommitMessageParser $commitMessageParser */ $commitMessageParser = $versionPressContainer->resolve(VersionPressServices::COMMIT_MESSAGE_PARSER); $canRevert = $reverter->canRevert(); $commit = $repository->getCommit($_GET['commit']); $changeInfo = $commitMessageParser->parse($commit->getMessage()); $method = $_GET['method']; $title = $method == 'undo' ? "<div class='title-content'>Undo <em>{$changeInfo->getChangeDescription()}</em> ?</div>" : "<div class='title-content'>Roll back to <em>{$commit->getDate()->format('d-M-y H:i:s')}</em> ?</div>"; $message = "\n <p>\n For Early Access releases, please have a backup.\n <a href='http://docs.versionpress.net/en/feature-focus/undo-and-rollback' target='_blank'>\n Learn more about reverts.\n </a>\n </p>"; $errors = !$canRevert ? "\n <p class='undo-warning'>\n <span class='icon vp-icon-warning'></span>\n You have <a href='http://docs.versionpress.net/en/feature-focus/undo-and-rollback#uncommitted-files' target='_blank'>uncommitted changes</a> in your WordPress directory.<br>Please commit them before doing a revert.\n </p>" : ""; $proceedUrl = add_query_arg(['action' => 'vp_' . $method, 'commit' => $commit->getHash(), '_wpnonce' => wp_create_nonce('vp_revert')], admin_url('admin.php')); $buttonProceed = "<a " . "class='button " . (!$canRevert ? "disabled" : "") . "' " . "id='popover-ok-button' " . "href='" . (!$canRevert ? "javascript:;" : $proceedUrl) . "'>Proceed</a>"; $buttonCancel = "<a " . "class='button cancel' " . "id='popover-cancel-button' " . "href='" . (vp_is_ajax() ? "javascript:;" : menu_page_url('versionpress', false)) . "'>Cancel</a>"; $body = "\n <div>\n {$message}\n {$errors}\n <div class='button-container'>\n {$buttonProceed}\n {$buttonCancel}\n </div>\n </div>\n "; if (vp_is_ajax()) { $response = new stdClass(); $response->body = $body; echo json_encode($response); wp_die(); } else { echo "<h3>{$title}</h3>"; echo $body; }