store the total amount of achievable XPs for a Questgroup in the database instead of calculating it every time (Issue #281)
This commit is contained in:
parent
53a968d644
commit
ea828a88dc
10 changed files with 211 additions and 209 deletions
|
|
@ -35,7 +35,8 @@
|
|||
'seminary' => array('admin', 'moderator', 'user'),
|
||||
'create' => array('admin', 'moderator'),
|
||||
'edit' => array('admin', 'moderator', 'user'),
|
||||
'delete' => array('admin', 'moderator', 'user')
|
||||
'delete' => array('admin', 'moderator', 'user'),
|
||||
'calculatexps' => array('admin', 'moderator', 'user')
|
||||
);
|
||||
/**
|
||||
* User seminary permissions
|
||||
|
|
@ -45,7 +46,8 @@
|
|||
public $seminaryPermissions = array(
|
||||
'seminary' => array('admin', 'moderator', 'user', 'guest'),
|
||||
'edit' => array('admin'),
|
||||
'delete' => array('admin')
|
||||
'delete' => array('admin'),
|
||||
'calculatexps' => array('admin', 'moderator')
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -134,10 +136,8 @@
|
|||
$questgroup['text'] = \hhu\z\Utils::shortenString($text, 100, 120).' …';
|
||||
}
|
||||
|
||||
// Get cumulated data
|
||||
$data = $this->Questgroups->getCumulatedDataForQuestgroup($questgroup['id'], $character['id']);
|
||||
$questgroup['xps'] = $data['xps'];
|
||||
$questgroup['character_xps'] = $data['character_xps'];
|
||||
// Get Character XPs
|
||||
$questgroup['character_xps'] = $this->Questgroups->getAchievedXPsForQuestgroup($questgroup['id'], $character['id']);
|
||||
|
||||
// Get Media
|
||||
$questgroup['picture'] = null;
|
||||
|
|
@ -264,6 +264,38 @@
|
|||
$this->set('seminary', $seminary);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: calculatexps.
|
||||
*
|
||||
* (Re-) Calculate the amount of achievable XPs for a Seminary.
|
||||
*
|
||||
* @throws IdNotFoundException
|
||||
* @param string $seminaryUrl URL-Title of a Seminary
|
||||
*/
|
||||
public function calculatexps($seminaryUrl)
|
||||
{
|
||||
// Get Seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Questgrouphierarchy and Questgroups
|
||||
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyOfSeminary($seminary['id']);
|
||||
foreach($questgroupshierarchy as &$hierarchy)
|
||||
{
|
||||
// Get Questgroups
|
||||
$hierarchy['questgroups'] = $this->Questgroups->getQuestgroupsForHierarchy($hierarchy['id']);
|
||||
foreach($hierarchy['questgroups'] as &$questgroup)
|
||||
{
|
||||
// Calculate achievable XPs
|
||||
$this->Questgroups->calculateXPsForQuestgroup($questgroup['id']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Redirect to Questgroup
|
||||
$this->redirect($this->linker->link(array('seminary', $seminary['url']), 1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue