From 26ccbc61e07d06bb86d2de9fc4770b1a8a7acd68 Mon Sep 17 00:00:00 2001 From: coderkun Date: Tue, 27 May 2014 11:43:53 +0200 Subject: [PATCH] add e?mail notifcation for approved Quests (resolves issue #298) --- controllers/MailController.inc | 24 ++++++++++++ controllers/QuestsController.inc | 37 ++++++++++++++++++ locale/de_DE/LC_MESSAGES/The Legend of Z.mo | Bin 16284 -> 16530 bytes locale/de_DE/LC_MESSAGES/The Legend of Z.po | 19 ++++++--- .../mail/charactersubmissionapproved.tpl | 2 + .../mail/charactersubmissionapproved.tpl | 2 + 6 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 views/htmlmail/mail/charactersubmissionapproved.tpl create mode 100644 views/textmail/mail/charactersubmissionapproved.tpl diff --git a/controllers/MailController.inc b/controllers/MailController.inc index f4696091..bcc4307d 100644 --- a/controllers/MailController.inc +++ b/controllers/MailController.inc @@ -106,6 +106,30 @@ $this->set('character', $character); } + + /** + * Action: charactersubmissionapproved. + * + * Generate a mail message to notify a Character that its + * submission has been approved. + * + * @param array $receiver User that the message will be send to + * @param array $seminary Seminary which the Quest belongs to + * @param array $questgroup Questgroup of Quest + * @param array $quest Quest the answer has been submitted for + */ + public function charactersubmissionapproved($receiver, $seminary, $questgroup, $quest) + { + // Set subject + $this->response->setSubject(_('Character submission approved')); + + + // Pass data to view + $this->set('seminary', $seminary); + $this->set('questgroup', $questgroup); + $this->set('quest', $quest); + } + } ?> diff --git a/controllers/QuestsController.inc b/controllers/QuestsController.inc index 4b23d8af..61f5bb8a 100644 --- a/controllers/QuestsController.inc +++ b/controllers/QuestsController.inc @@ -746,6 +746,9 @@ // Save additional data for Character answers $questtypeAgent->controller->saveDataForCharacterAnswers($seminary, $questgroup, $quest, $character, $this->request->getPostParam('characterdata')); + // Send notification + $this->sendSubmissionApprovedMail($character, $seminary, $questgroup, $quest); + // Redirect $this->redirect($this->linker->link(array('submissions', $seminary['url'], $questgroup['url'], $quest['url']), 1)); } @@ -890,6 +893,40 @@ } } + + /** + * Send mail for approval of a Character submission. + * + * @param array $character Character of submission that has been approved + * @param array $seminary Seminary which the Quest belongs to + * @param array $questgroup Questgroup of Quest + * @param array $quest Quest the submission has been approved for + */ + private function sendSubmissionApprovedMail($character, $seminary, $questgroup, $quest) + { + // Get user + $user = $this->Users->getUserById($character['user_id']); + + // Send notification mail + try { + \hhu\z\Utils::sendMail( + $user['email'], + 'charactersubmissionapproved', + true, + array( + $user, + $seminary, + $questgroup, + $quest + ), + $this->linker + ); + } + catch(\hhu\z\exceptions\MailingException $e) { + $this->log($e->getMessage()); + } + } + } ?> diff --git a/locale/de_DE/LC_MESSAGES/The Legend of Z.mo b/locale/de_DE/LC_MESSAGES/The Legend of Z.mo index 0e3f0964d902c00bb9f0f8597660a1f63b26a9ff..a81cb049e7d511cf653aec86eb09c837f6301285 100644 GIT binary patch delta 5469 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 delta 5344 zcmYk=3s_g>0mt!|MB%Rn@)txw5mZ131O!UF087v%q2etgwv2G1+uYJFYU;^J31Mo8 zm+~^ZQ09efl*=UP;!HH}rDmIMsll9Omd{hIru+W>=jC}k4?jNdd;aJD-p+dtKGrPq zTkkk$z5c5V$2HQEGzJ(`;Ac!pu+AD&8EQ-*R-p%LY<)dOQLn>JxEI6mDBgyx*cn5^ zj0wUR)b~?S?G48E#yDm;1urM=!dtNfBX9=NhItaZ;PV)ZTQLrgp&I@HdtpE~V-hhI z`7vW{eHv;&HK_LX-~)I9JJP?&WY`@zk&8^;j6{um3=YH+)Bu*-^P4b)`gYX7n@|Hd zj$QE^j6whI#_(g}_{A7a4(juXsKuR*q4aO&Qs{xp><61s9lnifxEa-9i~amZ)RKGn zk_tIxa`KSg9P`7Xb@?%Q)rO)S}+F6L2U^S|pnn>1PE3mm^h}KcgDs^KV9y9vl#OgifN(Ws@LfZ8La4h5}11?nDEVKi<)b+pIU z52C(s8QHidh>fAoV^JLpv=*Y4x*W9!7NM?Nfm)#rsLl9_J?}Ky6V3L5bEu_m#eVoB z#$pr?yS|u*+HA$B8PCGLI1jaA8*RNF_5I_h75W~v0@qRP`?G;qDaV9S&@PTfEp-y= z3)!e8%ttjm2DL)>qXshD)~l==P&0o6)xiOK{&Um{UqKD{8mhgYF;LHc=V*6{!cYU~ zgBnl<>WjIkk>^_rP|tl4YCvVEdp-x%@M2U)D=`b#VG4eV!>~Q~aRd&>H2ODBQ_uyC zn2MKC4fX2d4kQ_M@3L(DPSnbbwoXRPxYT|=8#Mq2b!(QO+S_XDyHU6196FkzKUYPg z2jegi1(NyPz?^n4w!2liMr>bZM_uzsZU1@WTvgpwJt=pyBKf5TGRyA zp!V7ej=i7()zDsSkIkqhJc1qYEb5CFQ6s;CS^*FDNqX_T9}_@*|3-iJe0!#?fdwIp zX?mbmCL2FSXA}j!K*AHYmR-J${v_mD-3rNv0n4_#MUoY(ZX< z<_hx8GM#R7zuzC(CgyfbrhijRK@C)53U0QZMhzq|iI)ua#*SEn>Rv#w5 zL*1h5r~!KEMFZ}G8sH$*$`)a`p8qKnbm1J-N>rl0@Dgg*??T_qPz|@Bp8uavD-<-q ztw*CiPe*ky5^u#xsO!qGGd_xHcQJOQf3wz}*oNx(ebkIjp*GLgr~%$Ubr8%lso}n; zy^&@egj(_(jK=#=-=B|qJfE@dK(&7Y9rla4L_v>*H`SdbmbxE9OaaH)l`O1p1`0{^}r=6M^jBA@+hiTGgHyg__|E z49160OSlMi@0X!ET8m!XhFaPt)b*d(^A}L8!sR^rpKF_C_sX0_ri! zN3Bc&YNZ}Ttw1$uudF~lR$Eaka1?nmO^Y=s!`%y+s2S&>1~v}WPpLye9V|pG-D=dx zUc?~Wj_Rlpy?6?>GM7*@>6qz$-W3z653t^gy1oMW3vSk+o|?B%6L}Z)9&s*G;1ytQ zSQBn{mufs}1&T2gr=SM-2>NaTY9`B2OS=&@pgPn{>roSFL`~!)?1Cpzx2^^GzGJRZ z&=>r8c-28Ls^du1h+|M4C7?RaLR~)syW#{?2j!^mJ%$?40&4|o0@bJ`--NoZ5q6DvpE^9uX`JYwSCJA<}&$|tS9wk5BZAlf-|d$ zj@OB1spDZ6GX`_Xe{6j$p0eeW7)4kF$1JCC)qWu6kV>Lw`%A*>!Bmr95d9Uq`B+6o z_kSa~`=$^6LHS;y=l+B}uSfR zhO`|MD7?~E!4GZu-_|M|Y0Dk3l|e-?$d<8unxWFPr0IZU1; zI!eeivW?^s9j}sQzLNWEsVyJ4>D*$<S5Md`m-QcwunEJ8>C){;7jA2Ce)yz8{6mfejJ;SNS&_NE+*Hn3|L9_kS#D B{DA-f diff --git a/locale/de_DE/LC_MESSAGES/The Legend of Z.po b/locale/de_DE/LC_MESSAGES/The Legend of Z.po index 279c3c62..bfd8b046 100644 --- a/locale/de_DE/LC_MESSAGES/The Legend of Z.po +++ b/locale/de_DE/LC_MESSAGES/The Legend of Z.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: The Legend of Z\n" -"POT-Creation-Date: 2014-05-27 10:48+0100\n" -"PO-Revision-Date: 2014-05-27 10:52+0100\n" +"POT-Creation-Date: 2014-05-27 11:27+0100\n" +"PO-Revision-Date: 2014-05-27 11:28+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: de_DE\n" @@ -59,6 +59,10 @@ msgstr "Neue Charakterregistrierung" msgid "New Character submission" msgstr "Neuer Lösungsvorschlag" +#: controllers/MailController.inc:124 +msgid "Character submission approved" +msgstr "Lösungsvorschlag bewertet" + #: controllers/QuestsController.inc:735 #: questtypes/submit/html/submission.tpl:30 views/html/quests/quest.tpl:45 #: views/html/quests/submissions.tpl:30 @@ -1344,6 +1348,13 @@ msgstr "" "Der Charakter „%s“ hat einen neuen Lösungsvorschlag für die Quest „%s“ des " "Seminars „%s“ eingereicht" +#: views/htmlmail/mail/charactersubmissionapproved.tpl:1 +#: views/textmail/mail/charactersubmissionapproved.tpl:1 +#, php-format +msgid "" +"Your submission for the Quest “%s” of the Seminary “%s” has been approved" +msgstr "Deine Lösung für die Quest „%s“ des Seminars „%s“ wurde bewertet" + #: views/htmlmail/mail/userregistration.tpl:1 #: views/textmail/mail/userregistration.tpl:1 msgid "A new user has been registered" @@ -1355,10 +1366,6 @@ msgstr "Ein neuer Benutzer wurde registriert" msgid "Hello %s" msgstr "Hallo %s" -#, fuzzy -#~ msgid "Character submission solved" -#~ msgstr "gelöst" - #, fuzzy #~ msgid "Dear %s" #~ msgstr "erstellt von %s am %s um %s Uhr" diff --git a/views/htmlmail/mail/charactersubmissionapproved.tpl b/views/htmlmail/mail/charactersubmissionapproved.tpl new file mode 100644 index 00000000..c62d3ee5 --- /dev/null +++ b/views/htmlmail/mail/charactersubmissionapproved.tpl @@ -0,0 +1,2 @@ +: +//// diff --git a/views/textmail/mail/charactersubmissionapproved.tpl b/views/textmail/mail/charactersubmissionapproved.tpl new file mode 100644 index 00000000..309645af --- /dev/null +++ b/views/textmail/mail/charactersubmissionapproved.tpl @@ -0,0 +1,2 @@ +. +link(array('quests','quest',$seminary['url'],$questgroup['url'],$quest['url']),0,true,null,false,null,true)?>