ILIAS  Release_4_1_x_branch Revision 61804
 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.ilLPObjSettings.php';
6 include_once 'Services/Tracking/classes/class.ilLPStatusFactory.php';
7 
20 {
21  static private $status_cache = array();
22 
23 
27  function _getCountNotAttempted($a_obj_id)
28  {
29  return count(ilLPStatusWrapper::_getNotAttempted($a_obj_id));
30  }
31 
35  function _getNotAttempted($a_obj_id)
36  {
37  static $cache = array();
38 
39  if(isset($cache[$a_obj_id]))
40  {
41  return $cache[$a_obj_id];
42  }
43 
44  $class = ilLPStatusFactory::_getClassById($a_obj_id);
45  $cache[$a_obj_id] = call_user_func(array($class,'_getNotAttempted'),$a_obj_id);
46 
47  return $cache[$a_obj_id];
48  }
49 
53  function _getCountInProgress($a_obj_id)
54  {
55  return count(ilLPStatusWrapper::_getInProgress($a_obj_id));
56  }
57 
61  function _getInProgress($a_obj_id)
62  {
63  static $cache = array();
64 
65  if(isset($cache[$a_obj_id]))
66  {
67  return $cache[$a_obj_id];
68  }
69 
70  global $ilBench;
71 
72  $class = ilLPStatusFactory::_getClassById($a_obj_id);
73 
74  $cache[$a_obj_id] = call_user_func($tmp = array($class,'_getInProgress'),$a_obj_id);
75 
76  return $cache[$a_obj_id];
77  }
78 
82  function _getCountCompleted($a_obj_id)
83  {
84  return count(ilLPStatusWrapper::_getCompleted($a_obj_id));
85  }
86 
90  function _getCompleted($a_obj_id)
91  {
92  static $cache = array();
93 
94  if(isset($cache[$a_obj_id]))
95  {
96  return $cache[$a_obj_id];
97  }
98  $class = ilLPStatusFactory::_getClassById($a_obj_id);
99  $cache[$a_obj_id] = call_user_func(array($class,'_getCompleted'),$a_obj_id);
100 
101  return $cache[$a_obj_id];
102  }
103 
107  function _getCountFailed($a_obj_id)
108  {
109  return count(ilLPStatusWrapper::_getFailed($a_obj_id));
110  }
111 
115  function _getFailed($a_obj_id)
116  {
117  static $cache = array();
118 
119  if(isset($cache[$a_obj_id]))
120  {
121  return $cache[$a_obj_id];
122  }
123 
124  $class = ilLPStatusFactory::_getClassById($a_obj_id);
125 
126  $cache[$a_obj_id] = call_user_func(array($class,'_getFailed'),$a_obj_id);
127 
128  return $cache[$a_obj_id];
129  }
130 
134  function _getStatusInfo($a_obj_id)
135  {
136  static $cache = array();
137 
138  if(isset($cache[$a_obj_id]))
139  {
140  return $cache[$a_obj_id];
141  }
142 
143  $class = ilLPStatusFactory::_getClassById($a_obj_id);
144  $cache[$a_obj_id] = call_user_func(array($class,'_getStatusInfo'),$a_obj_id);
145  return $cache[$a_obj_id];
146  }
147 
151  function _getTypicalLearningTime($a_obj_id)
152  {
153  static $cache = array();
154 
155  if(isset($cache[$a_obj_id]))
156  {
157  return $cache[$a_obj_id];
158  }
159 
160  $class = ilLPStatusFactory::_getClassById($a_obj_id);
161 
162  $cache[$a_obj_id] = call_user_func(array($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  function _getNotAttemptedByType($a_obj_id,$a_type)
180  {
181  static $cache = array();
182 
183  if(isset($cache[$a_obj_id.'_'.$a_type]))
184  {
185  return $cache[$a_obj_id.'_'.$a_type];
186  }
187 
188  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
189 
190  $cache[$a_obj_id.'_'.$a_type] = call_user_func(array($class,'_getNotAttempted'),$a_obj_id);
191 
192  return $cache[$a_obj_id.'_'.$a_type];
193  }
194  function _getCountInProgressByType($a_obj_id,$a_type)
195  {
196  return count(ilLPStatusWrapper::_getInProgressByType($a_obj_id,$a_type));
197  }
198  function _getInProgressByType($a_obj_id,$a_type)
199  {
200  static $cache = array();
201 
202  if(isset($cache[$a_obj_id.'_'.$a_type]))
203  {
204  return $cache[$a_obj_id.'_'.$a_type];
205  }
206 
207  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
208 
209  $cache[$a_obj_id.'_'.$a_type] = call_user_func(array($class,'_getInProgress'),$a_obj_id);
210 
211  return $cache[$a_obj_id.'_'.$a_type];
212  }
213  function _getCountCompletedByType($a_obj_id,$a_type)
214  {
215  return count(ilLPStatusWrapper::_getCompletedByType($a_obj_id,$a_type));
216  }
217  function _getCompletedByType($a_obj_id,$a_type)
218  {
219  static $cache = array();
220 
221  if(isset($cache[$a_obj_id.'_'.$a_type]))
222  {
223  return $cache[$a_obj_id.'_'.$a_type];
224  }
225 
226  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
227  $cache[$a_obj_id.'_'.$a_type] = call_user_func(array($class,'_getCompleted'),$a_obj_id);
228  return $cache[$a_obj_id.'_'.$a_type];
229  }
230  function _getCountFailedByType($a_obj_id,$a_type)
231  {
232  return count(ilLPStatusWrapper::_getFailedByType($a_obj_id,$a_type));
233  }
234  function _getFailedByType($a_obj_id,$a_type)
235  {
236  static $cache = array();
237 
238  if(isset($cache[$a_obj_id.'_'.$a_type]))
239  {
240  return $cache[$a_obj_id.'_'.$a_type];
241  }
242 
243  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
244  $cache[$a_obj_id.'_'.$a_type] = call_user_func(array($class,'_getFailed'),$a_obj_id);
245  return $cache[$a_obj_id.'_'.$a_type];
246  }
247  function _getStatusInfoByType($a_obj_id,$a_type)
248  {
249  static $cache = array();
250 
251  if(isset($cache[$a_obj_id.'_'.$a_type]))
252  {
253  return $cache[$a_obj_id.'_'.$a_type];
254  }
255 
256  $class = ilLPStatusFactory::_getClassByIdAndType($a_obj_id,$a_type);
257 
258  $cache[$a_obj_id.'_'.$a_type] = call_user_func(array($class,'_getStatusInfo'),$a_obj_id);
259 
260  return $cache[$a_obj_id.'_'.$a_type];
261  }
262 
269  static function _updateStatus($a_obj_id, $a_usr_id, $a_obj = null, $a_percentage = false)
270  {
271  $class = ilLPStatusFactory::_getClassById($a_obj_id);
272 
273  if (strtolower($class) != "illpstatus")
274  {
275  $trac_obj = new $class($a_obj_id);
276  $trac_obj->_updateStatus($a_obj_id, $a_usr_id, $a_obj, $a_percentage);
277  }
278  }
279 
285  function _setDirty($a_obj_id)
286  {
287  $class = ilLPStatusFactory::_getClassById($a_obj_id);
288  $trac_obj = new $class($a_obj_id);
289  $trac_obj->_setDirty($a_obj_id);
290  }
291 
298  function _refreshStatus($a_obj_id, $a_users = null)
299  {
300  $class = ilLPStatusFactory::_getClassById($a_obj_id);
301  $trac_obj = new $class($a_obj_id);
302  $trac_obj->refreshStatus($a_obj_id, $a_users);
303  }
304 
311  static function _determineStatus($a_obj_id, $a_usr_id)
312  {
313  if (isset(self::$status_cache[$a_obj_id][$a_usr_id]))
314  {
315  return self::$status_cache[$a_obj_id][$a_usr_id];
316  }
317 
318  $class = ilLPStatusFactory::_getClassById($a_obj_id);
319  $trac_obj = new $class($a_obj_id);
320 
321  $st = $trac_obj->determineStatus($a_obj_id, $a_usr_id);
322 
323  self::$status_cache[$a_obj_id][$a_usr_id] = $st;
324 
325  return $st;
326  }
327 
328  public static function _removeStatusCache($a_obj_id, $a_usr_id)
329  {
330  unset(self::$status_cache[$a_obj_id][$a_usr_id]);
331  }
332 }
333 ?>