summaryrefslogtreecommitdiffstats
path: root/modules/sysconfig
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
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')
-rw-r--r--modules/sysconfig/addconfig.inc.php52
-rw-r--r--modules/sysconfig/addmodule_adauth.inc.php6
-rw-r--r--modules/sysconfig/addmodule_branding.inc.php6
-rw-r--r--modules/sysconfig/addmodule_custommodule.inc.php4
4 files changed, 17 insertions, 51 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()
));
}
diff --git a/modules/sysconfig/addmodule_adauth.inc.php b/modules/sysconfig/addmodule_adauth.inc.php
index baa705b2..2418916e 100644
--- a/modules/sysconfig/addmodule_adauth.inc.php
+++ b/modules/sysconfig/addmodule_adauth.inc.php
@@ -11,7 +11,7 @@ class AdAuth_Start extends AddModule_Base
{
Session::set('ad_check', false);
Session::save();
- Render::addDialog(Dictionary::translate('lang_adAuthentication'), false, 'sysconfig/ad-start', array(
+ Render::addDialog(Dictionary::translate('config-module', 'adAuth_title'), false, 'sysconfig/ad-start', array(
'step' => 'AdAuth_CheckConnection',
'title' => Request::post('title'),
'server' => Request::post('server'),
@@ -79,7 +79,7 @@ class AdAuth_CheckConnection extends AddModule_Base
protected function renderInternal()
{
- Render::addDialog(Dictionary::translate('lang_adAuthentication'), false, 'sysconfig/ad-checkconnection', array_merge($this->taskIds, array(
+ Render::addDialog(Dictionary::translate('config-module', 'adAuth_title'), false, 'sysconfig/ad-checkconnection', array_merge($this->taskIds, array(
'title' => Request::post('title'),
'server' => Request::post('server'),
'searchbase' => Request::post('searchbase'),
@@ -148,7 +148,7 @@ class AdAuth_Finish extends AddModule_Base
protected function renderInternal()
{
- Render::addDialog(Dictionary::translate('lang_adAuthentication'), false, 'sysconfig/ad-finish', $this->taskIds);
+ Render::addDialog(Dictionary::translate('config-module', 'adAuth_title'), false, 'sysconfig/ad-finish', $this->taskIds);
}
}
diff --git a/modules/sysconfig/addmodule_branding.inc.php b/modules/sysconfig/addmodule_branding.inc.php
index 8bcc10a1..7b7dace9 100644
--- a/modules/sysconfig/addmodule_branding.inc.php
+++ b/modules/sysconfig/addmodule_branding.inc.php
@@ -9,7 +9,7 @@ class Branding_Start extends AddModule_Base
protected function renderInternal()
{
- Render::addDialog(Dictionary::translate('lang_specificLogo'), false, 'sysconfig/branding-start', array(
+ Render::addDialog(Dictionary::translate('config-module', 'branding_title'), false, 'sysconfig/branding-start', array(
'step' => 'Branding_ProcessFile',
));
}
@@ -74,7 +74,7 @@ class Branding_ProcessFile extends AddModule_Base
$png = base64_encode(file_get_contents($this->task['data']['pngFile']));
if (filesize($this->svgFile) < 1000000)
$svg = base64_encode(file_get_contents($this->svgFile));
- Render::addDialog(Dictionary::translate('lang_specificLogo'), false, 'sysconfig/branding-check', array(
+ Render::addDialog(Dictionary::translate('config-module', 'branding_title'), false, 'sysconfig/branding-check', array(
'png' => $png,
'svg' => $svg,
'error' => $this->task['data']['error'],
@@ -114,7 +114,7 @@ class Branding_ProcessFile extends AddModule_Base
// [wikipedia] Try to be nice and detect links that might give a hint where the svg can be found
if (preg_match_all('#href="([^"]*upload.wikimedia.org/[^"]*/[^"]*/[^"]*\.svg|[^"]+/[^"]+:[^"]+\.svg[^"]*)"#', $content, $out, PREG_PATTERN_ORDER)) {
if ($title === false && preg_match('#<title>([^<]*)</title>#i', $content, $tout))
- $title = trim($tout[1]);
+ $title = trim(preg_replace('/\W*Wikipedia.*/', '', $tout[1]));
foreach ($out[1] as $res) {
if (strpos($res, 'action=edit') !== false)
continue;
diff --git a/modules/sysconfig/addmodule_custommodule.inc.php b/modules/sysconfig/addmodule_custommodule.inc.php
index c42453db..1be9c10f 100644
--- a/modules/sysconfig/addmodule_custommodule.inc.php
+++ b/modules/sysconfig/addmodule_custommodule.inc.php
@@ -12,7 +12,7 @@ class CustomModule_Start extends AddModule_Base
protected function renderInternal()
{
Session::set('mod_temp', false);
- Render::addDialog(Dictionary::translate('lang_addCustomModule'), false, 'sysconfig/custom-upload', array(
+ Render::addDialog(Dictionary::translate('config-module', 'custom_title'), false, 'sysconfig/custom-upload', array(
'step' => 'CustomModule_ProcessUpload'
));
}
@@ -84,7 +84,7 @@ class CustomModule_ProcessUpload extends AddModule_Base
$list[] = $file;
}
}
- Render::addDialog(Dictionary::translate('lang_addCustomModule'), false, 'sysconfig/custom-fileselect', array(
+ Render::addDialog(Dictionary::translate('config-module', 'custom_title'), false, 'sysconfig/custom-fileselect', array(
'step' => 'CustomModule_CompressModule',
'files' => $list,
));