mirror of
https://github.com/Chouchen/Shikiryu_Backup.git
synced 2021-06-30 16:02:14 +02:00
Going namespaced, going scenario style
This commit is contained in:
parent
dbcd02c2af
commit
c593f32378
@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
class Shikiryu_Backup_Transport_Factory
|
||||
{
|
||||
/**
|
||||
* @param $type
|
||||
* @param Shikiryu_Backup_Abstract $backup
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function getAndSend($type, Shikiryu_Backup_Abstract $backup, $args = null) {
|
||||
$class = sprintf('Shikiryu_Backup_Transport_%s', ucfirst($type));
|
||||
if (class_exists($class)) {
|
||||
/* @var $instance Shikiryu_Backup_Transport_Abstract */
|
||||
$instance = new $class($backup, $args);
|
||||
return $instance->send();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
44
app/code/Scenario.php
Normal file
44
app/code/Scenario.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Shikiryu\Backup;
|
||||
|
||||
use Shikiryu\Backup\Backup\Factory as BackupFactory;
|
||||
use Shikiryu\Backup\Transport\Factory as TransportFactory;
|
||||
|
||||
class Scenario {
|
||||
|
||||
private $backup;
|
||||
private $to;
|
||||
|
||||
/**
|
||||
* @param array $scenario
|
||||
*/
|
||||
private function __construct(array $scenario)
|
||||
{
|
||||
$this->backup = BackupFactory::build($scenario['backup']);
|
||||
$this->to = TransportFactory::build($scenario['to']);
|
||||
}
|
||||
|
||||
|
||||
public static function launch($scenario)
|
||||
{
|
||||
if (is_readable($scenario)) {
|
||||
$scenario = json_decode(file_get_contents($scenario), true);
|
||||
if (static::isValid($scenario)) {
|
||||
$scenario = new self($scenario);
|
||||
}
|
||||
throw new \Exception('invalid scenario.');
|
||||
}
|
||||
throw new \Exception('scenario not found.');
|
||||
}
|
||||
|
||||
public static function isValid(\StdClass $scenario)
|
||||
{
|
||||
return
|
||||
isset($scenario->backup) &&
|
||||
count($scenario->backup) === 1 &&
|
||||
isset($scenario->to) &&
|
||||
count($scenario->to) === 1;
|
||||
}
|
||||
|
||||
}
|
@ -1,12 +1,16 @@
|
||||
<?php
|
||||
|
||||
abstract class Shikiryu_Backup_Transport_Abstract
|
||||
namespace Shikiryu\Backup\Transport;
|
||||
|
||||
use Shikiryu\Backup\Backup\BackupAbstract;
|
||||
|
||||
abstract class TransportAbstract
|
||||
{
|
||||
|
||||
protected $backup;
|
||||
protected $config;
|
||||
|
||||
public function __construct(Shikiryu_Backup_Abstract $backup)
|
||||
public function __construct(BackupAbstract $backup)
|
||||
{
|
||||
$config = parse_ini_file(dirname(__FILE__).'/../config/config.ini');
|
||||
$classname = get_class($this);
|
@ -1,6 +1,8 @@
|
||||
<?php
|
||||
|
||||
class Shikiryu_Backup_Transport_Email extends Shikiryu_Backup_Transport_Abstract
|
||||
namespace Shikiryu\Backup\Transport;
|
||||
|
||||
class Email extends TransportAbstract
|
||||
{
|
||||
|
||||
private $to;
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace Shikiryu\Backup\Transport;
|
||||
|
||||
class Shikiryu_Backup_Transport_Ftp extends Shikiryu_Backup_Transport_Abstract
|
||||
class Ftp extends TransportAbstract
|
||||
{
|
||||
|
||||
private $path;
|
22
app/code/Transport/Factory.php
Normal file
22
app/code/Transport/Factory.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace Shikiryu\Backup\Transport;
|
||||
|
||||
class Factory
|
||||
{
|
||||
/**
|
||||
* @param $type
|
||||
* @param Shikiryu_Backup_Abstract $backup
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function build(array $config)
|
||||
{
|
||||
$class = array_keys($config)[0];
|
||||
if (class_exists($class)) {
|
||||
/* @var $instance BackupAbstract */
|
||||
return new $class(array_values($config));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
<?php
|
||||
|
||||
include_once dirname(__FILE__) . '/Transport/Email.php';
|
||||
include_once dirname(__FILE__) . '/Transport/FTP.php';
|
||||
namespace Shikiryu\Backup\Backup;
|
||||
|
||||
class Shikiryu_Backup_Abstract
|
||||
class BackupAbstract
|
||||
{
|
||||
|
||||
protected $_filesToBackup;
|
20
app/code/backup/Factory.php
Normal file
20
app/code/backup/Factory.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Shikiryu\Backup\Backup;
|
||||
|
||||
class Factory
|
||||
{
|
||||
/**
|
||||
* @param array $config
|
||||
* @return BackupAbstract
|
||||
*/
|
||||
public static function build(array $config)
|
||||
{
|
||||
$class = array_keys($config)[0];
|
||||
if (class_exists($class)) {
|
||||
/* @var $instance BackupAbstract */
|
||||
return new $class(array_values($config));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
include_once dirname(__FILE__).'/Abstract.php';
|
||||
namespace Shikiryu\Backup\Backup;
|
||||
|
||||
class Shikiryu_Backup_Files extends Shikiryu_Backup_Abstract
|
||||
class Files extends BackupAbstract
|
||||
{
|
||||
|
||||
/**
|
@ -1,8 +1,8 @@
|
||||
<?php
|
||||
|
||||
include_once dirname(__FILE__) . '/Abstract.php';
|
||||
namespace Shikiryu\Backup\Backup;
|
||||
|
||||
class Shikiryu_Backup_MYSQL extends Shikiryu_Backup_Abstract
|
||||
class Mysql extends BackupAbstract
|
||||
{
|
||||
|
||||
/**
|
31
app/scenario/scenarii.json
Normal file
31
app/scenario/scenarii.json
Normal file
@ -0,0 +1,31 @@
|
||||
[{
|
||||
"backup": {
|
||||
"Files": {
|
||||
"files": [
|
||||
"/path/to/file1",
|
||||
"/path/to/file2"
|
||||
]
|
||||
},
|
||||
"Mysql": {
|
||||
"host" : "mysql address",
|
||||
"login" : "mysql login",
|
||||
"pwd" : "mysql password",
|
||||
"db" : "mysql database"
|
||||
}
|
||||
},
|
||||
"to": {
|
||||
"Email": {
|
||||
"to" : "recipient@example.net;recipient2@example.net", // TODO manage more than one recipient
|
||||
"from" : "<name>from@example.net",
|
||||
"encoding" : "UTF-8",
|
||||
"subject" : "[Example.net] backup of the day",
|
||||
"message" : "Hi,\n\nYou can find your backup in this mail.\n\nRegards,\nMyself."
|
||||
},
|
||||
"Ftp": {
|
||||
"host" : "ftp.domain.com",
|
||||
"login" : "login",
|
||||
"password" : "password",
|
||||
"folder" : "/folder"
|
||||
}
|
||||
}
|
||||
}]
|
0
app/temp/.gitkeep
Normal file
0
app/temp/.gitkeep
Normal file
Loading…
Reference in New Issue
Block a user