questlab/models/QuestgrouptextsModel.inc

162 lines
4.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Questlab
*
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
* @copyright 2014 2016 Heinrich-Heine-Universität Düsseldorf
* @license http://www.gnu.org/licenses/gpl.html
* @link https://github.com/coderkun/questlab
*/
namespace hhu\z\models;
/**
* Model to interact with Questgrouptexts-table.
*
* @author Oliver Hanraths <oliver.hanraths@uni-duesseldorf.de>
*/
class QuestgrouptextsModel extends \hhu\z\Model
{
/**
* Construct a new QuestgrouptextsModel.
*/
public function __construct()
{
parent::__construct();
}
/**
* Get texts of a Questgroup.
*
* @param int $questgroupId ID of a Questgroup
* @return array Texts of this Questgroup
*/
public function getQuestgroupTexts($questgroupId)
{
return $this->db->query(
'SELECT id, pos, text, questgroup_id '.
'FROM questgrouptexts '.
'WHERE questgroup_id = ? '.
'ORDER BY pos ASC',
'i',
$questgroupId
);
}
/**
* Add a Questgroup text to a Questgroup.
*
* @param int $userId ID of user
* @param int $questgroupId ID of Questgroup to add text to
* @param string $text Text to add
*/
public function addQuestgrouptextToQuestgroup($userId, $questgroupId, $text)
{
// Get position
$pos = $this->db->query(
'SELECT COALESCE(MAX(pos),0)+1 AS pos '.
'FROM questgrouptexts '.
'WHERE questgroup_id = ?',
'i',
$questgroupId
);
$pos = $pos[0]['pos'];
// Add Questgroup text
$this->db->query(
'INSERT INTO questgrouptexts '.
'(created_user_id, questgroup_id, pos, text) '.
'VALUES '.
'(?, ?, ?, ?)',
'iiis',
$userId, $questgroupId, $pos, $text
);
}
/**
* Edit a Questgroup text.
*
* @param int $questgrouptextId ID of Questgroup text to edit
* @param string $text New text
*/
public function editQuestgrouptext($questgrouptextId, $text)
{
$this->db->query(
'UPDATE questgrouptexts '.
'SET text = ? '.
'WHERE id = ?',
'si',
$text,
$questgrouptextId
);
}
/**
* Copy Questgroup texts from one Questgroup to another.
*
* @param $userId ID of copying user
* @param $sourceQuestgroupId ID of source Questgroup
* @param $targetQuestgroupId ID of target Questgroup
*/
public function copyQuestgrouptexts($userId, $sourceQuestgroupId, $targetQuestgroupId)
{
$this->db->query(
'INSERT INTO questgrouptexts '.
'(created_user_id, questgroup_id, pos, text) '.
'SELECT ?, ?, pos, text '.
'FROM questgrouptexts '.
'WHERE questgroup_id = ?',
'iii',
$userId, $targetQuestgroupId,
$sourceQuestgroupId
);
}
/**
* Delete a Questgroup text.
*
* @param array $questgrouptext Data of Questgroup text to delete
*/
public function deleteQuestgrouptext($questgrouptext)
{
// Delete Questgroup text
$this->db->query('DELETE FROM questgrouptexts WHERE id = ?', 'i', $questgrouptext['id']);
// Adjust positions
$this->db->query(
'UPDATE questgrouptexts '.
'SET pos = pos - 1 '.
'WHERE questgroup_id = ? AND pos > ?',
'ii',
$questgrouptext['questgroup_id'],
$questgrouptext['pos']
);
}
/**
* Delete all Questgroup texts of a Questgroup.
*
* @param int $questgroupId ID of Questgroup to delete texts of
*/
public function deleteQuestgrouptexts($questgroupId)
{
$this->db->query('DELETE FROM questgrouptexts WHERE questgroup_id = ?', 'i', $questgroupId);
}
}
?>