130 lines
3.8 KiB
PHP
130 lines
3.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* File from http://PrestaShow.pl
|
|
*
|
|
* DISCLAIMER
|
|
* Do not edit or add to this file if you wish to upgrade this module to newer
|
|
* versions in the future.
|
|
*
|
|
* @authors PrestaShow.pl <kontakt@prestashow.pl>
|
|
* @copyright 2015 PrestaShow.pl
|
|
* @license http://PrestaShow.pl/license
|
|
*/
|
|
class PShowBackupController extends PShowAdminController
|
|
{
|
|
|
|
public $default_action = 'index';
|
|
public $filepath = null;
|
|
|
|
public function __construct()
|
|
{
|
|
$reflection = new ReflectionClass($this);
|
|
$this->filepath = $reflection->getFileName();
|
|
|
|
require_once dirname($this->filepath) . "/../../config.php";
|
|
|
|
parent::__construct();
|
|
|
|
$this->controller_displayName = $this->l('Backup');
|
|
}
|
|
|
|
public function indexAction()
|
|
{
|
|
$this->action_displayName = $this->l('List');
|
|
|
|
$backups = array();
|
|
|
|
$glob = glob(getModulePath($this->filepath) . "update/backups/*.zip");
|
|
|
|
foreach ($glob as $f) {
|
|
$filename = pathinfo($f, PATHINFO_FILENAME);
|
|
$data = explode("_", $filename);
|
|
|
|
$backups[$f] = array(
|
|
'filename' => $filename,
|
|
'modulename' => $data[0],
|
|
'version' => $data[1],
|
|
'time' => $data[2],
|
|
'date' => $data[3]
|
|
);
|
|
}
|
|
|
|
$this->context->smarty->assign('backups', $backups);
|
|
}
|
|
|
|
public function removeAction()
|
|
{
|
|
if (($filename = Tools::getValue('filename')) && file_exists(getModulePath($this->filepath) . "update/backups/" . $filename . ".zip")) {
|
|
$unlink = @unlink(getModulePath($this->filepath) . "update/backups/" . $filename . ".zip");
|
|
|
|
if ($unlink)
|
|
$this->alerts[] = array('success', $this->l('Removed module backup: ' . $filename));
|
|
else
|
|
$this->alerts[] = array('warning',
|
|
$this->l('I don\'t have permissions to delete file: ' . $filename));
|
|
}
|
|
|
|
$this->action = 'index';
|
|
$this->indexAction();
|
|
}
|
|
|
|
public function backupAction()
|
|
{
|
|
if (PShowUpdate::getInstance($this->filepath)->makeModuleBackup())
|
|
$this->alerts[] = array('success', $this->l('Maked module backup'));
|
|
else
|
|
$this->alerts[] = array('warning', $this->l('Module backup create error'));
|
|
|
|
$this->action = 'index';
|
|
$this->indexAction();
|
|
}
|
|
|
|
public function updateChmod($path = null)
|
|
{
|
|
if ($path === null)
|
|
$path = getModulePath($this->filepath);
|
|
|
|
$files = glob($path);
|
|
|
|
foreach ($files as $file) {
|
|
if (is_dir($file))
|
|
$this->updateChmod($file . "/*");
|
|
|
|
@chmod($file, 0777);
|
|
}
|
|
}
|
|
|
|
public function restorebackupAction()
|
|
{
|
|
$this->action = 'index';
|
|
$this->indexAction();
|
|
|
|
if (!Tools::getValue('filename'))
|
|
return false;
|
|
|
|
$this->updateChmod();
|
|
|
|
PShowUpdate::getInstance($this->filepath)->clearTmpDir();
|
|
|
|
PShowUpdate::getInstance($this->filepath)->moveBackupToTmp(Tools::getValue('filename'));
|
|
|
|
if (!PShowUpdate::getInstance($this->filepath)->extractBackup(Tools::getValue('filename'))) {
|
|
$this->alerts[] = array('warning', 'Backup package extract error');
|
|
return false;
|
|
} else {
|
|
$this->alerts[] = array('success', 'Backup package extracted');
|
|
}
|
|
|
|
if (!PShowUpdate::getInstance($this->filepath)->moveBackupToModule(Tools::getValue('filename'))) {
|
|
$this->alerts[] = array('warning', 'Module backup restore error');
|
|
return false;
|
|
} else {
|
|
$this->alerts[] = array('success', 'Module backup restored');
|
|
}
|
|
|
|
PShowUpdate::getInstance($this->filepath)->clearTmpDir();
|
|
$this->alerts[] = array('success', 'Cleaned after backup restoring');
|
|
}
|
|
}
|