change user Seminary roles to Character roles

This commit is contained in:
coderkun 2014-04-23 20:06:58 +02:00
commit 2185a7c2a4
26 changed files with 145 additions and 156 deletions

View file

@ -81,13 +81,13 @@
foreach($seminarymediaIds as &$seminarymediaId) foreach($seminarymediaIds as &$seminarymediaId)
{ {
$replacement = null; $replacement = null;
if(!is_null(\hhu\z\controllers\SeminaryRoleController::$seminary) && $this->loadMediaModel()) if(!is_null(\hhu\z\controllers\SeminaryController::$seminary) && $this->loadMediaModel())
{ {
try { try {
$medium = self::$Media->getSeminaryMediaById($seminarymediaId); $medium = self::$Media->getSeminaryMediaById($seminarymediaId);
$replacement = sprintf( $replacement = sprintf(
'<img src="%s" alt="%s" />', '<img src="%s" alt="%s" />',
$this->linker->link(array('media','seminary', \hhu\z\controllers\SeminaryRoleController::$seminary['url'],$medium['url'])), $this->linker->link(array('media','seminary', \hhu\z\controllers\SeminaryController::$seminary['url'],$medium['url'])),
$medium['description'] $medium['description']
); );
} }

View file

@ -18,7 +18,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
abstract class SeminaryRoleController extends \hhu\z\controllers\IntermediateController abstract class SeminaryController extends \hhu\z\controllers\IntermediateController
{ {
/** /**
* Required components * Required components
@ -31,7 +31,7 @@
* *
* @var array * @var array
*/ */
public $models = array('seminaries', 'userseminaryroles', 'characters', 'achievements'); public $models = array('seminaries', 'characters', 'characterroles', 'achievements');
/** /**
* Current Seminary * Current Seminary
* *
@ -49,7 +49,7 @@
/** /**
* Construct a new SeminaryRole Controller. * Construct a new Seminary Controller.
* *
* @throws DriverNotFoundException * @throws DriverNotFoundException
* @throws DriverNotValidException * @throws DriverNotValidException
@ -82,8 +82,8 @@
self::$seminary = $this->Seminaries->getSeminaryByUrl($this->request->getParam(3)); self::$seminary = $this->Seminaries->getSeminaryByUrl($this->request->getParam(3));
if(!is_null(self::$user)) if(!is_null(self::$user))
{ {
self::$user['seminaryroles'] = array_map(function($r) { return $r['name']; }, $this->Userseminaryroles->getUserseminaryrolesForUserById(self::$user['id'], self::$seminary['id']));
self::$character = $this->Characters->getCharacterForUserAndSeminary(self::$user['id'], self::$seminary['id']); self::$character = $this->Characters->getCharacterForUserAndSeminary(self::$user['id'], self::$seminary['id']);
self::$character['characterroles'] = array_map(function($r) { return $r['name']; }, $this->Characterroles->getCharacterrolesForCharacterById(self::$character['id']));
} }
} }
catch(\nre\exceptions\IdNotFoundException $e) { catch(\nre\exceptions\IdNotFoundException $e) {
@ -140,7 +140,7 @@
// Check permissions // Check permissions
if(!array_key_exists('seminaryroles', self::$user) || count(array_intersect(self::$user['seminaryroles'], $permissions)) == 0) { if(!array_key_exists('characterroles', self::$character) || count(array_intersect(self::$character['characterroles'], $permissions)) == 0) {
throw new \nre\exceptions\AccessDeniedException(); throw new \nre\exceptions\AccessDeniedException();
} }
} }
@ -158,7 +158,7 @@
// Get unachieved Achievments // Get unachieved Achievments
$achievements = $this->Achievements->getUnachhievedAchievementsForCharacter(self::$seminary['id'], self::$character['id']); $achievements = $this->Achievements->getUnachhievedAchievementsForCharacter(self::$seminary['id'], self::$character['id']);
if(in_array('user', self::$user['seminaryroles'])) { if(in_array('user', self::$character['characterroles'])) {
$achievements = array_merge($achievements, $this->Achievements->getUnachievedOnlyOnceAchievementsForSeminary(self::$seminary['id'])); $achievements = array_merge($achievements, $this->Achievements->getUnachievedOnlyOnceAchievementsForSeminary(self::$seminary['id']));
} }

View file

@ -17,7 +17,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class AchievementsController extends \hhu\z\controllers\SeminaryRoleController class AchievementsController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models
@ -59,7 +59,7 @@
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character // Get Character
$character = SeminaryRoleController::$character; $character = SeminaryController::$character;
// Get seldom Achievements // Get seldom Achievements
$seldomAchievements = $this->Achievements->getSeldomAchievements($seminary['id'], \nre\configs\AppConfig::$misc['achievements_range']); $seldomAchievements = $this->Achievements->getSeldomAchievements($seminary['id'], \nre\configs\AppConfig::$misc['achievements_range']);

View file

@ -17,7 +17,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class CharactergroupsController extends \hhu\z\controllers\SeminaryRoleController class CharactergroupsController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models

View file

@ -18,7 +18,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class CharactergroupsquestsController extends \hhu\z\controllers\SeminaryRoleController class CharactergroupsquestsController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models

View file

@ -17,7 +17,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class CharactersController extends \hhu\z\controllers\SeminaryRoleController class CharactersController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models
@ -268,9 +268,10 @@
// Send notification mail to system moderators // Send notification mail to system moderators
$subject = sprintf('new Character registration: %s', $charactername); $subject = sprintf('new Character registration: %s', $charactername);
$message = sprintf('User “%s” <%s> has registered a new Character “%s” for the Seminary “%s”', self::$user['username'], self::$user['email'], $charactername, self::$seminary['title']); $message = sprintf('User “%s” <%s> has registered a new Character “%s” for the Seminary “%s”', self::$user['username'], self::$user['email'], $charactername, self::$seminary['title']);
$moderators = $this->Users->getUsersWithSeminaryRole(self::$seminary['id'], 'moderator'); $characters = $this->Characters->getCharactersWithCharacterRole(self::$seminary['id'], 'moderator');
foreach($moderators as &$moderator) foreach($characters as &$character)
{ {
$moderator = $this->Users->getUserById($character['user_id']);
\hhu\z\Utils::sendMail($sender, $moderator['email'], $subject, $message); \hhu\z\Utils::sendMail($sender, $moderator['email'], $subject, $message);
} }
} }

View file

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

View file

@ -17,7 +17,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class LibraryController extends \hhu\z\controllers\SeminaryRoleController class LibraryController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models
@ -59,7 +59,7 @@
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character // Get Character
$character = SeminaryRoleController::$character; $character = SeminaryController::$character;
// Get Quest topics // Get Quest topics
$totalQuestcount = 0; $totalQuestcount = 0;
@ -100,7 +100,7 @@
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character // Get Character
$character = SeminaryRoleController::$character; $character = SeminaryController::$character;
// Get Questtopic // Get Questtopic
$questtopic = $this->Questtopics->getQuesttopicByUrl($seminary['id'], $questtopicUrl); $questtopic = $this->Questtopics->getQuesttopicByUrl($seminary['id'], $questtopicUrl);

View file

@ -17,7 +17,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class MediaController extends \hhu\z\controllers\SeminaryRoleController class MediaController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* User permissions * User permissions
@ -220,7 +220,7 @@
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Character // Get Character
$character = SeminaryRoleController::$character; $character = SeminaryController::$character;
// Get Achievement // Get Achievement
$achievement = $this->Achievements->getAchievementByUrl($seminary['id'], $achievementUrl); $achievement = $this->Achievements->getAchievementByUrl($seminary['id'], $achievementUrl);

View file

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

View file

@ -17,7 +17,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class QuestgroupsController extends \hhu\z\controllers\SeminaryRoleController class QuestgroupsController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models
@ -71,7 +71,7 @@
$character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']); $character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']);
// Check permission // Check permission
if(count(array_intersect(array('admin','moderator'), IntermediateController::$user['seminaryroles'])) == 0) if(count(array_intersect(array('admin','moderator'), SeminaryController::$character['characterroles'])) == 0)
{ {
$previousQuestgroup = $this->Questgroups->getPreviousQuestgroup($questgroup['id']); $previousQuestgroup = $this->Questgroups->getPreviousQuestgroup($questgroup['id']);
if(!is_null($previousQuestgroup)) { if(!is_null($previousQuestgroup)) {
@ -97,7 +97,7 @@
$group['solved'] = $this->Questgroups->hasCharacterSolvedQuestgroup($group['id'], $character['id']); $group['solved'] = $this->Questgroups->hasCharacterSolvedQuestgroup($group['id'], $character['id']);
// Check permission of Questgroups // Check permission of Questgroups
if($i >= 1 && count(array_intersect(array('admin','moderator'), IntermediateController::$user['seminaryroles'])) == 0) if($i >= 1 && count(array_intersect(array('admin','moderator'), SeminaryController::$character['characterroles'])) == 0)
{ {
if(!$hierarchy['questgroups'][$i-1]['solved']) if(!$hierarchy['questgroups'][$i-1]['solved'])
{ {
@ -170,7 +170,7 @@
$quests[] = $currentQuest; $quests[] = $currentQuest;
} }
} }
while(!is_null($currentQuest) && ($currentQuest['solved'] || count(array_intersect(array('admin','moderator'), IntermediateController::$user['seminaryroles'])) > 0)); while(!is_null($currentQuest) && ($currentQuest['solved'] || count(array_intersect(array('admin','moderator'), SeminaryController::$character['characterroles'])) > 0));
} }

View file

@ -17,7 +17,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class QuestsController extends \hhu\z\controllers\SeminaryRoleController class QuestsController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models
@ -146,7 +146,7 @@
$character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']); $character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']);
// Check permissions // Check permissions
if(count(array_intersect(array('admin','moderator'), IntermediateController::$user['seminaryroles'])) == 0) if(count(array_intersect(array('admin','moderator'), SeminaryController::$character['characterroles'])) == 0)
{ {
$previousQuests = $this->Quests->getPreviousQuests($quest['id']); $previousQuests = $this->Quests->getPreviousQuests($quest['id']);
if(count($previousQuests) == 0) if(count($previousQuests) == 0)

View file

@ -17,14 +17,14 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class SeminariesController extends \hhu\z\controllers\SeminaryRoleController class SeminariesController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models
* *
* @var array * @var array
*/ */
public $models = array('seminaries', 'users', 'userseminaryroles', 'questgroupshierarchy', 'questgroups', 'media'); public $models = array('seminaries', 'users', 'characterroles', 'questgroupshierarchy', 'questgroups', 'media');
/** /**
* User permissions * User permissions
* *
@ -72,10 +72,10 @@
// Character of currently logged-in user // Character of currently logged-in user
try { try {
$seminary['usercharacter'] = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']); $seminary['usercharacter'] = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']);
$seminary['usercharacter']['characterroles'] = $this->Characterroles->getCharacterrolesForCharacterById($seminary['usercharacter']['id']);
} }
catch(\nre\exceptions\IdNotFoundException $e) { catch(\nre\exceptions\IdNotFoundException $e) {
} }
$seminary['userroles'] = $this->Userseminaryroles->getUserseminaryrolesForUserById(IntermediateController::$user['id'], $seminary['id']);
} }
@ -115,7 +115,7 @@
foreach($hierarchy['questgroups'] as $i => &$questgroup) foreach($hierarchy['questgroups'] as $i => &$questgroup)
{ {
// Check permission of Questgroups // Check permission of Questgroups
if($i >= 1 && count(array_intersect(array('admin','moderator'), IntermediateController::$user['seminaryroles'])) == 0) if($i >= 1 && count(array_intersect(array('admin','moderator'), SeminaryController::$character['characterroles'])) == 0)
{ {
if(!$this->Questgroups->hasCharacterSolvedQuestgroup($hierarchy['questgroups'][$i-1]['id'], $character['id'])) if(!$this->Questgroups->hasCharacterSolvedQuestgroup($hierarchy['questgroups'][$i-1]['id'], $character['id']))
{ {

View file

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

View file

@ -18,7 +18,7 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class SeminarymenuController extends \hhu\z\controllers\SeminaryRoleController class SeminarymenuController extends \hhu\z\controllers\SeminaryController
{ {

View file

@ -17,21 +17,29 @@
* *
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de> * @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/ */
class UploadsController extends \hhu\z\controllers\IntermediateController class UploadsController extends \hhu\z\controllers\SeminaryController
{ {
/** /**
* Required models * Required models
* *
* @var array * @var array
*/ */
public $models = array('uploads', 'users', 'userroles', 'seminaries'); public $models = array('uploads', 'users', 'userroles', 'characterroles', 'seminaries');
/** /**
* User permissions * User permissions
* *
* @var array * @var array
*/ */
public $permissions = array( public $permissions = array(
'index' => array('admin', 'moderator', 'user', 'userseminaryroles') 'index' => array('admin', 'moderator', 'user', 'guest')
);
/**
* User seminary permissions
*
* @var array
*/
public $seminaryPermissions = array(
'seminary' => array('admin', 'moderator', 'user', 'guest')
); );
@ -85,9 +93,9 @@
// Owner of file // Owner of file
if($upload['created_user_id'] != $user['id']) if($upload['created_user_id'] != $user['id'])
{ {
// Seminary roles // Seminary permissions
$userSeminaryRoles = array_map(function($r) { return $r['name']; }, $this->Userseminaryroles->getUserseminaryrolesForUserById($user['id'], $seminary['id'])); $characterRoles = array_map(function($r) { return $r['name']; }, $this->Characterroles->getCharacterrolesForCharacterById($character['id']));
if(count(array_intersect(array('admin', 'moderator'), $userSeminaryRoles)) == 0) { if(count(array_intersect(array('admin', 'moderator'), $characterRoles)) == 0) {
throw new \nre\exceptions\AccessDeniedException(); throw new \nre\exceptions\AccessDeniedException();
} }
} }

View file

@ -36,7 +36,7 @@
* *
* @var array * @var array
*/ */
public $models = array('users', 'characters', 'avatars', 'media', 'userseminaryroles'); public $models = array('users', 'characters', 'avatars', 'media', 'characterroles');
/** /**
* Required components * Required components
* *
@ -87,8 +87,8 @@
foreach($characters as &$character) foreach($characters as &$character)
{ {
// Seminary roles // Seminary roles
$character['user_seminaryroles'] = $this->Userseminaryroles->getUserseminaryrolesForUserById(\hhu\z\controllers\IntermediateController::$user['id'], $character['seminary_id']); $character['characterroles'] = $this->Characterroles->getCharacterrolesForCharacterById($character['id']);
$character['user_seminaryroles'] = array_map(function($a) { return $a['name']; }, $character['user_seminaryroles']); $character['characterroles'] = array_map(function($a) { return $a['name']; }, $character['characterroles']);
// Level // Level
$character['xplevel'] = $this->Characters->getXPLevelOfCharacters($character['id']); $character['xplevel'] = $this->Characters->getXPLevelOfCharacters($character['id']);

View file

@ -0,0 +1,57 @@
<?php
/**
* The Legend of Z
*
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
* @copyright 2014 Heinrich-Heine-Universität Düsseldorf
* @license http://www.gnu.org/licenses/gpl.html
* @link https://bitbucket.org/coderkun/the-legend-of-z
*/
namespace hhu\z\models;
/**
* Model to interact with characterroles-table.
*
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/
class CharacterrolesModel extends \hhu\z\Model
{
/**
* Construct a new CharacterrolesModel.
*/
public function __construct()
{
parent::__construct();
}
/**
* Get all characterroles for a Character referenced by its ID.
*
* @param int $userId ID of an user
* @return array Characterroles for a Character
*/
public function getCharacterrolesForCharacterById($characterId)
{
return $this->db->query(
'SELECT characterroles.id, characterroles.created, characterroles.name '.
'FROM characters_characterroles '.
'LEFT JOIN characterroles ON characterroles.id = characters_characterroles.characterrole_id '.
'WHERE characters_characterroles.character_id = ?',
'i',
$characterId
);
}
}
?>

View file

@ -468,6 +468,29 @@
); );
} }
/**
* Get Characters with the given Character role.
*
* @param int $seminaryId ID of Seminary
* @param string $characterrole Character role
* @return array List of users
*/
public function getCharactersWithCharacterRole($seminaryId, $characterrole)
{
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 '.
'LEFT JOIN characters_characterroles ON characters_characterroles.character_id = characters.id '.
'LEFT JOIN characterroles ON characterroles.id = characters_characterroles.characterrole_id '.
'WHERE seminaries.id = ? AND characterroles.name = ?',
'is',
$seminaryId, $characterrole
);
}
} }
?> ?>

