summaryrefslogtreecommitdiffstats
path: root/modules/sysconfig/addconfig.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2015-01-26 20:28:49 +0100
committerSimon Rettberg2015-01-26 20:28:49 +0100
commit5347ecd5ddb1803ec1c43240bafc84f5c427f855 (patch)
tree7a852cdaa44599dab5f4c98b9daa7c6443d81024 /modules/sysconfig/addconfig.inc.php
parentFix stupid bug in update query, check DB version before handling callbacks (diff)
downloadslx-admin-5347ecd5ddb1803ec1c43240bafc84f5c427f855.tar.gz
slx-admin-5347ecd5ddb1803ec1c43240bafc84f5c427f855.tar.xz
slx-admin-5347ecd5ddb1803ec1c43240bafc84f5c427f855.zip
Add configtgz class. Fix dozens of bugs
Diffstat (limited to 'modules/sysconfig/addconfig.inc.php')
-rw-r--r--modules/sysconfig/addconfig.inc.php52
1 files changed, 9 insertions, 43 deletions
diff --git a/modules/sysconfig/addconfig.inc.php b/modules/sysconfig/addconfig.inc.php
index 4949539e..55194069 100644
--- a/modules/sysconfig/addconfig.inc.php
+++ b/modules/sysconfig/addconfig.inc.php
@@ -138,65 +138,31 @@ class AddConfig_Start extends AddConfig_Base
*/
class AddConfig_Finish extends AddConfig_Base
{
- private $task = false;
- private $destFile = false;
- private $title = false;
- private $moduleids = array();
+ private $config = false;
protected function preprocessInternal()
{
$modules = Request::post('module');
- $this->title = Request::post('title');
+ $title = Request::post('title');
if (!is_array($modules)) {
Message::addError('missing-file');
Util::redirect('?do=SysConfig&action=addconfig');
}
- if (empty($this->title)) {
- Message::addError('empty-field');
+ if (empty($title)) {
+ Message::addError('missing-title');
Util::redirect('?do=SysConfig&action=addconfig');
}
- // Get all input modules
- $moduleids = '0'; // Passed directly in query. Make sure no SQL injection is possible
- foreach ($modules as $module) {
- $moduleids .= ',' . (int)$module; // Casting to int should make it safe
- }
- $res = Database::simpleQuery("SELECT moduleid, filepath FROM configtgz_module WHERE moduleid IN ($moduleids)");
- $files = array();
- while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
- $files[] = $row['filepath'];
- $this->moduleids[] = $row['moduleid'];
+ $this->config = ConfigTgz::insert($title, $modules);
+ if ($this->config === false || $this->config->generate() !== 'OK') {
+ Message::addError('unsuccessful-action');
+ Util::redirect('?do=SysConfig&action=addconfig');
}
- // Create output file name (config.tgz)
- do {
- $this->destFile = CONFIG_TGZ_LIST_DIR . '/config-' . Util::sanitizeFilename($this->title) . '-' . mt_rand() . '.tgz';
- } while (file_exists($this->destFile));
- // Hand over to tm
- $this->task = Taskmanager::submit('RecompressArchive', array(
- 'inputFiles' => $files,
- 'outputFile' => $this->destFile
- ));
}
protected function renderInternal()
{
- if (isset($this->task['statusCode']) && ($this->task['statusCode'] === TASK_WAITING || $this->task['statusCode'] === TASK_PROCESSING)) {
- $this->task = Taskmanager::waitComplete($this->task['id']);
- }
- if ($this->task === false) $this->tmError();
- if (!isset($this->task['statusCode']) || $this->task['statusCode'] !== TASK_FINISHED) $this->taskError($this->task);
- Database::exec("INSERT INTO configtgz (title, filepath) VALUES (:title, :filepath)", array(
- 'title' => $this->title,
- 'filepath' => $this->destFile
- ));
- $confid = Database::lastInsertId();
- foreach ($this->moduleids as $moduleid) {
- Database::exec("INSERT INTO configtgz_x_module (configid, moduleid) VALUES (:configid, :moduleid)", array(
- 'configid' => $confid,
- 'moduleid' => $moduleid
- ));
- }
Render::addDialog(Dictionary::translate('lang_configurationCompilation'), false, 'sysconfig/cfg-finish', array(
- 'configid' => $confid
+ 'configid' => $this->config->id()
));
}