From e971e3677a3dbad2f2f39061725cd62849901cae Mon Sep 17 00:00:00 2001 From: oliver Date: Thu, 16 Apr 2015 11:04:01 +0200 Subject: [PATCH] improve map feature by using its own database table and model --- controllers/MapController.inc | 6 ++- controllers/MediaController.inc | 10 ++++- models/MapModel.inc | 62 +++++++++++++++++++++++++++++++ views/html/map/index.tpl | 12 ++++-- views/html/seminarymenu/index.tpl | 2 +- 5 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 models/MapModel.inc diff --git a/controllers/MapController.inc b/controllers/MapController.inc index 81354102..7dbb6ab4 100644 --- a/controllers/MapController.inc +++ b/controllers/MapController.inc @@ -24,7 +24,7 @@ * * @var array */ - public $models = array('seminaries'); + public $models = array('seminaries', 'map'); /** * User permissions * @@ -58,9 +58,13 @@ // Get Seminary $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); + // Get map + $map = $this->Map->getMapOfSeminary($seminary['id']); + // Pass data to view $this->set('seminary', $seminary); + $this->set('map', $map); } } diff --git a/controllers/MediaController.inc b/controllers/MediaController.inc index ce505292..a55cd94a 100644 --- a/controllers/MediaController.inc +++ b/controllers/MediaController.inc @@ -50,7 +50,7 @@ * * @var array */ - public $models = array('seminaries', 'achievements', 'media', 'avatars', 'charactergroups', 'charactergroupsquests'); + public $models = array('seminaries', 'achievements', 'media', 'avatars', 'charactergroups', 'charactergroupsquests', 'map'); @@ -158,8 +158,14 @@ // Get Seminary $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); + // Get map + $map = $this->Map->getMapOfSeminary($seminary['id']); + if(is_null($map)) { + throw new \nre\exceptions\IdNotFoundException($seminaryUrl); + } + // Get media - $media = $this->Media->getSeminaryMediaById($seminary['map_seminarymedia_id']); + $media = $this->Media->getSeminaryMediaById($map['seminarymedia_id']); // Get file $file = $this->getMediaFile($media); diff --git a/models/MapModel.inc b/models/MapModel.inc new file mode 100644 index 00000000..d758bbfd --- /dev/null +++ b/models/MapModel.inc @@ -0,0 +1,62 @@ + + * @copyright 2014 Heinrich-Heine-Universität Düsseldorf + * @license http://www.gnu.org/licenses/gpl.html + * @link https://bitbucket.org/coderkun/the-legend-of-z + */ + + namespace hhu\z\models; + + + /** + * Model to interact with the maps-table. + * + * @author Oliver Hanraths + */ + class MapModel extends \hhu\z\Model + { + + + + + /** + * Construct a new MapModel. + */ + public function __construct() + { + parent::__construct(); + } + + + + + /** + * Get the map of a Seminary. + * + * @param int $seminaryId ID of Seminary to get map of + * @return array Map data + */ + public function getMapOfSeminary($seminaryId) + { + $data = $this->db->query( + 'SELECT seminary_id, seminarymedia_id, width, height '. + 'FROM maps '. + 'WHERE seminary_id = ?', + 'i', + $seminaryId + ); + if(!empty($data)) { + return $data[0]; + } + + + return null; + } + + } + +?> diff --git a/views/html/map/index.tpl b/views/html/map/index.tpl index c2b0c427..09cf56b8 100644 --- a/views/html/map/index.tpl +++ b/views/html/map/index.tpl @@ -10,7 +10,7 @@

diff --git a/views/html/seminarymenu/index.tpl b/views/html/seminarymenu/index.tpl index 12b2ece8..2b3c4a47 100644 --- a/views/html/seminarymenu/index.tpl +++ b/views/html/seminarymenu/index.tpl @@ -5,6 +5,6 @@
  • -
  • +