View file

@ -70,28 +70,6 @@
} }
/**
* Get users with the given user Seminary role.
*
* @param int $seminaryId ID of Seminary
* @param string $userseminaryrole User Seminary role
* @return array List of users
*/
public function getUsersWithSeminaryRole($seminaryId, $userseminaryrole)
{
return $this->db->query(
'SELECT users.id, users.created, users.username, users.url, users.surname, users.prename, users.email '.
'FROM users '.
'LEFT JOIN users_userseminaryroles ON users_userseminaryroles.user_id = users.id '.
'LEFT JOIN userseminaryroles ON userseminaryroles.id = users_userseminaryroles.userseminaryrole_id '.
'WHERE users_userseminaryroles.seminary_id = ? AND userseminaryroles.name = ? '.
'ORDER BY username ASC',
'is',
$seminaryId, $userseminaryrole
);
}
/** /**
* Get a user and its data by its ID. * Get a user and its data by its ID.
* *

View file

@ -1,78 +0,0 @@
<?php
/**
* The Legend of Z
*
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
* @copyright 2014 Heinrich-Heine-Universität Düsseldorf
* @license http://www.gnu.org/licenses/gpl.html
* @link https://bitbucket.org/coderkun/the-legend-of-z
*/
namespace hhu\z\models;
/**
* Model to interact with userseminaryroles-table.
*
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/
class UserseminaryrolesModel extends \hhu\z\Model
{
/**
* Construct a new UserseminaryrolesModel.
*/
public function __construct()
{
parent::__construct();
}
/**
* Get all userseminaryroles for an user referenced by its ID.
*
* @param int $userId ID of an user
* @return array Userseminaryroles for an user
*/
public function getUserseminaryrolesForUserById($userId, $seminaryId)
{
return $this->db->query(
'SELECT userseminaryroles.id, userseminaryroles.created, userseminaryroles.name '.
'FROM users_userseminaryroles '.
'LEFT JOIN userseminaryroles ON userseminaryroles.id = users_userseminaryroles.userseminaryrole_id '.
'WHERE users_userseminaryroles.user_id = ? AND users_userseminaryroles.seminary_id = ?',
'ii',
$userId, $seminaryId
);
}
/**
* Get all userseminaryroles for an user referenced by its
* URL-username.
*
* @param string $userUrl URL-Username of an user
* @return array Userseminaryroles for an user
*/
public function getUserrolesForUserByUrl($userUrl)
{
return $this->db->query(
'SELECT userroles.id, userroles.created, userroles.name '.
'FROM users '.
'LEFT JOIN users_userseminaryroles ON users_userseminaryroles.user_id = users.id '.
'LEFT JOIN userseminaryroles ON userseminaryroles.id = users_userseminaryroles.userseminaryrole_id '.
'WHERE users.url = ?',
's',
$userUrl
);
}
}
?>

