1) implement basic CharactersAgent

2) use view for Character groups
This commit is contained in:
coderkun 2014-02-16 15:31:08 +01:00
commit 2f65a89ef4
15 changed files with 311 additions and 11 deletions

View file

@ -88,8 +88,8 @@
public function getGroupsForGroupsgroup($groupsgroupId)
{
return $this->db->query(
'SELECT id, name, url '.
'FROM charactergroups '.
'SELECT id, name, url, xps '.
'FROM v_charactergroups '.
'WHERE charactergroupsgroup_id = ?',
'i',
$groupsgroupId
@ -97,6 +97,26 @@
}
/**
* Get Character groups for a Character.
*
* @param int $characterId ID of the Character
* @return array Character groups
*/
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 '.
'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 '.
'WHERE characters_charactergroups.character_id = ?',
'i',
$characterId
);
}
/**
* Get a Character group by its URL.
*
@ -108,8 +128,8 @@
public function getGroupByUrl($groupsgroupId, $groupUrl)
{
$data = $this->db->query(
'SELECT id, name, url '.
'FROM charactergroups '.
'SELECT id, name, url, xps '.
'FROM v_charactergroups '.
'WHERE charactergroupsgroup_id = ? AND url = ?',
'is',
$groupsgroupId, $groupUrl

View file

@ -43,8 +43,8 @@
public function getCharactersForUser($userId)
{
return $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, seminaries.id AS seminary_url, seminaries.title AS seminary_title, seminaries.url AS seminary_url '.
'FROM characters '.
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.xps, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_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 user_id = ?',
@ -54,6 +54,46 @@
}
/**
* Get Characters for a Seminary.
*
* @param int $seminaryId ID of the Seminary
* @return array Characters
*/
public function getCharactersForSeminary($seminaryId)
{
return $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_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 = ?',
'i',
$seminaryId
);
}
/**
* Get Characters for a Character group.
*
* @param int $groupId ID of the Character group
* @return array Characters
*/
public function getCharactersForGroup($groupId)
{
return $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url '.
'FROM v_characters AS characters '.
'LEFT JOIN characters_charactergroups ON characters_charactergroups.character_id = characters.id '.
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
'WHERE characters_charactergroups.charactergroup_id = ?',
'i',
$groupId
);
}
/**
* Get the character of a user for a Seminary.
*
@ -65,8 +105,8 @@
public function getCharacterForUserAndSeminary($userId, $seminaryId)
{
$data = $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url '.
'FROM characters '.
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url '.
'FROM v_characters AS characters '.
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
'WHERE characters.user_id = ? AND charactertypes.seminary_id = ?',
'ii',
@ -80,6 +120,33 @@
return $data[0];
}
/**
* Get a Character by its Url.
*
* @throws IdNotFoundException
* @param int $seminaryId ID of the Seminary
* @param string $characterUrl URL-name of the Character
* @return array Character data
*/
public function getCharacterByUrl($seminaryId, $characterUrl)
{
$data = $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url '.
'FROM v_characters AS characters '.
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
'WHERE charactertypes.seminary_id = ? AND characters.url = ?',
'is',
$seminaryId, $characterUrl
);
if(empty($data)) {
throw new \nre\exceptions\IdNotFoundException($characterUrl);
}
return $data[0];
}
}
?>