ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ilObjectXMLWriter Class Reference

XML writer class. More...

+ Inheritance diagram for ilObjectXMLWriter:
+ Collaboration diagram for ilObjectXMLWriter:

Public Member Functions

 __construct ()
 constructor More...
 
 setMode ($a_mode)
 
 setHighlighter ($a_highlighter)
 
 enablePermissionCheck ($a_status)
 
 isPermissionCheckEnabled ()
 
 setUserId ($a_id)
 
 getUserId ()
 
 enableOperations ($a_status)
 
 enabledOperations ()
 
 enableReferences ($a_stat)
 
 enabledReferences ()
 
 setObjects ($objects)
 
 __getObjects ()
 
 start ()
 
 getXML ()
 
 __appendObject (&$object)
 
 __appendTimeTargets ($a_ref_id)
 Append time target settings for items inside of courses. More...
 
 __appendObjectProperties (ilObject $obj)
 Append object properties. More...
 
 __appendOperations ($a_ref_id, $a_type)
 
 __appendPath ($refid)
 
 __buildHeader ()
 
 __buildFooter ()
 
 __getAccessInfo (&$object, $ref_id)
 
- Public Member Functions inherited from ilXmlWriter
 __construct ($version="1.0", $outEnc="utf-8", $inEnc="utf-8")
 constructor More...
 
 _ilXmlWriter ()
 destructor @access public More...
 
 xmlSetDtdDef ($dtdDef)
 Sets dtd definition. More...
 
 xmlSetStSheet ($stSheet)
 Sets stylesheet. More...
 
 xmlSetGenCmt ($genCmt)
 Sets generated comment. More...
 
 xmlEncodeData ($data)
 Encodes text from input encoding into output encoding. More...
 
 xmlFormatData ($data)
 Indents text for better reading. More...
 
 xmlFormatElement ($array)
 Callback function for xmlFormatData; do not invoke directly. More...
 
 xmlHeader ()
 Writes xml header @access public. More...
 
 xmlStartTag ($tag, $attrs=null, $empty=false, $encode=true, $escape=true)
 Writes a starttag. More...
 
 xmlEndTag ($tag)
 Writes an endtag. More...
 
 xmlComment ($comment)
 Writes a comment. More...
 
 xmlData ($data, $encode=true, $escape=true)
 Writes data. More...
 
 xmlElement ($tag, $attrs=null, $data=null, $encode=true, $escape=true)
 Writes a basic element (no children, just textual content) More...
 
 xmlDumpFile ($file, $format=true)
 Dumps xml document from memory into a file. More...
 
 xmlDumpMem ($format=true)
 Returns xml document from memory. More...
 
 appendXML ($a_str)
 append xml string to document More...
 
 xmlClear ()
 clears xmlStr @access public More...
 

Static Public Member Functions

static appendPathToObject ($writer, $refid)
 
- Static Public Member Functions inherited from ilXmlWriter
static _xmlEscapeData ($data)
 Escapes reserved characters. More...
 

Data Fields

const MODE_SEARCH_RESULT = 1
 
const TIMING_DEACTIVATED = 0
 
const TIMING_TEMPORARILY_AVAILABLE = 1
 
const TIMING_PRESETTING = 2
 
const TIMING_VISIBILITY_OFF = 0
 
const TIMING_VISIBILITY_ON = 1
 
 $ilias
 
 $xml
 
 $enable_operations = false
 
 $objects = array()
 
 $user_id = 0
 
- Data Fields inherited from ilXmlWriter
 $xmlStr
 
 $version
 
 $outEnc
 
 $inEnc
 
 $dtdDef = ""
 
 $stSheet = ""
 
 $genCmt = "Generated by ILIAS XmlWriter"
 

Protected Attributes

 $check_permission = false
 

Private Attributes

 $mode = 0
 
 $highlighter = null
 
 $enable_references = true
 

Detailed Description

XML writer class.

Class to simplify manual writing of xml documents. It only supports writing xml sequentially, because the xml document is saved in a string with no additional structure information. The author is responsible for well-formedness and validity of the xml document.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Version
$Id$

