283 lines
9.8 KiB
PHP
283 lines
9.8 KiB
PHP
<?php
|
|
|
|
class MailtemplateController extends mfBaseController {
|
|
|
|
protected function init() {
|
|
$this->needlogin=true;
|
|
$me = new User();
|
|
$me->loadMe();
|
|
$this->me = $me;
|
|
$this->layout()->set("me",$me);
|
|
|
|
if(!$me->is(["Admin"])) {
|
|
$this->redirect("Dashboard");
|
|
}
|
|
}
|
|
|
|
protected function indexAction() {
|
|
if($this->request->resetFilter) {
|
|
unset($_SESSION[MFAPPNAME.'-Mailtemplate-filter']);
|
|
}
|
|
|
|
$filter = [];
|
|
if(is_array($this->request->filter)) {
|
|
$filter = $this->request->filter;
|
|
$_SESSION[MFAPPNAME.'-Mailtemplate-filter'] = $filter;
|
|
} else {
|
|
if(array_key_exists(MFAPPNAME.'-Mailtemplate-filter', $_SESSION) && count($_SESSION[MFAPPNAME.'-Mailtemplate-filter'])) {
|
|
$filter = $_SESSION[MFAPPNAME.'-Mailtemplate-filter'];
|
|
}
|
|
}
|
|
|
|
$this->layout->set("filter", $filter);
|
|
$filter = $this->getPreparedFilter($filter);
|
|
|
|
|
|
// pagination defaults
|
|
$pagination = [];
|
|
$pagination['start'] = 0;
|
|
$pagination['count'] = 20;
|
|
$pagination['maxItems'] = 0;
|
|
|
|
if(is_numeric($this->request->s)) {
|
|
$pagination['start'] = intval($this->request->s);
|
|
}
|
|
|
|
$pagination['maxItems'] = MailtemplateModel::count($filter);
|
|
$this->layout()->set("pagination", $pagination);
|
|
|
|
$templates = MailtemplateModel::search($filter, $pagination);
|
|
$this->layout()->set("templates", $templates);
|
|
}
|
|
|
|
private function getPreparedFilter($filter) {
|
|
$new_filter = [];
|
|
|
|
foreach($filter as $name => $value) {
|
|
$new_filter[$name] = $value;
|
|
}
|
|
|
|
return $new_filter;
|
|
}
|
|
|
|
protected function addAction() {
|
|
$this->layout()->setTemplate("Mailtemplate/Form");
|
|
|
|
$embeds = MailtemplateModel::search(["is_include" => 1]);
|
|
$this->layout()->set("embeds", $embeds);
|
|
}
|
|
|
|
protected function editAction() {
|
|
$id = $this->request->id;
|
|
$template = new Mailtemplate($id);
|
|
if(!$template->id) {
|
|
$this->layout()->setFlash("Emailtemplate nicht gefunden.", "error");
|
|
$this->redirect("Mailtemplate");
|
|
}
|
|
|
|
$this->layout()->set("template", $template);
|
|
|
|
return $this->addAction();
|
|
}
|
|
|
|
protected function saveAction() {
|
|
$r = $this->request;
|
|
//var_dump($r->get());exit;
|
|
$id = $r->id;
|
|
|
|
if(is_numeric($id) && $id > 0) {
|
|
$mode = "edit";
|
|
$template = new Mailtemplate($id);
|
|
if(!$template->id) {
|
|
$this->layout()->setFlash("Emailtemplate nicht gefunden", "error");
|
|
$this->redirect("Mailtemplate");
|
|
}
|
|
} else {
|
|
$mode = "add";
|
|
}
|
|
|
|
$data = [];
|
|
$data["name"] = $r->name;
|
|
$data["code"] = null;
|
|
$data["is_include"] = ($r->is_include) ? 1 : 0;
|
|
$data["subject"] = ($r->subject) ? $r->subject : null;
|
|
|
|
$data["description"] = $r->description;
|
|
$data["note"] = ($r->note) ? $r->note : null;
|
|
|
|
if($r->is_html) {
|
|
$data["body_html"] = ($r->body_html) ? $r->body_html : null;
|
|
$data["body_text"] = null;
|
|
} else {
|
|
$data["body_text"] = ($r->body_text) ? $r->body_text : null;
|
|
$data["body_html"] = null;
|
|
}
|
|
|
|
if($mode == "edit") {
|
|
$data["code"] = $template->code;
|
|
}
|
|
|
|
if(!$data["code"]) {
|
|
$this->log->debug("if !code [".$data["code"]."]");
|
|
$new_code = strtolower($data["name"]);
|
|
$new_code = iconv("utf-8", "ASCII//TRANSLIT", $new_code);
|
|
$new_code = preg_replace('/[^a-z0-9-]/i', "-", $new_code);
|
|
$this->log->debug("1st try new code [".$new_code."]");
|
|
if(!$new_code) {
|
|
$this->layout()->setFlash("Fehler beim Code generieren. Bitte sinnvollen Name vergeben!", "error");
|
|
$this->redirect("Mailtemplate");
|
|
}
|
|
|
|
// special chars at the end
|
|
while(preg_match('/[^a-z0-9]$/', $new_code)) {
|
|
$this->log->debug("while preg_match() end [$new_code]");
|
|
$new_code = substr($new_code, 0, -1);
|
|
if(!$new_code) {
|
|
$this->layout()->setFlash("Fehler beim Code generieren. Bitte sinnvollen Name vergeben!", "error");
|
|
$this->redirect("Mailtemplate");
|
|
}
|
|
}
|
|
|
|
// special chars at the beginning
|
|
while(preg_match('/^[^a-z0-9]/', $new_code)) {
|
|
$this->log->debug("while preg_match() beginning [$new_code]");
|
|
$new_code = substr($new_code, 1);
|
|
if(!$new_code) {
|
|
$this->layout()->setFlash("Fehler beim Code generieren. Bitte sinnvollen Name vergeben!", "error");
|
|
$this->redirect("Mailtemplate");
|
|
}
|
|
}
|
|
|
|
while($check_mt = MailtemplateModel::getFirst(["code" => $new_code])) {
|
|
if($mode == "edit" && $check_mt->id == $id) break;
|
|
$this->log->debug("while getFirst() [".$data["code"]."]");
|
|
$last_char = substr($new_code, -1, 1);
|
|
if(is_numeric($last_char)) {
|
|
$last_two_chars = substr($new_code, -2);
|
|
if(is_numeric($last_two_chars)) {
|
|
// avoid increment if the last number could be a status code like 141
|
|
$new_code .= "-1";
|
|
} else {
|
|
$new_code = substr($new_code, 0, -1);
|
|
$new_code .= ++$last_char;
|
|
}
|
|
} else {
|
|
$new_code .= "-1";
|
|
}
|
|
|
|
}
|
|
$data["code"] = $new_code;
|
|
|
|
}
|
|
|
|
|
|
//var_dump($data);exit;
|
|
|
|
if($mode == "edit") {
|
|
$template->update($data);
|
|
} else {
|
|
$template = MailtemplateModel::create($data);
|
|
}
|
|
|
|
if(!$template->save()) {
|
|
$this->layout()->setFlash("Fehler beim Speichern", "error");
|
|
$this->redirect("Mailtemplate");
|
|
}
|
|
|
|
|
|
if(array_key_exists("attachment", $_FILES)) {
|
|
$files = $_FILES['attachment'];
|
|
if(is_array($files) && count($files)) {
|
|
$file_errors = 0;
|
|
foreach($files['name'] as $i => $name) {
|
|
if(!$name) continue;
|
|
$upload_error = false;
|
|
try {
|
|
$upload = new mfUpload(['attachment', $i]);
|
|
$upload->setSavepath(MFUPLOAD_FILE_SAVE_PATH . "/" . TT_MAILTEMPLATE_FILE_UPLOAD_SUBFOLDER);
|
|
} catch(Exception $e) {
|
|
$this->layout()->setFlash("Dateiupload fehlgeschlagen: ".$e->getMessage(), "warn");
|
|
$file_errors++;
|
|
continue;
|
|
}
|
|
|
|
if(!$upload->getSize()) {
|
|
$this->layout()->setFlash("Dateiupload fehlgeschlagen: Datei ist leer!", "warn");
|
|
$upload_error = true;
|
|
}
|
|
|
|
$mime = "";
|
|
|
|
if(!$upload_error) {
|
|
try {
|
|
$mime = $upload->getMimetype();
|
|
$upload->save();
|
|
} catch(Exception $e) {
|
|
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
|
|
$upload_error = true;
|
|
}
|
|
}
|
|
|
|
if($upload_error) {
|
|
$file_errors++;
|
|
continue;
|
|
}
|
|
|
|
$file_data = [];
|
|
$file_data['name'] = $upload->getOriginalFilename();
|
|
$file_data['filename'] = $upload->getOriginalFilename();
|
|
$file_data['subfolder'] = TT_MAILTEMPLATE_FILE_UPLOAD_SUBFOLDER;
|
|
$file_data['store_filename'] = $upload->getFilename();
|
|
$file_data['orig_filename'] = $upload->getOriginalFilename();
|
|
$file_data['mimetype'] = $mime;
|
|
|
|
$file = FileModel::create($file_data);
|
|
$file_id = $file->save();
|
|
if(!$file_id) {
|
|
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
|
|
unlink($upload->getSavepath()."/".$upload->getFilename());
|
|
} else {
|
|
$mtf = [];
|
|
$mtf['mailtemplate_id'] = $template->id;
|
|
$mtf['file_id'] = $file_id;
|
|
$mtf['filename'] = $file->filename;
|
|
|
|
$template_file = MailtemplateFileModel::create($mtf);
|
|
if(!$template_file->save()) {
|
|
$file->delete();
|
|
unlink($upload->getSavepath()."/".$upload->getFilename());
|
|
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
* delete files
|
|
*/
|
|
//var_dump($r->deletefile);exit;
|
|
if(is_array($r->deletefile)) {
|
|
foreach($r->deletefile as $mtf_id => $check) {
|
|
if(!$check) continue;
|
|
$mtf = new MailtemplateFile($mtf_id);
|
|
if($mtf->mailtemplate_id != $template->id) continue;
|
|
$mtf->file->delete();
|
|
$mtf->delete();
|
|
}
|
|
}
|
|
|
|
|
|
$this->layout()->setFlash("Emailtemplate erfolgreich gespeichert", "success");
|
|
if($r->return == "index") {
|
|
$this->redirect("Mailtemplate");
|
|
} else {
|
|
$this->redirect("Mailtemplate", "edit", ["id" => $template->id]);
|
|
}
|
|
|
|
|
|
}
|
|
} |