move Seminary and Character data determination to SeminaryRoleController

This commit is contained in:
coderkun 2014-04-15 20:04:46 +02:00
commit 39643f4e36
9 changed files with 38 additions and 59 deletions

View file

@ -31,18 +31,6 @@
* @var array
*/
public static $user = null;
/**
* Current Seminary
*
* var array
*/
public static $seminary = null;
/**
* Character of current user and Seminary
*
* @var array
*/
public static $character = null;
@ -79,22 +67,7 @@
// Get userdata
try {
self::$user = $this->Users->getUserById($this->Auth->getUserId());
// Determine user roles
self::$user['roles'] = array();
$roles = $this->Userroles->getUserrolesForUserById(self::$user['id']);
foreach($roles as &$role) {
self::$user['roles'][] = $role['name'];
}
// Character
$controller = $this->agent->controller;
if(is_subclass_of($controller, '\hhu\z\controllers\SeminaryRoleController'))
{
$seminaryUrl = $this->request->getParam(3);
self::$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
self::$character = $this->Characters->getCharacterForUserAndSeminary(self::$user['id'], self::$seminary['id']);
}
self::$user['roles'] = array_map(function($r) { return $r['name']; }, $this->Userroles->getUserrolesForUserById(self::$user['id']));
}
catch(\nre\exceptions\IdNotFoundException $e) {
}
@ -104,8 +77,6 @@
// Set userdata
$this->set('loggedUser', self::$user);
$this->set('loggedSeminary', self::$seminary);
$this->set('loggedCharacter', self::$character);
}

View file

@ -33,11 +33,17 @@
*/
public $models = array('seminaries', 'userseminaryroles', 'characters', 'achievements');
/**
* Data of currently logged in user if any
* Current Seminary
*
* var array
*/
public static $seminary = null;
/**
* Character of current user and Seminary
*
* @var array
*/
public static $user = null;
public static $character = null;
@ -71,11 +77,24 @@
{
parent::preFilter($request, $response);
// Get Seminary and Character data
try {
self::$seminary = $this->Seminaries->getSeminaryByUrl($this->request->getParam(3));
self::$character = $this->Characters->getCharacterForUserAndSeminary(self::$user['id'], self::$seminary['id']);
self::$user['seminaryroles'] = array_map(function($r) { return $r['name']; }, $this->Userseminaryroles->getUserseminaryrolesForUserById(self::$user['id'], self::$seminary['id']));
}
catch(\nre\exceptions\IdNotFoundException $e) {
}
// Check permissions
$this->checkPermission($request, $response);
// Check achievements
$this->checkAchievements($request, $response);
// Set Seminary and Character data
$this->set('loggedSeminary', self::$seminary);
$this->set('loggedCharacter', self::$character);
}
@ -105,17 +124,6 @@
return;
}
// Determine user and seminary
$userId = $this->Auth->getUserId();
$seminary = $this->Seminaries->getSeminaryByUrl($request->getParam(3));
// Determine user seminary roles
$userSeminaryRoles = array();
$roles = $this->Userseminaryroles->getUserseminaryrolesForUserById($userId, $seminary['id']);
foreach($roles as &$role) {
$userSeminaryRoles[] = $role['name'];
}
// Determine permissions for current action
$action = $this->request->getParam(2, 'action');
@ -129,7 +137,7 @@
// Check permissions
if(count(array_intersect($userSeminaryRoles, $permissions)) == 0) {
if(count(array_intersect(self::$user['seminaryroles'], $permissions)) == 0) {
throw new \nre\exceptions\AccessDeniedException();
}
}
@ -186,7 +194,7 @@
'params' => array(
$condition['field'],
$condition['value'],
$character['id']
self::$character['id']
)
);
}
@ -205,7 +213,7 @@
$condition['status'],
$condition['groupby'],
$condition['quest_id'],
$character['id']
self::$character['id']
)
);
}
@ -223,7 +231,7 @@
$condition['value'],
$condition['groupby'],
$condition['meta_achievement_id'],
$character['id']
self::$character['id']
)
);
}
@ -263,7 +271,7 @@
// Set status
if($achieved) {
$this->Achievements->setAchievementAchieved($achievement['id'], $character['id']);
$this->Achievements->setAchievementAchieved($achievement['id'], self::$character['id']);
}
}
}

View file

@ -59,7 +59,7 @@
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character
$character = IntermediateController::$character;
$character = SeminaryRoleController::$character;
// Get Achievements
$achievements = $this->Achievements->getAchievementsForSeminary($seminary['id']);

View file

@ -50,8 +50,8 @@
// Set userdata
$this->set('loggedUser', IntermediateController::$user);
$this->set('loggedSeminary', IntermediateController::$seminary);
$this->set('loggedCharacter', IntermediateController::$character);
$this->set('loggedSeminary', SeminaryRoleController::$seminary);
$this->set('loggedCharacter', SeminaryRoleController::$character);
}
}

View file

@ -59,7 +59,7 @@
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character
$character = IntermediateController::$character;
$character = SeminaryRoleController::$character;
// Get Quest topics
$questtopics = $this->Questtopics->getQuesttopicsForSeminary($seminary['id']);
@ -94,7 +94,7 @@
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character
$character = IntermediateController::$character;
$character = SeminaryRoleController::$character;
// Get Questtopic
$questtopic = $this->Questtopics->getQuesttopicByUrl($seminary['id'], $questtopicUrl);

View file

@ -170,7 +170,7 @@
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character
$character = IntermediateController::$character;
$character = SeminaryRoleController::$character;
// Get Achievement
$achievement = $this->Achievements->getAchievementByUrl($seminary['id'], $achievementUrl);

View file

@ -35,7 +35,7 @@
// Set userdata
$this->set('loggedUser', IntermediateController::$user);
$this->set('loggedSeminary', IntermediateController::$seminary);
$this->set('loggedSeminary', SeminaryRoleController::$seminary);
}

View file

@ -35,15 +35,15 @@
*/
public function index()
{
if(is_null(IntermediateController::$seminary)) {
if(is_null(SeminaryRoleController::$seminary)) {
return;
}
// Get Seminary
$seminary = IntermediateController::$seminary;
$seminary = SeminaryRoleController::$seminary;
// Get Character
$character = IntermediateController::$character;
$character = SeminaryRoleController::$character;
if(is_null($character)) {
return;
}

View file

@ -36,7 +36,7 @@
// Set userdata
$this->set('loggedUser', IntermediateController::$user);
$this->set('loggedSeminary', IntermediateController::$seminary);
$this->set('loggedSeminary', SeminaryRoleController::$seminary);
}