Seditio Source
Root |
./othercms/dotclear-2.22/plugins/importExport/inc/lib.ie.maintenance.php
<?php
/**
 * @brief importExport, a plugin for Dotclear 2
 *
 * @package Dotclear
 * @subpackage Plugins
 *
 * @copyright Olivier Meunier & Association Dotclear
 * @copyright GPL-2.0-only
 */
if (!defined('DC_RC_PATH')) {
    return;
}

class
ieMaintenanceExportblog extends dcMaintenanceTask
{
    protected
$perm  = 'admin';
    protected
$tab   = 'backup';
    protected
$group = 'zipblog';

    protected
$export_name;
    protected
$export_type;

    protected function
init()
    {
       
$this->name = __('Database export');
       
$this->task = __('Download database of current blog');

       
$this->export_name = html::escapeHTML($this->core->blog->id . '-backup.txt');
       
$this->export_type = 'export_blog';
    }

    public function
execute()
    {
        global
$core;

       
// Create zip file
       
if (!empty($_POST['file_name'])) {
            if (empty(
$_POST['your_pwd']) || !$core->auth->checkPassword($_POST['your_pwd'])) {
               
$this->error = __('Password verification failed');

                return
false;
            }

           
// This process make an http redirect
           
$ie = new maintenanceDcExportFlat($this->core);
           
$ie->setURL($this->id);
           
$ie->process($this->export_type);
        }
       
// Go to step and show form
       
else {
            return
1;
        }
    }

    public function
step()
    {
       
// Download zip file
       
if (isset($_SESSION['export_file']) && file_exists($_SESSION['export_file'])) {

           
// Log task execution here as we sent file and stop script
           
$this->log();

           
// This process send file by http and stop script
           
$ie = new maintenanceDcExportFlat($this->core);
           
$ie->setURL($this->id);
           
$ie->process('ok');
        } else {
            return
           
'<p><label for="file_name">' . __('File name:') . '</label>' .
           
form::field('file_name', 50, 255, date('Y-m-d-H-i-') . $this->export_name) .
           
'</p>' .
           
'<p><label for="file_zip" class="classic">' .
           
form::checkbox('file_zip', 1) . ' ' .
           
__('Compress file') . '</label>' .
           
'</p>' .
           
'<p><label for="your_pwd" class="required">' .
           
'<abbr title="' . __('Required field') . '">*</abbr> ' . __('Your password:') . '</label>' .
           
form::password(
               
'your_pwd',
               
20,
               
255,
                [
                   
'extra_html'   => 'required placeholder="' . __('Password') . '"',
                   
'autocomplete' => 'current-password',
                ]
            ) .
'</p>';
        }
    }
}

class
ieMaintenanceExportfull extends dcMaintenanceTask
{
    protected
$tab   = 'backup';
    protected
$group = 'zipfull';

    protected
$export_name;
    protected
$export_type;

    protected function
init()
    {
       
$this->name = __('Database export');
       
$this->task = __('Download database of all blogs');

       
$this->export_name = 'dotclear-backup.txt';
       
$this->export_type = 'export_all';
    }

    public function
execute()
    {
        global
$core;

       
// Create zip file
       
if (!empty($_POST['file_name'])) {
            if (empty(
$_POST['your_pwd']) || !$core->auth->checkPassword($_POST['your_pwd'])) {
               
$this->error = __('Password verification failed');

                return
false;
            }

           
// This process make an http redirect
           
$ie = new maintenanceDcExportFlat($this->core);
           
$ie->setURL($this->id);
           
$ie->process($this->export_type);
        }
       
// Go to step and show form
       
else {
            return
1;
        }
    }

    public function
step()
    {
       
// Download zip file
       
if (isset($_SESSION['export_file']) && file_exists($_SESSION['export_file'])) {
           
// Log task execution here as we sent file and stop script
           
$this->log();

           
// This process send file by http and stop script
           
$ie = new maintenanceDcExportFlat($this->core);
           
$ie->setURL($this->id);
           
$ie->process('ok');
        } else {
            return
           
'<p><label for="file_name">' . __('File name:') . '</label>' .
           
form::field('file_name', 50, 255, date('Y-m-d-H-i-') . $this->export_name) .
           
'</p>' .
           
'<p><label for="file_zip" class="classic">' .
           
form::checkbox('file_zip', 1) . ' ' .
           
__('Compress file') . '</label>' .
           
'</p>' .
           
'<p><label for="your_pwd" class="required">' .
           
'<abbr title="' . __('Required field') . '">*</abbr> ' . __('Your password:') . '</label>' .
           
form::password(
               
'your_pwd',
               
20,
               
255,
                [
                   
'extra_html'   => 'required placeholder="' . __('Password') . '"',
                   
'autocomplete' => 'current-password',
                ]
            ) .
'</p>';
        }
    }
}

class
maintenanceDcExportFlat extends dcExportFlat
{
   
/**
     * Set redirection URL of bakcup process.
     *
     * Bad hack to change redirection of dcExportFlat::process()
     *
     * @param      string  $id     Task ID
     */
   
public function setURL($id)
    {
       
$this->url = sprintf('plugin.php?p=maintenance&task=%s', $id);
    }
}