add option to disable mail notifications for users (issue #330)

This commit is contained in:
coderkun 2014-06-24 20:55:32 +02:00
commit 9d0275eb7a
6 changed files with 99 additions and 77 deletions

View file

@ -644,18 +644,20 @@
foreach($characters as &$character) foreach($characters as &$character)
{ {
$moderator = $this->Users->getUserById($character['user_id']); $moderator = $this->Users->getUserById($character['user_id']);
\hhu\z\Utils::sendMail( if($moderator['mailing']) {
$moderator['email'], \hhu\z\Utils::sendMail(
'characterregistration', $moderator['email'],
true, 'characterregistration',
array( true,
$moderator, array(
\hhu\z\controllers\SeminaryController::$seminary, $moderator,
\hhu\z\controllers\IntermediateController::$user, \hhu\z\controllers\SeminaryController::$seminary,
$newCharacter \hhu\z\controllers\IntermediateController::$user,
), $newCharacter
$this->linker ),
); $this->linker
);
}
} }
} }
catch(\hhu\z\exceptions\MailingException $e) { catch(\hhu\z\exceptions\MailingException $e) {

View file

@ -879,19 +879,21 @@
foreach($moderators as &$moderator) foreach($moderators as &$moderator)
{ {
$user = $this->Users->getUserById($moderator['user_id']); $user = $this->Users->getUserById($moderator['user_id']);
\hhu\z\Utils::sendMail( if($user['mailing']) {
$user['email'], \hhu\z\Utils::sendMail(
'charactersubmission', $user['email'],
true, 'charactersubmission',
array( true,
$user, array(
$seminary, $user,
$questgroup, $seminary,
$quest, $questgroup,
$character $quest,
), $character
$this->linker ),
); $this->linker
);
}
} }
} }
catch(\hhu\z\exceptions\MailingException $e) { catch(\hhu\z\exceptions\MailingException $e) {
@ -912,6 +914,9 @@
{ {
// Get user // Get user
$user = $this->Users->getUserById($character['user_id']); $user = $this->Users->getUserById($character['user_id']);
if(!$user['mailing']) {
return;
}
// Send notification mail // Send notification mail
try { try {

View file

@ -454,6 +454,7 @@
$prename = $user['prename']; $prename = $user['prename'];
$surname = $user['surname']; $surname = $user['surname'];
$email = $user['email']; $email = $user['email'];
$mailing = $user['mailing'];
$fields = array('username', 'prename', 'surname', 'email'); $fields = array('username', 'prename', 'surname', 'email');
$validation = array(); $validation = array();
@ -482,6 +483,7 @@
if($this->Users->emailExists($email, $user['id'])) { if($this->Users->emailExists($email, $user['id'])) {
$validation = $this->Validation->addValidationResult($validation, 'email', 'exist', true); $validation = $this->Validation->addValidationResult($validation, 'email', 'exist', true);
} }
$mailing = !is_null($this->request->getPostParam('mailing'));
// Save changes // Save changes
if($validation === true) if($validation === true)
@ -490,10 +492,11 @@
$this->Users->editUser( $this->Users->editUser(
$user['id'], $user['id'],
(count(array_intersect(array('admin','moderator'),\hhu\z\controllers\IntermediateController::$user['roles'])) > 0) ? $this->request->getPostParam('username') : $user['username'], (count(array_intersect(array('admin','moderator'),\hhu\z\controllers\IntermediateController::$user['roles'])) > 0) ? $this->request->getPostParam('username') : $user['username'],
$this->request->getPostParam('prename'), $prename,
$this->request->getPostParam('surname'), $surname,
$this->request->getPostParam('email'), $email,
$this->request->getPostParam('password') $password,
$mailing
); );
// Redirect to entry // Redirect to entry
@ -517,6 +520,7 @@
$this->set('prename', $prename); $this->set('prename', $prename);
$this->set('surname', $surname); $this->set('surname', $surname);
$this->set('email', $email); $this->set('email', $email);
$this->set('mailing', $mailing);
$this->set('validation', $validation); $this->set('validation', $validation);
$this->set('validationSettings', $validationSettings); $this->set('validationSettings', $validationSettings);
} }
@ -577,16 +581,18 @@
try { try {
foreach($moderators as &$moderator) foreach($moderators as &$moderator)
{ {
\hhu\z\Utils::sendMail( if($moderator['mailing']) {
$moderator['email'], \hhu\z\Utils::sendMail(
'userregistration', $moderator['email'],
true, 'userregistration',
array( true,
$moderator, array(
$user $moderator,
), $user
$this->linker ),
); $this->linker
);
}
} }
} }
catch(\hhu\z\exceptions\MailingException $e) { catch(\hhu\z\exceptions\MailingException $e) {

View file

@ -1,8 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: The Legend of Z\n" "Project-Id-Version: The Legend of Z\n"
"POT-Creation-Date: 2014-06-19 21:14+0100\n" "POT-Creation-Date: 2014-06-24 20:53+0100\n"
"PO-Revision-Date: 2014-06-19 21:14+0100\n" "PO-Revision-Date: 2014-06-24 20:53+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: de_DE\n" "Language: de_DE\n"
@ -21,9 +21,9 @@ msgstr ""
#: controllers/UsersController.inc:312 views/ajax/characters/index.tpl:10 #: controllers/UsersController.inc:312 views/ajax/characters/index.tpl:10
#: views/ajax/users/index.tpl:10 views/html/characters/index.tpl:39 #: views/ajax/users/index.tpl:10 views/html/characters/index.tpl:39
#: views/html/characters/manage.tpl:35 views/html/characters/manage.tpl:50 #: views/html/characters/manage.tpl:35 views/html/characters/manage.tpl:50
#: views/html/characters/manage.tpl:58 views/html/users/index.tpl:26 #: views/html/characters/manage.tpl:58 views/html/userroles/user.tpl:5
#: views/html/users/manage.tpl:28 views/html/users/manage.tpl:41 #: views/html/users/index.tpl:26 views/html/users/manage.tpl:28
#: views/html/users/manage.tpl:49 #: views/html/users/manage.tpl:41 views/html/users/manage.tpl:49
msgid "Admin" msgid "Admin"
msgstr "Administrator" msgstr "Administrator"
@ -31,9 +31,9 @@ msgstr "Administrator"
#: controllers/UsersController.inc:318 views/ajax/characters/index.tpl:12 #: controllers/UsersController.inc:318 views/ajax/characters/index.tpl:12
#: views/ajax/users/index.tpl:12 views/html/characters/index.tpl:40 #: views/ajax/users/index.tpl:12 views/html/characters/index.tpl:40
#: views/html/characters/manage.tpl:36 views/html/characters/manage.tpl:51 #: views/html/characters/manage.tpl:36 views/html/characters/manage.tpl:51
#: views/html/characters/manage.tpl:59 views/html/users/index.tpl:27 #: views/html/characters/manage.tpl:59 views/html/userroles/user.tpl:7
#: views/html/users/manage.tpl:29 views/html/users/manage.tpl:42 #: views/html/users/index.tpl:27 views/html/users/manage.tpl:29
#: views/html/users/manage.tpl:50 #: views/html/users/manage.tpl:42 views/html/users/manage.tpl:50
msgid "Moderator" msgid "Moderator"
msgstr "Moderator" msgstr "Moderator"
@ -41,9 +41,9 @@ msgstr "Moderator"
#: controllers/UsersController.inc:324 views/ajax/characters/index.tpl:14 #: controllers/UsersController.inc:324 views/ajax/characters/index.tpl:14
#: views/ajax/users/index.tpl:14 views/html/characters/index.tpl:41 #: views/ajax/users/index.tpl:14 views/html/characters/index.tpl:41
#: views/html/characters/manage.tpl:37 views/html/characters/manage.tpl:53 #: views/html/characters/manage.tpl:37 views/html/characters/manage.tpl:53
#: views/html/characters/manage.tpl:61 views/html/users/index.tpl:28 #: views/html/characters/manage.tpl:61 views/html/userroles/user.tpl:9
#: views/html/users/manage.tpl:30 views/html/users/manage.tpl:44 #: views/html/users/index.tpl:28 views/html/users/manage.tpl:30
#: views/html/users/manage.tpl:52 #: views/html/users/manage.tpl:44 views/html/users/manage.tpl:52
msgid "User" msgid "User"
msgstr "Benutzer" msgstr "Benutzer"
@ -63,7 +63,7 @@ msgstr "Neuer Lösungsvorschlag"
msgid "Character submission approved" msgid "Character submission approved"
msgstr "Lösungsvorschlag bewertet" msgstr "Lösungsvorschlag bewertet"
#: controllers/QuestsController.inc:736 #: controllers/QuestsController.inc:740
#: questtypes/submit/html/submission.tpl:30 views/html/quests/quest.tpl:45 #: questtypes/submit/html/submission.tpl:30 views/html/quests/quest.tpl:45
#: views/html/quests/submissions.tpl:30 #: views/html/quests/submissions.tpl:30
msgid "solved" msgid "solved"
@ -194,42 +194,42 @@ msgid "unsolved"
msgstr "Leider falsch!" msgstr "Leider falsch!"
#: views/ajax/quests/index.tpl:9 views/html/quests/index.tpl:27 #: views/ajax/quests/index.tpl:9 views/html/quests/index.tpl:27
#: views/html/quests/index.tpl:57 #: views/html/quests/index.tpl:59
msgid "Questtype Empty" msgid "Questtype Empty"
msgstr "Leere Aufgabe" msgstr "Leere Aufgabe"
#: views/ajax/quests/index.tpl:11 views/html/quests/index.tpl:29 #: views/ajax/quests/index.tpl:11 views/html/quests/index.tpl:29
#: views/html/quests/index.tpl:59 #: views/html/quests/index.tpl:61
msgid "Questtype bossfight" msgid "Questtype bossfight"
msgstr "Boss-Fight" msgstr "Boss-Fight"
#: views/ajax/quests/index.tpl:13 views/html/quests/index.tpl:31 #: views/ajax/quests/index.tpl:13 views/html/quests/index.tpl:31
#: views/html/quests/index.tpl:61 #: views/html/quests/index.tpl:63
msgid "Questtype choiceinput" msgid "Questtype choiceinput"
msgstr "Auswahleingabe" msgstr "Auswahleingabe"
#: views/ajax/quests/index.tpl:15 views/html/quests/index.tpl:33 #: views/ajax/quests/index.tpl:15 views/html/quests/index.tpl:33
#: views/html/quests/index.tpl:63 #: views/html/quests/index.tpl:65
msgid "Questtype crossword" msgid "Questtype crossword"
msgstr "Kreuzworträtsel" msgstr "Kreuzworträtsel"
#: views/ajax/quests/index.tpl:17 views/html/quests/index.tpl:35 #: views/ajax/quests/index.tpl:17 views/html/quests/index.tpl:35
#: views/html/quests/index.tpl:65 #: views/html/quests/index.tpl:67
msgid "Questtype dragndrop" msgid "Questtype dragndrop"
msgstr "Drag&Drop" msgstr "Drag&Drop"
#: views/ajax/quests/index.tpl:19 views/html/quests/index.tpl:37 #: views/ajax/quests/index.tpl:19 views/html/quests/index.tpl:37
#: views/html/quests/index.tpl:67 #: views/html/quests/index.tpl:69
msgid "Questtype multiplechoice" msgid "Questtype multiplechoice"
msgstr "Multiple Choice" msgstr "Multiple Choice"
#: views/ajax/quests/index.tpl:21 views/html/quests/index.tpl:39 #: views/ajax/quests/index.tpl:21 views/html/quests/index.tpl:39
#: views/html/quests/index.tpl:69 #: views/html/quests/index.tpl:71
msgid "Questtype submit" msgid "Questtype submit"
msgstr "Abgabeaufgabe" msgstr "Abgabeaufgabe"
#: views/ajax/quests/index.tpl:23 views/html/quests/index.tpl:41 #: views/ajax/quests/index.tpl:23 views/html/quests/index.tpl:41
#: views/html/quests/index.tpl:71 #: views/html/quests/index.tpl:73
msgid "Questtype textinput" msgid "Questtype textinput"
msgstr "Texteingabe" msgstr "Texteingabe"
@ -242,7 +242,7 @@ msgstr "Texteingabe"
#: views/html/characters/character.tpl:77 #: views/html/characters/character.tpl:77
#: views/html/characters/character.tpl:83 #: views/html/characters/character.tpl:83
#: views/html/characters/character.tpl:89 #: views/html/characters/character.tpl:89
#: views/html/characters/character.tpl:103 views/html/quests/index.tpl:73 #: views/html/characters/character.tpl:103 views/html/quests/index.tpl:75
#: views/html/seminaries/index.tpl:29 views/html/seminarybar/index.tpl:7 #: views/html/seminaries/index.tpl:29 views/html/seminarybar/index.tpl:7
#: views/html/seminarybar/index.tpl:43 #: views/html/seminarybar/index.tpl:43
#, php-format #, php-format
@ -701,10 +701,10 @@ msgstr "Die XP-Angabe ist ungültig"
#: views/html/library/edit.tpl:121 views/html/library/edit.tpl:122 #: views/html/library/edit.tpl:121 views/html/library/edit.tpl:122
#: views/html/questgroups/create.tpl:73 views/html/questgroups/create.tpl:74 #: views/html/questgroups/create.tpl:73 views/html/questgroups/create.tpl:74
#: views/html/questgroups/edit.tpl:61 views/html/questgroups/edit.tpl:62 #: views/html/questgroups/edit.tpl:61 views/html/questgroups/edit.tpl:62
#: views/html/questgroups/questgroup.tpl:82 #: views/html/questgroups/questgroup.tpl:82 views/html/quests/index.tpl:47
#: views/html/seminaries/create.tpl:68 views/html/seminaries/create.tpl:69 #: views/html/quests/index.tpl:48 views/html/seminaries/create.tpl:68
#: views/html/seminaries/edit.tpl:70 views/html/seminaries/edit.tpl:71 #: views/html/seminaries/create.tpl:69 views/html/seminaries/edit.tpl:70
#: views/html/seminaries/seminary.tpl:69 #: views/html/seminaries/edit.tpl:71 views/html/seminaries/seminary.tpl:69
msgid "Title" msgid "Title"
msgstr "Titel" msgstr "Titel"
@ -775,7 +775,7 @@ msgstr "Die Datei ist ungültig"
#: views/html/charactergroupsquests/manage.tpl:66 #: views/html/charactergroupsquests/manage.tpl:66
#: views/html/charactertypes/manage.tpl:52 views/html/library/edit.tpl:46 #: views/html/charactertypes/manage.tpl:52 views/html/library/edit.tpl:46
#: views/html/library/edit.tpl:86 views/html/users/edit.tpl:103 #: views/html/library/edit.tpl:86 views/html/users/edit.tpl:105
msgid "save" msgid "save"
msgstr "speichern" msgstr "speichern"
@ -903,12 +903,12 @@ msgstr "Registrierungsdatum"
msgid "Sort list" msgid "Sort list"
msgstr "Liste sortieren" msgstr "Liste sortieren"
#: views/html/characters/index.tpl:52 views/html/quests/index.tpl:80 #: views/html/characters/index.tpl:52 views/html/quests/index.tpl:82
#: views/html/users/index.tpl:36 #: views/html/users/index.tpl:36
msgid "Show more" msgid "Show more"
msgstr "Weitere anzeigen" msgstr "Weitere anzeigen"
#: views/html/characters/index.tpl:53 views/html/quests/index.tpl:81 #: views/html/characters/index.tpl:53 views/html/quests/index.tpl:83
#: views/html/users/index.tpl:37 #: views/html/users/index.tpl:37
msgid "Show all" msgid "Show all"
msgstr "Alle anzeigen" msgstr "Alle anzeigen"
@ -1251,6 +1251,10 @@ msgstr "Text für falsche Antwort"
msgid "Task" msgid "Task"
msgstr "Aufgabe" msgstr "Aufgabe"
#: views/html/quests/index.tpl:13
msgid "Filter"
msgstr "Filter"
#: views/html/quests/index.tpl:16 views/html/quests/index.tpl:23 #: views/html/quests/index.tpl:16 views/html/quests/index.tpl:23
msgid "all" msgid "all"
msgstr "alle" msgstr "alle"
@ -1259,11 +1263,11 @@ msgstr "alle"
msgid "Questtype" msgid "Questtype"
msgstr "Questtyp" msgstr "Questtyp"
#: views/html/quests/index.tpl:48 #: views/html/quests/index.tpl:50
msgid "Apply filters" msgid "Apply filters"
msgstr "Filter anwenden" msgstr "Filter anwenden"
#: views/html/quests/index.tpl:54 views/html/quests/index.tpl:109 #: views/html/quests/index.tpl:56 views/html/quests/index.tpl:111
msgid "open submissions" msgid "open submissions"
msgstr "offene Lösungsvorschläge" msgstr "offene Lösungsvorschläge"
@ -1528,6 +1532,10 @@ msgstr "Soll der Benutzer „%s“ (%s) wirklich gelöscht werden?"
msgid "Edit user" msgid "Edit user"
msgstr "Benutzer bearbeiten" msgstr "Benutzer bearbeiten"
#: views/html/users/edit.tpl:103
msgid "Mail notifications"
msgstr "EMailbenachrichtigungen"
#: views/html/users/index.tpl:6 #: views/html/users/index.tpl:6
msgid "Create new user" msgid "Create new user"
msgstr "Neuen Benutzer erstellen" msgstr "Neuen Benutzer erstellen"

View file

@ -76,7 +76,7 @@
return $this->db->query( return $this->db->query(
sprintf( sprintf(
'SELECT id, created, username, url, surname, prename, email '. 'SELECT id, created, username, url, surname, prename, email, mailing '.
'FROM users '. 'FROM users '.
'ORDER BY %s %s '. 'ORDER BY %s %s '.
(!empty($limit) ? sprintf('LIMIT %d, %d', $offset, $limit) : null), (!empty($limit) ? sprintf('LIMIT %d, %d', $offset, $limit) : null),
@ -87,7 +87,7 @@
break; break;
case 'role': case 'role':
return $this->db->query( return $this->db->query(
'SELECT DISTINCT users.id, users.created, users.username, users.url, users.surname, users.prename, users.email '. 'SELECT DISTINCT users.id, users.created, users.username, users.url, users.surname, users.prename, users.email, users.mailing '.
'FROM users '. 'FROM users '.
'LEFT JOIN users_userroles ON users_userroles.user_id = users.id '. 'LEFT JOIN users_userroles ON users_userroles.user_id = users.id '.
'LEFT JOIN userroles ON userroles.id = users_userroles.user_id '. 'LEFT JOIN userroles ON userroles.id = users_userroles.user_id '.
@ -111,7 +111,7 @@
public function getUsersWithRole($userrole) public function getUsersWithRole($userrole)
{ {
return $this->db->query( return $this->db->query(
'SELECT users.id, users.created, users.username, users.url, users.surname, users.prename, users.email '. 'SELECT users.id, users.created, users.username, users.url, users.surname, users.prename, users.email, users.mailing'.
'FROM users '. 'FROM users '.
'LEFT JOIN users_userroles ON users_userroles.user_id = users.id '. 'LEFT JOIN users_userroles ON users_userroles.user_id = users.id '.
'LEFT JOIN userroles ON userroles.id = users_userroles.userrole_id '. 'LEFT JOIN userroles ON userroles.id = users_userroles.userrole_id '.
@ -134,7 +134,7 @@
{ {
// Get user // Get user
$user = $this->db->query( $user = $this->db->query(
'SELECT id, created, username, url, surname, prename, email '. 'SELECT id, created, username, url, surname, prename, email, mailing '.
'FROM users '. 'FROM users '.
'WHERE id = ?', 'WHERE id = ?',
'i', 'i',
@ -160,7 +160,7 @@
{ {
// Get user // Get user
$user = $this->db->query( $user = $this->db->query(
'SELECT id, created, username, url, surname, prename, email '. 'SELECT id, created, username, url, surname, prename, email, mailing '.
'FROM users '. 'FROM users '.
'WHERE url = ?', 'WHERE url = ?',
's', 's',
@ -305,21 +305,22 @@
* @param string $email Changed email-address of user * @param string $email Changed email-address of user
* @param string $password Changed plaintext password of user * @param string $password Changed plaintext password of user
*/ */
public function editUser($userId, $username, $prename, $surname, $email, $password) public function editUser($userId, $username, $prename, $surname, $email, $password, $mailing)
{ {
$this->db->setAutocommit(false); $this->db->setAutocommit(false);
try { try {
// Update user data // Update user data
$this->db->query( $this->db->query(
'UPDATE users '. 'UPDATE users '.
'SET username = ?, url = ?, prename = ?, surname = ?, email = ? '. 'SET username = ?, url = ?, prename = ?, surname = ?, email = ?, mailing = ? '.
'WHERE id = ?', 'WHERE id = ?',
'sssssi', 'sssssii',
$username, $username,
\nre\core\Linker::createLinkParam($username), \nre\core\Linker::createLinkParam($username),
$prename, $prename,
$surname, $surname,
$email, $email,
$mailing,
$userId $userId
); );