ipmlement CRUD for Character (groups-) groups

This commit is contained in:
coderkun 2014-04-28 10:09:17 +02:00
commit f74d18c668
15 changed files with 1140 additions and 142 deletions

View file

@ -134,6 +134,22 @@
'minlength' => 5,
'maxlength' => 12,
'regex' => '/^\w*$/'
),
'charactergroupsgroupname' => array(
'minlength' => 4,
'maxlength' => 32,
'regex' => '/^(\S| )*$/'
),
'preferred' => array(
'regex' => '/^(0|1)$/'
),
'charactergroupname' => array(
'minlength' => 4,
'maxlength' => 32,
'regex' => '/^(\S| )*$/'
),
'motto' => array(
'maxlength' => 128
)
);
@ -145,24 +161,27 @@
* @var array
*/
public static $routes = array(
array('^users/([^/]+)/(edit|delete)/?$', 'users/$2/$1', true),
array('^users/(?!(index|login|register|logout|create|edit|delete))/?', 'users/user/$1', true),
array('^seminaries/([^/]+)/(edit|delete)/?$', 'seminaries/$2/$1', true),
array('^seminaries/(?!(index|create|edit|delete))/?', 'seminaries/seminary/$1', true),
array('^questgroups/([^/]+)/(create)/?$', 'questgroups/$2/$1', true),
array('^questgroups/([^/]+)/([^/]+)/?$', 'questgroups/questgroup/$1/$2', true),
array('^quests/([^/]+)/(create|createmedia)/?$', 'quests/$2/$1' , true),
array('^quests/([^/]+)/([^/]+)/([^/]+)/(submissions)/?$', 'quests/$4/$1/$2/$3', true),
array('^quests/([^/]+)/([^/]+)/([^/]+)/(submission)/([^/]+)/?$', 'quests/$4/$1/$2/$3/$5', true),
array('^quests/(?!(index|create|createmedia))/?', 'quests/quest/$1', true),
array('^characters/([^/]+)/(register|manage)/?$', 'characters/$2/$1', true),
array('^characters/([^/]+)/?$', 'characters/index/$1', true),
array('^characters/([^/]+)/(?!(index|create|register|manage))/?', 'characters/character/$1/$2', true),
array('^charactergroups/([^/]+)/?$', 'charactergroups/index/$1', true),
array('^charactergroups/([^/]+)/([^/]+)/?$', 'charactergroups/groupsgroup/$1/$2', true),
array('^charactergroups/([^/]+)/([^/]+)/(managegroup)/?$', 'charactergroups/$3/$1/$2', true),
array('^charactergroups/([^/]+)/([^/]+)/(?!(managegroup))/?', 'charactergroups/group/$1/$2/$3', true),
array('^charactergroupsquests/([^/]+)/([^/]+)/([^/]+)/?$', 'charactergroupsquests/quest/$1/$2/$3', true),
array('^users/([^/]+)/(edit|delete)/?$', 'users/$2/$1', true),
array('^users/(?!(index|login|register|logout|create|edit|delete))/?', 'users/user/$1', true),
array('^seminaries/([^/]+)/(edit|delete)/?$', 'seminaries/$2/$1', true),
array('^seminaries/(?!(index|create|edit|delete))/?', 'seminaries/seminary/$1', true),
array('^questgroups/([^/]+)/(create)/?$', 'questgroups/$2/$1', true),
array('^questgroups/([^/]+)/([^/]+)/?$', 'questgroups/questgroup/$1/$2', true),
array('^quests/([^/]+)/(create|createmedia)/?$', 'quests/$2/$1' , true),
array('^quests/([^/]+)/([^/]+)/([^/]+)/(submissions)/?$', 'quests/$4/$1/$2/$3', true),
array('^quests/([^/]+)/([^/]+)/([^/]+)/(submission)/([^/]+)/?$', 'quests/$4/$1/$2/$3/$5', true),
array('^quests/(?!(index|create|createmedia))/?', 'quests/quest/$1', true),
array('^characters/([^/]+)/(register|manage)/?$', 'characters/$2/$1', true),
array('^characters/([^/]+)/?$', 'characters/index/$1', true),
array('^characters/([^/]+)/(?!(index|create|register|manage))/?', 'characters/character/$1/$2', true),
array('^charactergroups/([^/]+)/?$', 'charactergroups/index/$1', true),
array('^charactergroups/([^/]+)/(create)/?$', 'charactergroups/creategroupsgroup/$1/$2', true),
array('^charactergroups/([^/]+)/([^/]+)/?$', 'charactergroups/groupsgroup/$1/$2', true),
array('^charactergroups/([^/]+)/([^/]+)/(edit|delete)/?$', 'charactergroups/$3groupsgroup/$1/$2', true),
array('^charactergroups/([^/]+)/([^/]+)/(create)/?$', 'charactergroups/creategroup/$1/$2/$3', true),
array('^charactergroups/([^/]+)/([^/]+)/([^/]+)/?$', 'charactergroups/group/$1/$2/$3', true),
array('^charactergroups/([^/]+)/([^/]+)/([^/]+)/(manage|edit|delete)/?$', 'charactergroups/$4group/$1/$2/$3', true),
array('^charactergroupsquests/([^/]+)/([^/]+)/([^/]+)/?$', 'charactergroupsquests/quest/$1/$2/$3', true),
array('^achievements/([^/]+)/?$', 'achievements/index/$1', true),
array('^library/([^/]+)/?$', 'library/index/$1', true),
array('^library/([^/]+)/([^/]+)/?$', 'library/topic/$1/$2', true),
@ -189,9 +208,13 @@
array('^quests/(submission)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$', 'quests/$2/$3/$4/$1/$5', true),
array('^characters/(index|character)/(.*)$', 'characters/$2', true),
array('^characters/(register|manage)/(.*)$', 'characters/$2/$1', true),
array('^charactergroups/(index|group)/(.*)$', 'charactergroups/$2', true),
array('^charactergroups/groupsgroup/(.*)$', 'charactergroups/$1', true),
array('^charactergroups/(managegroup)/(.*)$', 'charactergroups/$2/$1', true),
array('^charactergroups/index/([^/]+)$', 'charactergroups/$1', true),
array('^charactergroups/creategroupsgroup/([^/]+)$', 'charactergroups/$1/create', true),
array('^charactergroups/groupsgroup/([^/]+)/([^/]+)$', 'charactergroups/$1/$2', true),
array('^charactergroups/(edit|delete)groupsgroup/([^/]+)/([^/]+)$', 'charactergroups/$2/$3/$1', true),
array('^charactergroups/creategroup/([^/]+)/([^/]+)$', 'charactergroups/$1/$2/create', true),
array('^charactergroups/group/([^/]+)/([^/]+)/([^/]+)$', 'charactergroups/$1/$2/$3', true),
array('^charactergroups/(manage|edit|delete)group/([^/]+)/([^/]+)/([^/]+)$', 'charactergroups/$2/$3/$4/$1', true),
array('^charactergroupsquests/quest/(.*)$', 'charactergroupsquests/$1', true),
array('^achievements/index/(.*)$', 'achievements/$1', true),
array('^library/(index|topic)/(.*)$', 'library/$2', true)

View file

@ -25,14 +25,28 @@
* @var array
*/
public $models = array('seminaries', 'charactergroups', 'charactergroupsquests', 'characters', 'avatars', 'media');
/**
* Required components
*
* @var array
*/
public $components = array('validation');
/**
* User permissions
*
* @var array
*/
public $permissions = array(
'quest' => array('admin', 'moderator', 'user'),
'manage' => array('admin', 'moderator', 'user')
'index' => array('admin', 'moderator', 'user'),
'groupsgroup' => array('admin', 'moderator', 'user'),
'creategroupsgroup' => array('admin', 'moderator', 'user'),
'editgroupsgroup' => array('admin', 'moderator', 'user'),
'deletegroupsgroup' => array('admin', 'moderator', 'user'),
'group' => array('admin', 'moderator', 'user'),
'managegroup' => array('admin', 'moderator', 'user'),
'creategroup' => array('admin', 'moderator', 'user'),
'editgroup' => array('admin', 'moderator', 'user'),
'deletegroup' => array('admin', 'moderator', 'user')
);
/**
* User seminary permissions
@ -40,8 +54,16 @@
* @var array
*/
public $seminaryPermissions = array(
'quest' => array('admin', 'moderator', 'user'),
'manage' => array('admin', 'moderator')
'index' => array('admin', 'moderator', 'user'),
'groupsgroup' => array('admin', 'moderator', 'user'),
'creategroupsgroup' => array('admin', 'moderator'),
'editgroupsgroup' => array('admin', 'moderator'),
'deletegroupsgroup' => array('admin', 'moderator'),
'group' => array('admin', 'moderator', 'user'),
'managegroup' => array('admin', 'moderator'),
'creategroup' => array('admin', 'moderator'),
'editgroup' => array('admin', 'moderator'),
'deletegroup' => array('admin', 'moderator')
);
@ -103,6 +125,174 @@
}
/**
* Action: creategroupsgroups.
*
* Create a new Character groups-group for a Seminary.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-Title of a Seminary
*/
public function creategroupsgroup($seminaryUrl)
{
// Get seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Values
$charactergroupsgroupname = '';
$preferred = false;
$fields = array('charactergroupsgroupname');
$validation = array();
// Create a new Character groups-group
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create')))
{
// Get params and validate them
$validation = $this->Validation->validateParams($this->request->getPostParams(), $fields);
$charactergroupsgroupname = $this->request->getPostParam('charactergroupsgroupname');
if($this->Charactergroups->characterGroupsgroupNameExists($charactergroupsgroupname)) {
$validation = $this->Validation->addValidationResult($validation, 'charactergroupsgroupname', 'exist', true);
}
$preferred = !is_null($this->request->getPostParam('preferred'));
// Create groups-group
if($validation === true)
{
$groupsgroupId = $this->Charactergroups->createGroupsgroup(
$this->Auth->getUserId(),
$seminary['id'],
$charactergroupsgroupname,
$preferred
);
// Redirect to groups-group page
$groupsgroup = $this->Charactergroups->getGroupsgroupById($groupsgroupId);
$this->redirect($this->linker->link(array('groupsgroup', $seminary['url'], $groupsgroup['url']), 1));
}
}
// Get validation settings
$validationSettings = array();
foreach($fields as &$field) {
$validationSettings[$field] = \nre\configs\AppConfig::$validation[$field];
}
// Pass data to view
$this->set('seminary', $seminary);
$this->set('charactergroupsgroupname', $charactergroupsgroupname);
$this->set('preferred', $preferred);
$this->set('validation', $validation);
$this->set('validationSettings', $validationSettings);
}
/**
* Action: editgroupsgroups.
*
* Edit a Character groups-group of a Seminary.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-Title of a Seminary
* @param string $groupsgroupUrl URL-Title of a Character groups-group
*/
public function editgroupsgroup($seminaryUrl, $groupsgroupUrl)
{
// Get seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character groups-group
$groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl);
// Values
$charactergroupsgroupname = $groupsgroup['name'];
$preferred = $groupsgroup['preferred'];
$fields = array('charactergroupsgroupname');
$validation = array();
// Edit Character groups-group
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('edit')))
{
// Get params and validate them
$validation = $this->Validation->validateParams($this->request->getPostParams(), $fields);
$charactergroupsgroupname = $this->request->getPostParam('charactergroupsgroupname');
if($this->Charactergroups->characterGroupsgroupNameExists($charactergroupsgroupname, $groupsgroup['id'])) {
$validation = $this->Validation->addValidationResult($validation, 'charactergroupsgroupname', 'exist', true);
}
$preferred = !is_null($this->request->getPostParam('preferred'));
// Edit groups-group
if($validation === true)
{
$this->Charactergroups->editGroupsgroup(
$groupsgroup['id'],
$charactergroupsgroupname,
$preferred
);
// Redirect to user page
$groupsgroup = $this->Charactergroups->getGroupsgroupById($groupsgroup['id']);
$this->redirect($this->linker->link(array('groupsgroup', $seminary['url'], $groupsgroup['url']), 1));
}
}
// Get validation settings
$validationSettings = array();
foreach($fields as &$field) {
$validationSettings[$field] = \nre\configs\AppConfig::$validation[$field];
}
// Pass data to view
$this->set('seminary', $seminary);
$this->set('charactergroupsgroupname', $charactergroupsgroupname);
$this->set('preferred', $preferred);
$this->set('validation', $validation);
$this->set('validationSettings', $validationSettings);
}
/**
* Action: deletegroupsgroups.
*
* Delete a Character groups-group of a Seminary.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-Title of a Seminary
* @param string $groupsgroupUrl URL-Title of a Character groups-group
*/
public function deletegroupsgroup($seminaryUrl, $groupsgroupUrl)
{
// Get seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character groups-group
$groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl);
// Check request method
if($this->request->getRequestMethod() == 'POST')
{
// Check confirmation
if(!is_null($this->request->getPostParam('delete')))
{
// Delete seminary
$this->Charactergroups->deleteGroupsgroup($groupsgroup['id']);
// Redirect to overview
$this->redirect($this->linker->link(array('index', $seminary['url']), 1));
}
// Redirect to entry
$this->redirect($this->linker->link(array('groupsgroup', $seminary['url'], $groupsgroup['url']), 1));
}
// Pass data to view
$this->set('seminary', $seminary);
$this->set('groupsgroup', $groupsgroup);
}
/**
* Action: group.
*
@ -231,6 +421,192 @@
$this->set('characters', $characters);
}
/**
* Action: creategroup.
*
* Create a Character group for a Character groups-group of a
* Seminary.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-Title of a Seminary
* @param string $groupsgroupUrl URL-Title of a Character groups-group
*/
public function creategroup($seminaryUrl, $groupsgroupUrl)
{
// Get seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character groups-group
$groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl);
// Values
$charactergroupname = '';
$motto = '';
$fields = array('charactergroupname', 'motto');
$validation = array();
// Create a new Character groups-group
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create')))
{
// Get params and validate them
$validation = $this->Validation->validateParams($this->request->getPostParams(), $fields);
$charactergroupname = $this->request->getPostParam('charactergroupname');
if($this->Charactergroups->characterGroupNameExists($charactergroupname)) {
$validation = $this->Validation->addValidationResult($validation, 'charactergroupname', 'exist', true);
}
$motto = $this->request->getPostParam('motto');
// Create group
if($validation === true)
{
$groupId = $this->Charactergroups->createGroup(
$this->Auth->getUserId(),
$groupsgroup['id'],
$charactergroupname,
$motto
);
// Redirect to group page
$group = $this->Charactergroups->getGroupById($groupId);
$this->redirect($this->linker->link(array('group', $seminary['url'], $groupsgroup['url'], $group['url']), 1));
}
}
// Get validation settings
$validationSettings = array();
foreach($fields as &$field) {
$validationSettings[$field] = \nre\configs\AppConfig::$validation[$field];
}
// Pass data to view
$this->set('seminary', $seminary);
$this->set('groupsgroup', $groupsgroup);
$this->set('charactergroupname', $charactergroupname);
$this->set('motto', $motto);
$this->set('validation', $validation);
$this->set('validationSettings', $validationSettings);
}
/**
* Action: editgroup.
*
* Edit a Character group for a Character groups-group of a
* Seminary.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-Title of a Seminary
* @param string $groupsgroupUrl URL-Title of a Character groups-group
* @param string $groupUrl URL-Title of a Character group
*/
public function editgroup($seminaryUrl, $groupsgroupUrl, $groupUrl)
{
// Get seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character groups-group
$groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl);
// Get Character group
$group = $this->Charactergroups->getGroupByUrl($groupsgroup['id'], $groupUrl);
// Values
$charactergroupname = $group['name'];
$motto = $group['motto'];
$fields = array('charactergroupname', 'motto');
$validation = array();
// Edit Character group
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('edit')))
{
// Get params and validate them
$validation = $this->Validation->validateParams($this->request->getPostParams(), $fields);
$charactergroupname = $this->request->getPostParam('charactergroupname');
if($this->Charactergroups->characterGroupNameExists($charactergroupname, $group['id'])) {
$validation = $this->Validation->addValidationResult($validation, 'charactergroupname', 'exist', true);
}
$motto = $this->request->getPostParam('motto');
// Edit group
if($validation === true)
{
$this->Charactergroups->editGroup(
$group['id'],
$charactergroupname,
$motto
);
// Redirect to user page
$group = $this->Charactergroups->getGroupById($group['id']);
$this->redirect($this->linker->link(array('group', $seminary['url'], $groupsgroup['url'], $group['url']), 1));
}
}
// Get validation settings
$validationSettings = array();
foreach($fields as &$field) {
$validationSettings[$field] = \nre\configs\AppConfig::$validation[$field];
}
// Pass data to view
$this->set('seminary', $seminary);
$this->set('groupsgroup', $groupsgroup);
$this->set('charactergroupname', $charactergroupname);
$this->set('motto', $motto);
$this->set('validation', $validation);
$this->set('validationSettings', $validationSettings);
}
/**
* Action: deletegroup.
*
* Delete a Character group for a Character groups-group of a
* Seminary.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-Title of a Seminary
* @param string $groupsgroupUrl URL-Title of a Character groups-group
* @param string $groupUrl URL-Title of a Character group
*/
public function deletegroup($seminaryUrl, $groupsgroupUrl, $groupUrl)
{
// Get seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character groups-group
$groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl);
// Get Character group
$group = $this->Charactergroups->getGroupByUrl($groupsgroup['id'], $groupUrl);
// Check request method
if($this->request->getRequestMethod() == 'POST')
{
// Check confirmation
if(!is_null($this->request->getPostParam('delete')))
{
// Delete seminary
$this->Charactergroups->deleteGroup($group['id']);
// Redirect to overview
$this->redirect($this->linker->link(array('groupsgroup', $seminary['url'], $groupsgroup['url']), 1));
}
// Redirect to entry
$this->redirect($this->linker->link(array('group', $seminary['url'], $groupsgroup['url'], $group['url']), 1));
}
// Pass data to view
$this->set('seminary', $seminary);
$this->set('groupsgroup', $groupsgroup);
$this->set('group', $group);
}
}
?>

