From 27bf28b1f7489a43a24924be7e125f4b17882b54 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sat, 3 May 2014 13:03:46 +0200 Subject: [PATCH] list only Characters with at least one role for adding to a Character group (Issue #198) --- controllers/CharactergroupsController.inc | 2 +- models/CharactersModel.inc | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/controllers/CharactergroupsController.inc b/controllers/CharactergroupsController.inc index 3ef61eef..e82d1fae 100644 --- a/controllers/CharactergroupsController.inc +++ b/controllers/CharactergroupsController.inc @@ -402,7 +402,7 @@ // Get all Characters of Seminary $groupCharacterIds = array_map(function($c) { return $c['id']; }, $group['characters']); - $seminaryCharacters = $this->Characters->getCharactersForSeminary($seminary['id']); + $seminaryCharacters = $this->Characters->getCharactersForSeminary($seminary['id'], true); $characters = array(); foreach($seminaryCharacters as &$character) { if(!in_array($character['id'], $groupCharacterIds)) { diff --git a/models/CharactersModel.inc b/models/CharactersModel.inc index e720ab78..8f41bdb3 100644 --- a/models/CharactersModel.inc +++ b/models/CharactersModel.inc @@ -60,14 +60,15 @@ * @param int $seminaryId ID of the Seminary * @return array Characters */ - public function getCharactersForSeminary($seminaryId) + public function getCharactersForSeminary($seminaryId, $onlyWithRole=false) { return $this->db->query( 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, characters.avatar_id, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url, seminaries.id AS seminary_url, seminaries.title AS seminary_title, seminaries.url AS seminary_url '. 'FROM v_characters AS characters '. 'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. 'LEFT JOIN seminaries ON seminaries.id = charactertypes.seminary_id '. - 'WHERE seminaries.id = ?', + 'WHERE seminaries.id = ?'. + ($onlyWithRole ? ' AND EXISTS (SELECT character_id FROM characters_characterroles WHERE character_id = characters.id)' : null), 'i', $seminaryId );