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 zcmZ3RIz6rao)F7a1_lO(;|vT8G7Jn1A#4l`yo?MCJv<;$28IIy3=A9$3=9Va7#KJi z7#L1L`BwxO7`Pc2814!%Fo-iSFuW9CV9;h@U|ObFhqfrFav`i0|SG)FvO*n!VC<; z3=9lD!VC;j3=9kj!VC3&g&MYBX9akxMf5~M3dAr9RLl|L&A3AxLn5C=Yh>VGZ@@xUjj_#aV7NHL2+LP%JQ zp&lGpT4E4`4aFc1uoQ!6bP*}M8l9T28n`NF$M+}1_p-tVvs0WBF4a= zz`($;Lk!}en^68UsCssBh`6RWM7^1KJ;VYps6?tb#HU42eziCQgD3+7LkCoRo;W0= zmWwkmsDLaIXJAkT85q&!YB+7E3{6;y52Rh^+7WYE=GobWbIR=J$CI$wEMRE|A zE|r5Mmi2NFpB;oMyd($l(RDdUNZo~6@CK^yvmC^Mf8`)P6_= z*r5ywnF-2}#5N16ZnrW6gE<2O!zHLZmkK24MN}XT(olgo&_V@L)cUDFqB30t64mu8 zkX+UcVt{I|c~FI$RUke+12yQL3dCXWR3JWQRfWh4t3pCZRTW~f5mekw6=Gq8D#Rg$ zQ29nxi2kXnkTkOxO4qMag#_6~RY;tlRRv`W28Mf3no$kn02MVz_Oe!kxI9@6QmK@w zL3}h>4dRgbY7n1qhN?TM28sJSY7hrJQiFu>2Q>x;4n~H0hTl*HEEA+X+jE^R4Cn}3GvBhO^DAAYC;@zRukfY2bz#v@)|1s zOB3QTUM+}2b+sV&m}xOEXo2#7Ac(=hz)+(F3Bu)C5CeB>K@#CPEs#qY7_MnSve`c^ zNckY44WXU1At9Ed4e?>IHl*aM)P^{)Pa6_~v$P>0x*V#0yEX$uJ*aKB532FFHpIfS zPz_hLAwGSi4RP29ZHUiUbRZT8>p(2j(1AEW4@#Rtt z)H9eeFfg?1FfbT1Ffi=ZVPLRgU|{&D!@yw3z`&rR3*pDOz8AP7l&%w1mp}DXbUjExaa<3Q&tL07e8!^> z@qv&&q-@vIha{d5eMpq#KXAU=L-05RaJ0VEAD88R?{if$Q0NE(ngggDgG z5E4?Uh71gr3=9kvh7bpDGKA)`l5RV*$m{ZSi&Il4@*Nq@Pcx(iT z%l{As41C5642%p63`qSJO&D4k7#Q||at;F|SV3tCBy|+jWCJl6 zKs^iw23H0KhUHNHQU(SFcLoNAUn}LBL z7Q_eT|6T?LhS>}Z3=2U53=9m585kH$Ks_M_28I#_28K?kIE(`IZh{yX7z!95l@O@c zbPUupVqjo!W?*30099zuz`!sK$_Dj}K+UmgC_j>cfx!h7I_nr9DIVNWfJ)XeFffEO zFfc5E@~s&d7#yMO`3#Vp&;aF!KT?jYg@J*gj{%a}L3|KS zWME*J%)r3V%m69EL1halmmOqaVA#&Uz~IKfz>o^+(t(<=c?=8;HVlwdxd5b_fq}t- z0a6}7x!~S0sC6qlIgnSlejg}fF)%R1F)%PBL;KAjl^G0>%$Ux=z_1M@z`(#Tg8|ao z19AO91gNXZ04Z0YTyPHq#7XEz_6Nufnh%=%vLfm zFwA6NV2EO1U;y{tLAn_j7|Nh@3iaSdY0Z|SN z3=Gi>3=Clm3=CDEo+wC=0aCcl2j`NBLhPdT?2%=&0g{cI5=T8D@@Xm*{rWo%P8cRnVeCg hP?DONlb)KFpPQSSw|TW@F%x@gNmVMyIvJgbYygVPw#oni delta 4371 zcmbQ9wl=l?o)F7a1_lO(qYMlTG7Jn1E^G`8?2HTyIXoay28Ip+1_llW28K=n1_n+B z28Kyc{u}`Y25trhhNS`w4B`w73>yU)7_=D}7)}Z>Fo3jv6<}cCV_;xl5`^d%6l7pv zWnf^C5@cWyVqjoU5M*HBWnidhFcxHB5MW?na1>-TN zO^AU(nt_2KPYB|$E+Ga6BL)VB>0ovB3=F4)AP%?)Rq#lNfkBXgf#JOn#HEbF3=F~y z3=AT|3=C2X3=A5=3=E143=Gat@l;_327U$xhDs>iDGYJwOks!zHbBMC2}45c9+ZA1 z%)r1~&%nU&O&H<>77>U`B}KqN!(b}H01k3z5s1%xMIb(l5P<|`ya*)9QbiyhXcA#y zkY`|Em@LA;Ai==EuvvtGL6U)i;S5yWGZBc#m_;G-qM{58^`N-Y6NMOHEef&72TF&F zLM%!Wg~VZoC?rS=MIjEYgvw79g#_(vQHTRqK=rQ|g?L~WRQ!l2BxFvDLZbMQC__Cs zu0BEy{sGkpifB+`;}(Mixu_V#AqHZQkTDa3M1hMK0|N^vj>RBRlr6@`s5)l0^5|EI}te1fJtUv-{L74<3 z3fd(giDi-mB+lkRHEfW81nG7Oh|dp7KrB2a0de>_35Z9oL-jp@n)6Kp5^_wE5PbrY z5PR!Ip$utBNNQJ5rgM}1CeWnz|1C>y^RSM$piBb@c&Xxi@yq;l=6eMW2KsDZg@?S_nf{I5P;$lN- zNZgu9L&}M8X$A&$1_p*YX^2mjNkekc8fi${I4BMA@nb0eqcj795(5K+unZ*enStqg z1_oCdNC_4q1FjEwYf3>YOYjNEziI ziAE4gOUOZ@N*>BLmVVyMCv zIf#!sLp``i?N@}P+Et2>0%E%&B-Ni&gv8+kMM!phrw9oN7A0`vVGvP*6htyg z5Oo$xkhJ8c#K54-z`&5D1St_`C_xhM4k-OX31W|gay`Ul`pOUkt&|}_>R}yQ@Od zOemC&QH6w9vMMCX>+4k^*e`+)ge*A zpaF3ymj=WFX$?rC($jz#Y_0)O@1y}y@2>&zVWbAcA*C9STve?B@z7)q25_CRTLV<| z*E292(17Ic+Zqs`gYqJ%AtJ5`DQN68AwEgfg!sHz6XKA1O^5>~X+mykdP75VPG(2U|^8dVPG(3U|<$oQ9da%G39Y~Ps>q1=aqzj4jASgds7vi8|U5HPbbQwU&f}vX%62x0{ zAwhf|O8?S@_)t|3lJ9l(Amu`=9wb{g>On$qkzPH-ZUKecTX|T`w9!98mw<5E54(p!9F31e*~goA5(v5hI8}l17lIQ8t1U zTqaO)HzP=53owFsB-{vML5dM1#Bz-w9;h^eMCDY7d_BVwBL)UWP|z?iFzkf%IT&&o zAPI5@0|P@NR4j`D(%uKP?fn@b@!ie9z|h3Nz!1y8z>vrQ34urkNC;FjFfhbG_3mL{ zU^oKmtS~SzEM#C{$Yg*dNCt*%1_o;eh|88SK!OIOrySJr05KRC7~-IG9s>hIJ_97> zZew6zh=PiPC{Q*oV1OjH{h-zn1K4PWbqov)tsn&q3=FE11^I<1EAX?_FJXYRl|T|6 z3=9kt7$B(�RwyK>aXK*JTa^14B4Skb!|Ag@J+LFqFNCfq`K*lntZiF+lPfh!1K^ zfanGWNL$Sl#9@HsJwH&ND;X+K1*JhrGX%=s4W%8RbRm>p0BWHyFfbH@I*Fim6ayq; zL47xn5>P_|MDJx_V3-ABFfcHfKKPcKp%Uo~3=I7Y3=A_s zbt?k{!+KE95Gn_vLKzqsxV6@B(#{LA?BM?;HLdAO-AjKT0(FZDx)-W(IYyrhTsJnUq)R~7WoDZd8 zR1X6K!xSh7)YbI?71|683^N%ZrH>t`BM+6YV}KM4Ag(h51A{LE14AtX1H*QZ01|eE zvR8sTMhuWPu{Q$)gF6EQLm304!3OH!gVY_}yjQ@NRn9phu_!UQB(+E(y(qu5fWbGh zA~Ux%SD`4iJh3Qcv!+-OR)8nHWzlke5T^Zk{23fMasD lhL9jge_~Fmf>UZvenwttUi#*0je5q-yjn#}n>%#+*#JYomtp__ 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 +