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

Public Member Functions

 _parse_propfind ($path)
 constructor
 _startElement ($parser, $name, $attrs)
 start tag handler
 _endElement ($parser, $name)
 end tag handler

Data Fields

 $success = false
 $props = false
 $depth = 0

Detailed Description

Definition at line 30 of file _parse_propfind.php.

Member Function Documentation

_parse_propfind::_endElement (   $parser,
  $name 
)

end tag handler

private

Parameters
resourceparser
stringtag name

Definition at line 170 of file _parse_propfind.php.

{
// here we only need to decrement the depth count
$this->depth--;
}
_parse_propfind::_parse_propfind (   $path)

constructor

public

Definition at line 62 of file _parse_propfind.php.

References $path.

{
// success state flag
$this->success = true;
// property storage array
$this->props = array();
// internal tag depth counter
$this->depth = 0;
// remember if any input was parsed
$had_input = false;
// open input stream
$f_in = fopen($path, "r");
if (!$f_in) {
$this->success = false;
return;
}
// create XML 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"));
// 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);
}
// free parser
xml_parser_free($xml_parser);
// close input stream
fclose($f_in);
// if no input was parsed it was a request
if(!count($this->props)) $this->props = "all"; // default
}
_parse_propfind::_startElement (   $parser,
  $name,
  $attrs 
)

start tag handler

private

Parameters
resourceparser
stringtag name
arraytag attributes

Definition at line 129 of file _parse_propfind.php.

{
// name space handling
if (strstr($name, " ")) {
list($ns, $tag) = explode(" ", $name);
if ($ns == "")
$this->success = false;
} else {
$ns = "";
$tag = $name;
}
// special tags at level 1: <allprop> and <propname>
if ($this->depth == 1) {
if ($tag == "allprop")
$this->props = "all";
if ($tag == "propname")
$this->props = "names";
}
// requested properties are found at level 2
if ($this->depth == 2) {
$prop = array("name" => $tag);
if ($ns)
$prop["xmlns"] = $ns;
$this->props[] = $prop;
}
// increment depth count
$this->depth++;
}

Field Documentation

_parse_propfind::$depth = 0

Definition at line 54 of file _parse_propfind.php.

_parse_propfind::$props = false

Definition at line 46 of file _parse_propfind.php.

_parse_propfind::$success = false

Definition at line 38 of file _parse_propfind.php.


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