.
*
*/
namespace Vvveb\Controller\Editor;
use function Vvveb\__;
use Vvveb\Controller\Base;
use function Vvveb\friendlyDate;
use function Vvveb\sanitizeFileName;
use Vvveb\System\Sites;
class Revisions extends Base {
function getThemeFolder() {
$theme = $this->request->get['theme'] ?? Sites::getTheme(SITE_ID) ?? 'default';
return $theme;
}
private function sanitizeBackupFileName($fileName) {
return str_replace(['.', '/', '\\'], '', $fileName);
}
private function backupFolder() {
$theme = $this->getThemeFolder();
return DIR_THEMES . $theme . DS . 'backup' . DS;
}
function delete() {
$file = $this->request->post['file'] ?? false;
if ($file) {
$file = $this->backupFolder() . $this->sanitizeBackupFileName($file) . '.html';
$text = __('Error deleting file!' . $file);
$success = false;
if (file_exists($file)) {
$success = unlink($file);
if ($success) {
$text = __('File deleted!');
}
}
$data = ['success' => $success, 'message' => $text];
$this->response->setType('json');
$this->response->output($data);
}
}
function load() {
$file = $this->request->post['file'] ?? false;
$theme = $this->getThemeFolder();
if ($file) {
$file = $this->backupFolder() . $this->sanitizeBackupFileName($file) . '.html';
if (file_exists($file)) {
$this->response->setType('text');
$html = file_get_contents($file);
$base = "/themes/$theme/";
if (strpos($html, '