implement icons for Character groups Quests and improve media handilng for Character groups
This commit is contained in:
parent
75b81302ca
commit
072333c88b
12 changed files with 334 additions and 96 deletions
|
|
@ -470,7 +470,7 @@
|
|||
$groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl);
|
||||
|
||||
// Get allowed mimetypes
|
||||
$mimetypes = \nre\configs\AppConfig::$mimetypes['images'];
|
||||
$mimetypes = \nre\configs\AppConfig::$mimetypes['icons'];
|
||||
|
||||
// Values
|
||||
$charactergroupname = '';
|
||||
|
|
@ -489,7 +489,7 @@
|
|||
}
|
||||
$motto = $this->request->getPostParam('motto');
|
||||
|
||||
// Upload icon
|
||||
// Validate icon
|
||||
$icon = null;
|
||||
if(!empty($_FILES) && array_key_exists('icon', $_FILES) && $_FILES['icon']['error'] != UPLOAD_ERR_NO_FILE)
|
||||
{
|
||||
|
|
@ -601,7 +601,7 @@
|
|||
}
|
||||
|
||||
// Get allowed mimetypes
|
||||
$mimetypes = \nre\configs\AppConfig::$mimetypes['images'];
|
||||
$mimetypes = \nre\configs\AppConfig::$mimetypes['icons'];
|
||||
|
||||
// Values
|
||||
$charactergroupname = $group['name'];
|
||||
|
|
@ -620,7 +620,7 @@
|
|||
}
|
||||
$motto = $this->request->getPostParam('motto');
|
||||
|
||||
// Upload icon
|
||||
// Validate icon
|
||||
$icon = null;
|
||||
if(!empty($_FILES) && array_key_exists('icon', $_FILES) && $_FILES['icon']['error'] != UPLOAD_ERR_NO_FILE)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -81,12 +81,6 @@
|
|||
// Get Character groups-groups
|
||||
$groups = $this->Charactergroups->getGroupsForQuest($quest['id']);
|
||||
|
||||
// Media
|
||||
$questmedia = null;
|
||||
if(!is_null($quest['questsmedia_id'])) {
|
||||
$questmedia = $this->Media->getSeminaryMediaById($quest['questsmedia_id']);
|
||||
}
|
||||
|
||||
// Get uploads
|
||||
$uploads = $this->Charactergroupsquests->getMediaForQuest($quest['id']);
|
||||
foreach($uploads as &$upload) {
|
||||
|
|
@ -105,7 +99,6 @@
|
|||
$this->set('quest', $quest);
|
||||
$this->set('questgroup', $questgroup);
|
||||
$this->set('groups', $groups);
|
||||
$this->set('media', $questmedia);
|
||||
$this->set('uploads', $uploads);
|
||||
}
|
||||
|
||||
|
|
@ -269,6 +262,9 @@
|
|||
// Get Questgroups
|
||||
$questgroups = $this->Questgroups->getQuestgroupsForSeminary($seminary['id']);
|
||||
|
||||
// Get allowed mimetypes
|
||||
$mimetypes = \nre\configs\AppConfig::$mimetypes['icons'];
|
||||
|
||||
// Values
|
||||
$title = '';
|
||||
$xps = 0;
|
||||
|
|
@ -294,6 +290,34 @@
|
|||
$wonText = $this->request->getPostParam('wonText');
|
||||
$lostText = $this->request->getPostParam('lostText');
|
||||
|
||||
// Validate icon
|
||||
$icon = null;
|
||||
if(!empty($_FILES) && array_key_exists('icon', $_FILES) && $_FILES['icon']['error'] != UPLOAD_ERR_NO_FILE)
|
||||
{
|
||||
$icon = $_FILES['icon'];
|
||||
|
||||
// Check error
|
||||
if($icon['error'] !== UPLOAD_ERR_OK) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'icon', 'error', $icon['error']);
|
||||
}
|
||||
|
||||
// Check mimetype
|
||||
$mediaMimetype = null;
|
||||
$icon['mimetype'] = \hhu\z\Utils::getMimetype($icon['tmp_name'], $icon['type']);
|
||||
foreach($mimetypes as &$mimetype) {
|
||||
if($mimetype['mimetype'] == $icon['mimetype']) {
|
||||
$mediaMimetype = $mimetype;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(is_null($mediaMimetype)) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'icon', 'mimetype', $icon['mimetype']);
|
||||
}
|
||||
elseif($icon['size'] > $mediaMimetype['size']) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'icon', 'size', $mediaMimetype['size']);
|
||||
}
|
||||
}
|
||||
|
||||
// Validate Questgroup
|
||||
$questgroupIndex = null;
|
||||
foreach($questgroups as $index => &$questgroup)
|
||||
|
|
@ -321,9 +345,25 @@
|
|||
$wonText,
|
||||
$lostText
|
||||
);
|
||||
$quest = $this->Charactergroupsquests->getQuestById($questId);
|
||||
|
||||
// Upload icon
|
||||
if(!is_null($icon))
|
||||
{
|
||||
$mediaId = $this->Media->createQuestMedia(
|
||||
$this->Auth->getUserId(),
|
||||
$seminary['id'],
|
||||
sprintf('charactergroupsquest-%s', $quest['url']),
|
||||
'',
|
||||
$icon['mimetype'],
|
||||
$icon['tmp_name']
|
||||
);
|
||||
if($mediaId !== false) {
|
||||
$this->Charactergroupsquests->setMediaForQuest($quest['id'], $mediaId);
|
||||
}
|
||||
}
|
||||
|
||||
// Redirect to Quest page
|
||||
$quest = $this->Charactergroupsquests->getQuestById($questId);
|
||||
$this->redirect($this->linker->link(array('quest', $seminary['url'], $groupsgroup['url'], $quest['url']), 1));
|
||||
}
|
||||
}
|
||||
|
|
@ -350,6 +390,7 @@
|
|||
$this->set('rules', $rules);
|
||||
$this->set('wonText', $wonText);
|
||||
$this->set('lostText', $lostText);
|
||||
$this->set('mimetypes', $mimetypes);
|
||||
$this->set('validation', $validation);
|
||||
$this->set('validationSettings', $validationSettings);
|
||||
}
|
||||
|
|
@ -383,6 +424,9 @@
|
|||
$questgroup['selected'] = ($questgroup['id'] == $quest['questgroups_id']);
|
||||
}
|
||||
|
||||
// Get allowed mimetypes
|
||||
$mimetypes = \nre\configs\AppConfig::$mimetypes['icons'];
|
||||
|
||||
// Values
|
||||
$title = $quest['title'];
|
||||
$xps = $quest['xps'];
|
||||
|
|
@ -408,6 +452,34 @@
|
|||
$wonText = $this->request->getPostParam('wonText');
|
||||
$lostText = $this->request->getPostParam('lostText');
|
||||
|
||||
// Validate icon
|
||||
$icon = null;
|
||||
if(!empty($_FILES) && array_key_exists('icon', $_FILES) && $_FILES['icon']['error'] != UPLOAD_ERR_NO_FILE)
|
||||
{
|
||||
$icon = $_FILES['icon'];
|
||||
|
||||
// Check error
|
||||
if($icon['error'] !== UPLOAD_ERR_OK) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'icon', 'error', $icon['error']);
|
||||
}
|
||||
|
||||
// Check mimetype
|
||||
$mediaMimetype = null;
|
||||
$icon['mimetype'] = \hhu\z\Utils::getMimetype($icon['tmp_name'], $icon['type']);
|
||||
foreach($mimetypes as &$mimetype) {
|
||||
if($mimetype['mimetype'] == $icon['mimetype']) {
|
||||
$mediaMimetype = $mimetype;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(is_null($mediaMimetype)) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'icon', 'mimetype', $icon['mimetype']);
|
||||
}
|
||||
elseif($icon['size'] > $mediaMimetype['size']) {
|
||||
$validation = $this->Validation->addValidationResult($validation, 'icon', 'size', $mediaMimetype['size']);
|
||||
}
|
||||
}
|
||||
|
||||
// Validate Questgroup
|
||||
$questgroupIndex = null;
|
||||
foreach($questgroups as $index => &$questgroup)
|
||||
|
|
@ -435,9 +507,25 @@
|
|||
$wonText,
|
||||
$lostText
|
||||
);
|
||||
$quest = $this->Charactergroupsquests->getQuestById($quest['id']);
|
||||
|
||||
// Upload icon
|
||||
if(!is_null($icon))
|
||||
{
|
||||
$mediaId = $this->Media->createQuestMedia(
|
||||
$this->Auth->getUserId(),
|
||||
$seminary['id'],
|
||||
sprintf('charactergroupsquest-%s', $quest['url']),
|
||||
'',
|
||||
$icon['mimetype'],
|
||||
$icon['tmp_name']
|
||||
);
|
||||
if($mediaId !== false) {
|
||||
$this->Charactergroupsquests->setMediaForQuest($quest['id'], $mediaId);
|
||||
}
|
||||
}
|
||||
|
||||
// Redirect to Quest page
|
||||
$quest = $this->Charactergroupsquests->getQuestById($quest['id']);
|
||||
$this->redirect($this->linker->link(array('quest', $seminary['url'], $groupsgroup['url'], $quest['url']), 1));
|
||||
}
|
||||
}
|
||||
|
|
@ -465,6 +553,7 @@
|
|||
$this->set('rules', $rules);
|
||||
$this->set('wonText', $wonText);
|
||||
$this->set('lostText', $lostText);
|
||||
$this->set('mimetypes', $mimetypes);
|
||||
$this->set('validation', $validation);
|
||||
$this->set('validationSettings', $validationSettings);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,9 @@
|
|||
'seminarymoodpic' => array('admin', 'moderator', 'user'),
|
||||
'seminary' => array('admin', 'moderator', 'user'),
|
||||
'avatar' => array('admin', 'moderator', 'user'),
|
||||
'achievement' => array('admin', 'moderator', 'user')
|
||||
'achievement' => array('admin', 'moderator', 'user'),
|
||||
'charactergroup' => array('admin', 'moderator', 'user'),
|
||||
'charactergroupsquest' => array('admin', 'moderator', 'user')
|
||||
);
|
||||
/**
|
||||
* User seminary permissions
|
||||
|
|
@ -37,15 +39,17 @@
|
|||
* @var array
|
||||
*/
|
||||
public $seminaryPermissions = array(
|
||||
'seminary' => array('admin', 'moderator', 'user', 'guest'),
|
||||
'achievement' => array('admin', 'moderator', 'user', 'guest')
|
||||
'seminary' => array('admin', 'moderator', 'user', 'guest'),
|
||||
'achievement' => array('admin', 'moderator', 'user', 'guest'),
|
||||
'charactergroup' => array('admin', 'moderator', 'user', 'guest'),
|
||||
'charactergroupsquest' => array('admin', 'moderator', 'user', 'guest')
|
||||
);
|
||||
/**
|
||||
* Required models
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $models = array('seminaries', 'achievements', 'media', 'avatars', 'charactergroups');
|
||||
public $models = array('seminaries', 'achievements', 'media', 'avatars', 'charactergroups', 'charactergroupsquests');
|
||||
|
||||
|
||||
|
||||
|
|
@ -318,6 +322,48 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Action: charactergroupsquest
|
||||
*
|
||||
* Display the icon for a Character groups Quest 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 $questUrl URL-Title of a Character groups Quest
|
||||
*/
|
||||
public function charactergroupsquest($seminaryUrl, $groupsgroupUrl, $questUrl)
|
||||
{
|
||||
// Get seminary
|
||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||
|
||||
// Get Character groups-group
|
||||
$groupsgroup = $this->Charactergroups->getGroupsgroupByUrl($seminary['id'], $groupsgroupUrl);
|
||||
|
||||
// Get Character groups Quests
|
||||
$quest = $this->Charactergroupsquests->getQuestByUrl($groupsgroup['id'], $questUrl);
|
||||
|
||||
// Check media
|
||||
if(is_null($quest['questsmedia_id'])) {
|
||||
$this->redirect($this->linker->link(array('grafics','charactergroup.jpg')));
|
||||
}
|
||||
|
||||
// Get media
|
||||
$media = $this->Media->getSeminaryMediaById($quest['questsmedia_id']);
|
||||
|
||||
// Get file
|
||||
$file = $this->getMediaFile($media, 'charactergroupsquest');
|
||||
if(is_null($file)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Pass data to view
|
||||
$this->set('media', $media);
|
||||
$this->set('file', $file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -425,6 +471,14 @@
|
|||
\nre\configs\AppConfig::$media['charactergroup']['height']
|
||||
);
|
||||
break;
|
||||
case 'charactergroupsquest':
|
||||
$file = self::resizeImage(
|
||||
$media['filename'],
|
||||
$format,
|
||||
\nre\configs\AppConfig::$media['charactergroupsquest']['width'],
|
||||
\nre\configs\AppConfig::$media['charactergroupsquest']['height']
|
||||
);
|
||||
break;
|
||||
default:
|
||||
throw new ParamsNotValidException($action);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue