split media and Seminary media

This commit is contained in:
coderkun 2014-04-05 15:37:11 +02:00
commit 998b3bf121
17 changed files with 160 additions and 57 deletions

View file

@ -59,11 +59,12 @@
* @var array
*/
public static $dirs = array(
'locale' => 'locale',
'media' => 'media',
'questtypes' => 'questtypes',
'temporary' => 'tmp',
'uploads' => 'uploads'
'locale' => 'locale',
'media' => 'media',
'seminarymedia' => 'seminarymedia',
'questtypes' => 'questtypes',
'temporary' => 'tmp',
'uploads' => 'uploads'
);

View file

@ -74,7 +74,7 @@
// Media
$questmedia = null;
if(!is_null($quest['questsmedia_id'])) {
$questmedia = $this->Media->getMediaById($quest['questsmedia_id']);
$questmedia = $this->Media->getSeminaryMediaById($quest['questsmedia_id']);
}

View file

@ -25,7 +25,8 @@
* @var array
*/
public $permissions = array(
'index' => array('admin', 'moderator', 'user')
'index' => array('admin', 'moderator', 'user', 'guest'),
'seminary' => array('admin', 'moderator', 'user', 'guest')
);
/**
* User seminary permissions
@ -33,7 +34,7 @@
* @var array
*/
public $seminaryPermissions = array(
'index' => array('admin', 'moderator', 'user')
'seminary' => array('admin', 'moderator', 'user', 'guest')
);
/**
* Required models
@ -64,21 +65,16 @@
/**
* Action: index.
* Action: index
*
* Display a medium without processing.
* Display a medium.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-title of the Seminary
* @param string $mediaUrl URL-name of the medium
*/
public function index($seminaryUrl, $mediaUrl, $action=null)
public function index($mediaUrl, $action=null)
{
// Get Seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Media
$media = $this->Media->getMediaByUrl($seminary['id'], $mediaUrl);
$media = $this->Media->getMediaByUrl($mediaUrl);
// Get format
$format = explode('/', $media['mimetype']);
@ -98,6 +94,63 @@
return;
}
// Load and process file
$file = null;
switch($action)
{
// No action
case null:
// Do not process the file
$file = file_get_contents($media['filename']);
break;
default:
throw new ParamsNotValidException($action);
break;
}
// Pass data to view
$this->set('media', $media);
$this->set('file', $file);
}
/**
* Action: seminary.
*
* Display a Seminary medium.
*
* @throws IdNotFoundException
* @param string $seminaryUrl URL-title of the Seminary
* @param string $mediaUrl URL-name of the medium
*/
public function seminary($seminaryUrl, $mediaUrl, $action=null)
{
// Get Seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
// Get Media
$media = $this->Media->getSeminaryMediaByUrl($seminary['id'], $mediaUrl);
// Get format
$format = explode('/', $media['mimetype']);
$format = $format[1];
// Set content-type
$this->response->addHeader("Content-type: ".$media['mimetype']."");
// Set filename
$media['filename'] = ROOT.DS.\nre\configs\AppConfig::$dirs['seminarymedia'].DS.$media['id'];
if(!file_exists($media['filename'])) {
throw new \nre\exceptions\IdNotFoundException($mediaUrl);
}
// Cache
if($this->setCacheHeaders($media['filename'])) {
return;
}
// Load and process file
$file = null;
switch($action)

View file

@ -115,7 +115,7 @@
$picture = null;
if(!is_null($questgroup['questgroupspicture_id']))
{
$picture = $this->Media->getMediaById($questgroup['questgroupspicture_id']);
$picture = $this->Media->getSeminaryMediaById($questgroup['questgroupspicture_id']);
}

View file

@ -70,7 +70,7 @@
$questgroup = $this->Questgroups->getQuestgroupByUrl($seminary['id'], $questgroupUrl);
$questgroup['picture'] = null;
if(!is_null($questgroup['questgroupspicture_id'])) {
$questgroup['picture'] = $this->Media->getMediaById($questgroup['questgroupspicture_id']);
$questgroup['picture'] = $this->Media->getSeminaryMediaById($questgroup['questgroupspicture_id']);
}
@ -151,7 +151,7 @@
{
// Questtext media
if(!is_null($questtext['questsmedia_id'])) {
$questtext['media'] = $this->Media->getMediaById($questtext['questsmedia_id']);
$questtext['media'] = $this->Media->getSeminaryMediaById($questtext['questsmedia_id']);
}
// Related Questgroups
@ -177,7 +177,7 @@
// Quest media
$questmedia = null;
if(!is_null($quest['questsmedia_id'])) {
$questmedia = $this->Media->getMediaById($quest['questsmedia_id']);
$questmedia = $this->Media->getSeminaryMediaById($quest['questsmedia_id']);
}
// Task

View file

@ -127,7 +127,7 @@
// Get Media
$questgroup['picture'] = null;
try {
$questgroup['picture'] = $this->Media->getMediaById($questgroup['questgroupspicture_id']);
$questgroup['picture'] = $this->Media->getSeminaryMediaById($questgroup['questgroupspicture_id']);
}
catch(\nre\exceptions\IdNotFoundException $e) {
}

View file

@ -132,12 +132,12 @@
public function getCharacterByUrl($seminaryId, $characterUrl)
{
$data = $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, media.url AS avatar_url, media.description AS avatar_description '.
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, seminarymedia.url AS avatar_url, seminarymedia.description AS avatar_description '.
'FROM v_characters AS characters '.
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
'LEFT JOIN avatarpictures ON avatarpictures.media_id = avatars.avatarpicture_id '.
'LEFT JOIN media ON media.id = avatarpictures.media_id '.
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
'WHERE charactertypes.seminary_id = ? AND characters.url = ?',
'is',
$seminaryId, $characterUrl
@ -161,12 +161,12 @@
public function getCharacterById($characterId)
{
$data = $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, media.url AS avatar_url, media.description AS avatar_description '.
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, seminarymedia.url AS avatar_url, seminarymedia.description AS avatar_description '.
'FROM v_characters AS characters '.
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
'LEFT JOIN avatarpictures ON avatarpictures.media_id = avatars.avatarpicture_id '.
'LEFT JOIN media ON media.id = avatarpictures.media_id '.
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
'WHERE characters.id = ?',
'i',
$characterId
@ -264,12 +264,12 @@
public function getCharactersSolvedQuest($questId)
{
return $data = $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, media.url AS avatar_url, media.description AS avatar_description '.
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, seminarymedia.url AS avatar_url, seminarymedia.description AS avatar_description '.
'FROM v_characters AS characters '.
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
'LEFT JOIN avatarpictures ON avatarpictures.media_id = avatars.avatarpicture_id '.
'LEFT JOIN media ON media.id = avatarpictures.media_id '.
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
'WHERE EXISTS ('.
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
')',
@ -289,12 +289,12 @@
public function getCharactersUnsolvedQuest($questId)
{
return $data = $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, media.url AS avatar_url, media.description AS avatar_description '.
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, seminarymedia.url AS avatar_url, seminarymedia.description AS avatar_description '.
'FROM v_characters AS characters '.
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
'LEFT JOIN avatarpictures ON avatarpictures.media_id = avatars.avatarpicture_id '.
'LEFT JOIN media ON media.id = avatarpictures.media_id '.
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
'WHERE EXISTS ('.
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
') AND NOT EXISTS ('.
@ -316,12 +316,12 @@
public function getCharactersSubmittedQuest($questId)
{
return $data = $this->db->query(
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, media.url AS avatar_url, media.description AS avatar_description '.
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertypes_url, seminarymedia.url AS avatar_url, seminarymedia.description AS avatar_description '.
'FROM v_characters AS characters '.
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
'LEFT JOIN avatarpictures ON avatarpictures.media_id = avatars.avatarpicture_id '.
'LEFT JOIN media ON media.id = avatarpictures.media_id '.
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
'WHERE EXISTS ('.
'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'.
') AND NOT EXISTS ('.

View file

@ -35,19 +35,18 @@
/**
* Get a Medium by its URL.
* Get a medium by its URL.
*
* @throws IdNotFoundException
* @param int $seminaryId ID of the seminary
* @param string $mediaURL URL-name of the Medium
* @return array Medium data
*/
public function getMediaByUrl($seminaryId, $mediaUrl)
public function getMediaByUrl($mediaUrl)
{
$data = $this->db->query(
'SELECT id, name, url, description, mimetype '.
'FROM media '.
'WHERE media.url = ?',
'WHERE url = ?',
's',
$mediaUrl
);
@ -61,10 +60,9 @@
/**
* Get a Medium by its ID.
* Get a medium by its ID.
*
* @throws IdNotFoundException
* @param int $seminaryId ID of the seminary
* @param int $mediaId ID of the Medium
* @return array Medium data
*/
@ -73,7 +71,59 @@
$data = $this->db->query(
'SELECT id, name, url, description, mimetype '.
'FROM media '.
'WHERE media.id = ?',
'WHERE id = ?',
'i',
$mediaId
);
if(empty($data)) {
throw new \nre\exceptions\IdNotFoundException($mediaId);
}
return $data[0];
}
/**
* Get a Seminary medium by its URL.
*
* @throws IdNotFoundException
* @param int $seminaryId ID of the seminary
* @param string $mediaURL URL-name of the Medium
* @return array Medium data
*/
public function getSeminaryMediaByUrl($seminaryId, $mediaUrl)
{
$data = $this->db->query(
'SELECT id, name, url, description, mimetype '.
'FROM seminarymedia '.
'WHERE url = ?',
's',
$mediaUrl
);
if(empty($data)) {
throw new \nre\exceptions\IdNotFoundException($mediaUrl);
}
return $data[0];
}
/**
* Get a Seminary medium by its ID.
*
* @throws IdNotFoundException
* @param int $seminaryId ID of the seminary
* @param int $mediaId ID of the Medium
* @return array Medium data
*/
public function getSeminaryMediaById($mediaId)
{
$data = $this->db->query(
'SELECT id, name, url, description, mimetype '.
'FROM seminarymedia '.
'WHERE id = ?',
'i',
$mediaId
);

View file

@ -112,13 +112,13 @@
{
// Get Drag&Drop field
$dndField = $this->Dragndrop->getDragndrop($quest['id']);
$dndField['media'] = $this->Media->getMediaById($dndField['questmedia_id']);
$dndField['media'] = $this->Media->getSeminaryMediaById($dndField['questmedia_id']);
// Get Drags
$drags = array();
$dragsByIndex = $this->Dragndrop->getDrags($dndField['quest_id']);
foreach($dragsByIndex as &$drag) {
$drag['media'] = $this->Media->getMediaById($drag['questmedia_id']);
$drag['media'] = $this->Media->getSeminaryMediaById($drag['questmedia_id']);
$drags[$drag['id']] = $drag;
}
@ -162,13 +162,13 @@
{
// Get Drag&Drop field
$dndField = $this->Dragndrop->getDragndrop($quest['id']);
$dndField['media'] = $this->Media->getMediaById($dndField['questmedia_id']);
$dndField['media'] = $this->Media->getSeminaryMediaById($dndField['questmedia_id']);
// Get Drags
$drags = array();
$dragsByIndex = $this->Dragndrop->getDrags($dndField['quest_id']);
foreach($dragsByIndex as &$drag) {
$drag['media'] = $this->Media->getMediaById($drag['questmedia_id']);
$drag['media'] = $this->Media->getSeminaryMediaById($drag['questmedia_id']);
$drags[$drag['id']] = $drag;
}

View file

@ -1,5 +1,5 @@
<form method="post">
<div id="dropZone" style="width:<?=$field['width']?>px; height:<?=$field['height']?>px; background-image:url('<?=$linker->link(array('media','index',$seminary['url'],$field['media']['url']))?>')">
<div id="dropZone" style="width:<?=$field['width']?>px; height:<?=$field['height']?>px; background-image:url('<?=$linker->link(array('media','seminary',$seminary['url'],$field['media']['url']))?>')">
<?php foreach($drops as &$drop) : ?>
<div id="drop<?=$drop['id']?>" ondragenter="onDragEnter(event)" ondragover="onDragOver(event)" ondragleave="onDragLeave(event)" ondrop="onDrop(event)" style="position:absolute; width:<?=$drop['width']?>px; height:<?=$drop['height']?>px; margin:<?=$drop['top']?>px 0 0 <?=$drop['left']?>px;"><?php if(array_key_exists('answer', $drop) && !is_null($drop['answer'])) : ?><img id="drag<?=$drop['answer']['id']?>" draggable="true" ondragstart="onDragStart(event)" ondragend="onDragEnd(event)" src="<?=$linker->link(array('media','index',$seminary['url'],$drop['answer']['media']['url']))?>" /><?php endif ?></div>
<input type="hidden" id="dnd_drop<?=$drop['id']?>" name="answers[<?=$drop['id']?>]" value="<?=(!is_null($drop['answer'])) ? 'drag'.$drop['answer']['id'] : null ?>" />
@ -8,7 +8,7 @@
<div id="dragZone" ondragenter="onDragEnter(event)" ondragover="onDragOver(event)" ondragleave="onDragLeave(event)" ondrop="onDrop(event, false)" style="width:100%; min-height:5em;">
<?php foreach($drags as &$drag) : ?>
<img id="drag<?=$drag['id']?>" draggable="true" ondragstart="onDragStart(event)" ondragend="onDragEnd(event)" src="<?=$linker->link(array('media','index',$seminary['url'],$drag['media']['url']))?>" />
<img id="drag<?=$drag['id']?>" draggable="true" ondragstart="onDragStart(event)" ondragend="onDragEnd(event)" src="<?=$linker->link(array('media','seminary',$seminary['url'],$drag['media']['url']))?>" />
<?php endforeach ?>
</div>

View file

@ -1,8 +1,8 @@
<div style="width:<?=$field['width']?>px; height:<?=$field['height']?>px; background-image:url('<?=$linker->link(array('media','index',$seminary['url'],$field['media']['url']))?>')">
<div style="width:<?=$field['width']?>px; height:<?=$field['height']?>px; background-image:url('<?=$linker->link(array('media','seminary',$seminary['url'],$field['media']['url']))?>')">
<?php foreach($drops as &$drop) : ?>
<div id="drop<?=$drop['id']?>" style="position:absolute; width:<?=$drop['width']?>px; height:<?=$drop['height']?>px; margin:<?=$drop['top']?>px 0 0 <?=$drop['left']?>px;">
<?php if(!is_null($drop['answer'])) : ?>
<img id="drag<?=$drop['answer']['id']?>" src="<?=$linker->link(array('media','index',$seminary['url'],$drop['answer']['media']['url']))?>" />
<img id="drag<?=$drop['answer']['id']?>" src="<?=$linker->link(array('media','seminary',$seminary['url'],$drop['answer']['media']['url']))?>" />
<?php endif ?>
</div>
<?php endforeach ?>
@ -10,6 +10,6 @@
<div style="width:100%; min-height:5em;">
<?php foreach($drags as &$drag) : ?>
<img id="drag<?=$drag['id']?>" src="<?=$linker->link(array('media','index',$seminary['url'],$drag['media']['url']))?>" />
<img id="drag<?=$drag['id']?>" src="<?=$linker->link(array('media','seminary',$seminary['url'],$drag['media']['url']))?>" />
<?php endforeach ?>
</div>

0
seminarymedia/empty Normal file
View file

View file

@ -4,7 +4,7 @@
<h5><?=$quest['title']?></h5>
<?php if(!is_null($media)) : ?>
<img src="<?=$linker->link(array('media','index',$seminary['url'],$media['url']))?>" />
<img src="<?=$linker->link(array('media','seminary',$seminary['url'],$media['url']))?>" />
<?php endif ?>
<section>

View file

@ -40,9 +40,8 @@
</ul>
</div>
<div class="cportrait">
<img src="http://legende-von-zyren.de/img/avatars/Goblin7.png"><br>
<?php if(!is_null($character['avatar_url'])) : ?>
<img src="<?=$linker->link(array('media','index',$seminary['url'],$character['avatar_url']))?>" alt="<?=$character['avatar_description']?>" />
<img src="<?=$linker->link(array('media','seminary',$seminary['url'],$character['avatar_url']))?>" alt="<?=$character['avatar_description']?>" />
<?php endif ?>
</div>
</section>

View file

@ -1,6 +1,6 @@
<?php if(!is_null($picture)) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','index',$seminary['url'],$picture['url']))?>" />
<img src="<?=$linker->link(array('media','seminary',$seminary['url'],$picture['url']))?>" />
</div>
<?php endif ?>
<h1><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></h1>

View file

@ -1,6 +1,6 @@
<?php if(!is_null($questgroup['picture'])) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','index',$seminary['url'],$questgroup['picture']['url']))?>" />
<img src="<?=$linker->link(array('media','seminary',$seminary['url'],$questgroup['picture']['url']))?>" />
</div>
<?php endif ?>
<h1><a href="<?=$linker->link(array('seminaries',$seminary['url']))?>"><?=$seminary['title']?></a></h1>
@ -16,7 +16,7 @@
<div id="qtextbox">
<?php foreach($questtexts as &$questtext) : ?>
<p class="qtext cf">
<?php if(array_key_exists('media', $questtext)) : ?><img src="<?=$linker->link(array('media','index',$seminary['url'],$questtext['media']['url']))?>" /><?php endif ?>
<?php if(array_key_exists('media', $questtext)) : ?><img src="<?=$linker->link(array('media','seminary',$seminary['url'],$questtext['media']['url']))?>" /><?php endif ?>
<?=\hhu\z\Utils::t($questtext['text'])?>
</p>
<?php if(count($questtext['relatedQuestsgroups']) > 0 || !empty($questtext['abort_text'])) : ?>

View file

@ -1,6 +1,6 @@
<?php if(!is_null($media)) : ?>
<div class="moodpic">
<img src="<?=$linker->link(array('media','index',$seminary['url'],$media['url']))?>">
<img src="<?=$linker->link(array('media','index',$media['url']))?>">
</div>
<?php endif ?>
@ -13,7 +13,7 @@
<?php foreach($hierarchy['questgroups'] as &$group) : ?>
<li>
<?php if(!is_null($group['picture'])) : ?>
<img src="<?=$linker->link(array('media','index',$seminary['url'],$group['picture']['url']))?>">
<img src="<?=$linker->link(array('media','seminary',$seminary['url'],$group['picture']['url']))?>">
<?php endif ?>
<section>
<p class="fwb"><?=$hierarchy['title_singular']?> <?=$group['pos']?>: