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)
{
$moderator = $this->Users->getUserById($character['user_id']);
\hhu\z\Utils::sendMail(
$moderator['email'],
'characterregistration',
true,
array(
$moderator,
\hhu\z\controllers\SeminaryController::$seminary,
\hhu\z\controllers\IntermediateController::$user,
$newCharacter
),
$this->linker
);
if($moderator['mailing']) {
\hhu\z\Utils::sendMail(
$moderator['email'],
'characterregistration',
true,
array(
$moderator,
\hhu\z\controllers\SeminaryController::$seminary,
\hhu\z\controllers\IntermediateController::$user,
$newCharacter
),
$this->linker
);
}
}
}
catch(\hhu\z\exceptions\MailingException $e) {

View file

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

View file

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

View file

@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: The Legend of Z\n"
"POT-Creation-Date: 2014-06-19 21:14+0100\n"
"PO-Revision-Date: 2014-06-19 21:14+0100\n"
"POT-Creation-Date: 2014-06-24 20:53+0100\n"
"PO-Revision-Date: 2014-06-24 20:53+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de_DE\n"
@ -21,9 +21,9 @@ msgstr ""
#: controllers/UsersController.inc:312 views/ajax/characters/index.tpl:10
#: 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:58 views/html/users/index.tpl:26
#: views/html/users/manage.tpl:28 views/html/users/manage.tpl:41
#: views/html/users/manage.tpl:49
#: views/html/characters/manage.tpl:58 views/html/userroles/user.tpl:5
#: views/html/users/index.tpl:26 views/html/users/manage.tpl:28
#: views/html/users/manage.tpl:41 views/html/users/manage.tpl:49
msgid "Admin"
msgstr "Administrator"
@ -31,9 +31,9 @@ msgstr "Administrator"
#: controllers/UsersController.inc:318 views/ajax/characters/index.tpl:12
#: 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:59 views/html/users/index.tpl:27
#: views/html/users/manage.tpl:29 views/html/users/manage.tpl:42
#: views/html/users/manage.tpl:50
#: views/html/characters/manage.tpl:59 views/html/userroles/user.tpl:7
#: views/html/users/index.tpl:27 views/html/users/manage.tpl:29
#: views/html/users/manage.tpl:42 views/html/users/manage.tpl:50
msgid "Moderator"
msgstr "Moderator"
@ -41,9 +41,9 @@ msgstr "Moderator"
#: controllers/UsersController.inc:324 views/ajax/characters/index.tpl:14
#: 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:61 views/html/users/index.tpl:28
#: views/html/users/manage.tpl:30 views/html/users/manage.tpl:44
#: views/html/users/manage.tpl:52
#: views/html/characters/manage.tpl:61 views/html/userroles/user.tpl:9
#: views/html/users/index.tpl:28 views/html/users/manage.tpl:30
#: views/html/users/manage.tpl:44 views/html/users/manage.tpl:52
msgid "User"
msgstr "Benutzer"
@ -63,7 +63,7 @@ msgstr "Neuer Lösungsvorschlag"
msgid "Character submission approved"
msgstr "Lösungsvorschlag bewertet"
#: controllers/QuestsController.inc:736
#: controllers/QuestsController.inc:740
#: questtypes/submit/html/submission.tpl:30 views/html/quests/quest.tpl:45
#: views/html/quests/submissions.tpl:30
msgid "solved"
@ -194,42 +194,42 @@ msgid "unsolved"
msgstr "Leider falsch!"
#: 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"
msgstr "Leere Aufgabe"
#: 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"
msgstr "Boss-Fight"
#: 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"
msgstr "Auswahleingabe"
#: 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"
msgstr "Kreuzworträtsel"
#: 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"
msgstr "Drag&Drop"
#: 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"
msgstr "Multiple Choice"
#: 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"
msgstr "Abgabeaufgabe"
#: 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"
msgstr "Texteingabe"
@ -242,7 +242,7 @@ msgstr "Texteingabe"
#: views/html/characters/character.tpl:77
#: views/html/characters/character.tpl:83
#: 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/seminarybar/index.tpl:43
#, 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/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/questgroup.tpl:82
#: views/html/seminaries/create.tpl:68 views/html/seminaries/create.tpl:69
#: views/html/seminaries/edit.tpl:70 views/html/seminaries/edit.tpl:71
#: views/html/seminaries/seminary.tpl:69
#: views/html/questgroups/questgroup.tpl:82 views/html/quests/index.tpl:47
#: views/html/quests/index.tpl:48 views/html/seminaries/create.tpl:68
#: views/html/seminaries/create.tpl:69 views/html/seminaries/edit.tpl:70
#: views/html/seminaries/edit.tpl:71 views/html/seminaries/seminary.tpl:69
msgid "Title"
msgstr "Titel"
@ -775,7 +775,7 @@ msgstr "Die Datei ist ungültig"
#: views/html/charactergroupsquests/manage.tpl:66
#: 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"
msgstr "speichern"
@ -903,12 +903,12 @@ msgstr "Registrierungsdatum"
msgid "Sort list"
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
msgid "Show more"
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
msgid "Show all"
msgstr "Alle anzeigen"
@ -1251,6 +1251,10 @@ msgstr "Text für falsche Antwort"
msgid "Task"
msgstr "Aufgabe"
#: views/html/quests/index.tpl:13
msgid "Filter"
msgstr "Filter"
#: views/html/quests/index.tpl:16 views/html/quests/index.tpl:23
msgid "all"
msgstr "alle"
@ -1259,11 +1263,11 @@ msgstr "alle"
msgid "Questtype"
msgstr "Questtyp"
#: views/html/quests/index.tpl:48
#: views/html/quests/index.tpl:50
msgid "Apply filters"
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"
msgstr "offene Lösungsvorschläge"
@ -1528,6 +1532,10 @@ msgstr "Soll der Benutzer „%s“ (%s) wirklich gelöscht werden?"
msgid "Edit user"
msgstr "Benutzer bearbeiten"
#: views/html/users/edit.tpl:103
msgid "Mail notifications"
msgstr "EMailbenachrichtigungen"
#: views/html/users/index.tpl:6
msgid "Create new user"
msgstr "Neuen Benutzer erstellen"

View file

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