View file

@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: The Legend of Z\n"
"POT-Creation-Date: 2014-04-27 04:32+0100\n"
"PO-Revision-Date: 2014-04-28 09:31+0100\n"
"POT-Creation-Date: 2014-04-28 10:08+0100\n"
"PO-Revision-Date: 2014-04-28 10:08+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de_DE\n"
@ -134,11 +134,15 @@ msgstr ""
msgid "Seldom Achievements"
msgstr "Die seltensten Achievements"
#: views/html/achievements/index.tpl:27
#: views/html/achievements/index.tpl:26
#, php-format
msgid "Achievement has been achieved only %d times"
msgstr "wurde erst %d mal gefunden"
#: views/html/achievements/index.tpl:27 views/html/achievements/index.tpl:68
msgid "Secret Achievement"
msgstr "Geheimes Achievement"
#: views/html/achievements/index.tpl:33
msgid "Most successful collectors"
msgstr "Die erfolgreichsten Sammler"
@ -158,8 +162,8 @@ msgid "Own progress: %d%%"
msgstr "Persönlicher Fortschritt: %d%%"
#: views/html/achievements/index.tpl:52
#: views/html/charactergroups/group.tpl:24
#: views/html/charactergroups/managegroup.tpl:17
#: views/html/charactergroups/group.tpl:26
#: views/html/charactergroups/managegroup.tpl:19
#: views/html/characters/character.tpl:36 views/html/seminarybar/index.tpl:7
msgid "Rank"
msgstr "Platz"
@ -174,14 +178,16 @@ msgstr "Du hast bislang %d von insgesamt %d Achievements erreicht"
msgid "achieved at: %s"
msgstr "erhalten am: %s"
#: views/html/achievements/index.tpl:68
msgid "Secret Achievement"
msgstr "Geheimes Achievement"
#: views/html/achievements/index.tpl:72
msgid "Continue playing to unlock this secret Achievement"
msgstr "Spiele weiter, um diesen geheimen Erfolg freizuschalten"
#: views/html/charactergroups/creategroup.tpl:8
#: views/html/charactergroups/creategroupsgroup.tpl:8
#: views/html/charactergroups/deletegroup.tpl:8
#: views/html/charactergroups/deletegroupsgroup.tpl:8
#: views/html/charactergroups/editgroup.tpl:8
#: views/html/charactergroups/editgroupsgroup.tpl:8
#: views/html/charactergroups/group.tpl:8
#: views/html/charactergroups/groupsgroup.tpl:8
#: views/html/charactergroups/index.tpl:9
@ -191,49 +197,192 @@ msgstr "Spiele weiter, um diesen geheimen Erfolg freizuschalten"
msgid "Character Groups"
msgstr "Gruppen"
#: views/html/charactergroups/group.tpl:14 views/html/characters/index.tpl:13
#: views/html/characters/manage.tpl:10
msgid "Manage"
msgstr "Verwalten"
#: views/html/charactergroups/creategroup.tpl:12
msgid "New Character group"
msgstr "Neue Gruppe"
#: views/html/charactergroups/group.tpl:26
#: views/html/charactergroups/managegroup.tpl:19
#: views/html/charactergroups/creategroup.tpl:23
#: views/html/charactergroups/creategroupsgroup.tpl:22
#: views/html/charactergroups/editgroup.tpl:23
#: views/html/charactergroups/editgroupsgroup.tpl:22
#, php-format
msgid "Name is too short (min. %d chars)"
msgstr "Der Name ist zu kurz (min. %d Zeichen)"
#: views/html/charactergroups/creategroup.tpl:25
#: views/html/charactergroups/creategroupsgroup.tpl:24
#: views/html/charactergroups/editgroup.tpl:25
#: views/html/charactergroups/editgroupsgroup.tpl:24
#, php-format
msgid "Name is too long (max. %d chars)"
msgstr "Der Name ist zu lang (max. %d Zeichen)"
#: views/html/charactergroups/creategroup.tpl:27
#: views/html/charactergroups/creategroupsgroup.tpl:26
#: views/html/charactergroups/editgroup.tpl:27
#: views/html/charactergroups/editgroupsgroup.tpl:26
msgid "Name contains illegal characters"
msgstr "Der Name enthält ungültige Zeichen"
#: views/html/charactergroups/creategroup.tpl:29
#: views/html/charactergroups/creategroupsgroup.tpl:28
#: views/html/charactergroups/editgroup.tpl:29
#: views/html/charactergroups/editgroupsgroup.tpl:28
msgid "Name already exists"
msgstr "Der Name existiert bereits"
#: views/html/charactergroups/creategroup.tpl:31
#: views/html/charactergroups/creategroupsgroup.tpl:30
#: views/html/charactergroups/editgroup.tpl:31
#: views/html/charactergroups/editgroupsgroup.tpl:30
msgid "Name invalid"
msgstr "Der Name ist ungültig"
#: views/html/charactergroups/creategroup.tpl:36
#: views/html/charactergroups/editgroup.tpl:36
#, php-format
msgid "Motto is too long (max. %d chars)"
msgstr "Das Motto ist zu lang (max. %d Zeichen)"
#: views/html/charactergroups/creategroup.tpl:38
#: views/html/charactergroups/editgroup.tpl:38
msgid "Motto invalid"
msgstr "Das Motto ist ungültig"
#: views/html/charactergroups/creategroup.tpl:54
#: views/html/charactergroups/creategroup.tpl:55
#: views/html/charactergroups/creategroupsgroup.tpl:46
#: views/html/charactergroups/creategroupsgroup.tpl:47
#: views/html/charactergroups/editgroup.tpl:54
#: views/html/charactergroups/editgroup.tpl:55
#: views/html/charactergroups/editgroupsgroup.tpl:46
#: views/html/charactergroups/editgroupsgroup.tpl:47
#: views/html/quests/create.tpl:15 views/html/quests/create.tpl:16
#: views/html/users/user.tpl:14
msgid "Name"
msgstr "Name"
#: views/html/charactergroups/creategroup.tpl:56
#: views/html/charactergroups/creategroup.tpl:57
#: views/html/charactergroups/editgroup.tpl:56
#: views/html/charactergroups/editgroup.tpl:57
msgid "Motto"
msgstr "Motto"
#: views/html/charactergroups/creategroup.tpl:59
#: views/html/charactergroups/creategroupsgroup.tpl:50
#: views/html/characters/register.tpl:87 views/html/seminaries/create.tpl:12
#: views/html/users/create.tpl:20
msgid "create"
msgstr "erstellen"
#: views/html/charactergroups/creategroupsgroup.tpl:11
msgid "New Character groups-group"
msgstr "Neue Gruppengruppe"
#: views/html/charactergroups/creategroupsgroup.tpl:48
#: views/html/charactergroups/editgroupsgroup.tpl:48
msgid "preferred"
msgstr "bevorzugt"
#: views/html/charactergroups/deletegroup.tpl:11
#: views/html/charactergroups/group.tpl:15
msgid "Delete Character group"
msgstr "Gruppe löschen"
#: views/html/charactergroups/deletegroup.tpl:13
#, php-format
msgid "Should the Character group “%s” really be deleted?"
msgstr "Soll die Gruppe „%s“ wirklich gelöscht werden?"
#: views/html/charactergroups/deletegroup.tpl:15
#: views/html/charactergroups/deletegroupsgroup.tpl:14
#: views/html/seminaries/delete.tpl:11 views/html/users/delete.tpl:9
msgid "delete"
msgstr "löschen"
#: views/html/charactergroups/deletegroup.tpl:16
#: views/html/charactergroups/deletegroupsgroup.tpl:15
#: views/html/seminaries/delete.tpl:12 views/html/users/delete.tpl:10
msgid "cancel"
msgstr "abbrechen"
#: views/html/charactergroups/deletegroupsgroup.tpl:10
#: views/html/charactergroups/groupsgroup.tpl:13
msgid "Delete Character groups-group"
msgstr "Gruppengruppe löschen"
#: views/html/charactergroups/deletegroupsgroup.tpl:12
#, php-format
msgid "Should the Character groups-group “%s” really be deleted?"
msgstr "Soll die Gruppengruppe „%s“ wirklich gelöscht werden?"
#: views/html/charactergroups/editgroup.tpl:12
#: views/html/charactergroups/group.tpl:14
msgid "Edit Character group"
msgstr "Gruppe bearbeiten"
#: views/html/charactergroups/editgroup.tpl:59
#: views/html/charactergroups/editgroupsgroup.tpl:50
msgid "edit"
msgstr "bearbeiten"
#: views/html/charactergroups/editgroupsgroup.tpl:11
#: views/html/charactergroups/groupsgroup.tpl:12
msgid "Edit Character groups-group"
msgstr "Gruppengruppe bearbeiten"
#: views/html/charactergroups/group.tpl:16
#: views/html/charactergroups/managegroup.tpl:12
msgid "Manage Character group"
msgstr "Gruppe verwalten"
#: views/html/charactergroups/group.tpl:28
#: views/html/charactergroups/managegroup.tpl:21
msgid "Members"
msgstr "Mitglieder"
#: views/html/charactergroups/group.tpl:26
#: views/html/charactergroups/managegroup.tpl:19
#: views/html/charactergroups/group.tpl:28
#: views/html/charactergroups/managegroup.tpl:21
msgid "Member"
msgstr "Mitglied"
#: views/html/charactergroups/group.tpl:30
#: views/html/charactergroups/managegroup.tpl:23
#: views/html/charactergroups/group.tpl:32
#: views/html/charactergroups/managegroup.tpl:25
#: views/html/characters/character.tpl:11
#: views/html/characters/character.tpl:13 views/html/characters/index.tpl:9
#: views/html/characters/manage.tpl:8 views/html/seminarymenu/index.tpl:2
#: views/html/users/user.tpl:15
#: views/html/users/user.tpl:18
msgid "Characters"
msgstr "Charaktere"
#: views/html/charactergroups/group.tpl:45
#: views/html/charactergroups/groupsgroup.tpl:20
#: views/html/charactergroups/group.tpl:47
#: views/html/charactergroups/groupsgroup.tpl:27
#, php-format
msgid "%s-Quests"
msgstr "%squests"
#: views/html/charactergroups/managegroup.tpl:40
#: views/html/charactergroups/groupsgroup.tpl:14
msgid "Create new Character group"
msgstr "Neue Gruppe"
#: views/html/charactergroups/index.tpl:13
msgid "Create new Character groups-group"
msgstr "Neue Gruppengruppe"
#: views/html/charactergroups/managegroup.tpl:42
msgid "Remove Characters"
msgstr "Entferne Charaktere"
#: views/html/charactergroups/managegroup.tpl:43
#: views/html/charactergroups/managegroup.tpl:45
msgid "Filter Characters"
msgstr "Filtere Charaktere"
#: views/html/charactergroups/managegroup.tpl:49
#: views/html/charactergroups/managegroup.tpl:51
msgid "Add Characters"
msgstr "Füge Charaktere hinzu"
#: views/html/charactergroups/managegroup.tpl:54
#: views/html/charactergroups/managegroup.tpl:56
#: views/html/questgroups/questgroup.tpl:57 views/html/quests/create.tpl:9
#: views/html/quests/index.tpl:9
msgid "Quests"
@ -263,7 +412,7 @@ msgstr "Fortschritt"
#: views/html/characters/character.tpl:67
#: views/html/characters/character.tpl:73
#: views/html/characters/character.tpl:79 views/html/seminarybar/index.tpl:42
#: views/html/users/user.tpl:29
#: views/html/users/user.tpl:32
msgid "Level"
msgstr "Level"
@ -292,17 +441,21 @@ msgstr "Letzter Speicherpunkt"
msgid "Topic progress"
msgstr "Thematischer Fortschritt"
#: views/html/characters/index.tpl:13 views/html/characters/manage.tpl:10
msgid "Manage"
msgstr "Verwalten"
#: views/html/characters/index.tpl:19 views/html/characters/manage.tpl:14
msgid "Properties"
msgstr "Eigenschaften"
#: views/html/characters/index.tpl:20 views/html/characters/manage.tpl:15
#: views/html/error/index.tpl:8 views/html/error/index.tpl:9
#: views/html/introduction/index.tpl:6 views/html/introduction/index.tpl:7
#: views/html/users/create.tpl:6 views/html/users/create.tpl:7
#: views/html/users/edit.tpl:6 views/html/users/edit.tpl:7
#: views/html/users/login.tpl:9 views/html/users/login.tpl:10
#: views/html/users/register.tpl:78 views/html/users/register.tpl:79
#: views/html/introduction/index.tpl:9 views/html/introduction/index.tpl:10
#: views/html/users/create.tpl:9 views/html/users/create.tpl:10
#: views/html/users/edit.tpl:9 views/html/users/edit.tpl:10
#: views/html/users/login.tpl:12 views/html/users/login.tpl:13
#: views/html/users/register.tpl:81 views/html/users/register.tpl:82
msgid "Username"
msgstr "Benutzername"
@ -312,7 +465,7 @@ msgid "XPs"
msgstr "XP"
#: views/html/characters/index.tpl:22 views/html/characters/manage.tpl:17
#: views/html/users/user.tpl:34
#: views/html/users/user.tpl:37
msgid "Roles"
msgstr "Rollen"
@ -390,32 +543,27 @@ msgstr "Das Kursfeld „%s“ ist ungültig"
msgid "Seminary fields"
msgstr "Kursfelder"
#: views/html/characters/register.tpl:87 views/html/seminaries/create.tpl:14
#: views/html/users/create.tpl:17
msgid "create"
msgstr "erstellen"
#: views/html/error/index.tpl:5 views/html/error/index.tpl:14
#: views/html/introduction/index.tpl:3 views/html/introduction/index.tpl:11
#: views/html/menu/index.tpl:6 views/html/users/login.tpl:3
#: views/html/users/login.tpl:17
#: views/html/introduction/index.tpl:6 views/html/introduction/index.tpl:14
#: views/html/menu/index.tpl:6 views/html/users/login.tpl:6
#: views/html/users/login.tpl:20
msgid "Login"
msgstr "Login"
#: views/html/error/index.tpl:10 views/html/error/index.tpl:11
#: views/html/introduction/index.tpl:8 views/html/introduction/index.tpl:9
#: views/html/users/create.tpl:14 views/html/users/create.tpl:15
#: views/html/users/edit.tpl:14 views/html/users/edit.tpl:15
#: views/html/users/login.tpl:11 views/html/users/login.tpl:12
#: views/html/users/register.tpl:86 views/html/users/register.tpl:87
#: views/html/introduction/index.tpl:11 views/html/introduction/index.tpl:12
#: views/html/users/create.tpl:17 views/html/users/create.tpl:18
#: views/html/users/edit.tpl:16 views/html/users/edit.tpl:17
#: views/html/users/login.tpl:14 views/html/users/login.tpl:15
#: views/html/users/register.tpl:89 views/html/users/register.tpl:90
msgid "Password"
msgstr "Passwort"
#: views/html/error/index.tpl:15 views/html/introduction/index.tpl:12
#: views/html/error/index.tpl:15 views/html/introduction/index.tpl:15
msgid "or"
msgstr "oder"
#: views/html/error/index.tpl:15 views/html/introduction/index.tpl:12
#: views/html/error/index.tpl:15 views/html/introduction/index.tpl:15
msgid "register yourself"
msgstr "registriere dich"
@ -432,7 +580,7 @@ msgstr "Levelaufstieg"
msgid "You have reached level %d"
msgstr "Du hast Level %d erreicht"
#: views/html/introduction/index.tpl:1
#: views/html/introduction/index.tpl:4
msgid "Introduction"
msgstr "Einführung"
@ -455,16 +603,16 @@ msgstr ""
msgid "Total progress: %d%%"
msgstr "Gesamtfortschritt: %d%%"
#: views/html/menu/index.tpl:2 views/html/users/create.tpl:1
#: views/html/users/delete.tpl:1 views/html/users/edit.tpl:1
#: views/html/users/index.tpl:1 views/html/users/login.tpl:1
#: views/html/users/register.tpl:1 views/html/users/user.tpl:1
#: views/html/menu/index.tpl:2 views/html/users/create.tpl:4
#: views/html/users/delete.tpl:4 views/html/users/edit.tpl:4
#: views/html/users/index.tpl:4 views/html/users/login.tpl:4
#: views/html/users/register.tpl:4 views/html/users/user.tpl:4
msgid "Users"
msgstr "Benutzer"
#: views/html/menu/index.tpl:3 views/html/seminaries/create.tpl:6
#: views/html/menu/index.tpl:3 views/html/seminaries/create.tpl:4
#: views/html/seminaries/delete.tpl:6 views/html/seminaries/edit.tpl:6
#: views/html/seminaries/index.tpl:1
#: views/html/seminaries/index.tpl:4
msgid "Seminaries"
msgstr "Kurse"
@ -481,7 +629,7 @@ msgid "Create Questgroup"
msgstr "Questgruppe erstellen"
#: views/html/questgroups/create.tpl:14 views/html/questgroups/create.tpl:15
#: views/html/seminaries/create.tpl:11 views/html/seminaries/create.tpl:12
#: views/html/seminaries/create.tpl:9 views/html/seminaries/create.tpl:10
#: views/html/seminaries/edit.tpl:11 views/html/seminaries/edit.tpl:12
msgid "Title"
msgstr "Titel"
@ -498,11 +646,6 @@ msgstr "Optionale Questline gefunden"
msgid "Create Quest"
msgstr "Quest erstellen"
#: views/html/quests/create.tpl:15 views/html/quests/create.tpl:16
#: views/html/users/user.tpl:11
msgid "Name"
msgstr "Name"
#: views/html/quests/create.tpl:17 views/html/quests/index.tpl:14
msgid "Questgroup"
msgstr "Questgruppe"
@ -573,7 +716,7 @@ msgstr "Lösung von %s"
msgid "submitted"
msgstr "eingereicht"
#: views/html/seminaries/create.tpl:7
#: views/html/seminaries/create.tpl:5
msgid "New seminary"
msgstr "Neuer Kurs"
@ -586,36 +729,28 @@ msgstr "Kurs löschen"
msgid "Should the seminary “%s” really be deleted?"
msgstr "Soll der Kurs „%s“ wirklich gelöscht werden?"
#: views/html/seminaries/delete.tpl:11 views/html/users/delete.tpl:6
msgid "delete"
msgstr "löschen"
#: views/html/seminaries/delete.tpl:12 views/html/users/delete.tpl:7
msgid "cancel"
msgstr "abbrechen"
#: views/html/seminaries/edit.tpl:7 views/html/seminaries/seminary.tpl:9
msgid "Edit seminary"
msgstr "Kurs bearbeiten"
#: views/html/seminaries/edit.tpl:14 views/html/users/edit.tpl:17
#: views/html/seminaries/edit.tpl:14 views/html/users/edit.tpl:19
msgid "save"
msgstr "speichern"
#: views/html/seminaries/index.tpl:4
#: views/html/seminaries/index.tpl:7
msgid "Create new seminary"
msgstr "Neuen Kurs erstellen"
#: views/html/seminaries/index.tpl:21
#: views/html/seminaries/index.tpl:24
#, php-format
msgid "created by %s on %s"
msgstr "erstellt von %s am %s"
#: views/html/seminaries/index.tpl:24
#: views/html/seminaries/index.tpl:27
msgid "Create a Character"
msgstr "Erstelle einen Charakter"
#: views/html/seminaries/index.tpl:26
#: views/html/seminaries/index.tpl:29
#, php-format
msgid "Your Character “%s” has not been activated yet"
msgstr "Dein Charakter „%s“ wurde noch nicht aktiviert"
@ -633,142 +768,142 @@ msgstr "Letztes Achievement"
msgid "Show %s-Profile"
msgstr "%s-Profil anzeigen"
#: views/html/users/create.tpl:2
#: views/html/users/create.tpl:5
msgid "New user"
msgstr "Neuer Benutzer"
#: views/html/users/create.tpl:8 views/html/users/create.tpl:9
#: views/html/users/edit.tpl:8 views/html/users/edit.tpl:9
#: views/html/users/register.tpl:80 views/html/users/register.tpl:81
#: views/html/users/create.tpl:11 views/html/users/create.tpl:12
#: views/html/users/edit.tpl:11 views/html/users/register.tpl:83
#: views/html/users/register.tpl:84
msgid "Prename"
msgstr "Vorname"
#: views/html/users/create.tpl:10 views/html/users/create.tpl:11
#: views/html/users/edit.tpl:10 views/html/users/edit.tpl:11
#: views/html/users/register.tpl:82 views/html/users/register.tpl:83
#: views/html/users/create.tpl:13 views/html/users/create.tpl:14
#: views/html/users/edit.tpl:12 views/html/users/edit.tpl:13
#: views/html/users/register.tpl:85 views/html/users/register.tpl:86
msgid "Surname"
msgstr "Nachname"
#: views/html/users/create.tpl:12 views/html/users/create.tpl:13
#: views/html/users/edit.tpl:12 views/html/users/edit.tpl:13
#: views/html/users/register.tpl:84 views/html/users/register.tpl:85
#: views/html/users/user.tpl:12
#: views/html/users/create.tpl:15 views/html/users/create.tpl:16
#: views/html/users/edit.tpl:14 views/html/users/edit.tpl:15
#: views/html/users/register.tpl:87 views/html/users/register.tpl:88
#: views/html/users/user.tpl:15
msgid "Email address"
msgstr "EMail-Adresse"
#: views/html/users/delete.tpl:2 views/html/users/user.tpl:5
#: views/html/users/delete.tpl:5 views/html/users/user.tpl:8
msgid "Delete user"
msgstr "Benutzer löschen"
#: views/html/users/delete.tpl:4
#: views/html/users/delete.tpl:7
#, php-format
msgid "Should the user “%s” (%s) really be deleted?"
msgstr "Soll der Benutzer „%s“ (%s) wirklich gelöscht werden?"
#: views/html/users/edit.tpl:2 views/html/users/user.tpl:4
#: views/html/users/edit.tpl:5 views/html/users/user.tpl:7
msgid "Edit user"
msgstr "Benutzer bearbeiten"
#: views/html/users/index.tpl:3
#: views/html/users/index.tpl:6
msgid "Create new user"
msgstr "Neuen Benutzer erstellen"
#: views/html/users/index.tpl:7 views/html/users/user.tpl:10
#: views/html/users/index.tpl:10 views/html/users/user.tpl:13
#, php-format
msgid "registered on %s"
msgstr "registriert am %s"
#: views/html/users/login.tpl:5
#: views/html/users/login.tpl:8
msgid "Login failed"
msgstr "Die Anmeldung war nicht korrekt"
#: views/html/users/register.tpl:3
#: views/html/users/register.tpl:6
msgid "Registration"
msgstr "Registrierung"
#: views/html/users/register.tpl:14
#: views/html/users/register.tpl:17
#, php-format
msgid "Username is too short (min. %d chars)"
msgstr "Der Benutzername ist zu kurz (min. %d Zeichen)"
#: views/html/users/register.tpl:16
#: views/html/users/register.tpl:19
#, php-format
msgid "Username is too long (max. %d chars)"
msgstr "Der Benutzername ist zu lang (max. %d Zeichen)"
#: views/html/users/register.tpl:18
#: views/html/users/register.tpl:21
msgid "Username contains illegal characters"
msgstr "Der Benutzername enthält ungültige Zeichen"
#: views/html/users/register.tpl:20
#: views/html/users/register.tpl:23
msgid "Username already exists"
msgstr "Der Benutzername existiert bereits"
#: views/html/users/register.tpl:22
#: views/html/users/register.tpl:25
msgid "Username invalid"
msgstr "Der Benutzername ist ungültig"
#: views/html/users/register.tpl:27
#: views/html/users/register.tpl:30
#, php-format
msgid "Prename is too short (min. %d chars)"
msgstr "Der Vorname ist zu kurz (min. %d Zeichen)"
#: views/html/users/register.tpl:29
#: views/html/users/register.tpl:32
#, php-format
msgid "Prename is too long (max. %d chars)"
msgstr "Der Vorname ist zu lang (max. %d Zeichen)"
#: views/html/users/register.tpl:31
#: views/html/users/register.tpl:34
#, php-format
msgid "Prename contains illegal characters"
msgstr "Der Vorname enthält ungültige Zeichen"
#: views/html/users/register.tpl:33
#: views/html/users/register.tpl:36
msgid "Prename invalid"
msgstr "Der Vorname ist ungültig"
#: views/html/users/register.tpl:38
#: views/html/users/register.tpl:41
#, php-format
msgid "Surname is too short (min. %d chars)"
msgstr "Der Nachname ist zu kurz (min. %d Zeichen)"
#: views/html/users/register.tpl:40
#: views/html/users/register.tpl:43
#, php-format
msgid "Surname is too long (max. %d chars)"
msgstr "Der Nachname ist zu lang (max. %d Zeichen)"
#: views/html/users/register.tpl:42
#: views/html/users/register.tpl:45
#, php-format
msgid "Surname contains illegal characters"
msgstr "Der Nachname enthält ungültige Zeichen"
#: views/html/users/register.tpl:44
#: views/html/users/register.tpl:47
msgid "Surname invalid"
msgstr "Der Nachname ist ungültig"
#: views/html/users/register.tpl:49 views/html/users/register.tpl:53
#: views/html/users/register.tpl:52 views/html/users/register.tpl:56
msgid "Email address invalid"
msgstr "Die EMail-Adresse ist ungültig"
#: views/html/users/register.tpl:51
#: views/html/users/register.tpl:54
msgid "Email address already exists"
msgstr "EMail-Adresse existiert bereits"
#: views/html/users/register.tpl:58
#: views/html/users/register.tpl:61
#, php-format
msgid "Password is too short (min. %d chars)"
msgstr "Das Passwort ist zu kurz (min. %d Zeichen)"
#: views/html/users/register.tpl:60
#: views/html/users/register.tpl:63
#, php-format
msgid "Password is too long (max. %d chars)"
msgstr "Das Passwort ist zu lang (max. %d Zeichen)"
#: views/html/users/register.tpl:62
#: views/html/users/register.tpl:65
msgid "Password invalid"
msgstr "Das Passwort ist ungültig"
#: views/html/users/register.tpl:89
#: views/html/users/register.tpl:92
msgid "Register"
msgstr "Registrieren"
@ -822,10 +957,6 @@ msgstr "Registrieren"
#~ msgid "Go on"
#~ msgstr "Hier geht es weiter"
#, fuzzy
#~ msgid "Character groups"
#~ msgstr "Charaktergruppen"
#~ msgid "locked"
#~ msgstr "gesperrt"

