diff --git a/controllers/CharactergroupsController.inc b/controllers/CharactergroupsController.inc index 594cba12..d4cf6cee 100644 --- a/controllers/CharactergroupsController.inc +++ b/controllers/CharactergroupsController.inc @@ -57,9 +57,6 @@ { // Get seminary $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); - if(!is_null($seminary['media_id'])) { - $seminary['media'] = $this->Media->getMediaById($seminary['media_id']); - } // Get Character groups-groups $groupsgroups = $this->Charactergroups->getGroupsroupsForSeminary($seminary['id']); @@ -85,9 +82,6 @@ { // Get seminary $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); - if(!is_null($seminary['media_id'])) { - $seminary['media'] = $this->Media->getMediaById($seminary['media_id']); - } // Get Character groups-group $groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl); @@ -122,9 +116,6 @@ { // Get seminary $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); - if(!is_null($seminary['media_id'])) { - $seminary['media'] = $this->Media->getMediaById($seminary['media_id']); - } // Get Character groups-group $groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl); diff --git a/controllers/CharactergroupsquestsController.inc b/controllers/CharactergroupsquestsController.inc index 478d8700..fb9d18c8 100644 --- a/controllers/CharactergroupsquestsController.inc +++ b/controllers/CharactergroupsquestsController.inc @@ -61,9 +61,6 @@ { // Get seminary $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); - if(!is_null($seminary['media_id'])) { - $seminary['media'] = $this->Media->getMediaById($seminary['media_id']); - } // Get Character groups-group $groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl); diff --git a/controllers/CharactersController.inc b/controllers/CharactersController.inc index 8486a2fc..e0a14362 100644 --- a/controllers/CharactersController.inc +++ b/controllers/CharactersController.inc @@ -66,9 +66,6 @@ { // Get Seminary $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); - if(!is_null($seminary['media_id'])) { - $seminary['media'] = $this->Media->getMediaById($seminary['media_id']); - } // Get registered Characters $characters = $this->Characters->getCharactersForSeminary($seminary['id']); @@ -107,9 +104,6 @@ // Get Seminary $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); $seminary['achievable_xps'] = $this->Seminaries->getTotalXPs($seminary['id']); - if(!is_null($seminary['media_id'])) { - $seminary['media'] = $this->Media->getMediaById($seminary['media_id']); - } // Get Character $character = $this->Characters->getCharacterByUrl($seminary['id'], $characterUrl); @@ -216,18 +210,11 @@ } } - // Medium - $media = null; - if(!is_null($seminary['media_id'])) { - $media = $this->Media->getMediaById($seminary['media_id']); - } - // Pass data to view $this->set('seminary', $seminary); $this->set('types', $types); $this->set('fields', $fields); - $this->set('media', $media); $this->set('charactername', $charactername); $this->set('validation', $validation); $this->set('fieldsValidation', $fieldsValidation); diff --git a/controllers/MediaController.inc b/controllers/MediaController.inc index 0afe93fb..35105c4a 100644 --- a/controllers/MediaController.inc +++ b/controllers/MediaController.inc @@ -25,8 +25,10 @@ * @var array */ public $permissions = array( - 'index' => array('admin', 'moderator', 'user', 'guest'), - 'seminary' => array('admin', 'moderator', 'user', 'guest') + 'index' => array('admin', 'moderator', 'user', 'guest'), + 'seminaryheader' => array('admin', 'moderator', 'user', 'guest'), + 'seminary' => array('admin', 'moderator', 'user', 'guest'), + 'avatar' => array('admin', 'moderator', 'user') ); /** * User seminary permissions @@ -70,44 +72,48 @@ * Display a medium. * * @param string $mediaUrl URL-name of the medium + * @param string $action Action for processing the media */ public function index($mediaUrl, $action=null) { // Get Media $media = $this->Media->getMediaByUrl($mediaUrl); - // Get format - $format = explode('/', $media['mimetype']); - $format = $format[1]; - - // Set content-type - $this->response->addHeader("Content-type: ".$media['mimetype'].""); - - // Set filename - $media['filename'] = ROOT.DS.\nre\configs\AppConfig::$dirs['media'].DS.$media['id']; - if(!file_exists($media['filename'])) { - throw new \nre\exceptions\IdNotFoundException($mediaUrl); - } - - // Cache - if($this->setCacheHeaders($media['filename'])) { + // Get file + $file = $this->getMediaFile($media, $action); + if(is_null($media)) { return; } - // Load and process file - $file = null; - switch($action) - { - // No action - case null: - // Do not process the file - $file = file_get_contents($media['filename']); - break; - default: - throw new ParamsNotValidException($action); - break; - } + // Pass data to view + $this->set('media', $media); + $this->set('file', $file); + } + + + /** + * Action: seminaryheader + * + * Display the header of a Seminary. + * + * @throws IdNotFoundException + * @param string $seminaryUrl URL-title of the Seminary + * @param string $action Action for processing the media + */ + public function seminaryheader($seminaryUrl, $action=null) + { + // Get Seminary + $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); + + // Get media + $media = $this->Media->getSeminaryMediaById($seminary['seminarymedia_id']); + + // Get file + $file = $this->getMediaFile($media, $action); + if(is_null($file)) { + return; + } // Pass data to view @@ -124,6 +130,7 @@ * @throws IdNotFoundException * @param string $seminaryUrl URL-title of the Seminary * @param string $mediaUrl URL-name of the medium + * @param string $action Action for processing the media */ public function seminary($seminaryUrl, $mediaUrl, $action=null) { @@ -133,52 +140,12 @@ // Get Media $media = $this->Media->getSeminaryMediaByUrl($seminary['id'], $mediaUrl); - // Get format - $format = explode('/', $media['mimetype']); - $format = $format[1]; - - // Set content-type - $this->response->addHeader("Content-type: ".$media['mimetype'].""); - - // Set filename - $media['filename'] = ROOT.DS.\nre\configs\AppConfig::$dirs['seminarymedia'].DS.$media['id']; - if(!file_exists($media['filename'])) { - throw new \nre\exceptions\IdNotFoundException($mediaUrl); - } - - // Cache - if($this->setCacheHeaders($media['filename'])) { + // Get file + $file = $this->getMediaFile($media, $action); + if(is_null($media)) { return; } - // Load and process file - $file = null; - switch($action) - { - // No action - case null: - // Do not process the file - $file = file_get_contents($media['filename']); - break; - case 'questgroup': - if(!in_array(strtoupper($format), self::getImageTypes())) { - $file = file_get_contents($media['filename']); - } - else - { - $file = self::resizeImage( - $media['filename'], - $format, - 480 - ); - } - break; - default: - throw new ParamsNotValidException($action); - break; - } - - // Pass data to view $this->set('media', $media); @@ -225,6 +192,66 @@ } + /** + * Determine the file for a medium and process it if necessary. + * + * @throws IdNotFoundException + * @throws ParamsNotValidException + * @param array $media Medium to get file for + * @param string $action Action for processing the media + * @return object File for the medium (or null if medium is cached) + */ + private function getMediaFile($media, $action=null) + { + // Get format + $format = explode('/', $media['mimetype']); + $format = $format[1]; + + // Set content-type + $this->response->addHeader("Content-type: ".$media['mimetype'].""); + + // Set filename + $media['filename'] = ROOT.DS.\nre\configs\AppConfig::$dirs['seminarymedia'].DS.$media['id']; + if(!file_exists($media['filename'])) { + throw new \nre\exceptions\IdNotFoundException($mediaUrl); + } + + // Cache + if($this->setCacheHeaders($media['filename'])) { + return null; + } + + // Load and process file + $file = null; + switch($action) + { + // No action + case null: + // Do not process the file + $file = file_get_contents($media['filename']); + break; + case 'questgroup': + if(!in_array(strtoupper($format), self::getImageTypes())) { + $file = file_get_contents($media['filename']); + } + else + { + $file = self::resizeImage( + $media['filename'], + $format, + 480 + ); + } + break; + default: + throw new ParamsNotValidException($action); + break; + } + + + // Return file + return $file; + } /** diff --git a/controllers/SeminariesController.inc b/controllers/SeminariesController.inc index 50d1aac5..771c9787 100644 --- a/controllers/SeminariesController.inc +++ b/controllers/SeminariesController.inc @@ -69,11 +69,6 @@ // Created user $seminary['creator'] = $this->Users->getUserById($seminary['created_user_id']); - // Media - if(!is_null($seminary['media_id'])) { - $seminary['media'] = $this->Media->getMediaById($seminary['media_id']); - } - // Character of currently logged-in user try { $seminary['usercharacter'] = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']); @@ -150,17 +145,10 @@ } } - // Medium - $media = null; - if(!is_null($seminary['media_id'])) { - $media = $this->Media->getMediaById($seminary['media_id']); - } - // Pass data to view $this->set('seminary', $seminary); $this->set('questgroupshierarchy', $questgroupshierarchy); - $this->set('media', $media); } diff --git a/models/SeminariesModel.inc b/models/SeminariesModel.inc index 364e82e2..251ade4f 100644 --- a/models/SeminariesModel.inc +++ b/models/SeminariesModel.inc @@ -49,7 +49,7 @@ { // Get seminaries return $this->db->query( - 'SELECT id, created, created_user_id, title, url, description, media_id '. + 'SELECT id, created, created_user_id, title, url, description, seminarymedia_id '. 'FROM seminaries '. 'ORDER BY created DESC' ); @@ -66,7 +66,7 @@ public function getSeminaryById($seminaryId) { $seminary = $this->db->query( - 'SELECT id, created, created_user_id, title, url, description, media_id '. + 'SELECT id, created, created_user_id, title, url, description, seminarymedia_id '. 'FROM seminaries '. 'WHERE id = ?', 'i', @@ -91,7 +91,7 @@ public function getSeminaryByUrl($seminaryUrl) { $seminary = $this->db->query( - 'SELECT id, created, created_user_id, title, url, description, media_id '. + 'SELECT id, created, created_user_id, title, url, description, seminarymedia_id '. 'FROM seminaries '. 'WHERE url = ?', 's', diff --git a/views/html/charactergroups/group.tpl b/views/html/charactergroups/group.tpl index 9a66595d..ba53c97b 100644 --- a/views/html/charactergroups/group.tpl +++ b/views/html/charactergroups/group.tpl @@ -1,6 +1,6 @@ - +
- +

diff --git a/views/html/charactergroups/groupsgroup.tpl b/views/html/charactergroups/groupsgroup.tpl index c604328a..93aeaba7 100644 --- a/views/html/charactergroups/groupsgroup.tpl +++ b/views/html/charactergroups/groupsgroup.tpl @@ -1,6 +1,6 @@ - +
- +

diff --git a/views/html/charactergroups/index.tpl b/views/html/charactergroups/index.tpl index 483c0f2e..e0f54b94 100644 --- a/views/html/charactergroups/index.tpl +++ b/views/html/charactergroups/index.tpl @@ -1,6 +1,6 @@ - +
- +

diff --git a/views/html/charactergroupsquests/quest.tpl b/views/html/charactergroupsquests/quest.tpl index 6837cfff..8112a913 100644 --- a/views/html/charactergroupsquests/quest.tpl +++ b/views/html/charactergroupsquests/quest.tpl @@ -1,6 +1,6 @@ - +
- +

diff --git a/views/html/characters/character.tpl b/views/html/characters/character.tpl index c347a9d0..d597f182 100644 --- a/views/html/characters/character.tpl +++ b/views/html/characters/character.tpl @@ -1,6 +1,6 @@ - +
- +

diff --git a/views/html/characters/index.tpl b/views/html/characters/index.tpl index 478c0a65..a1227a5a 100644 --- a/views/html/characters/index.tpl +++ b/views/html/characters/index.tpl @@ -1,6 +1,6 @@ - +
- +

diff --git a/views/html/characters/register.tpl b/views/html/characters/register.tpl index f6d2b15e..229dfaaa 100644 --- a/views/html/characters/register.tpl +++ b/views/html/characters/register.tpl @@ -1,6 +1,6 @@ - +
- +

diff --git a/views/html/seminaries/create.tpl b/views/html/seminaries/create.tpl index 823eec70..30938357 100644 --- a/views/html/seminaries/create.tpl +++ b/views/html/seminaries/create.tpl @@ -1,3 +1,8 @@ + +
+ +
+

diff --git a/views/html/seminaries/delete.tpl b/views/html/seminaries/delete.tpl index d2253f14..8e53fdb5 100644 --- a/views/html/seminaries/delete.tpl +++ b/views/html/seminaries/delete.tpl @@ -1,3 +1,8 @@ + +
+ +
+

diff --git a/views/html/seminaries/edit.tpl b/views/html/seminaries/edit.tpl index 007acf15..66d7efcd 100644 --- a/views/html/seminaries/edit.tpl +++ b/views/html/seminaries/edit.tpl @@ -1,3 +1,8 @@ + +
+ +
+

diff --git a/views/html/seminaries/index.tpl b/views/html/seminaries/index.tpl index 4ad92986..986991a9 100644 --- a/views/html/seminaries/index.tpl +++ b/views/html/seminaries/index.tpl @@ -7,8 +7,8 @@