ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
_parse_lockinfo Class Reference
+ Collaboration diagram for _parse_lockinfo:

Public Member Functions

 _parse_lockinfo ($path)
 constructor
 _startElement ($parser, $name, $attrs)
 tag start handler
 _data ($parser, $data)
 data handler
 _endElement ($parser, $name)
 tag end handler

Data Fields

 $success = false
 $locktype = ""
 $lockscope = ""
 $owner = ""
 $collect_owner = false

Detailed Description

Definition at line 30 of file _parse_lockinfo.php.

Member Function Documentation

_parse_lockinfo::_data (   $parser,
  $data 
)

data handler

Parameters
resourceparser
stringdata
Returns
void private

Definition at line 190 of file _parse_lockinfo.php.

References $data.

{
// only the <owner> tag has data content
if ($this->collect_owner) {
$this->owner .= $data;
}
}
_parse_lockinfo::_endElement (   $parser,
  $name 
)

tag end handler

Parameters
resourceparser
stringtag name
Returns
void private

Definition at line 206 of file _parse_lockinfo.php.

{
// namespace handling
if (strstr($name, " ")) {
list($ns, $tag) = explode(" ", $name);
} else {
$ns = "";
$tag = $name;
}
// <owner> finished?
if (($ns == "DAV:") && ($tag == "owner")) {
$this->collect_owner = false;
}
// within <owner> we have to collect everything
if ($this->collect_owner) {
$ns_short = "";
$ns_attr = "";
if ($ns) {
if ($ns == "DAV:") {
$ns_short = "D:";
} else {
$ns_attr = " xmlns='$ns'";
}
}
$this->owner .= "</$ns_short$tag$ns_attr>";
}
}
_parse_lockinfo::_parse_lockinfo (   $path)

constructor

Parameters
stringpath of stream to read public

Definition at line 78 of file _parse_lockinfo.php.

References $path.

{
// we assume success unless problems occur
$this->success = true;
// remember if any input was parsed
$had_input = false;
// open stream
$f_in = fopen($path, "r");
if (!$f_in) {
$this->success = false;
return;
}
// create namespace aware parser
$xml_parser = xml_parser_create_ns("UTF-8", " ");
// set tag and data handlers
xml_set_element_handler($xml_parser,
array(&$this, "_startElement"),
array(&$this, "_endElement"));
xml_set_character_data_handler($xml_parser,
array(&$this, "_data"));
// we want a case sensitive parser
xml_parser_set_option($xml_parser,
XML_OPTION_CASE_FOLDING, false);
// parse input
while($this->success && !feof($f_in)) {
$line = fgets($f_in);
if (is_string($line)) {
$had_input = true;
$this->success &= xml_parse($xml_parser, $line, false);
}
}
// finish parsing
if($had_input) {
$this->success &= xml_parse($xml_parser, "", true);
}
// check if required tags where found
$this->success &= !empty($this->locktype);
$this->success &= !empty($this->lockscope);
// free parser resource
xml_parser_free($xml_parser);
// close input stream
fclose($f_in);
}
_parse_lockinfo::_startElement (   $parser,
  $name,
  $attrs 
)

tag start handler

Parameters
resourceparser
stringtag name
arraytag attributes
Returns
void private

Definition at line 142 of file _parse_lockinfo.php.

{
// namespace handling
if (strstr($name, " ")) {
list($ns, $tag) = explode(" ", $name);
} else {
$ns = "";
$tag = $name;
}
if ($this->collect_owner) {
// everything within the <owner> tag needs to be collected
$ns_short = "";
$ns_attr = "";
if ($ns) {
if ($ns == "DAV:") {
$ns_short = "D:";
} else {
$ns_attr = " xmlns='$ns'";
}
}
$this->owner .= "<$ns_short$tag$ns_attr>";
} else if ($ns == "DAV:") {
// parse only the essential tags
switch ($tag) {
case "write":
$this->locktype = $tag;
break;
case "exclusive":
case "shared":
$this->lockscope = $tag;
break;
case "owner":
$this->collect_owner = true;
break;
}
}
}

Field Documentation

_parse_lockinfo::$collect_owner = false

Definition at line 70 of file _parse_lockinfo.php.

_parse_lockinfo::$lockscope = ""

Definition at line 54 of file _parse_lockinfo.php.

_parse_lockinfo::$locktype = ""

Definition at line 46 of file _parse_lockinfo.php.

_parse_lockinfo::$owner = ""

Definition at line 62 of file _parse_lockinfo.php.

_parse_lockinfo::$success = false

Definition at line 38 of file _parse_lockinfo.php.


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