Definition at line 19 of file class.ilObjectXMLWriter.php.

Constructor & Destructor Documentation

◆ __construct()

ilObjectXMLWriter::__construct ( )

constructor

Parameters
stringxml version
stringoutput encoding
stringinput encoding @access public

Definition at line 56 of file class.ilObjectXMLWriter.php.

57 {
58 global $ilias,$ilUser;
59
60 parent::__construct();
61
62 $this->ilias =&$ilias;
63 $this->user_id = $ilUser->getId();
64 }
redirection script todo: (a better solution should control the processing via a xml file)
$ilUser
Definition: imgupload.php:18

References $ilias, and $ilUser.

Member Function Documentation

◆ __appendObject()

ilObjectXMLWriter::__appendObject ( $object)

Definition at line 159 of file class.ilObjectXMLWriter.php.

160 {
161 global $tree, $rbacreview;
162
163 $id = $object->getId();
164 if ($object->getType() == "role" && $rbacreview->isRoleDeleted($id)) {
165 return;
166 }
167
168 $attrs = array('type' => $object->getType(),
169 'obj_id' => $id);
170
171 $this->xmlStartTag('Object', $attrs);
172 //$this->xmlElement('Title',null,$object->getTitle());
173 //$this->xmlElement('Description',null,$object->getDescription());
174
175 // begin-patch fm
176 if ($this->mode == self::MODE_SEARCH_RESULT) {
177 $title = $object->getTitle();
178 if ($this->highlighter->getTitle($object->getId(), 0)) {
179 $title = $this->highlighter->getTitle($object->getId(), 0);
180 }
181 $description = $object->getDescription();
182 if ($this->highlighter->getDescription($object->getId(), 0)) {
183 $description = $this->highlighter->getDescription($object->getId(), 0);
184 }
185
186 // Currently disabled
187 #$this->xmlElement('Title', null, $title);
188 #$this->xmlElement('Description',null,$description);
189 #$this->xmlElement('SearchResultContent', null, $this->highlighter->getContent($object->getId(),0));
190
191 $this->xmlElement('Title', null, $object->getTitle());
192 $this->xmlElement('Description', null, $object->getDescription());
193 } else {
194 $this->xmlElement('Title', null, $object->getTitle());
195 $this->xmlElement('Description', null, $object->getDescription());
196 }
197 // end-patch fm
198
199 $this->xmlElement('Owner', null, $object->getOwner());
200 $this->xmlElement('CreateDate', null, $object->getCreateDate());
201 $this->xmlElement('LastUpdate', null, $object->getLastUpdateDate());
202 $this->xmlElement('ImportId', null, $object->getImportId());
203
204 $this->__appendObjectProperties($object);
205
206 // begin-patch filemanager
207 if ($this->enabledReferences()) {
208 $refs = ilObject::_getAllReferences($object->getId());
209 } else {
210 $refs = array($object->getRefId());
211 }
212
213 foreach ($refs as $ref_id) {
214 // end-patch filemanager
215 if (!$tree->isInTree($ref_id)) {
216 continue;
217 }
218
219 $attr = array('ref_id' => $ref_id, 'parent_id'=> $tree->getParentId(intval($ref_id)));
220 $attr['accessInfo'] = $this->__getAccessInfo($object, $ref_id);
221 $this->xmlStartTag('References', $attr);
222 $this->__appendTimeTargets($ref_id);
223 $this->__appendOperations($ref_id, $object->getType());
224 $this->__appendPath($ref_id);
225 $this->xmlEndTag('References');
226 }
227 $this->xmlEndTag('Object');
228 }
__appendOperations($a_ref_id, $a_type)
__getAccessInfo(&$object, $ref_id)
__appendTimeTargets($a_ref_id)
Append time target settings for items inside of courses.
__appendObjectProperties(ilObject $obj)
Append object properties.
static _getAllReferences($a_id)
get all reference ids of object
xmlEndTag($tag)
Writes an endtag.
xmlElement($tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
xmlStartTag($tag, $attrs=null, $empty=false, $encode=true, $escape=true)
Writes a starttag.
if(!array_key_exists('StateId', $_REQUEST)) $id

References $description, $id, $title, __appendObjectProperties(), __appendOperations(), __appendPath(), __appendTimeTargets(), __getAccessInfo(), ilObject\_getAllReferences(), enabledReferences(), ilXmlWriter\xmlElement(), ilXmlWriter\xmlEndTag(), and ilXmlWriter\xmlStartTag().

Referenced by start().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __appendObjectProperties()

ilObjectXMLWriter::__appendObjectProperties ( ilObject  $obj)

Append object properties.

Parameters
ilObject$obj

Definition at line 302 of file class.ilObjectXMLWriter.php.

303 {
304 switch ($obj->getType()) {
305
306 case 'file':
307 include_once './Modules/File/classes/class.ilObjFileAccess.php';
309 $extension = ilObjFileAccess::_lookupSuffix($obj->getId());
310 $this->xmlStartTag('Properties');
311 $this->xmlElement("Property", array('name' => 'fileSize'), (int) $size);
312 $this->xmlElement("Property", array('name' => 'fileExtension'), (string) $extension);
313 // begin-patch fm
314 $this->xmlElement('Property', array('name' => 'fileVersion'), (string) ilObjFileAccess::_lookupVersion($obj->getId()));
315 // end-patch fm
316 $this->xmlEndTag('Properties');
317 break;
318 }
319 }
$size
Definition: RandomTest.php:84
static _lookupFileSize($a_id)
Quickly looks up the file size from the database and returns the number of bytes.
static _lookupVersion($a_id)
lookup version
static _lookupSuffix($a_id)
lookup suffix
getType()
get object type @access public
getId()
get object id @access public

References $size, ilObjFileAccess\_lookupFileSize(), ilObjFileAccess\_lookupSuffix(), ilObjFileAccess\_lookupVersion(), ilObject\getId(), ilObject\getType(), ilXmlWriter\xmlElement(), ilXmlWriter\xmlEndTag(), and ilXmlWriter\xmlStartTag().

Referenced by __appendObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __appendOperations()

ilObjectXMLWriter::__appendOperations (   $a_ref_id,
  $a_type 
)

Definition at line 322 of file class.ilObjectXMLWriter.php.

323 {
324 global $ilAccess,$rbacreview,$objDefinition;
325
326 if ($this->enabledOperations()) {
327 $ops = $rbacreview->getOperationsOnTypeString($a_type);
328 if (is_array($ops)) {
329 foreach ($ops as $ops_id) {
330 $operation = $rbacreview->getOperation($ops_id);
331
332 if (count($operation) && $ilAccess->checkAccessOfUser($this->getUserId(), $operation['operation'], 'view', $a_ref_id)) {
333 $this->xmlElement('Operation', null, $operation['operation']);
334 }
335 }
336 }
337
338 // Create operations
339 // Get creatable objects
340 $objects = $objDefinition->getCreatableSubObjects($a_type);
341 $ops_ids = ilRbacReview::lookupCreateOperationIds(array_keys($objects));
342 $creation_operations = array();
343 foreach ($objects as $type => $info) {
344 $ops_id = $ops_ids[$type];
345
346 if (!$ops_id) {
347 continue;
348 }
349
350 $operation = $rbacreview->getOperation($ops_id);
351
352 if (count($operation) && $ilAccess->checkAccessOfUser($this->getUserId(), $operation['operation'], 'view', $a_ref_id)) {
353 $this->xmlElement('Operation', null, $operation['operation']);
354 }
355 }
356 }
357 return true;
358 }
static lookupCreateOperationIds($a_type_arr)
Lookup operation ids.
$info
Definition: index.php:5
$type
$a_type
Definition: workflow.php:92

References $a_type, $info, $objects, $type, enabledOperations(), ilRbacReview\lookupCreateOperationIds(), and ilXmlWriter\xmlElement().

Referenced by __appendObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __appendPath()

ilObjectXMLWriter::__appendPath (   $refid)

Definition at line 361 of file class.ilObjectXMLWriter.php.

362 {
364 }
static appendPathToObject($writer, $refid)

References appendPathToObject().

Referenced by __appendObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __appendTimeTargets()

ilObjectXMLWriter::__appendTimeTargets (   $a_ref_id)

Append time target settings for items inside of courses.

Parameters
int$ref_idReference id of object
Returns
void

Definition at line 235 of file class.ilObjectXMLWriter.php.

236 {
237 global $tree;
238
239 if (!$tree->checkForParentType($a_ref_id, 'crs')) {
240 return;
241 }
242 include_once('./Services/Object/classes/class.ilObjectActivation.php');
243 $time_targets = ilObjectActivation::getItem($a_ref_id);
244
245 switch ($time_targets['timing_type']) {
248 break;
251 break;
254 break;
255 default:
257 break;
258 }
259
260 $this->xmlStartTag('TimeTarget', array('type' => $type));
261
262 # if($type == self::TIMING_TEMPORARILY_AVAILABLE)
263 {
264 $vis = $time_targets['visible'] == 0 ? self::TIMING_VISIBILITY_OFF : self::TIMING_VISIBILITY_ON;
265 $this->xmlElement(
266 'Timing',
267 array('starting_time' => $time_targets['timing_start'],
268 'ending_time' => $time_targets['timing_end'],
269 'visibility' => $vis)
270 );
271
272 }
273 # if($type == self::TIMING_PRESETTING)
274 {
275 if ($time_targets['changeable'] or 1) {
276 $this->xmlElement(
277 'Suggestion',
278 array('starting_time' => $time_targets['suggestion_start'],
279 'ending_time' => $time_targets['suggestion_end'],
280 'changeable' => $time_targets['changeable'],
281 'earliest_start' => $time_targets['earliest_start'],
282 'latest_end' => $time_targets['latest_end'])
283 );
284 } else {
285 $this->xmlElement(
286 'Suggestion',
287 array('starting_time' => $time_targets['suggestion_start'],
288 'ending_time' => $time_targets['suggestion_end'],
289 'changeable' => $time_targets['changeable'])
290 );
291 }
292 }
293 $this->xmlEndTag('TimeTarget');
294 return;
295 }
static getItem($a_ref_id)
Get item data.

References $type, ilObjectActivation\getItem(), TIMING_DEACTIVATED, TIMING_PRESETTING, TIMING_TEMPORARILY_AVAILABLE, TIMING_VISIBILITY_OFF, TIMING_VISIBILITY_ON, ilObjectActivation\TIMINGS_ACTIVATION, ilObjectActivation\TIMINGS_DEACTIVATED, ilObjectActivation\TIMINGS_PRESETTING, ilXmlWriter\xmlElement(), ilXmlWriter\xmlEndTag(), and ilXmlWriter\xmlStartTag().

Referenced by __appendObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __buildFooter()

ilObjectXMLWriter::__buildFooter ( )

Definition at line 375 of file class.ilObjectXMLWriter.php.

376 {
377 $this->xmlEndTag('Objects');
378 }

References ilXmlWriter\xmlEndTag().

Referenced by start().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __buildHeader()

ilObjectXMLWriter::__buildHeader ( )

Definition at line 366 of file class.ilObjectXMLWriter.php.

367 {
368 $this->xmlSetDtdDef("<!DOCTYPE Objects PUBLIC \"-//ILIAS//DTD ILIAS Repositoryobjects//EN\" \"" . ILIAS_HTTP_PATH . "/xml/ilias_object_4_0.dtd\">");
369 $this->xmlSetGenCmt("Export of ILIAS objects");
370 $this->xmlHeader();
371 $this->xmlStartTag("Objects");
372 return true;
373 }
xmlSetGenCmt($genCmt)
Sets generated comment.
xmlHeader()
Writes xml header @access public.
xmlSetDtdDef($dtdDef)
Sets dtd definition.

References ilXmlWriter\xmlHeader(), ilXmlWriter\xmlSetDtdDef(), ilXmlWriter\xmlSetGenCmt(), and ilXmlWriter\xmlStartTag().

Referenced by start().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __getAccessInfo()

ilObjectXMLWriter::__getAccessInfo ( $object,
  $ref_id 
)

Definition at line 380 of file class.ilObjectXMLWriter.php.

381 {
382 global $ilAccess;
383
384 include_once 'Services/AccessControl/classes/class.ilAccess.php';
385
386 $ilAccess->checkAccessOfUser($this->getUserId(), 'read', 'view', $ref_id, $object->getType(), $object->getId());
387
388 if (!$info = $ilAccess->getInfo()) {
389 return 'granted';
390 } else {
391 return $info[0]['type'];
392 }
393 }

References $info, and getUserId().

Referenced by __appendObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ __getObjects()

ilObjectXMLWriter::__getObjects ( )

Definition at line 128 of file class.ilObjectXMLWriter.php.

129 {
130 return $this->objects ? $this->objects : array();
131 }

Referenced by start().

+ Here is the caller graph for this function:

◆ appendPathToObject()

static ilObjectXMLWriter::appendPathToObject (   $writer,
  $refid 
)
static

Definition at line 396 of file class.ilObjectXMLWriter.php.

397 {
398 global $tree, $lng;
399 $items = $tree->getPathFull($refid);
400 $writer->xmlStartTag("Path");
401 foreach ($items as $item) {
402 if ($item["ref_id"] == $refid) {
403 continue;
404 }
405 if ($item["type"] == "root") {
406 $item["title"] = $lng->txt("repository");
407 }
408 $writer->xmlElement("Element", array("ref_id" => $item["ref_id"], "type" => $item["type"]), $item["title"]);
409 }
410 $writer->xmlEndTag("Path");
411 }
global $lng
Definition: privfeed.php:17

References $lng.

Referenced by __appendPath(), and ilSoapRoleObjectXMLWriter\start().

+ Here is the caller graph for this function:

◆ enabledOperations()

ilObjectXMLWriter::enabledOperations ( )

Definition at line 105 of file class.ilObjectXMLWriter.php.

References $enable_operations.

Referenced by __appendOperations().

+ Here is the caller graph for this function:

◆ enabledReferences()

ilObjectXMLWriter::enabledReferences ( )

Definition at line 116 of file class.ilObjectXMLWriter.php.

References $enable_references.

Referenced by __appendObject().

+ Here is the caller graph for this function:

◆ enableOperations()

ilObjectXMLWriter::enableOperations (   $a_status)

Definition at line 98 of file class.ilObjectXMLWriter.php.

99 {
100 $this->enable_operations = $a_status;
101
102 return true;
103 }

◆ enablePermissionCheck()

ilObjectXMLWriter::enablePermissionCheck (   $a_status)

Definition at line 79 of file class.ilObjectXMLWriter.php.

80 {
81 $this->check_permission = $a_status;
82 }

◆ enableReferences()

ilObjectXMLWriter::enableReferences (   $a_stat)

Definition at line 111 of file class.ilObjectXMLWriter.php.

112 {
113 $this->enable_references = $a_stat;
114 }

◆ getUserId()

ilObjectXMLWriter::getUserId ( )

Definition at line 93 of file class.ilObjectXMLWriter.php.

References $user_id.

Referenced by __getAccessInfo().

+ Here is the caller graph for this function:

◆ getXML()

ilObjectXMLWriter::getXML ( )

Definition at line 152 of file class.ilObjectXMLWriter.php.

153 {
154 return $this->xmlDumpMem(false);
155 }
xmlDumpMem($format=true)
Returns xml document from memory.

References ilXmlWriter\xmlDumpMem().

+ Here is the call graph for this function:

◆ isPermissionCheckEnabled()

ilObjectXMLWriter::isPermissionCheckEnabled ( )

Definition at line 84 of file class.ilObjectXMLWriter.php.

References $check_permission.

Referenced by start().

+ Here is the caller graph for this function:

◆ setHighlighter()

ilObjectXMLWriter::setHighlighter (   $a_highlighter)

Definition at line 72 of file class.ilObjectXMLWriter.php.

73 {
74 $this->highlighter = $a_highlighter;
75 }

◆ setMode()

ilObjectXMLWriter::setMode (   $a_mode)

Definition at line 67 of file class.ilObjectXMLWriter.php.

68 {
69 $this->mode = $a_mode;
70 }

◆ setObjects()

ilObjectXMLWriter::setObjects (   $objects)

Definition at line 123 of file class.ilObjectXMLWriter.php.

124 {
125 $this->objects = $objects;
126 }

References $objects.

◆ setUserId()

ilObjectXMLWriter::setUserId (   $a_id)

Definition at line 89 of file class.ilObjectXMLWriter.php.

90 {
91 $this->user_id = $a_id;
92 }

◆ start()

ilObjectXMLWriter::start ( )

Definition at line 133 of file class.ilObjectXMLWriter.php.

134 {
135 global $ilAccess,$objDefinition;
136
137 $this->__buildHeader();
138
139 foreach ($this->__getObjects() as $object) {
140 if (method_exists($object, 'getType') and $objDefinition->isRBACObject($object->getType())) {
141 if ($this->isPermissionCheckEnabled() and !$ilAccess->checkAccessOfUser($this->getUserId(), 'read', '', $object->getRefId())) {
142 continue;
143 }
144 }
145 $this->__appendObject($object);
146 }
147 $this->__buildFooter();
148
149 return true;
150 }

References __appendObject(), __buildFooter(), __buildHeader(), __getObjects(), and isPermissionCheckEnabled().

+ Here is the call graph for this function:

Field Documentation

◆ $check_permission

ilObjectXMLWriter::$check_permission = false
protected

Definition at line 47 of file class.ilObjectXMLWriter.php.

Referenced by isPermissionCheckEnabled().

◆ $enable_operations

ilObjectXMLWriter::$enable_operations = false

Definition at line 40 of file class.ilObjectXMLWriter.php.

Referenced by enabledOperations().

◆ $enable_references

ilObjectXMLWriter::$enable_references = true
private

Definition at line 42 of file class.ilObjectXMLWriter.php.

Referenced by enabledReferences().

◆ $highlighter

ilObjectXMLWriter::$highlighter = null
private

Definition at line 25 of file class.ilObjectXMLWriter.php.

◆ $ilias

ilObjectXMLWriter::$ilias

Definition at line 37 of file class.ilObjectXMLWriter.php.

Referenced by __construct().

◆ $mode

ilObjectXMLWriter::$mode = 0
private

Definition at line 24 of file class.ilObjectXMLWriter.php.

◆ $objects

ilObjectXMLWriter::$objects = array()

Definition at line 44 of file class.ilObjectXMLWriter.php.

Referenced by __appendOperations(), and setObjects().

◆ $user_id

ilObjectXMLWriter::$user_id = 0

Definition at line 45 of file class.ilObjectXMLWriter.php.

Referenced by getUserId().

◆ $xml

ilObjectXMLWriter::$xml

Definition at line 39 of file class.ilObjectXMLWriter.php.

◆ MODE_SEARCH_RESULT

const ilObjectXMLWriter::MODE_SEARCH_RESULT = 1

Definition at line 22 of file class.ilObjectXMLWriter.php.

◆ TIMING_DEACTIVATED

const ilObjectXMLWriter::TIMING_DEACTIVATED = 0

◆ TIMING_PRESETTING

const ilObjectXMLWriter::TIMING_PRESETTING = 2

◆ TIMING_TEMPORARILY_AVAILABLE

const ilObjectXMLWriter::TIMING_TEMPORARILY_AVAILABLE = 1

◆ TIMING_VISIBILITY_OFF

const ilObjectXMLWriter::TIMING_VISIBILITY_OFF = 0

Definition at line 33 of file class.ilObjectXMLWriter.php.

Referenced by __appendTimeTargets().

◆ TIMING_VISIBILITY_ON

const ilObjectXMLWriter::TIMING_VISIBILITY_ON = 1

Definition at line 34 of file class.ilObjectXMLWriter.php.

Referenced by __appendTimeTargets().


The documentation for this class was generated from the following file: