From 9b05e7400eb5ee4fd98d7577f5e8a20c026e7b8b Mon Sep 17 00:00:00 2001 From: oliver Date: Tue, 12 May 2015 10:39:50 +0200 Subject: [PATCH] correctly use Character groups-group context for checking titles of Character groups and Quests (fixes #96) --- controllers/CharactergroupsController.inc | 4 ++-- controllers/CharactergroupsquestsController.inc | 4 ++-- models/CharactergroupsModel.inc | 14 ++++++++------ models/CharactergroupsquestsModel.inc | 14 ++++++++------ 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/controllers/CharactergroupsController.inc b/controllers/CharactergroupsController.inc index d6aee656..40bb38b9 100644 --- a/controllers/CharactergroupsController.inc +++ b/controllers/CharactergroupsController.inc @@ -484,7 +484,7 @@ // Get params and validate them $validation = $this->Validation->validateParams($this->request->getPostParams(), $fields); $charactergroupname = $this->request->getPostParam('charactergroupname'); - if($this->Charactergroups->characterGroupNameExists($charactergroupname)) { + if($this->Charactergroups->characterGroupNameExists($groupsgroup['id'], $charactergroupname)) { $validation = $this->Validation->addValidationResult($validation, 'charactergroupname', 'exist', true); } $motto = $this->request->getPostParam('motto'); @@ -615,7 +615,7 @@ // Get params and validate them $validation = $this->Validation->validateParams($this->request->getPostParams(), $fields); $charactergroupname = (count(array_intersect(array('admin','moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) ? $this->request->getPostParam('charactergroupname') : $group['name']; - if($this->Charactergroups->characterGroupNameExists($charactergroupname, $group['id'])) { + if($this->Charactergroups->characterGroupNameExists($groupsgroup['id'], $charactergroupname, $group['id'])) { $validation = $this->Validation->addValidationResult($validation, 'charactergroupname', 'exist', true); } $motto = $this->request->getPostParam('motto'); diff --git a/controllers/CharactergroupsquestsController.inc b/controllers/CharactergroupsquestsController.inc index 4f2006bc..593ec67b 100644 --- a/controllers/CharactergroupsquestsController.inc +++ b/controllers/CharactergroupsquestsController.inc @@ -291,7 +291,7 @@ // Get params and validate them $validation = $this->Validation->validateParams($this->request->getPostParams(), $fields); $title = $this->request->getPostParam('title'); - if($this->Charactergroupsquests->characterGroupsQuestTitleExists($title)) { + if($this->Charactergroupsquests->characterGroupsQuestTitleExists($groupsgroup['id'], $title)) { $validation = $this->Validation->addValidationResult($validation, 'title', 'exist', true); } $xps = $this->request->getPostParam('xps'); @@ -453,7 +453,7 @@ // Get params and validate them $validation = $this->Validation->validateParams($this->request->getPostParams(), $fields); $title = $this->request->getPostParam('title'); - if($this->Charactergroupsquests->characterGroupsQuestTitleExists($title, $quest['id'])) { + if($this->Charactergroupsquests->characterGroupsQuestTitleExists($groupsgroup['id'], $title, $quest['id'])) { $validation = $this->Validation->addValidationResult($validation, 'title', 'exist', true); } $xps = $this->request->getPostParam('xps'); diff --git a/models/CharactergroupsModel.inc b/models/CharactergroupsModel.inc index 5ff81e81..bcca2802 100644 --- a/models/CharactergroupsModel.inc +++ b/models/CharactergroupsModel.inc @@ -372,17 +372,19 @@ /** * Check if a Character group name already exists. * - * @param string $name Name to check - * @param int $groupsgroupId Do not check this ID (for editing) - * @return boolean Whether name exists or not + * @param int $groupsgroupId ID of Character groups-group + * @param string $name Name to check + * @param int $groupId Do not check this ID (for editing) + * @return boolean Whether name exists or not */ - public function characterGroupNameExists($name, $groupId=null) + public function characterGroupNameExists($groupsgroupId, $name, $groupId=null) { $data = $this->db->query( 'SELECT id '. 'FROM charactergroups '. - 'WHERE name = ? OR url = ?', - 'ss', + 'WHERE charactergroupsgroup_id = ? AND (name = ? OR url = ?)', + 'iss', + $groupsgroupId, $name, \nre\core\Linker::createLinkParam($name) ); diff --git a/models/CharactergroupsquestsModel.inc b/models/CharactergroupsquestsModel.inc index 88d749dd..32b9cafa 100644 --- a/models/CharactergroupsquestsModel.inc +++ b/models/CharactergroupsquestsModel.inc @@ -213,17 +213,19 @@ /** * Check if a Character groups Quest title already exists. * - * @param string $name Character groups Quest title to check - * @param int $questId Do not check this ID (for editing) - * @return boolean Whether Character groups Quest title exists or not + * @param int $groupsgroupId ID of Character groups-group + * @param string $name Character groups Quest title to check + * @param int $questId Do not check this ID (for editing) + * @return boolean Whether Character groups Quest title exists or not */ - public function characterGroupsQuestTitleExists($title, $questId=null) + public function characterGroupsQuestTitleExists($groupsgroupId, $title, $questId=null) { $data = $this->db->query( 'SELECT id '. 'FROM charactergroupsquests '. - 'WHERE title = ? OR url = ?', - 'ss', + 'WHERE charactergroupsgroup_id = ? AND (title = ? OR url = ?)', + 'iss', + $groupsgroupId, $title, \nre\core\Linker::createLinkParam($title) );