View file

@ -54,7 +54,7 @@
<?=$intermediate?> <?=$intermediate?>
</article> </article>
<aside> <aside>
<?php if(!is_null($loggedCharacter) && count($loggedUser['seminaryroles']) > 0) : ?> <?php if(!is_null($loggedCharacter) && count($loggedCharacter['characterroles']) > 0) : ?>
<?=$seminarybar?> <?=$seminarybar?>
<?php endif ?> <?php endif ?>
</aside> </aside>

View file

@ -1,7 +1,7 @@
<li><a href="<?=$linker->link(array(), 0, true, array(), true)?>"><i class="fa fa-home fa-fw"></i>The Legend of Z</a></li> <li><a href="<?=$linker->link(array(), 0, true, array(), true)?>"><i class="fa fa-home fa-fw"></i>The Legend of Z</a></li>
<?php if(!is_null($loggedUser) && count(array_intersect(array('admin','moderator'),$loggedUser['roles'])) > 0) : ?><li><a href="<?=$linker->link('users')?>"><i class="fa fa-users fa-fw"></i><?=_('Users')?></a></li><?php endif ?> <?php if(!is_null($loggedUser) && count(array_intersect(array('admin','moderator'),$loggedUser['roles'])) > 0) : ?><li><a href="<?=$linker->link('users')?>"><i class="fa fa-users fa-fw"></i><?=_('Users')?></a></li><?php endif ?>
<?php if(!is_null($loggedUser)) : ?><li><a href="<?=$linker->link('seminaries')?>"><i class="fa fa-pencil-square-o fa-fw"></i><?=_('Seminaries')?></a></li><?php endif ?> <?php if(!is_null($loggedUser)) : ?><li><a href="<?=$linker->link('seminaries')?>"><i class="fa fa-pencil-square-o fa-fw"></i><?=_('Seminaries')?></a></li><?php endif ?>
<?php if(!is_null($loggedCharacter) && count($loggedUser['seminaryroles']) > 0) : ?><?=$seminarymenu?><?php endif ?> <?php if(!is_null($loggedCharacter) && count($loggedCharacter['characterroles']) > 0) : ?><?=$seminarymenu?><?php endif ?>
<?php if(is_null($loggedUser)) : ?> <?php if(is_null($loggedUser)) : ?>
<li><a href="<?=$linker->link(array('users','login'))?>"><i class="fa fa-sign-in fa-fw"></i><?=_('Login')?></a></li> <li><a href="<?=$linker->link(array('users','login'))?>"><i class="fa fa-sign-in fa-fw"></i><?=_('Login')?></a></li>
<?php else : ?> <?php else : ?>

