* false if not
*/
protected function processed_parent_exists($path) {
- $parentpath = dirname($path);
+ $parentpath = progressive_parser::dirname($path);
while ($parentpath != '/') {
if ($this->path_is_selected($parentpath)) {
return $parentpath;
}
- $parentpath = dirname($parentpath);
+ $parentpath = progressive_parser::dirname($parentpath);
}
return false;
}
* false if not
*/
protected function grouped_parent_exists($path) {
- $parentpath = dirname($path);
+ $parentpath = progressive_parser::dirname($path);
while ($parentpath != '/') {
if ($this->path_is_grouped($parentpath)) {
return $parentpath;
}
- $parentpath = dirname($parentpath);
+ $parentpath = progressive_parser::dirname($parentpath);
}
return false;
}
public function add_path($path) {
$this->paths[] = $path;
- $this->parentpaths[] = dirname($path);
+ $this->parentpaths[] = progressive_parser::dirname($path);
}
/**
public function process_chunk($data) {
// Precalculate some vars for readability
$path = $data['path'];
- $parentpath = dirname($path);
+ $parentpath = progressive_parser::dirname($path);
$tag = basename($path);
// If the path is a registered parent one, store all its tags
$this->xml_parser = null;
}
+ /**
+ * Provides one cross-platform dirname function for
+ * handling parser paths, see MDL-24381
+ */
+ public static function dirname($path) {
+ return str_replace('\\', '/', dirname($path));
+ }
+
// Protected API starts here
protected function parse($data, $eof) {
// If not set, build to push common header
if (empty($this->topush)) {
- $this->topush['path'] = dirname($this->path);
+ $this->topush['path'] = progressive_parser::dirname($this->path);
$this->topush['level'] = $this->level;
$this->topush['tags'] = array();
}
// Normal update of parser internals
$this->level--;
- $this->path = dirname($this->path);
+ $this->path = progressive_parser::dirname($this->path);
}
protected function char_data($parser, $data) {