ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilLPObjSettings.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
15{
16 public $db = null;
17
18 public $obj_id = null;
19 public $obj_type = null;
20 public $obj_mode = null;
21 public $visits = null;
22
23 public $is_stored = false;
24
26 const LP_MODE_TLT = 1;
27 const LP_MODE_VISITS = 2;
28 const LP_MODE_MANUAL = 3;
31 const LP_MODE_SCORM = 6;
35 const LP_MODE_EVENT = 10;
39 const LP_MODE_PLUGIN = 14;
49
50 const LP_DEFAULT_VISITS = 30; // ???
51
52 protected static $map = array(
53
54 self::LP_MODE_DEACTIVATED => array('ilLPStatus',
55 'trac_mode_deactivated', 'trac_mode_deactivated_info_new')
56
57 ,self::LP_MODE_TLT => array('ilLPStatusTypicalLearningTime',
58 'trac_mode_tlt', 'trac_mode_tlt_info') // info has dynamic part!
59
60 ,self::LP_MODE_VISITS => array('ilLPStatusVisits',
61 'trac_mode_visits', 'trac_mode_visits_info')
62
63 ,self::LP_MODE_MANUAL => array('ilLPStatusManual',
64 'trac_mode_manual', 'trac_mode_manual_info')
65
66 ,self::LP_MODE_OBJECTIVES => array('ilLPStatusObjectives',
67 'trac_mode_objectives', 'trac_mode_objectives_info')
68
69 ,self::LP_MODE_COLLECTION => array('ilLPStatusCollection',
70 'trac_mode_collection', 'trac_mode_collection_info')
71
72 ,self::LP_MODE_SCORM => array('ilLPStatusSCORM',
73 'trac_mode_scorm', 'trac_mode_scorm_info')
74
75 ,self::LP_MODE_TEST_FINISHED => array('ilLPStatusTestFinished',
76 'trac_mode_test_finished', 'trac_mode_test_finished_info')
77
78 ,self::LP_MODE_TEST_PASSED => array('ilLPStatusTestPassed',
79 'trac_mode_test_passed', 'trac_mode_test_passed_info')
80
81 ,self::LP_MODE_EXERCISE_RETURNED => array('ilLPStatusExerciseReturned',
82 'trac_mode_exercise_returned', 'trac_mode_exercise_returned_info')
83
84 ,self::LP_MODE_EVENT => array('ilLPStatusEvent',
85 'trac_mode_event', 'trac_mode_event_info')
86
87 ,self::LP_MODE_MANUAL_BY_TUTOR => array('ilLPStatusManualByTutor',
88 'trac_mode_manual_by_tutor', 'trac_mode_manual_by_tutor_info')
89
90 ,self::LP_MODE_SCORM_PACKAGE => array('ilLPStatusSCORMPackage',
91 'trac_mode_scorm_package', 'trac_mode_scorm_package_info')
92
93 ,self::LP_MODE_UNDEFINED => null
94
95 ,self::LP_MODE_PLUGIN => array('ilLPStatusPlugin',
96 'trac_mode_plugin', '') // no settings screen, so no info needed
97
98 ,self::LP_MODE_COLLECTION_TLT => array('ilLPStatusCollectionTLT',
99 'trac_mode_collection_tlt', 'trac_mode_collection_tlt_info')
100
101 ,self::LP_MODE_COLLECTION_MANUAL => array('ilLPStatusCollectionManual',
102 'trac_mode_collection_manual', 'trac_mode_collection_manual_info')
103
104 ,self::LP_MODE_QUESTIONS => array('ilLPStatusQuestions',
105 'trac_mode_questions', 'trac_mode_questions_info')
106
107 ,self::LP_MODE_SURVEY_FINISHED => array('ilLPStatusSurveyFinished',
108 'trac_mode_survey_finished', 'trac_mode_survey_finished_info')
109
110 ,self::LP_MODE_VISITED_PAGES => array('ilLPStatusVisitedPages',
111 'trac_mode_visited_pages', 'trac_mode_visited_pages_info')
112
113 ,self::LP_MODE_DOWNLOADED => array('ilLPStatusDownloaded',
114 'trac_mode_downloaded', 'trac_mode_downloaded_info')
115
116 ,self::LP_MODE_COLLECTION_MOBS => array('ilLPStatusCollectionMobs',
117 'trac_mode_collection_mobs', 'trac_mode_collection_mobs_info')
118
119 ,self::LP_MODE_STUDY_PROGRAMME => array('ilLPStatusStudyProgramme',
120 'trac_mode_study_programme', '')
121
122 ,self::LP_MODE_INDIVIDUAL_ASSESSMENT => array('ilLPStatusIndividualAssessment',
123 'trac_mode_individual_assessment', 'trac_mode_individual_assessment_info')
124 );
125
126 public function __construct($a_obj_id)
127 {
128 global $ilObjDataCache, $ilDB;
129
130 $this->db = $ilDB;
131 $this->obj_id = $a_obj_id;
132
133 if (!$this->__read()) {
134 $this->obj_type = $ilObjDataCache->lookupType($this->obj_id);
135
136 include_once "Services/Object/classes/class.ilObjectLP.php";
137 $olp = ilObjectLP::getInstance($this->obj_id);
138 $this->obj_mode = $olp->getDefaultMode();
139 }
140 }
141
149 public function cloneSettings($a_new_obj_id)
150 {
151 global $ilDB;
152
153 $query = "INSERT INTO ut_lp_settings (obj_id,obj_type,u_mode,visits) " .
154 "VALUES( " .
155 $this->db->quote($a_new_obj_id, 'integer') . ", " .
156 $this->db->quote($this->getObjType(), 'text') . ", " .
157 $this->db->quote($this->getMode(), 'integer') . ", " .
158 $this->db->quote($this->getVisits(), 'integer') .
159 ")";
160 $res = $ilDB->manipulate($query);
161 return true;
162 }
163
164 public function getVisits()
165 {
166 return (int) $this->visits ? $this->visits : self::LP_DEFAULT_VISITS;
167 }
168
169 public function setVisits($a_visits)
170 {
171 $this->visits = $a_visits;
172 }
173
174 public function setMode($a_mode)
175 {
176 $this->obj_mode = $a_mode;
177 }
178
179 public function getMode()
180 {
181 return $this->obj_mode;
182 }
183
184 public function getObjId()
185 {
186 return (int) $this->obj_id;
187 }
188
189 public function getObjType()
190 {
191 return $this->obj_type;
192 }
193
194 public function __read()
195 {
196 $res = $this->db->query("SELECT * FROM ut_lp_settings WHERE obj_id = " .
197 $this->db->quote($this->obj_id, 'integer'));
198 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
199 $this->is_stored = true;
200 $this->obj_type = $row->obj_type;
201 $this->obj_mode = $row->u_mode;
202 $this->visits = $row->visits;
203
204 return true;
205 }
206
207 return false;
208 }
209
210 public function update($a_refresh_lp = true)
211 {
212 global $ilDB;
213
214 if (!$this->is_stored) {
215 return $this->insert();
216 }
217 $query = "UPDATE ut_lp_settings SET u_mode = " . $ilDB->quote($this->getMode(), 'integer') . ", " .
218 "visits = " . $ilDB->quote($this->getVisits(), 'integer') . " " .
219 "WHERE obj_id = " . $ilDB->quote($this->getObjId(), 'integer');
220 $res = $ilDB->manipulate($query);
221 $this->__read();
222
223 if ($a_refresh_lp) {
224 $this->doLPRefresh();
225 }
226
227 return true;
228 }
229
230 public function insert()
231 {
232 global $ilDB,$ilLog;
233
234 $ilLog->logStack();
235
236 $query = "INSERT INTO ut_lp_settings (obj_id,obj_type,u_mode,visits) " .
237 "VALUES(" .
238 $ilDB->quote($this->getObjId(), 'integer') . ", " .
239 $ilDB->quote($this->getObjType(), 'text') . ", " .
240 $ilDB->quote($this->getMode(), 'integer') . ", " .
241 $ilDB->quote($this->getVisits(), 'integer') . // #12482
242 ")";
243 $res = $ilDB->manipulate($query);
244 $this->__read();
245
246 $this->doLPRefresh();
247
248 return true;
249 }
250
251 protected function doLPRefresh()
252 {
253 // refresh learning progress
254 include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
256 }
257
258 public static function _delete($a_obj_id)
259 {
260 global $ilDB;
261
262 $query = "DELETE FROM ut_lp_settings WHERE obj_id = " . $ilDB->quote($a_obj_id, 'integer');
263 $res = $ilDB->manipulate($query);
264
265 return true;
266 }
267
268
269 // Static
270
271 public static function _lookupVisits($a_obj_id)
272 {
273 global $ilDB;
274
275 $query = "SELECT visits FROM ut_lp_settings " .
276 "WHERE obj_id = " . $ilDB->quote($a_obj_id, 'integer');
277
278 $res = $ilDB->query($query);
279 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
280 return $row->visits;
281 }
283 }
284
285 public static function _lookupDBModeForObjects(array $a_obj_ids)
286 {
287 global $ilDB;
288
289 // this does NOT handle default mode!
290
291 $res = array();
292
293 $query = "SELECT obj_id, u_mode FROM ut_lp_settings" .
294 " WHERE " . $ilDB->in("obj_id", $a_obj_ids, "", "integer");
295 $set = $ilDB->query($query);
296 while ($row = $set->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
297 $res[$row->obj_id] = $row->u_mode;
298 }
299
300 return $res;
301 }
302
303 public static function _lookupDBMode($a_obj_id)
304 {
305 global $ilDB;
306
307 // this does NOT handle default mode!
308
309 $query = "SELECT u_mode FROM ut_lp_settings" .
310 " WHERE obj_id = " . $ilDB->quote($a_obj_id, "integer");
311 $set = $ilDB->query($query);
312 $row = $ilDB->fetchAssoc($set);
313 if (is_array($row)) {
314 return $row['u_mode'];
315 }
316 }
317
318 public static function _mode2Text($a_mode)
319 {
320 global $lng;
321
322 if (array_key_exists($a_mode, self::$map) &&
323 is_array(self::$map[$a_mode])) {
324 return $lng->txt(self::$map[$a_mode][1]);
325 }
326 }
327
328 public static function _mode2InfoText($a_mode)
329 {
330 global $lng;
331
332 if (array_key_exists($a_mode, self::$map) &&
333 is_array(self::$map[$a_mode])) {
334 $info = $lng->txt(self::$map[$a_mode][2]);
335
336 if ($a_mode == self::LP_MODE_TLT) {
337 // dynamic content
338 include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
340 }
341
342 return $info;
343 }
344 }
345
346 public static function getClassMap()
347 {
348 $res = array();
349 foreach (self::$map as $mode => $item) {
350 $res[$mode] = $item[0];
351 }
352 return $res;
353 }
354
355 public static function _deleteByObjId($a_obj_id)
356 {
357 global $ilDB;
358
359 // we are only removing settings for now
360 // invalid ut_lp_collections-entries are filtered
361 // ut_lp_marks is deemed private user data
362
363 $ilDB->manipulate("DELETE FROM ut_lp_settings" .
364 " WHERE obj_id = " . $ilDB->quote($a_obj_id, "integer"));
365 }
366}
sprintf('%.4f', $callTime)
An exception for terminatinating execution or to throw for unit testing.
update($a_refresh_lp=true)
cloneSettings($a_new_obj_id)
Clone settings.
static _lookupVisits($a_obj_id)
static _deleteByObjId($a_obj_id)
static _mode2Text($a_mode)
static _lookupDBMode($a_obj_id)
static _delete($a_obj_id)
static _lookupDBModeForObjects(array $a_obj_ids)
static _mode2InfoText($a_mode)
static _refreshStatus($a_obj_id, $a_users=null)
Set dirty.
static getInstance($a_obj_id)
$info
Definition: index.php:5
global $lng
Definition: privfeed.php:17
$query
foreach($_POST as $key=> $value) $res
global $ilDB