View file

@ -104,6 +104,91 @@
}
/**
* Check if a Character groups-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
*/
public function characterGroupsgroupNameExists($name, $groupsgroupId=null)
{
$data = $this->db->query(
'SELECT id '.
'FROM charactergroupsgroups '.
'WHERE name = ? OR url = ?',
'ss',
$name,
\nre\core\Linker::createLinkParam($name)
);
return (!empty($data) && (is_null($groupsgroupId) || $groupsgroupId != $data[0]['id']));
}
/**
* Create a new Character groups-group.
*
* @param int $userId ID of user
* @param int $seminaryId ID of Seminary
* @param string $name Name of new groups-group
* @param boolean $preferred Whether groups-group is preferred or not
* @return int ID of newly created groups-group
*/
public function createGroupsgroup($userId, $seminaryId, $name, $preferred)
{
$this->db->query(
'INSERT INTO charactergroupsgroups '.
'(created_user_id, seminary_id, name, url, preferred) '.
'VALUES '.
'(?, ?, ?, ?, ?)',
'iissd',
$userId,
$seminaryId,
$name,
\nre\core\Linker::createLinkParam($name),
$preferred
);
return $this->db->getInsertId();
}
/**
* Edit a Character groups-group.
*
* @param int $groupsgroupId ID of groups-group to edit
* @param string $name New name of groups-group
* @param boolean $preferred Whether groups-group is preferred or not
*/
public function editGroupsgroup($groupsgroupId, $name, $preferred)
{
$this->db->query(
'UPDATE charactergroupsgroups '.
'SET name = ?, url = ?, preferred = ? '.
'WHERE id = ?',
'ssdi',
$name,
\nre\core\Linker::createLinkParam($name),
$preferred,
$groupsgroupId
);
}
/**
* Delete a Character groups-group.
*
* @param int $groupsgroupId ID of groups-group to delete
*/
public function deleteGroupsgroup($groupsgroupId)
{
$this->db->query('DELETE FROM charactergroupsgroups WHERE id = ?', 'i', $groupsgroupId);
}
/**
* Get Character groups for a Character groups-group.
*
@ -168,6 +253,116 @@
}
/**
* Get a Character group by its ID.
*
* @throws IdNotFoundException
* @param int $groupsgroupId ID of the Character group
* @return array Character group data
*/
public function getGroupById($groupId)
{
$data = $this->db->query(
'SELECT id, name, url, xps, motto '.
'FROM v_charactergroups '.
'WHERE id = ?',
'i',
$groupId
);
if(empty($data)) {
throw new \nre\exceptions\IdNotFoundException($groupId);
}
return $data[0];
}
/**
* 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
*/
public function characterGroupNameExists($name, $groupId=null)
{
$data = $this->db->query(
'SELECT id '.
'FROM charactergroups '.
'WHERE name = ? OR url = ?',
'ss',
$name,
\nre\core\Linker::createLinkParam($name)
);
return (!empty($data) && (is_null($groupId) || $groupId != $data[0]['id']));
}
/**
* Create a new Character group.
*
* @param int $userId ID of user
* @param int $groupsgroupId ID of Character groups-group
* @param string $name Name of new group
* @param string $motto Motto of new group
* @return int ID of newly created group
*/
public function createGroup($userId, $groupsgroupId, $name, $motto)
{
$this->db->query(
'INSERT INTO charactergroups '.
'(created_user_id, charactergroupsgroup_id, name, url, motto) '.
'VALUES '.
'(?, ?, ?, ?, ?)',
'iisss',
$userId,
$groupsgroupId,
$name,
\nre\core\Linker::createLinkParam($name),
$motto
);
return $this->db->getInsertId();
}
/**
* Edit a Character group.
*
* @param int $groupId ID of Character group to edit
* @param string $name New name of group
* @param string $motto New motto of group
*/
public function editGroup($groupId, $name, $motto)
{
$this->db->query(
'UPDATE charactergroups '.
'SET name = ?, url = ?, motto = ? '.
'WHERE id = ?',
'sssi',
$name,
\nre\core\Linker::createLinkParam($name),
$motto,
$groupId
);
}
/**
* Delete a Character group.
*
* @param int $groupId ID of Character group to delete
*/
public function deleteGroup($groupId)
{
$this->db->query('DELETE FROM charactergroups WHERE id = ?', 'i', $groupId);
}
/**
* Get the rank of a XP-value of a Character.
*

View file

@ -0,0 +1,60 @@
<?php if(!is_null($seminary['charactergroups_seminarymedia_id'])) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url'], 'charactergroups'))?>">
</div>
<?php endif ?>
<ul class="breadcrumbs">
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('index',$seminary['url']),1)?>"><?=_('Character Groups')?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('groupsgroup',$seminary['url'],$groupsgroup['url']),1)?>"><?=$groupsgroup['name']?></a></li>
</ul>
<h1><?=_('New Character group')?></h1>
<?php if($validation !== true) : ?>
<ul>
<?php foreach($validation as $field => &$settings) : ?>
<li>
<ul>
<?php foreach($settings as $setting => $value) : ?>
<li>
<?php switch($field) {
case 'charactergroupname':
switch($setting) {
case 'minlength': printf(_('Name is too short (min. %d chars)'), $value);
break;
case 'maxlength': printf(_('Name is too long (max. %d chars)'), $value);
break;
case 'regex': echo _('Name contains illegal characters');
break;
case 'exist': echo _('Name already exists');
break;
default: echo _('Name invalid');
}
break;
case 'motto':
switch($setting) {
case 'maxlength': printf(_('Motto is too long (max. %d chars)'), $value);
break;
default: echo _('Motto invalid');
}
break;
default:
echo $exception->getMessage();
break;
} ?>
</li>
<?php endforeach ?>
</ul>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
<form method="post" action="" class="logreg">
<fieldset>
<label for="charactergroupname"><?=_('Name')?>:</label>
<input type="text" id="charactergroupname" name="charactergroupname" placeholder="<?=_('Name')?>" title="<?=_('Name')?>" required="required" maxlength="<?=$validationSettings['charactergroupname']['maxlength']?>" value="<?=$charactergroupname?>" <?=(array_key_exists('charactergroupname', $validation)) ? 'class="invalid"' : null?> /><br />
<label for="motto"><?=_('Motto')?>:</label>
<input type="text" id="motto" name="motto" placeholder="<?=_('Motto')?>" title="<?=_('Motto')?>" maxlength="<?=$validationSettings['motto']['maxlength']?>" value="<?=$motto?>" <?=(array_key_exists('motto', $validation)) ? 'class="invalid"' : null?> /><br />
</fieldset>
<input type="submit" name="create" value="<?=_('create')?>" />
</form>

View file

@ -0,0 +1,51 @@
<?php if(!is_null($seminary['charactergroups_seminarymedia_id'])) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url'], 'charactergroups'))?>">
</div>
<?php endif ?>
<ul class="breadcrumbs">
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('charactergroups','index',$seminary['url']))?>"><?=_('Character Groups')?></a></li>
</ul>
<h1><?=_('New Character groups-group')?></h1>
<?php if($validation !== true) : ?>
<ul>
<?php foreach($validation as $field => &$settings) : ?>
<li>
<ul>
<?php foreach($settings as $setting => $value) : ?>
<li>
<?php switch($field) {
case 'charactergroupsgroupname':
switch($setting) {
case 'minlength': printf(_('Name is too short (min. %d chars)'), $value);
break;
case 'maxlength': printf(_('Name is too long (max. %d chars)'), $value);
break;
case 'regex': echo _('Name contains illegal characters');
break;
case 'exist': echo _('Name already exists');
break;
default: echo _('Name invalid');
}
break;
default:
echo $exception->getMessage();
break;
} ?>
</li>
<?php endforeach ?>
</ul>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
<form method="post" action="" class="logreg">
<fieldset>
<label for="charactergroupsgroupname"><?=_('Name')?>:</label>
<input type="text" name="charactergroupsgroupname" placeholder="<?=_('Name')?>" title="<?=_('Name')?>" required="required" maxlength="<?=$validationSettings['charactergroupsgroupname']['maxlength']?>" value="<?=$charactergroupsgroupname?>" <?=(array_key_exists('charactergroupsgroupname', $validation)) ? 'class="invalid"' : null?> /><br />
<input type="checkbox" id="preferred" name="preferred" <?php if($preferred) : ?>checked="checked"<?php endif ?> /><label for="preferred"><?=_('preferred')?></label>
</fieldset>
<input type="submit" name="create" value="<?=_('create')?>" />
</form>

View file

@ -0,0 +1,17 @@
<?php if(!is_null($seminary['charactergroups_seminarymedia_id'])) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url'], 'charactergroups'))?>">
</div>
<?php endif ?>
<ul class="breadcrumbs">
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('index',$seminary['url']),1)?>"><?=_('Character Groups')?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('groupsgroup',$seminary['url'],$groupsgroup['url']),1)?>"><?=$groupsgroup['name']?></a></li>
</ul>
<h1><?=_('Delete Character group')?></h1>
<?=sprintf(_('Should the Character group “%s” really be deleted?'), $group['name'])?>
<form method="post">
<input type="submit" name="delete" value="<?=_('delete')?>" />
<input type="submit" name="not-delete" value="<?=_('cancel')?>" />
</form>

View file

@ -0,0 +1,16 @@
<?php if(!is_null($seminary['charactergroups_seminarymedia_id'])) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url'], 'charactergroups'))?>">
</div>
<?php endif ?>
<ul class="breadcrumbs">
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('index',$seminary['url']),1)?>"><?=_('Character Groups')?></a></li>
</ul>
<h1><?=_('Delete Character groups-group')?></h1>
<?=sprintf(_('Should the Character groups-group “%s” really be deleted?'), $groupsgroup['name'])?>
<form method="post">
<input type="submit" name="delete" value="<?=_('delete')?>" />
<input type="submit" name="not-delete" value="<?=_('cancel')?>" />
</form>

View file

@ -0,0 +1,60 @@
<?php if(!is_null($seminary['charactergroups_seminarymedia_id'])) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url'], 'charactergroups'))?>">
</div>
<?php endif ?>
<ul class="breadcrumbs">
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('index',$seminary['url']),1)?>"><?=_('Character Groups')?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('groupsgroup',$seminary['url'],$groupsgroup['url']),1)?>"><?=$groupsgroup['name']?></a></li>
</ul>
<h1><?=_('Edit Character group')?></h1>
<?php if($validation !== true) : ?>
<ul>
<?php foreach($validation as $field => &$settings) : ?>
<li>
<ul>
<?php foreach($settings as $setting => $value) : ?>
<li>
<?php switch($field) {
case 'charactergroupname':
switch($setting) {
case 'minlength': printf(_('Name is too short (min. %d chars)'), $value);
break;
case 'maxlength': printf(_('Name is too long (max. %d chars)'), $value);
break;
case 'regex': echo _('Name contains illegal characters');
break;
case 'exist': echo _('Name already exists');
break;
default: echo _('Name invalid');
}
break;
case 'motto':
switch($setting) {
case 'maxlength': printf(_('Motto is too long (max. %d chars)'), $value);
break;
default: echo _('Motto invalid');
}
break;
default:
echo $exception->getMessage();
break;
} ?>
</li>
<?php endforeach ?>
</ul>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
<form method="post" action="" class="logreg">
<fieldset>
<label for="charactergroupname"><?=_('Name')?>:</label>
<input type="text" id="charactergroupname" name="charactergroupname" placeholder="<?=_('Name')?>" title="<?=_('Name')?>" required="required" maxlength="<?=$validationSettings['charactergroupname']['maxlength']?>" value="<?=$charactergroupname?>" <?=(array_key_exists('charactergroupname', $validation)) ? 'class="invalid"' : null?> /><br />
<label for="motto"><?=_('Motto')?>:</label>
<input type="text" id="motto" name="motto" placeholder="<?=_('Motto')?>" title="<?=_('Motto')?>" maxlength="<?=$validationSettings['motto']['maxlength']?>" value="<?=$motto?>" <?=(array_key_exists('motto', $validation)) ? 'class="invalid"' : null?> /><br />
</fieldset>
<input type="submit" name="edit" value="<?=_('edit')?>" />
</form>

View file

@ -0,0 +1,51 @@
<?php if(!is_null($seminary['charactergroups_seminarymedia_id'])) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','seminarymoodpic',$seminary['url'], 'charactergroups'))?>">
</div>
<?php endif ?>
<ul class="breadcrumbs">
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('charactergroups','index',$seminary['url']))?>"><?=_('Character Groups')?></a></li>
</ul>
<h1><?=_('Edit Character groups-group')?></h1>
<?php if($validation !== true) : ?>
<ul>
<?php foreach($validation as $field => &$settings) : ?>
<li>
<ul>
<?php foreach($settings as $setting => $value) : ?>
<li>
<?php switch($field) {
case 'charactergroupsgroupname':
switch($setting) {
case 'minlength': printf(_('Name is too short (min. %d chars)'), $value);
break;
case 'maxlength': printf(_('Name is too long (max. %d chars)'), $value);
break;
case 'regex': echo _('Name contains illegal characters');
break;
case 'exist': echo _('Name already exists');
break;
default: echo _('Name invalid');
}
break;
default:
echo $exception->getMessage();
break;
} ?>
</li>
<?php endforeach ?>
</ul>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
<form method="post" action="" class="logreg">
<fieldset>
<label for="charactergroupsgroupname"><?=_('Name')?>:</label>
<input type="text" name="charactergroupsgroupname" placeholder="<?=_('Name')?>" title="<?=_('Name')?>" required="required" maxlength="<?=$validationSettings['charactergroupsgroupname']['maxlength']?>" value="<?=$charactergroupsgroupname?>" <?=(array_key_exists('charactergroupsgroupname', $validation)) ? 'class="invalid"' : null?> /><br />
<input type="checkbox" id="preferred" name="preferred" <?php if($preferred) : ?>checked="checked"<?php endif ?> /><label for="preferred"><?=_('preferred')?></label>
</fieldset>
<input type="submit" name="edit" value="<?=_('edit')?>" />
</form>

View file

@ -11,7 +11,9 @@
<?php if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
<nav class="admin">
<li><a href="<?=$linker->link(array('managegroup',$seminary['url'],$groupsgroup['url'],$group['url']),1)?>"><?=_('Manage')?></a></li>
<li><a href="<?=$linker->link(array('editgroup',$seminary['url'],$groupsgroup['url'],$group['url']),1)?>"><?=_('Edit Character group')?></a></li>
<li><a href="<?=$linker->link(array('deletegroup',$seminary['url'],$groupsgroup['url'],$group['url']),1)?>"><?=_('Delete Character group')?></a></li>
<li><a href="<?=$linker->link(array('managegroup',$seminary['url'],$groupsgroup['url'],$group['url']),1)?>"><?=_('Manage Character group')?></a></li>
</nav>
<?php endif ?>

View file

@ -7,6 +7,13 @@
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('index',$seminary['url']),1)?>"><?=_('Character Groups')?></a></li>
</ul>
<?php if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
<nav class="admin">
<li><a href="<?=$linker->link(array('editgroupsgroup',$seminary['url'],$groupsgroup['url']), 1)?>"><?=_('Edit Character groups-group')?></a></li>
<li><a href="<?=$linker->link(array('deletegroupsgroup',$seminary['url'],$groupsgroup['url']), 1)?>"><?=_('Delete Character groups-group')?></a></li>
<li><a href="<?=$linker->link(array('creategroup',$seminary['url'],$groupsgroup['url']), 1)?>"><?=_('Create new Character group')?></a></li>
</nav>
<?php endif ?>
<h1><?=$groupsgroup['name']?></h1>

View file

@ -7,6 +7,13 @@
<li><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></li>
</ul>
<h1><?=_('Character Groups')?></h1>
<?php if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
<nav class="admin">
<li><a href="<?=$linker->link(array('creategroupsgroup',$seminary['url']),1)?>"><?=_('Create new Character groups-group')?></a></li>
</nav>
<?php endif ?>
<ul class="cgqlist">
<?php foreach($groupsgroups as &$group) : ?>
<li><a href="<?=$linker->link(array('groupsgroup',$seminary['url'],$group['url']),1)?>"><?=$group['name']?></a></li>

View file

@ -8,6 +8,8 @@
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('index',$seminary['url']),1)?>"><?=_('Character Groups')?></a></li>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('groupsgroup',$seminary['url'],$groupsgroup['url']),1)?>"><?=$groupsgroup['name']?></a></li>
</ul>
<h1><?=_('Manage Character group')?></h1>
<div class="gbanner cf">
<img src="http://s1.directupload.net/images/140325/3eqybn4i.png" class="gbanner">
<h1><?=$group['name']?></h1>