View file

@ -12,7 +12,7 @@
<?php endif ?> <?php endif ?>
<section> <section>
<p class="fwb"> <p class="fwb">
<?php if(count($seminary['userroles']) > 0) : ?> <?php if(array_key_exists('usercharacter', $seminary) && count($seminary['usercharacter']['characterroles']) > 0) : ?>
<a href="<?=$linker->link(array('seminary', $seminary['url']), 1)?>"><?=$seminary['title']?></a> <a href="<?=$linker->link(array('seminary', $seminary['url']), 1)?>"><?=$seminary['title']?></a>
<?php else : ?> <?php else : ?>
<?=$seminary['title']?> <?=$seminary['title']?>
@ -22,7 +22,7 @@
<p><?=\hhu\z\Utils::t($seminary['description'])?></p> <p><?=\hhu\z\Utils::t($seminary['description'])?></p>
<?php if(!array_key_exists('usercharacter', $seminary)) : ?> <?php if(!array_key_exists('usercharacter', $seminary)) : ?>
<a href="<?=$linker->link(array('characters','register',$seminary['url']))?>" class="cta orange"><?=_('Create a Character')?></a> <a href="<?=$linker->link(array('characters','register',$seminary['url']))?>" class="cta orange"><?=_('Create a Character')?></a>
<?php elseif(count($seminary['userroles']) == 0) : ?> <?php elseif(count($seminary['usercharacter']['characterroles']) == 0) : ?>
<p><?=sprintf(_('Your Character “%s” has not been activated yet'), $seminary['usercharacter']['name'])?></p> <p><?=sprintf(_('Your Character “%s” has not been activated yet'), $seminary['usercharacter']['name'])?></p>
<?php endif ?> <?php endif ?>
</section> </section>

