ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilScormMailTemplateLPContext.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once './Services/Mail/classes/class.ilMailTemplateContext.php';
5 
13 {
14  const ID = 'sahs_context_lp';
15 
19  public function getId()
20  {
21  return self::ID;
22  }
23 
27  public function getTitle()
28  {
29  global $lng;
30 
31  $lng->loadLanguageModule('sahs');
32 
33  return $lng->txt('sahs_mail_context_lp');
34  }
35 
39  public function getDescription()
40  {
41  global $lng;
42 
43  $lng->loadLanguageModule('sahs');
44 
45  return $lng->txt('sahs_mail_context_lp_info');
46  }
47 
52  public function getSpecificPlaceholders()
53  {
57  global $lng;
58 
59  $lng->loadLanguageModule('trac');
60 
61  // tracking settings
62  include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
63  $tracking = new ilObjUserTracking();
64 
65 
66  $placeholders = array();
67 
68 
69  $placeholders['sahs_title'] = array(
70  'placeholder' => 'SCORM_TITLE',
71  'label' => $lng->txt('obj_sahs')
72  );
73 
74  $placeholders['sahs_status'] = array(
75  'placeholder' => 'SCORM_STATUS',
76  'label' => $lng->txt('trac_status')
77  );
78 
79  $placeholders['sahs_mark'] = array(
80  'placeholder' => 'SCORM_MARK',
81  'label' => $lng->txt('trac_mark')
82  );
83 
84  // #17969
85  $lng->loadLanguageModule('content');
86  $placeholders['sahs_score'] = array(
87  'placeholder' => 'SCORM_SCORE',
88  'label' => $lng->txt('cont_score')
89  );
90 
91  if($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_SPENT_SECONDS))
92  {
93  $placeholders['sahs_time_spent'] = array(
94  'placeholder' => 'SCORM_TIME_SPENT',
95  'label' => $lng->txt('trac_spent_seconds')
96  );
97  }
98 
99  if($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_LAST_ACCESS))
100  {
101  $placeholders['sahs_first_access'] = array(
102  'placeholder' => 'SCORM_FIRST_ACCESS',
103  'label' => $lng->txt('trac_first_access')
104  );
105 
106  $placeholders['sahs_last_access'] = array(
107  'placeholder' => 'SCORM_LAST_ACCESS',
108  'label' => $lng->txt('trac_last_access')
109  );
110  }
111 
112 
113  $placeholders['sahs_link'] = array(
114  'placeholder' => 'SCORM_LINK',
115  'label' => $lng->txt('perma_link')
116  );
117 
118  return $placeholders;
119  }
120 
124  public function resolveSpecificPlaceholder($placeholder_id, array $context_parameters, ilObjUser $recipient = null, $html_markup = false)
125  {
129  global $ilObjDataCache;
130 
131  if($recipient === null && !in_array($placeholder_id, array('sahs_title', 'sahs_link')))
132  {
133  return '';
134  }
135 
136  $obj_id = $ilObjDataCache->lookupObjId($context_parameters['ref_id']);
137 
138  include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
139  $tracking = new ilObjUserTracking();
140 
141  switch($placeholder_id)
142  {
143  case 'sahs_title':
144  return $ilObjDataCache->lookupTitle($obj_id);
145 
146  case 'sahs_link':
147  require_once './Services/Link/classes/class.ilLink.php';
148  return ilLink::_getLink($context_parameters['ref_id'], 'sahs');
149 
150  case 'sahs_status':
151  include_once './Services/Tracking/classes/class.ilLPStatus.php';
152  include_once './Services/Tracking/classes/class.ilLearningProgressBaseGUI.php';
153  $status = ilLPStatus::_lookupStatus($obj_id, $recipient->getId());
154  if(!$status)
155  {
157  }
158  return ilLearningProgressBaseGUI::_getStatusText($status, $this->getLanguage());
159 
160  case 'sahs_mark':
161  include_once './Services/Tracking/classes/class.ilLPMarks.php';
162  $mark = ilLPMarks::_lookupMark($recipient->getId(), $obj_id);
163  return strlen(trim($mark)) ? $mark : '-';
164 
165  case 'sahs_score':
166  $scores = array();
167  $obj_id = ilObject::_lookupObjId($context_parameters['ref_id']);
168  include_once 'Modules/ScormAicc/classes/class.ilScormLP.php';
169  $coll = ilScormLP::getInstance($obj_id)->getCollectionInstance();
170  if($coll->getItems())
171  {
172  include_once 'Services/Tracking/classes/class.ilTrQuery.php';
173  foreach(ilTrQuery::getSCOsStatusForUser($recipient->getId(), $obj_id, $coll->getItems()) as $item)
174  {
175  $scores[] = $item['title'].': '.$item['score'];
176  }
177  }
178  return implode("\n", $scores);
179 
180  case 'sahs_time_spent':
181  if($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_SPENT_SECONDS))
182  {
183  include_once './Services/Tracking/classes/class.ilLearningProgress.php';
184  $progress = ilLearningProgress::_getProgress($recipient->getId(), $obj_id);
185  if(isset($progress['spent_seconds']))
186  {
187  include_once './Services/Utilities/classes/class.ilFormat.php';
188  return ilFormat::_secondsToString($progress['spent_seconds'], false, $this->getLanguage());
189  }
190  }
191  break;
192 
193  case 'sahs_first_access':
194  if($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_LAST_ACCESS))
195  {
196  include_once './Services/Tracking/classes/class.ilLearningProgress.php';
197  $progress = ilLearningProgress::_getProgress($recipient->getId(), $obj_id);
198  if(isset($progress['access_time_min']))
199  {
200  return ilDatePresentation::formatDate(new ilDateTime($progress['access_time_min'], IL_CAL_UNIX));
201  }
202  }
203  break;
204 
205  case 'sahs_last_access':
206  if($tracking->hasExtendedData(ilObjUserTracking::EXTENDED_DATA_LAST_ACCESS))
207  {
208  include_once './Services/Tracking/classes/class.ilLearningProgress.php';
209  $progress = ilLearningProgress::_getProgress($recipient->getId(), $obj_id);
210  if(isset($progress['access_time']))
211  {
212  return ilDatePresentation::formatDate(new ilDateTime($progress['access_time'], IL_CAL_UNIX));
213  }
214  }
215  break;
216  }
217 
218  return '';
219  }
220 }
221 ?>
getSCOsStatusForUser($a_user_id, $a_parent_obj_id, array $a_sco_ids)
_getProgress($a_user_id, $a_obj_id)
_lookupMark($a_usr_id, $a_obj_id)
resolveSpecificPlaceholder($placeholder_id, array $context_parameters, ilObjUser $recipient=null, $html_markup=false)
getSpecificPlaceholders()
Return an array of placeholders.
const IL_CAL_UNIX
_secondsToString($seconds, $force_with_seconds=false, $a_lng=null)
converts seconds to string: Long: 7 days 4 hour(s) ...
static _lookupObjId($a_id)
_getStatusText($a_status, $a_lng=null)
Get status alt text.
static formatDate(ilDateTime $date)
Format a date public.
Date and time handling
Class ilMailTemplateContext.
const LP_STATUS_NOT_ATTEMPTED_NUM
global $lng
Definition: privfeed.php:40
static getInstance($a_obj_id)
static _lookupStatus($a_obj_id, $a_user_id, $a_create=true)
Lookup status.