summaryrefslogtreecommitdiffstats
path: root/modules-available/dozmod/inc/pagemailtemplates.inc.php
diff options
context:
space:
mode:
authorChristian Klinger2016-08-02 15:56:37 +0200
committerChristian Klinger2016-08-02 15:56:37 +0200
commit7b366ecc2a107d77ce274790207a3e65866a8184 (patch)
treefcb7699882ef9b91f21bb73d891b5f4d1809767d /modules-available/dozmod/inc/pagemailtemplates.inc.php
parentdozmod runtimeconfig. (diff)
downloadslx-admin-7b366ecc2a107d77ce274790207a3e65866a8184.tar.gz
slx-admin-7b366ecc2a107d77ce274790207a3e65866a8184.tar.xz
slx-admin-7b366ecc2a107d77ce274790207a3e65866a8184.zip
mail template editor.
Diffstat (limited to 'modules-available/dozmod/inc/pagemailtemplates.inc.php')
-rw-r--r--modules-available/dozmod/inc/pagemailtemplates.inc.php119
1 files changed, 119 insertions, 0 deletions
diff --git a/modules-available/dozmod/inc/pagemailtemplates.inc.php b/modules-available/dozmod/inc/pagemailtemplates.inc.php
new file mode 100644
index 00000000..fedb13c8
--- /dev/null
+++ b/modules-available/dozmod/inc/pagemailtemplates.inc.php
@@ -0,0 +1,119 @@
+<?php
+
+class Page_mail_templates extends Page
+{
+
+ private $templates = [];
+
+ protected function doPreprocess()
+ {
+ User::load();
+
+ if (!User::hasPermission('superadmin')) {
+ Message::addError('main.no-permission');
+ Util::redirect('?do=Main');
+ }
+
+ $action = Request::get('action', 'show', 'string');
+
+ if ($action === 'show') {
+ $this->fetchTemplates();
+ } elseif ($action === 'save') {
+ $this->handleSave();
+ }
+ }
+
+ private function enrichHtml() {
+ /* for each template */
+ foreach ($this->templates as $k => $t) {
+ $lis = "";
+ $optManVars = "";
+ $optVars = "";
+ foreach ($t['mandatory_variables'] as $var) {
+ $optManVars .= "<option selected=\"selected\" value=\"$var\">$var</option>";
+ $lis .= "<li><strong>$var</strong></li>";
+ }
+ foreach($t['optional_variables'] as $var) {
+ $optVars .= "<option selected=\"selected\" value=\"$var\">$var</option>";
+ $lis .= "<li>$var</li>";
+ }
+ /* also options for hidden inputs */
+
+ $this->templates[$k]['html_availableVariables'] = $lis;
+ $this->templates[$k]['html_mandatoryVariables'] = $optManVars;
+ $this->templates[$k]['html_optionalVariables'] = $optVars;
+
+ /* also for javascript */
+ $this->templates[$k]['list_mandatoryVariables'] =
+ implode(',', $this->templates[$k]['mandatory_variables']);
+
+ $this->templates[$k]['list_optionalVariables'] =
+ implode(',', $this->templates[$k]['optional_variables']);
+ }
+
+ }
+ protected function doRender()
+ {
+ //echo '<pre>';
+ //var_dump($this->templates);
+ //echo '</pre>';
+ //die();
+ $this->enrichHtml();
+ Render::addTemplate('templates', ['templates' => $this->templates]);
+ }
+
+ private function handleSave() {
+ $data = [];
+ $data['templates'] = Request::post('templates');
+ $data = $this->cleanTemplateArray($data);
+ if ($data!= NULL) {
+ $data = json_encode($data, JSON_PRETTY_PRINT);
+ //echo '<pre>';
+ //print_r($data);
+ //echo '</pre>';
+ //die();
+ Database::exec("UPDATE sat.configuration SET value = :value WHERE parameter = 'templates'", array('value' => $data));
+ Message::addSuccess('templates-saved');
+
+ Util::redirect('?do=dozmod&section=templates&action=show');
+ } else {
+ die('error while encoding');
+ }
+
+ }
+
+ private function fetchTemplates() {
+ $templates= Database::queryFirst('SELECT value FROM sat.configuration WHERE parameter = :param', array('param' => 'templates'));
+ if ($templates != null) {
+ $templates = @json_decode($templates['value'], true);
+ if (is_array($templates)) {
+ $this->templates = $templates['templates'];
+ }
+ }
+
+ }
+
+ private function cleanTemplateArray($in) {
+ $out = [];
+ foreach ($in['templates'] as $t) {
+ $tcopy = $t;
+ $tcopy['mandatory_variables'] = $this->toArray($t['mandatory_variables']);
+ $tcopy['optional_variables'] = $this->toArray($t['optional_variables']);
+ $tcopy['description'] = $t['description'];
+ $tcopy['name'] = $t['name'];
+
+ $out['templates'][] = $tcopy;
+ }
+ return $out;
+ }
+
+ private function toArray($value) {
+ if (empty($value)) {
+ return [];
+ } else if(is_array($value)) {
+ return $value;
+ } else {
+ return array($value);
+ }
+ }
+}