View file

@ -4,11 +4,11 @@
</div> </div>
<?php endif ?> <?php endif ?>
<h1><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></h1> <h1><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></h1>
<?php if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\IntermediateController::$user['seminaryroles'])) > 0) : ?> <?php if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?>
<nav class="admin"> <nav class="admin">
<?php if(in_array('admin', \hhu\z\controllers\IntermediateController::$user['seminaryroles'])) : ?><li><a href="<?=$linker->link('edit', 3)?>"><?=_('Edit seminary')?></a></li><?php endif ?> <?php if(in_array('admin', \hhu\z\controllers\SeminaryController::$character['characterroles'])) : ?><li><a href="<?=$linker->link('edit', 3)?>"><?=_('Edit seminary')?></a></li><?php endif ?>
<?php if(in_array('admin', \hhu\z\controllers\IntermediateController::$user['seminaryroles'])) : ?><li><a href="<?=$linker->link('delete', 3)?>"><?=_('Delete seminary')?></a></li><?php endif ?> <?php if(in_array('admin', \hhu\z\controllers\SeminaryController::$character['characterroles'])) : ?><li><a href="<?=$linker->link('delete', 3)?>"><?=_('Delete seminary')?></a></li><?php endif ?>
<?php if(count(array_intersect(array('admin','moderator'), \hhu\z\controllers\IntermediateController::$user['seminaryroles'])) > 0) : ?><li><a href="<?=$linker->link(array('quests','index',$seminary['url']))?>"><?=_('Show Quests')?></a></li><?php endif ?> <?php if(count(array_intersect(array('admin','moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) : ?><li><a href="<?=$linker->link(array('quests','index',$seminary['url']))?>"><?=_('Show Quests')?></a></li><?php endif ?>
</nav> </nav>
<?php endif ?> <?php endif ?>
<p><?=\hhu\z\Utils::t($seminary['description'])?></p> <p><?=\hhu\z\Utils::t($seminary['description'])?></p>

View file

@ -20,7 +20,7 @@
<p><img src="<?=$linker->link(array('media','seminary',$character['seminary_url'],$character['small_avatar']['url']))?>"></p> <p><img src="<?=$linker->link(array('media','seminary',$character['seminary_url'],$character['small_avatar']['url']))?>"></p>
<?php endif ?> <?php endif ?>
<p> <p>
<?php if(count($character['user_seminaryroles']) > 0) : ?> <?php if(count($character['characterroles']) > 0) : ?>
<a href="<?=$linker->link(array('characters','character',$character['seminary_url'],$character['url']))?>"><?=$character['name']?></a> <a href="<?=$linker->link(array('characters','character',$character['seminary_url'],$character['url']))?>"><?=$character['name']?></a>
<?php else : ?> <?php else : ?>
<?=$character['name']?> <?=$character['name']?>