new IPF_Command_Fixtures,
new IPF_Command_DB,
new IPF_Command_DBDump,
+ new IPF_Command_DBRestore,
new IPF_Command_Pack,
+ new IPF_Command_Unpack,
new IPF_Command_CreateSuperUser,
new IPF_Command_SyncPerms,
);
{
$output = 'dump.sql';
- if (!in_array('quiet', $args))
+ if (!in_array('--quiet', $args))
print "Dumping database to file $output\n";
$db = IPF_ORM_Manager::getInstance()->connectionParameters(IPF::get('database', IPF::get('dsn')));
--- /dev/null
+<?php
+
+class IPF_Command_DBRestore
+{
+ public $command = 'dbrestore';
+ public $description = 'Restores database from a file';
+
+ public function run($args=null)
+ {
+ $input = 'dump.sql';
+
+ if (!in_array('--quiet', $args))
+ print "Restoring database from file $input\n";
+
+ $db = IPF_ORM_Manager::getInstance()->connectionParameters(IPF::get('database', IPF::get('dsn')));
+
+ if ($db['scheme'] === 'mysql') {
+ IPF_Shell::call('mysql',
+ '-h'.$db['host'],
+ '-u'.$db['username'],
+ '-p'.$db['password'],
+ '-e',
+ 'source '.$input,
+ $db['database']);
+ } else {
+ print 'Do not know how to connect to "'.$db['scheme'].'" database.';
+ }
+ }
+}
+
class IPF_Command_Pack
{
public $command = 'pack';
- public $description = 'Pack database dump and uploaded files to a single archive.';
+ public $description = 'Pack database dump and uploaded files to a single archive';
public function run($args=null)
{
$workingDirectory = getcwd();
chdir($uploadsDir . '/..');
$tar_object = new Archive_Tar($workingDirectory . '/upload.tar');
- $tar_object->setErrorHandling(PEAR_ERROR_PRINT);
+ $tar_object->setErrorHandling(PEAR_ERROR_PRINT);
$tar_object->create('upload');
chdir($workingDirectory);
}
- (new IPF_Command_DBDump)->run(array('quiet'));
+ (new IPF_Command_DBDump)->run(array('--quiet'));
- unlink($outputFileName);
+ IPF_Shell::unlink($outputFileName);
$tar_object = new Archive_Tar($outputFileName);
- $tar_object->setErrorHandling(PEAR_ERROR_PRINT);
+ $tar_object->setErrorHandling(PEAR_ERROR_PRINT);
$tar_object->create('upload.tar dump.sql');
- unlink('upload.tar');
- unlink('dump.sql');
+ IPF_Shell::unlink('upload.tar');
+ IPF_Shell::unlink('dump.sql');
}
}
--- /dev/null
+<?php
+
+class IPF_Command_Unpack
+{
+ public $command = 'unpack';
+ public $description = 'Unpack database dump and uploaded files from an archive';
+
+ public function run($args=null)
+ {
+ $inputFileName = 'working-data.tar';
+
+ if (is_dir($inputFileName)) {
+ print 'Error. File "'.$inputFileName.'" was not found.';
+ return;
+ }
+
+ IPF_Shell::unlink('upload.tar');
+ IPF_Shell::unlink('dump.sql');
+
+ (new Archive_Tar($inputFileName))->extract('.');
+
+ (new IPF_Command_DBRestore)->run(array('--quiet'));
+ IPF_Shell::unlink('dump.sql');
+
+ $uploadsDir = IPF::get('document_root') . IPF::getUploadUrl();
+ (new Archive_Tar('upload.tar'))->extract($uploadsDir . '/..');
+ IPF_Shell::unlink('upload.tar');
+ }
+}
+
proc_close($process);
}
+ public static function unlink($filename)
+ {
+ if (is_file($filename))
+ unlink($filename);
+ }
+
public static function displayTwoColumns($rows, $firstColumnMin=7, $firstColumnMax=47)
{
$firstColumnSize = $firstColumnMin;