1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4
5/**
6 * @author		Björn Heyser <bheyser@databay.de>
7 * @version		$Id$
8 *
9 * @package     Modules/Test
10 */
11class ilTestSkillLevelThreshold
12{
13    /**
14     * @var ilDBInterface
15     */
16    private $db;
17
18    /**
19     * @var integer
20     */
21    private $testId;
22
23    /**
24     * @var integer
25     */
26    private $skillBaseId;
27
28    /**
29     * @var integer
30     */
31    private $skillTrefId;
32
33    /**
34     * @var integer
35     */
36    private $skillLevelId;
37
38    /**
39     * @var integer
40     */
41    private $threshold;
42
43    public function __construct(ilDBInterface $db)
44    {
45        $this->db = $db;
46    }
47
48    public function loadFromDb()
49    {
50        $query = "
51			SELECT test_fi, skill_base_fi, skill_tref_fi, skill_level_fi, threshold
52			FROM tst_skl_thresholds
53			WHERE test_fi = %s
54			AND skill_base_fi = %s
55			AND skill_tref_fi = %s
56			AND skill_level_fi = %s
57		";
58
59        $res = $this->db->queryF(
60            $query,
61            array('integer', 'integer', 'integer', 'integer'),
62            array($this->getTestId(), $this->getSkillBaseId(), $this->getSkillTrefId(), $this->getSkillLevelId())
63        );
64
65        $row = $this->db->fetchAssoc($res);
66
67        if (is_array($row)) {
68            $this->setThreshold($row['threshold']);
69        }
70    }
71
72    public function saveToDb()
73    {
74        if ($this->dbRecordExists()) {
75            $this->db->update(
76                'tst_skl_thresholds',
77                array(
78                    'threshold' => array('integer', $this->getThreshold())
79                ),
80                array(
81                    'test_fi' => array('integer', $this->getTestId()),
82                    'skill_base_fi' => array('integer', $this->getSkillBaseId()),
83                    'skill_tref_fi' => array('integer', $this->getSkillTrefId()),
84                    'skill_level_fi' => array('integer', $this->getSkillLevelId())
85                )
86            );
87        } else {
88            $this->db->insert('tst_skl_thresholds', array(
89                'test_fi' => array('integer', $this->getTestId()),
90                'skill_base_fi' => array('integer', $this->getSkillBaseId()),
91                'skill_tref_fi' => array('integer', $this->getSkillTrefId()),
92                'skill_level_fi' => array('integer', $this->getSkillLevelId()),
93                'threshold' => array('integer', $this->getThreshold())
94            ));
95        }
96    }
97
98    public function deleteFromDb()
99    {
100        $query = "
101			DELETE FROM tst_skl_thresholds
102			WHERE test_fi = %s
103			AND skill_base_fi = %s
104			AND skill_tref_fi = %s
105			AND skill_level_fi = %s
106		";
107
108        $this->db->manipulateF(
109            $query,
110            array('integer', 'integer', 'integer', 'integer'),
111            array($this->getTestId(), $this->getSkillBaseId(), $this->getSkillTrefId(), $this->getSkillLevelId())
112        );
113    }
114
115    public function dbRecordExists()
116    {
117        $query = "
118			SELECT COUNT(*) cnt
119			FROM tst_skl_thresholds
120			WHERE test_fi = %s
121			AND skill_base_fi = %s
122			AND skill_tref_fi = %s
123			AND skill_level_fi = %s
124		";
125
126        $res = $this->db->queryF(
127            $query,
128            array('integer', 'integer', 'integer', 'integer'),
129            array($this->getTestId(), $this->getSkillBaseId(), $this->getSkillTrefId(), $this->getSkillLevelId())
130        );
131
132        $row = $this->db->fetchAssoc($res);
133
134        return $row['cnt'] > 0;
135    }
136
137    /**
138     * @param int $testId
139     */
140    public function setTestId($testId)
141    {
142        $this->testId = $testId;
143    }
144
145    /**
146     * @return int
147     */
148    public function getTestId()
149    {
150        return $this->testId;
151    }
152
153    /**
154     * @param int $skillBaseId
155     */
156    public function setSkillBaseId($skillBaseId)
157    {
158        $this->skillBaseId = $skillBaseId;
159    }
160
161    /**
162     * @return int
163     */
164    public function getSkillBaseId()
165    {
166        return $this->skillBaseId;
167    }
168
169    /**
170     * @param int $skillTrefId
171     */
172    public function setSkillTrefId($skillTrefId)
173    {
174        $this->skillTrefId = $skillTrefId;
175    }
176
177    /**
178     * @return int
179     */
180    public function getSkillTrefId()
181    {
182        return $this->skillTrefId;
183    }
184
185    /**
186     * @param int $skillLevelId
187     */
188    public function setSkillLevelId($skillLevelId)
189    {
190        $this->skillLevelId = $skillLevelId;
191    }
192
193    /**
194     * @return int
195     */
196    public function getSkillLevelId()
197    {
198        return $this->skillLevelId;
199    }
200
201    /**
202     * @param int $threshold
203     */
204    public function setThreshold($threshold)
205    {
206        $this->threshold = $threshold;
207    }
208
209    /**
210     * @return int
211     */
212    public function getThreshold()
213    {
214        return $this->threshold;
215    }
216}
217