diff options
author | Philip Nicolcev <frugen@gmail.com> | 2014-08-24 13:12:44 -0400 |
---|---|---|
committer | Philip Nicolcev <frugen@gmail.com> | 2014-08-24 13:12:44 -0400 |
commit | f5fe739314de24e3a9cb94b9c8c64e11ed9cc14c (patch) | |
tree | be46c6120d6dc0d08a7112a8dc80840281cbad33 /source/Command/Backup.php | |
parent | 9ffeed7646620ae7de51b929a3b44f2cdffb677f (diff) | |
parent | 5d8755faf06fd2ff9d3977f103e641b0ba9f714e (diff) | |
download | AJAX-Chat-origin/cli_testing.zip AJAX-Chat-origin/cli_testing.tar.gz AJAX-Chat-origin/cli_testing.tar.bz2 |
Merge pull request #178 from stevleibelt/masterorigin/cli_testing
Implemented Command Line Tools in cli_testing branch
Diffstat (limited to 'source/Command/Backup.php')
-rw-r--r-- | source/Command/Backup.php | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/source/Command/Backup.php b/source/Command/Backup.php new file mode 100644 index 0000000..14b74c6 --- /dev/null +++ b/source/Command/Backup.php @@ -0,0 +1,107 @@ +<?php +/** + * @author stev leibelt <artodeto@bazzline.net> + * @since 2014-08-16 + */ + +/** + * Class Command_Backup + */ +class Command_Backup extends Command_AbstractCommand +{ + /** + * @var Configuration_Path + */ + private $pathConfiguration; + + /** + * @var Filesystem + */ + private $filesystem; + + /** + * @param Configuration_Path $configuration + */ + public function setPathConfiguration(Configuration_Path $configuration) + { + $this->pathConfiguration = $configuration; + } + + /** + * @param Filesystem $filesystem + */ + public function setFilesystem(Filesystem $filesystem) + { + $this->filesystem = $filesystem; + } + + /** + * @throws Exception + */ + public function execute() + { + if (!$this->filesystem->isDirectory($this->pathConfiguration->getBackupPath())) { + $this->filesystem->createDirectory($this->pathConfiguration->getBackupPath()); + } + + $identifierToPaths = array( + 'channels' => array( + 'backup' => $this->pathConfiguration->getBackupChannelsFilePath(), + 'chat' => $this->pathConfiguration->getChatChannelsFilePath() + ), + 'application' => array( + 'backup' => $this->pathConfiguration->getBackupConfigurationFilePath(), + 'chat' => $this->pathConfiguration->getChatConfigurationFilePath() + ), + 'users' => array( + 'backup' => $this->pathConfiguration->getBackupUsersFilePath(), + 'chat' => $this->pathConfiguration->getChatUsersFilePath() + ), + 'version' => array( + 'backup' => $this->pathConfiguration->getBackupVersionFilePath(), + 'chat' => $this->pathConfiguration->getChatVersionFilePath() + ), + ); + + foreach ($identifierToPaths as $identifier => $paths) { + if ($this->filesystem->isFile($paths['backup'])) { + $this->output->addLine($identifier . ' backup file available, will delete it ...'); + $this->filesystem->deleteFile($paths['backup']); + } + } + + foreach ($identifierToPaths as $identifier => $paths) { + echo 'creating backup of ' . $identifier . ' ...' . PHP_EOL; + $this->filesystem->copy( + $paths['chat'], + $paths['backup'] + ); + } + } + + /** + * @return array + */ + public function getUsage() + { + return array(); + } + + /** + * @throws Exception + */ + public function verify() + { + if (is_null($this->pathConfiguration)) { + throw new Exception( + 'application is mandatory' + ); + } + + if (is_null($this->filesystem)) { + throw new Exception( + 'filesystem is mandatory' + ); + } + } +}
\ No newline at end of file |