ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilLPStatusWrapper.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 include_once 'Services/Tracking/classes/class.ilLPStatusFactory.php';
6 
19 {
20  static private $status_cache = array();
21  static private $info_cache = array();
22  static private $failed_cache = array();
23  static private $completed_cache = array();
24  static private $in_progress_cache = array();
25  static private $not_attempted_cache = array();
26 
30  function _getCountNotAttempted($a_obj_id)
31  {
32  return count(ilLPStatusWrapper::_getNotAttempted($a_obj_id));
33  }
34 
38  function _getNotAttempted($a_obj_id)
39  {
40  if(isset(self::$not_attempted_cache[$a_obj_id]))
41  {
42  return self::$not_attempted_cache[$a_obj_id];
43  }
44 
45  $class = ilLPStatusFactory::_getClassById($a_obj_id);
46  self::$not_attempted_cache[$a_obj_id] = $class::_getNotAttempted($a_obj_id);
47 
48  return self::$not_attempted_cache[$a_obj_id];
49  }
50 
54  function _getCountInProgress($a_obj_id)
55  {
56  return count(ilLPStatusWrapper::_getInProgress($a_obj_id));
57  }
58 
62  function _getInProgress($a_obj_id)
63  {
64  if(isset(self::$in_progress_cache[$a_obj_id]))
65  {
66  return self::$in_progress_cache[$a_obj_id];
67  }
68 
69  global $ilBench;
70 
71  $class = ilLPStatusFactory::_getClassById($a_obj_id);
72  self::$in_progress_cache[$a_obj_id] = $class::_getInProgress($a_obj_id);
73 
74  return self::$in_progress_cache[$a_obj_id];
75  }
76 
80  function _getCountCompleted($a_obj_id)
81  {
82  return count(ilLPStatusWrapper::_getCompleted($a_obj_id));
83  }
84 
88  function _getCompleted($a_obj_id)
89  {
90  if(isset(self::$completed_cache[$a_obj_id]))
91  {
92  return self::$completed_cache[$a_obj_id];
93  }
94  $class = ilLPStatusFactory::_getClassById($a_obj_id);
95  self::$completed_cache[$a_obj_id] = $class::_getCompleted($a_obj_id);
96 
97  return self::$completed_cache[$a_obj_id];
98  }
99 
103  function _getCountFailed($a_obj_id)
104  {
105  return count(ilLPStatusWrapper::_getFailed($a_obj_id));
106  }
107 
111  function _getFailed($a_obj_id)
112  {
113  if(isset(self::$failed_cache[$a_obj_id]))
114  {
115  return self::$failed_cache[$a_obj_id];
116  }
117 
118  $class = ilLPStatusFactory::_getClassById($a_obj_id);
119 
120  self::$failed_cache[$a_obj_id] = $class::_getFailed($a_obj_id);
121 
122  return self::$failed_cache[$a_obj_id];
123  }
124 
128  function _getStatusInfo($a_obj_id)
129  {
130  if(isset(self::$info_cache[$a_obj_id]))
131  {
132  return self::$info_cache[$a_obj_id];
133  }
134 
135  $class = ilLPStatusFactory::_getClassById($a_obj_id);
136  self::$info_cache[$a_obj_id] = $class::_getStatusInfo($a_obj_id);
137  return self::$info_cache[$a_obj_id];
138  }
139 
140  public static function _resetInfoCaches($a_obj_id)
141  {
142  unset(self::$info_cache[$a_obj_id]);
143  unset(self::$failed_cache[$a_obj_id]);
144  unset(self::$completed_cache[$a_obj_id]);
145  unset(self::$in_progress_cache[$a_obj_id]);
146  unset(self::$not_attempted_cache[$a_obj_id]);
147  }
148 
152  function _getTypicalLearningTime($a_obj_id)
153  {
154  static $cache = array();
155 
156  if(isset($cache[$a_obj_id]))
157  {
158  return $cache[$a_obj_id];
159  }
160 
161  $class = ilLPStatusFactory::_getClassById($a_obj_id);
162  $cache[$a_obj_id] = $class::_getTypicalLearningTime($a_obj_id);
163 
164  return $cache[$a_obj_id];
165  }
166 
168  // Special functions for 'objects' that have not an entry in object_data
169  // E.g. events
171 
175  function _getCountNotAttemptedByType($a_obj_id,$a_type)
176  {
177  return count(ilLPStatusWrapper::_getNotAttemptedByType($a_obj_id,$a_type));
178  }
179 
180  function _getNotAttemptedByType($a_obj_id,$a_type)
181  {
182  static $cache = array();
183 
184  if(isset($cache[$a_obj_id.'_'.$a_type]))
185  {
186  return $cache[$a_obj_id.'_'.$a_type];
187  }
188 
189  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
190  $cache[$a_obj_id.'_'.$a_type] = $class::_getNotAttempted($a_obj_id);
191 
192  return $cache[$a_obj_id.'_'.$a_type];
193  }
194 
195  function _getCountInProgressByType($a_obj_id,$a_type)
196  {
197  return count(ilLPStatusWrapper::_getInProgressByType($a_obj_id,$a_type));
198  }
199 
200  function _getInProgressByType($a_obj_id,$a_type)
201  {
202  static $cache = array();
203 
204  if(isset($cache[$a_obj_id.'_'.$a_type]))
205  {
206  return $cache[$a_obj_id.'_'.$a_type];
207  }
208 
209  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
210  $cache[$a_obj_id.'_'.$a_type] = $class::_getInProgress($a_obj_id);
211 
212  return $cache[$a_obj_id.'_'.$a_type];
213  }
214 
215  function _getCountCompletedByType($a_obj_id,$a_type)
216  {
217  return count(ilLPStatusWrapper::_getCompletedByType($a_obj_id,$a_type));
218  }
219 
220  function _getCompletedByType($a_obj_id,$a_type)
221  {
222  static $cache = array();
223 
224  if(isset($cache[$a_obj_id.'_'.$a_type]))
225  {
226  return $cache[$a_obj_id.'_'.$a_type];
227  }
228 
229  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
230  $cache[$a_obj_id.'_'.$a_type] = $class::_getCompleted($a_obj_id);
231 
232  return $cache[$a_obj_id.'_'.$a_type];
233  }
234 
235  function _getCountFailedByType($a_obj_id,$a_type)
236  {
237  return count(ilLPStatusWrapper::_getFailedByType($a_obj_id,$a_type));
238  }
239 
240  function _getFailedByType($a_obj_id,$a_type)
241  {
242  static $cache = array();
243 
244  if(isset($cache[$a_obj_id.'_'.$a_type]))
245  {
246  return $cache[$a_obj_id.'_'.$a_type];
247  }
248 
249  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
250  $cache[$a_obj_id.'_'.$a_type] = $class::_getFailed($a_obj_id);
251 
252  return $cache[$a_obj_id.'_'.$a_type];
253  }
254 
255  function _getStatusInfoByType($a_obj_id,$a_type)
256  {
257  static $cache = array();
258 
259  if(isset($cache[$a_obj_id.'_'.$a_type]))
260  {
261  return $cache[$a_obj_id.'_'.$a_type];
262  }
263 
264  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
265  $cache[$a_obj_id.'_'.$a_type] = $class::_getStatusInfo($a_obj_id);
266 
267  return $cache[$a_obj_id.'_'.$a_type];
268  }
269 
276  static function _updateStatus($a_obj_id, $a_usr_id, $a_obj = null, $a_percentage = false, $a_no_raise = false, $a_force_raise = false)
277  {
278  $trac_obj = ilLPStatusFactory::_getInstance($a_obj_id);
279  if (strtolower(get_class($trac_obj)) != "illpstatus")
280  {
281  $trac_obj->_updateStatus($a_obj_id, $a_usr_id, $a_obj, $a_percentage, $a_no_raise, $a_force_raise);
282  }
283  }
284 
290  function _setDirty($a_obj_id)
291  {
292  $trac_obj = ilLPStatusFactory::_getInstance($a_obj_id);
293  $trac_obj->_setDirty($a_obj_id);
294  }
295 
302  function _refreshStatus($a_obj_id, $a_users = null)
303  {
304  $trac_obj = ilLPStatusFactory::_getInstance($a_obj_id);
305  $trac_obj->refreshStatus($a_obj_id, $a_users);
306  }
307 
314  public static function _determineStatus($a_obj_id, $a_usr_id)
315  {
316  if (isset(self::$status_cache[$a_obj_id][$a_usr_id]))
317  {
318  return self::$status_cache[$a_obj_id][$a_usr_id];
319  }
320 
321  $trac_obj = ilLPStatusFactory::_getInstance($a_obj_id);
322  $st = $trac_obj->determineStatus($a_obj_id, $a_usr_id);
323 
324  self::$status_cache[$a_obj_id][$a_usr_id] = $st;
325 
326  return $st;
327  }
328 
329  public static function _removeStatusCache($a_obj_id, $a_usr_id)
330  {
331  unset(self::$status_cache[$a_obj_id][$a_usr_id]);
332  }
333 
341  public static function _lookupCompletedForObject($a_obj_id, $a_user_ids = null)
342  {
343  $class = ilLPStatusFactory::_getClassById($a_obj_id);
344  return $class::_lookupCompletedForObject($a_obj_id, $a_user_ids);
345  }
346 
354  public static function _lookupFailedForObject($a_obj_id, $a_user_ids = null)
355  {
356  $class = ilLPStatusFactory::_getClassById($a_obj_id);
357  return $class::_lookupFailedForObject($a_obj_id, $a_user_ids);
358  }
359 
367  public static function _lookupInProgressForObject($a_obj_id, $a_user_ids = null)
368  {
369  $class = ilLPStatusFactory::_getClassById($a_obj_id);
370  return $class::_lookupInProgressForObject($a_obj_id, $a_user_ids);
371  }
372 }
373 ?>