diff --git a/controllers/CharactersController.inc b/controllers/CharactersController.inc index 7bc4d7d5..cb17db34 100644 --- a/controllers/CharactersController.inc +++ b/controllers/CharactersController.inc @@ -132,6 +132,9 @@ // Get Character groups $groups = $this->Charactergroups->getGroupsForCharacter($character['id']); + foreach($groups as &$group) { + $group['groupsgroup'] = $this->Charactergroups->getGroupsgroupById($group['charactergroupsgroup_id']); + } // Get Achievements $achievements = $this->Achievements->getAchievedAchievementsForCharacter($character['id']); diff --git a/controllers/UploadsController.inc b/controllers/UploadsController.inc index 4d1da994..fba66335 100644 --- a/controllers/UploadsController.inc +++ b/controllers/UploadsController.inc @@ -24,14 +24,15 @@ * * @var array */ - public $models = array('uploads', 'users', 'userroles', 'characterroles', 'seminaries'); + public $models = array('uploads', 'users', 'userroles', 'characterroles', 'seminaries', 'charactergroups'); /** * User permissions * * @var array */ public $permissions = array( - 'index' => array('admin', 'moderator', 'user', 'guest') + 'seminary' => array('admin', 'moderator', 'user', 'guest'), + 'charactergroup' => array('admin', 'moderator', 'user', 'guest') ); /** * User seminary permissions @@ -39,7 +40,8 @@ * @var array */ public $seminaryPermissions = array( - 'seminary' => array('admin', 'moderator', 'user', 'guest') + 'seminary' => array('admin', 'moderator', 'user', 'guest'), + 'charactergroup' => array('admin', 'moderator', 'user') ); @@ -102,6 +104,67 @@ } } + // Get file + $file = $this->getUploadFile($upload); + if(is_null($file)) { + return; + } + + + // Pass data to view + $this->set('upload', $upload); + $this->set('file', $file); + } + + + /** + * Action: charactergroup. + * + * Display the icon of a Character group. + * + * @throws IdNotFoundException + * @param string $seminaryUrl URL-Title of a Seminary + * @param string $groupsgroupUrl URL-Title of a Character groups-group + * @param string $groupUrl URL-Title of a Character group + */ + public function charactergroup($seminaryUrl, $groupsgroupUrl, $groupUrl) + { + // Get seminary + $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); + + // Get Character groups-group + $groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl); + + // Get Character group + $group = $this->Charactergroups->getGroupByUrl($groupsgroup['id'], $groupUrl); + + // Get Upload + $upload = $this->Uploads->getSeminaryuploadById($group['seminaryupload_id']); + + // Get file + $file = $this->getUploadFile($upload); + if(is_null($file)) { + return; + } + + + // Pass data to view + $this->set('upload', $upload); + $this->set('file', $file); + } + + + + + /** + * Determine the file for an upload. + * + * @throws IdNotFoundException + * @param array $upload Upload to get file for + * @return object File for the upload (or null if upload is cached) + */ + private function getUploadFile($upload) + { // Set content-type $this->response->addHeader("Content-type: ".$upload['mimetype'].""); @@ -113,23 +176,14 @@ // Cache if($this->setCacheHeaders($upload['filename'])) { - return; + return null; } - // Load file - $file = file_get_contents($upload['filename']); - - - - // Pass data to view - $this->set('upload', $upload); - $this->set('file', $file); + return file_get_contents($upload['filename']); } - - /** * Determine file information and set the HTTP-header for * caching accordingly. diff --git a/models/CharactergroupsModel.inc b/models/CharactergroupsModel.inc index 750aec58..ed89cb21 100644 --- a/models/CharactergroupsModel.inc +++ b/models/CharactergroupsModel.inc @@ -198,7 +198,7 @@ public function getGroupsForGroupsgroup($groupsgroupId) { return $this->db->query( - 'SELECT id, name, url, xps, motto '. + 'SELECT id, name, url, xps, motto, seminaryupload_id '. 'FROM v_charactergroups '. 'WHERE charactergroupsgroup_id = ?', 'i', @@ -216,7 +216,7 @@ public function getGroupsForCharacter($characterId) { return $this->db->query( - 'SELECT charactergroups.id, charactergroups.charactergroupsgroup_id, charactergroups.name, charactergroups.url, charactergroups.xps, charactergroupsgroups.id AS charactergroupsgroup_id, charactergroupsgroups.name AS charactergroupsgroup_name, charactergroupsgroups.url AS charactergroupsgroup_url '. + 'SELECT charactergroups.id, charactergroups.charactergroupsgroup_id, charactergroups.name, charactergroups.url, charactergroups.seminaryupload_id, charactergroups.xps, charactergroupsgroups.id AS charactergroupsgroup_id, charactergroupsgroups.name AS charactergroupsgroup_name, charactergroupsgroups.url AS charactergroupsgroup_url '. 'FROM characters_charactergroups '. 'LEFT JOIN v_charactergroups AS charactergroups ON charactergroups.id = characters_charactergroups.charactergroup_id '. 'LEFT JOIN charactergroupsgroups ON charactergroupsgroups.id = charactergroups.charactergroupsgroup_id '. @@ -238,7 +238,7 @@ public function getGroupByUrl($groupsgroupId, $groupUrl) { $data = $this->db->query( - 'SELECT id, name, url, xps, motto '. + 'SELECT id, name, url, xps, motto, seminaryupload_id '. 'FROM v_charactergroups '. 'WHERE charactergroupsgroup_id = ? AND url = ?', 'is', @@ -263,7 +263,7 @@ public function getGroupById($groupId) { $data = $this->db->query( - 'SELECT id, name, url, xps, motto '. + 'SELECT id, name, url, xps, motto, seminaryupload_id '. 'FROM v_charactergroups '. 'WHERE id = ?', 'i', diff --git a/views/binary/uploads/charactergroup.tpl b/views/binary/uploads/charactergroup.tpl new file mode 100644 index 00000000..0d6fb0df --- /dev/null +++ b/views/binary/uploads/charactergroup.tpl @@ -0,0 +1 @@ +=$file?> diff --git a/views/html/charactergroups/group.tpl b/views/html/charactergroups/group.tpl index c2643786..a27313f4 100644 --- a/views/html/charactergroups/group.tpl +++ b/views/html/charactergroups/group.tpl @@ -18,7 +18,11 @@
diff --git a/views/html/characters/character.tpl b/views/html/characters/character.tpl index 470d369b..32903bf5 100644 --- a/views/html/characters/character.tpl +++ b/views/html/characters/character.tpl @@ -86,7 +86,13 @@
+
+
+
+
+
=sprintf(_('%d XPs'), $group['xps'])?>