1) correct media for Character groups 2) implement uploading of media for Character groups 3) let members change media and motto for Character groups

This commit is contained in:
coderkun 2014-05-06 18:04:29 +02:00
commit 6318c61bcd
10 changed files with 245 additions and 25 deletions

View file

@ -211,7 +211,7 @@
// Get and return Character groups
return $this->db->query(
'SELECT id, name, url, xps, motto, seminaryupload_id '.
'SELECT id, name, url, xps, motto, charactergroupsmedia_id '.
'FROM v_charactergroups '.
'WHERE charactergroupsgroup_id = ? '.
"ORDER BY $sortorder",
@ -230,7 +230,7 @@
public function getGroupsForCharacter($characterId)
{
return $this->db->query(
'SELECT charactergroups.id, charactergroups.charactergroupsgroup_id, charactergroups.name, charactergroups.url, charactergroups.seminaryupload_id, charactergroups.xps, charactergroupsgroups.id AS charactergroupsgroup_id, charactergroupsgroups.name AS charactergroupsgroup_name, charactergroupsgroups.url AS charactergroupsgroup_url '.
'SELECT charactergroups.id, charactergroups.charactergroupsgroup_id, charactergroups.name, charactergroups.url, charactergroups.charactergroupsmedia_id, charactergroups.xps, charactergroupsgroups.id AS charactergroupsgroup_id, charactergroupsgroups.name AS charactergroupsgroup_name, charactergroupsgroups.url AS charactergroupsgroup_url '.
'FROM characters_charactergroups '.
'LEFT JOIN v_charactergroups AS charactergroups ON charactergroups.id = characters_charactergroups.charactergroup_id '.
'LEFT JOIN charactergroupsgroups ON charactergroupsgroups.id = charactergroups.charactergroupsgroup_id '.
@ -252,7 +252,7 @@
public function getGroupByUrl($groupsgroupId, $groupUrl)
{
$data = $this->db->query(
'SELECT id, name, url, xps, motto, seminaryupload_id '.
'SELECT id, name, url, xps, motto, charactergroupsmedia_id '.
'FROM v_charactergroups '.
'WHERE charactergroupsgroup_id = ? AND url = ?',
'is',
@ -277,7 +277,7 @@
public function getGroupById($groupId)
{
$data = $this->db->query(
'SELECT id, name, url, xps, motto, seminaryupload_id '.
'SELECT id, name, url, xps, motto, charactergroupsmedia_id '.
'FROM v_charactergroups '.
'WHERE id = ?',
'i',
@ -371,6 +371,25 @@
}
/**
* Set the media for a Character group.
*
* @param int $groupId ID of Character group to set media for
* @param int $mediaId ID of Character groups media
*/
public function setMediaForGroup($groupId, $mediaId)
{
$this->db->query(
'UPDATE charactergroups '.
'SET charactergroupsmedia_id = ? '.
'WHERE id = ?',
'ii',
$mediaId,
$groupId
);
}
/**
* Edit a Character group.
*

View file

@ -190,6 +190,88 @@
return $uploadId;
}
/**
* Create a new Character groups media by creating a new Seminarymedia and
* adding it to the list of media for Character groups.
*
* @param int $userId
* @param int $seminaryId
* @param string $filename
* @param string $description
* @param string $mimetype
* @param string $tmpFilename
* @return
*/
public function createCharactergroupMedia($userId, $seminaryId, $filename, $description, $mimetype, $tmpFilename)
{
$mediaId = false;
$this->db->setAutocommit(false);
try {
// Check for existing database record
$data = $this->db->query(
'SELECT id '.
'FROM seminarymedia '.
'WHERE url = ?',
's',
\nre\core\Linker::createLinkParam($filename)
);
if(!empty($data)) {
$mediaId = $data[0]['id'];
}
// Create database record
if($mediaId === false)
{
$this->db->query(
'INSERT INTO seminarymedia '.
'(created_user_id, seminary_id, name, url, description, mimetype) '.
'VALUES '.
'(?, ? ,? ,?, ?, ?)',
'iissss',
$userId,
$seminaryId,
$filename,
\nre\core\Linker::createLinkParam($filename),
$description,
$mimetype
);
$mediaId = $this->db->getInsertId();
}
// Add media to Character groups media
$this->db->query(
'INSERT INTO charactergroupsmedia '.
'(seminarymedia_id, created_user_id) '.
'VALUES '.
'(?, ?) '.
'ON DUPLICATE KEY UPDATE '.
'created_user_id = ?',
'iii',
$mediaId,
$userId,
$userId
);
// Create filename
$filename = ROOT.DS.'seminarymedia'.DS.$mediaId;
if(!move_uploaded_file($tmpFilename, $filename))
{
$this->db->rollback();
$mediaId = false;
}
}
catch(\nre\exceptions\DatamodelException $e) {
$this->db->rollback();
$this->db->setAutocommit(true);
}
$this->db->setAutocommit(true);
return $mediaId;
}
}
?>