ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilSoapSCORMAdministration.php
Go to the documentation of this file.
1 <?php
2  /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22  */
23 
24 
33 include_once './webservice/soap/classes/class.ilSoapAdministration.php';
34 
36 {
37 
47  public function getIMSManifestXML($sid, $ref_id)
48  {
49  $this->initAuth($sid);
50  $this->initIlias();
51 
52  if (!$this->__checkSession($sid)) {
53  return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
54  }
55  if (!strlen($ref_id)) {
56  return $this->__raiseError(
57  'No ref id given. Aborting!',
58  'Client'
59  );
60  }
61  global $rbacsystem, $tree, $ilLog;
62 
63  // get obj_id
64  if (!$obj_id = ilObject::_lookupObjectId($ref_id)) {
65  return $this->__raiseError(
66  'No exercise found for id: ' . $ref_id,
67  'Client'
68  );
69  }
70 
71  if (ilObject::_isInTrash($ref_id)) {
72  return $this->__raiseError("Parent with ID $ref_id has been deleted.", 'Client');
73  }
74 
75  // Check access
76  $permission_ok = false;
77  foreach ($ref_ids = ilObject::_getAllReferences($obj_id) as $ref_id) {
78  if ($rbacsystem->checkAccess('read', $ref_id)) {
79  $permission_ok = true;
80  break;
81  }
82  }
83 
84  if (!$permission_ok) {
85  return $this->__raiseError(
86  'No permission to read the object with id: ' . $ref_id,
87  'Server'
88  );
89  }
90 
91  $lm_obj = ilObjectFactory::getInstanceByObjId($obj_id, false);
92  if (!is_object($lm_obj) || $lm_obj->getType()!= "sahs") {
93  return $this->__raiseError(
94  'Wrong obj id or type for scorm object with id ' . $ref_id,
95  'Server'
96  );
97  }
98  // get scorm xml
99  require_once("./Modules/ScormAicc/classes/SCORM/class.ilSCORMObject.php");
100  require_once("./Modules/ScormAicc/classes/SCORM/class.ilSCORMResource.php");
101 
102  $imsFilename = $lm_obj->getDataDirectory() . DIRECTORY_SEPARATOR . "imsmanifest.xml";
103 
104  if (!file_exists($imsFilename)) {
105  return $this->__raiseError(
106  'Could not find manifest file for object with ref id ' . $ref_id,
107  'Server'
108  );
109  }
110  return file_get_contents($imsFilename);
111  }
112 
113  public function hasSCORMCertificate($sid, $ref_id, $usr_id)
114  {
115  $this->initAuth($sid);
116  $this->initIlias();
117 
118  if (!$this->__checkSession($sid)) {
119  return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
120  }
121  if (!strlen($ref_id)) {
122  return $this->__raiseError(
123  'No ref id given. Aborting!',
124  'Client'
125  );
126  }
127  global $rbacsystem, $tree, $ilLog;
128 
129  // get obj_id
130  if (!$obj_id = ilObject::_lookupObjectId($ref_id)) {
131  return $this->__raiseError(
132  'No exercise found for id: ' . $ref_id,
133  'Client'
134  );
135  }
136 
137  if (ilObject::_isInTrash($ref_id)) {
138  return $this->__raiseError("Parent with ID $ref_id has been deleted.", 'Client');
139  }
140 
141  $result = false;
142  include_once("./Modules/ScormAicc/classes/class.ilObjSAHSLearningModuleAccess.php");
144 
145  return $result;
146  }
147 
148  public function getSCORMCompletionStatus($sid, $a_usr_id, $a_ref_id)
149  {
150  $this->initAuth($sid);
151  $this->initIlias();
152 
153  if (!$this->__checkSession($sid)) {
154  return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
155  }
156 
157  if (!strlen($a_ref_id)) {
158  return $this->__raiseError('No ref_id given. Aborting!', 'Client');
159  }
160 
161  include_once 'include/inc.header.php';
162 
163  // get obj_id
164  if (!$obj_id = ilObject::_lookupObjectId($a_ref_id)) {
165  return $this->__raiseError(
166  'No scorm module found for id: ' . $a_ref_id,
167  'Client'
168  );
169  }
170 
171  include_once 'Services/Tracking/classes/class.ilLPStatus.php';
172  include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
173 
175  return $this->__raiseError('Learning progress not enabled in this installation. Aborting!', 'Server');
176  }
177 
178  $status = ilLPStatus::_lookupStatus($obj_id, $a_usr_id);
179  if ($status == ilLPStatus::LP_STATUS_COMPLETED_NUM) {
180  return 'completed';
181  } elseif ($status == ilLPStatus::LP_STATUS_FAILED_NUM) {
182  return 'failed';
183  } elseif ($status == ilLPStatus::LP_STATUS_IN_PROGRESS_NUM) {
184  return 'in_progress';
185  } else {
186  return 'not_attempted';
187  }
188  }
189 }
const LP_STATUS_COMPLETED_NUM
getIMSManifestXML($sid, $ref_id)
get ims manifest xml
$result
getSCORMCompletionStatus($sid, $a_usr_id, $a_ref_id)
const LP_STATUS_IN_PROGRESS_NUM
static _isInTrash($a_ref_id)
checks wether object is in trash
static _getAllReferences($a_id)
get all reference ids of object
static _lookupObjectId($a_ref_id)
lookup object id
static _enabledLearningProgress()
check wether learing progress is enabled or not
__raiseError($a_message, $a_code)
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
initAuth($sid)
Init authentication.
static _lookupStatus($a_obj_id, $a_user_id, $a_create=true)
Lookup status.
const LP_STATUS_FAILED_NUM
static _lookupUserCertificate($obj_id, $usr_id=0)
Checks whether a certificate exists for the active user or not.