From 1fa72746387e3c11f11834912d4c7e2fbd3c6fc7 Mon Sep 17 00:00:00 2001 From: coderkun Date: Thu, 1 May 2014 01:50:40 +0200 Subject: [PATCH] implement managing of Character groups Quests --- configs/AppConfig.inc | 4 +- .../CharactergroupsquestsController.inc | 73 ++++++++++++- locale/de_DE/LC_MESSAGES/The Legend of Z.mo | Bin 12973 -> 13079 bytes locale/de_DE/LC_MESSAGES/The Legend of Z.po | 81 +++++++++------ models/CharactergroupsModel.inc | 30 +++++- models/CharactergroupsquestsModel.inc | 98 +++++++++++++----- views/html/charactergroups/group.tpl | 6 +- views/html/charactergroupsquests/manage.tpl | 45 ++++++++ views/html/charactergroupsquests/quest.tpl | 25 +++-- 9 files changed, 286 insertions(+), 76 deletions(-) create mode 100644 views/html/charactergroupsquests/manage.tpl diff --git a/configs/AppConfig.inc b/configs/AppConfig.inc index 0f29e4e2..ba1ec019 100644 --- a/configs/AppConfig.inc +++ b/configs/AppConfig.inc @@ -193,7 +193,7 @@ array('^charactergroups/([^/]+)/([^/]+)/([^/]+)/(manage|edit|delete)/?$', 'charactergroups/$4group/$1/$2/$3', true), array('^charactergroupsquests/([^/]+)/([^/]+)/create/?$', 'charactergroupsquests/create/$1/$2', true), array('^charactergroupsquests/([^/]+)/([^/]+)/([^/]+)/?$', 'charactergroupsquests/quest/$1/$2/$3', true), - array('^charactergroupsquests/([^/]+)/([^/]+)/([^/]+)/(edit|delete)/?$', 'charactergroupsquests/$4/$1/$2/$3', true), + array('^charactergroupsquests/([^/]+)/([^/]+)/([^/]+)/(edit|delete|manage)/?$', 'charactergroupsquests/$4/$1/$2/$3', true), array('^achievements/([^/]+)/?$', 'achievements/index/$1', true), array('^library/([^/]+)/?$', 'library/index/$1', true), array('^library/([^/]+)/([^/]+)/?$', 'library/topic/$1/$2', true), @@ -230,7 +230,7 @@ array('^charactergroups/(manage|edit|delete)group/([^/]+)/([^/]+)/([^/]+)$', 'charactergroups/$2/$3/$4/$1', true), array('^charactergroupsquests/create/([^/]+)/([^/]+)/?$', 'charactergroupsquests/$1/$2/create', true), array('^charactergroupsquests/quest/(.*)$', 'charactergroupsquests/$1', true), - array('^charactergroupsquests/(edit|delete)/([^/]+)/([^/]+)/([^/]+)$', 'charactergroupsquests/$2/$3/$4/$1', true), + array('^charactergroupsquests/(edit|delete|manage)/([^/]+)/([^/]+)/([^/]+)$', 'charactergroupsquests/$2/$3/$4/$1', true), array('^achievements/index/(.*)$', 'achievements/$1', true), array('^library/(index|topic)/(.*)$', 'library/$2', true) ); diff --git a/controllers/CharactergroupsquestsController.inc b/controllers/CharactergroupsquestsController.inc index df8fa687..cceaed46 100644 --- a/controllers/CharactergroupsquestsController.inc +++ b/controllers/CharactergroupsquestsController.inc @@ -79,7 +79,78 @@ $questgroup['entered'] = $this->Questgroups->hasCharacterEnteredQuestgroup($questgroup['id'], self::$character['id']); // Get Character groups-groups - $groups = $this->Charactergroupsquests->getGroupsForQuest($quest['id']); + $groups = $this->Charactergroups->getGroupsForQuest($quest['id']); + + // Media + $questmedia = null; + if(!is_null($quest['questsmedia_id'])) { + $questmedia = $this->Media->getSeminaryMediaById($quest['questsmedia_id']); + } + + + // Pass data to view + $this->set('seminary', $seminary); + $this->set('groupsgroup', $groupsgroup); + $this->set('quest', $quest); + $this->set('questgroup', $questgroup); + $this->set('groups', $groups); + $this->set('media', $questmedia); + } + + + /** + * Action: manage. + * + * Manage a Character groups Quest for a Character groups-group + * of a Seminary. + * + * @throws IdNotFoundException + * @param string $seminaryUrl URL-Title of a Seminary + * @param string $groupsgroupUrl URL-Title of a Character groups-group + * @param string $questUrl URL-Title of a Character groups Quest + */ + public function manage($seminaryUrl, $groupsgroupUrl, $questUrl) + { + // Get seminary + $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); + + // Get Character groups-group + $groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl); + + // Get Character groups-group Quests + $quest = $this->Charactergroupsquests->getQuestByUrl($groupsgroup['id'], $questUrl); + + // Get Questgroup + $questgroup = $this->Questgroups->getQuestgroupById($quest['questgroups_id']); + $questgroup['entered'] = $this->Questgroups->hasCharacterEnteredQuestgroup($questgroup['id'], self::$character['id']); + + // Get Character groups + $groups = $this->Charactergroups->getGroupsForGroupsgroup($groupsgroup['id']); + + // Set XPs of Character groups for this Character groups Quest + if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('setxps'))) + { + $xps = $this->request->getPostParam('xps'); + foreach($groups as &$group) + { + if(array_key_exists($group['url'], $xps) && $xps[$group['url']] != 'null') + { + $xpsFactor = intval($xps[$group['url']]) / $quest['xps']; + $this->Charactergroupsquests->setXPsOfGroupForQuest($quest['id'], $group['id'], $xpsFactor); + } + else { + $this->Charactergroupsquests->deleteGroupForQuest($quest['id'], $group['id']); + } + } + + // Redirect to Quest page + $this->redirect($this->linker->link(array('quest', $seminary['url'], $groupsgroup['url'], $quest['url']), 1)); + } + + // Set XPs for Groups + foreach($groups as &$group) { + $group['quest_group'] = $this->Charactergroupsquests->getXPsOfGroupForQuest($quest['id'], $group['id']); + } // Media $questmedia = null; 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 7d47da299b7656e26b3c6162cee580fd5e0c0a2d..ed08606f7816329841c635f91b859d92489977b0 100644 GIT binary patch delta 4491 zcmYk;4O~_A9mnxM$VEUv1QKf~Ck=Vf3->Z51zK75pd|^JFKnujSUZ&-b1`Tj$01zW@Jo&%^)! zJO6X_fZI_YIhmQT+pzVMTrwxon6x-!wxnvWF})eaBw-&WF`2W~cThLH7PIkA zOu;S4983oe#V-67K8+gKn^=ZF!$j_H;_9!TPE-YtU>^PyN8uSf9}~{=jvIrTSS9NFSs2lb>uKl$ZKxY})XfNs+K8`Bs zv#5dg*zX5W*ZBZ7z*DH}`~fwAzu5i%LRD%AgYcT;IL#k|^LI)3{2J~y&{}grnP*$q;7omxQYQ31p*YIvRCeG3q*1s0v<#IxjMphHiYbHH2FA z4X6^WLJedaY6g2Swg#}2eh-%8X}knSQBLijiviq-I`0r_0R7evkO@T0Z)j-7pP?>% z4pp*vR+vs4kLs7BN;VH;BS(k+1{{z3u>g;wCiFMt1u*AO&weVbLeKa)E{iwxq5H+(t)CJy0&FCXkrB0x3`~~W~zoG{CHEO0g{0d12d*hf4>io|g zZ~s};fWC65zh<7m138Wv$m2IBP^NTrERiYNPc5X)=x48p# z+(y*e*@b>QjEu#6ilvx1F5)%HIZ8LGM~!SP>Vlh4Gu(j=?nNDU6feg2?e{4x0F^!) zHK0P&0H+{tsHsLh$_CVgBdE9Rel@g8yHE#4QIFs_>Ov<`H~bT7Mm|=UzRyBcC?9p> zGQ0mO)OG4m=P$G0uScD~8};a(v__tzp_28Wp7{V$9dpte$GfEgT!ebPDp4a}fV==^ z1!_h+Q3H7lHS;LyxOdQpAEO5FTU3S5Vp1H>|DX1NghKDxq+lWk6r*MkM9p*>>QPjq zE?kEi@M28DHK+@>qmJK!I=&M%!EV$*-a_{&17GFA2ZBvArc{MUd z<65_%W)elsybm>?0n`9aq27`+cKqIZKV)Om%d3zk?X+wZGTrLRF9*Muq9hPv;%iPV2GjeFVgZF~(Y z@Xr{;iGHttE2<)UP&0S|_3V$?{s6{)m{1q~0(q+DOH`@Hlz0`MYF&t$==Ku({&%p0 zSK0KVgJ)19PA&Cjkcs*9OHhkv4(gFCvF<{>cE@lSeuz5mG-^O!VJgN4ytivOGDlMu zp~0`FnUCDltg{|Ko%k^h$KRta@Fm9nEucK{^m9>bArDpR8K_FRI2G?g4di9idGBHw zeuBDgB!^xyjRI>B_5N0(22g`~X7jAB-M9+m-cs03!9MQM?>=!DB-upcA0x2chUiL6|ATL0yd_B0=?tc^4lSbQbMIWgnj}k4w z?~n(HHcj$ca*H||-B$7ld4gzrl1w6-NtoP6zPYK4wPY!|n2aYsCMy3Gae{faDTw zi%1b^Ag>Z_50fFW7XM+h-ic|pE%d%=yNzU#ndFD$a#Bc|NH2MwyrG&sOJfh2M|P9J zZG~-o53eEHNe6kF)RX1p2V`)&jKVe%R|N>&nW!^m2)SRJ-bkJx7tpBbcrJQv&J{j}L;j0gA}L8?iy${i(LB%KUy z7pf6$&zR-Q%Ww17EO*<&W>%;<)ZjW-EDE)T7KGhar=hiF`O@gw^J?Q#t6RcOC>(a1 z7rG0h({jee``oZoH#-_S|B$b2vOf@X0>O$&Qzit0fk4Xa>;1LvipI9amS+F-P}r?- z$^yYj{=ol_i_XmJO-dfTv-4nKZnU&;ZCqw`glcnws3^=<`Kw@k8D4 NDp$A5o%lfFe*ucjw#oni delta 4371 zcmYk<3v|w90LSrXv(0SS9V7NKH0;JSw~&pcB8(a$X5P7NE-#B&`A1|Z)0Rvw$t_{I zykjZ~xux}9{o;FRN}I9*PsPUrOfz3;P5&*`_%^S?gV|Le4&u*U6t6CJePP|lKj z$lwrT8V49t)Kq7UDUUQJ6jxyrthC3QF`VOF*b)z6H@t{?^mlBIfl>bFqcE7`))S;VOHRe9llxL$xHXJpwv8bt>gjzB;Y5>bH0jsbTdNCd^ zqwf0wHLyl;{_An*XvC>h^n!kMvXsNxv9`&A0s1EKyz2^XG z0PooIXHYZqA!>=Q#WDYS;4UZh;y+Oj>MlJPj+*i~R7cWLGn0v0g25Psg~%kDS?EFs z)uC|3W~oH2*;dp82T?OqhZ^}QRD!Gv?vF zxCAwl-N*(v`%!Cs3N_;E_V_M#;5dd)L7OkrC+k0i3d>~1pc*PdP31g$ele;em8hQA z+2aeSJ#ZVIKVDBU*);stQ!Y zTTu`0LUr%}YNQvfpWw*=W3Hl}-|X^V-;V0gKGevM;$=MTV*OcWQ^A61*X~6=O;d;J zSUqYDze9aqKci+Mh=tUyk42W%+=IHWH)=2CU<%Ge{UTOl8XmLWM77f@k@;88(s)WQ z?28&<7P@d4>c(R1h0E>rKrOlB zP+>OAI;$7efzMH&*KJhKVOX~pCNZhEA&qsB{L3N-K^_6TvZMOXwikDHF z`!no{cdTtV(9GpvH0_)5R2pM3s)r@0&ua_vjH$DJkD96QZvK%)qc&43RL4?KGtmb% zlR2pSA4hd)B5FnoQSB9>@8ACgR5Ze+sGe1zMzjOfz+u#b=TR^G$oi?heib$4cTo2= zP4>@BG~UN?Tg<@G*cVq~cRZcU{OiPToY0h}rTBZEh1#9D_P7Amq4}thEJIeytU*n2 zEiyUgW9wh25q3)TfA=ZKmuV)V3zwogx;>ToSI_rwq7$A$ZI)Z8r3g&(+ZFYh7=G`}OSG_mP^vr*4^94Zl1%1|#@gIfD)48+5zJ#Ylo z(Qi>R^*8px=FFoyG8FaPWbA>9QSYt6CV0Yn9`(6iL3P0SkxCeqJJ!GLg%IAN&m_Vc zi+WK!Mq(mHVNZKL2emgwq6U(OYG5jA#)?q`D8=Tu-hbUOJE`!y;M-_#qe?MpMvjrC zL}eynfB702fm-i1WEq)A@`+|(9O0Fwj7%UZ$H^J8i@Z)|5N${nl7EjuJ=;w*H7W~9 zxvyr-lh)ZdhcH3rC>c*0iaz7HB#pdJstB((Z;=&5rBhW@L`;<{BFNdv5$oqGL;1Uo zXm_b-x9E3P+jld`BPvtL2fiAc0yo)u16!%+TT{`7QF)eRl818Vn{gAW>C>)P&q+f_0`xM)?C~{Mv^!5oBM>lFbyk6HCav$ z5Ep4Ek5O4|54<>?>?Iw^Boaha+++}Wg`6huk%6RygptYQ2w6bxr+r_^vYxVv-sB)D z)d6LLAK$m8>K@XZtR=n3J4D-kEP0r$B85ah9t~v*l?3uMDI(4m{){I3NDg_PB#{ne z5qXK!knKdJzaR4)K2BPa&g2kL2_@@EA{j;65|tN8FbO2dWIw6Z`bSVXNh*oTYkvOw z`vSF>?NNIiMplxIB$^B$t%=GK(!^Ke|5R}}d4|;4a}5l!l{bCesfuXw|Hw=qNp(U*vXWxr^pZpItJ0nzt;;3Gg=S M>Iw9gCs&003q!w`VgLXD 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 f86d7747..7041bc19 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-04-30 01:43+0100\n" -"PO-Revision-Date: 2014-04-30 01:43+0100\n" +"POT-Creation-Date: 2014-05-01 01:48+0100\n" +"PO-Revision-Date: 2014-05-01 01:48+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: de_DE\n" @@ -195,6 +195,7 @@ msgstr "Spiele weiter, um diesen geheimen Erfolg freizuschalten" #: views/html/charactergroupsquests/create.tpl:8 #: views/html/charactergroupsquests/delete.tpl:8 #: views/html/charactergroupsquests/edit.tpl:8 +#: views/html/charactergroupsquests/manage.tpl:8 #: views/html/charactergroupsquests/quest.tpl:8 #: views/html/characters/character.tpl:85 views/html/seminarymenu/index.tpl:3 msgid "Character Groups" @@ -344,6 +345,22 @@ msgstr "Gruppengruppe bearbeiten" msgid "Manage Character group" msgstr "Gruppe verwalten" +#: views/html/charactergroups/group.tpl:31 +#: views/html/charactergroups/group.tpl:44 +#: views/html/charactergroupsquests/manage.tpl:21 +#: views/html/charactergroupsquests/manage.tpl:36 +#: views/html/charactergroupsquests/quest.tpl:29 +#: views/html/charactergroupsquests/quest.tpl:62 +#: views/html/characters/character.tpl:67 +#: views/html/characters/character.tpl:73 +#: views/html/characters/character.tpl:79 +#: views/html/characters/character.tpl:97 views/html/quests/index.tpl:37 +#: views/html/seminaries/index.tpl:29 views/html/seminarybar/index.tpl:6 +#: views/html/seminarybar/index.tpl:42 +#, php-format +msgid "%d XPs" +msgstr "%d XP" + #: views/html/charactergroups/group.tpl:32 #: views/html/charactergroups/managegroup.tpl:25 msgid "Members" @@ -369,6 +386,16 @@ msgstr "Charaktere" msgid "%s-Quests" msgstr "%squests" +#: views/html/charactergroups/group.tpl:58 +#: views/html/charactergroupsquests/create.tpl:58 +#: views/html/charactergroupsquests/create.tpl:59 +#: views/html/charactergroupsquests/edit.tpl:58 +#: views/html/charactergroupsquests/edit.tpl:59 +#: views/html/characters/index.tpl:22 views/html/characters/manage.tpl:17 +#: views/html/quests/create.tpl:29 views/html/quests/create.tpl:30 +msgid "XPs" +msgstr "XP" + #: views/html/charactergroups/groupsgroup.tpl:21 msgid "Create new Character group" msgstr "Neue Gruppe" @@ -458,18 +485,8 @@ msgstr "Die XP-Angabe ist ungültig" msgid "Title" msgstr "Titel" -#: views/html/charactergroupsquests/create.tpl:58 -#: views/html/charactergroupsquests/create.tpl:59 -#: views/html/charactergroupsquests/edit.tpl:58 -#: views/html/charactergroupsquests/edit.tpl:59 -#: views/html/characters/index.tpl:22 views/html/characters/manage.tpl:17 -#: views/html/quests/create.tpl:29 views/html/quests/create.tpl:30 -msgid "XPs" -msgstr "XP" - #: views/html/charactergroupsquests/create.tpl:60 #: views/html/charactergroupsquests/edit.tpl:60 -#: views/html/charactergroupsquests/quest.tpl:21 #: views/html/quests/create.tpl:17 views/html/quests/index.tpl:14 msgid "Questgroup" msgstr "Questgruppe" @@ -478,7 +495,7 @@ msgstr "Questgruppe" #: views/html/charactergroupsquests/create.tpl:67 #: views/html/charactergroupsquests/edit.tpl:66 #: views/html/charactergroupsquests/edit.tpl:67 -#: views/html/charactergroupsquests/quest.tpl:24 +#: views/html/charactergroupsquests/quest.tpl:34 msgid "Description" msgstr "Beschreibung" @@ -486,7 +503,7 @@ msgstr "Beschreibung" #: views/html/charactergroupsquests/create.tpl:69 #: views/html/charactergroupsquests/edit.tpl:68 #: views/html/charactergroupsquests/edit.tpl:69 -#: views/html/charactergroupsquests/quest.tpl:32 +#: views/html/charactergroupsquests/quest.tpl:37 msgid "Rules" msgstr "Regeln" @@ -521,15 +538,24 @@ msgstr "Soll die %s-Quest „%s“ wirklich gelöscht werden?" msgid "Edit %s-Quest" msgstr "%s-Quest bearbeiten" -#: views/html/charactergroupsquests/quest.tpl:20 -msgid "Maximum reward" -msgstr "Maximale Belohnung" +#: views/html/charactergroupsquests/manage.tpl:34 +msgid "Not attended" +msgstr "Nicht teilgenommen" -#: views/html/charactergroupsquests/quest.tpl:39 +#: views/html/charactergroupsquests/manage.tpl:43 +msgid "Set XPs" +msgstr "Setze XP" + +#: views/html/charactergroupsquests/quest.tpl:16 +#, php-format +msgid "Manage %s-Quest" +msgstr "%s-Quest Verwalten" + +#: views/html/charactergroupsquests/quest.tpl:44 msgid "Won Quest" msgstr "Gewonnene Quest" -#: views/html/charactergroupsquests/quest.tpl:45 +#: views/html/charactergroupsquests/quest.tpl:50 msgid "Lost Quest" msgstr "Verlorene Quest" @@ -553,16 +579,6 @@ msgstr "Meilensteine" msgid "Ranking" msgstr "Ranking" -#: views/html/characters/character.tpl:67 -#: views/html/characters/character.tpl:73 -#: views/html/characters/character.tpl:79 -#: views/html/characters/character.tpl:97 views/html/quests/index.tpl:37 -#: views/html/seminaries/index.tpl:29 views/html/seminarybar/index.tpl:6 -#: views/html/seminarybar/index.tpl:42 -#, php-format -msgid "%d XPs" -msgstr "%d XP" - #: views/html/characters/character.tpl:106 views/html/seminarybar/index.tpl:14 msgid "Last Quest" msgstr "Letzter Speicherpunkt" @@ -1021,16 +1037,15 @@ msgstr "Registrieren" msgid "Roles" msgstr "Rollen" +#~ msgid "Maximum reward" +#~ msgstr "Maximale Belohnung" + #~ msgid "Set properties" #~ msgstr "Setze Eigenschaften" #~ msgid "Selection" #~ msgstr "Auswahl" -#, fuzzy -#~ msgid "%d XPs" -#~ msgstr "%d XP" - #~ msgid "Properties" #~ msgstr "Eigenschaften" diff --git a/models/CharactergroupsModel.inc b/models/CharactergroupsModel.inc index ed89cb21..20a3e3a7 100644 --- a/models/CharactergroupsModel.inc +++ b/models/CharactergroupsModel.inc @@ -200,7 +200,8 @@ return $this->db->query( 'SELECT id, name, url, xps, motto, seminaryupload_id '. 'FROM v_charactergroups '. - 'WHERE charactergroupsgroup_id = ?', + 'WHERE charactergroupsgroup_id = ? '. + 'ORDER BY name', 'i', $groupsgroupId ); @@ -278,6 +279,33 @@ } + /** + * Get the Character groups for a Quest. + * + * @param int $questId ID of the Character groups Quest + * @return array Character groups + */ + public function getGroupsForQuest($questId) + { + $groups = $this->db->query( + 'SELECT charactergroups.id, charactergroups.name, charactergroups.url, charactergroupsquests_groups.created, charactergroupsquests_groups.xps_factor, charactergroupsquests.xps '. + 'FROM charactergroupsquests_groups '. + 'LEFT JOIN charactergroups ON charactergroups.id = charactergroupsquests_groups.charactergroup_id '. + 'LEFT JOIN charactergroupsquests ON charactergroupsquests.id = charactergroupsquests_groups.charactergroupsquest_id '. + 'WHERE charactergroupsquests_groups.charactergroupsquest_id = ? '. + 'ORDER BY xps_factor DESC', + 'i', + $questId + ); + foreach($groups as &$group) { + $group['xps'] = round($group['xps'] * $group['xps_factor'], 1); + } + + + return $groups; + } + + /** * Check if a Character group name already exists. * diff --git a/models/CharactergroupsquestsModel.inc b/models/CharactergroupsquestsModel.inc index d977cc09..5ebe100a 100644 --- a/models/CharactergroupsquestsModel.inc +++ b/models/CharactergroupsquestsModel.inc @@ -105,32 +105,6 @@ } - /** - * Get the Character groups for a Quest. - * - * @param int $questId ID of the Character groups Quest - * @return array Character groups - */ - public function getGroupsForQuest($questId) - { - $groups = $this->db->query( - 'SELECT charactergroups.id, charactergroups.name, charactergroups.url, charactergroupsquests_groups.created, charactergroupsquests_groups.xps_factor, charactergroupsquests.xps '. - 'FROM charactergroupsquests_groups '. - 'LEFT JOIN charactergroups ON charactergroups.id = charactergroupsquests_groups.charactergroup_id '. - 'LEFT JOIN charactergroupsquests ON charactergroupsquests.id = charactergroupsquests_groups.charactergroupsquest_id '. - 'WHERE charactergroupsquests_groups.charactergroupsquest_id = ?', - 'i', - $questId - ); - foreach($groups as &$group) { - $group['xps'] = round($group['xps'] * $group['xps_factor'], 1); - } - - - return $groups; - } - - /** * Get Character groups Quests for a Character group. * @@ -156,6 +130,78 @@ } + /** + * Get XPs of a Character group for a Character groups Quest. + * + * @param int $questId ID of Character groups Quest + * @param int $groupId ID of Character group to get XPs of + * @return array XP-record + */ + public function getXPsOfGroupForQuest($questId, $groupId) + { + $data = $this->db->query( + 'SELECT charactergroupsquests_groups.created, charactergroupsquests_groups.xps_factor, charactergroupsquests.xps '. + 'FROM charactergroupsquests_groups '. + 'LEFT JOIN charactergroupsquests ON charactergroupsquests.id = charactergroupsquests_groups.charactergroupsquest_id '. + 'WHERE charactergroupsquests_groups.charactergroupsquest_id = ? AND charactergroupsquests_groups.charactergroup_id = ?', + 'ii', + $questId, + $groupId + ); + if(empty($data)) { + return null; + } + + $data = $data[0]; + $data['xps'] = round($data['xps'] * $data['xps_factor'], 1); + + + return $data; + } + + + /** + * Set XPs of a Character group for a Character groups Quest. + * + * @param int $questId ID of Character groups Quest + * @param int $groupId ID of Character group to set XPs of + * @param float $xpsFactor XPs-factor + */ + public function setXPsOfGroupForQuest($questId, $groupId, $xpsFactor) + { + $this->db->query( + 'INSERT INTO charactergroupsquests_groups '. + '(charactergroupsquest_id, charactergroup_id, xps_factor) '. + 'VALUES '. + '(?, ?, ?) '. + 'ON DUPLICATE KEY UPDATE '. + 'xps_factor = ?', + 'iidd', + $questId, + $groupId, + $xpsFactor, + $xpsFactor + ); + } + + + /** + * Remove a Character group from a Character groups Quest. + * + * @param int $questId ID of Character groups Quest + * @param int $groupId ID of Character group to remove + */ + public function deleteGroupForQuest($questId, $groupId) + { + $this->db->query( + 'DELETE FROM charactergroupsquests_groups '. + 'WHERE charactergroupsquest_id = ? AND charactergroup_id = ?', + 'ii', + $questId, $groupId + ); + } + + /** * Check if a Character groups Quest title already exists. * diff --git a/views/html/charactergroups/group.tpl b/views/html/charactergroups/group.tpl index a27313f4..00197e32 100644 --- a/views/html/charactergroups/group.tpl +++ b/views/html/charactergroups/group.tpl @@ -28,7 +28,7 @@
  • .
  • -
  • XP
  • +
  • 1) ? _('Members') : _('Member')?>
@@ -41,7 +41,7 @@

-

XP

+

@@ -55,7 +55,7 @@

format(new \DateTime($quest['created']))?> - / XP + /

diff --git a/views/html/charactergroupsquests/manage.tpl b/views/html/charactergroupsquests/manage.tpl new file mode 100644 index 00000000..f705596c --- /dev/null +++ b/views/html/charactergroupsquests/manage.tpl @@ -0,0 +1,45 @@ + +
+ +
+ + + +
+ + + + + +

+
+
    +
  • +
  • +
+ +
+

+
+
    + +
  • + + + + +
  • + +
+ +
+
diff --git a/views/html/charactergroupsquests/quest.tpl b/views/html/charactergroupsquests/quest.tpl index 3669b453..f0b00ee4 100644 --- a/views/html/charactergroupsquests/quest.tpl +++ b/views/html/charactergroupsquests/quest.tpl @@ -13,21 +13,26 @@ -

-: XP
-: +
+ + + + + +

+
+
    +
  • +
  • +

-

- - - - -

+

@@ -54,7 +59,7 @@
  • format(new \DateTime($group['created']))?> - XP +