function section_lines() { if (empty($this->options['section'][1])) { return; } $parser = new PluginIncludexOptionParser(); $this->section_options = $parser->parse_options($this->options['section'][1], $this->section_options); if ($parser->error != "") { $this->error = $parser->error; return; } // what a public class! hehehe $contentsx = new PluginContentsx(); $contentsx->options['include'][1] = false; $contentsx->options['fromhere'][1] = false; $contentsx->options['page'][1] = $contentsx->check_page($this->inclpage); $this->headlines = $contentsx->get_metalines($this->inclpage); if ($contentsx->error != "") { $this->error = $contentsx->error; return; } foreach ($this->section_options as $key => $val) { $contentsx->options[$key] = $val; } $contentsx->narrow_metalines(); if ($contentsx->error != "") { $this->error = $contentsx->error; return; } $this->narrowed_headlines = $contentsx->metalines; $size = sizeof($this->headlines); $this->section_options['num'][1] = $parser->parse_numoption($this->section_options['num'][1], 0, $size); $lines = array(); if (in_array(0, $this->section_options['num'][1])) { $linenum = $this->headlines[0]['linenum']; $lines = array_merge($lines, array_splice($this->lines, 0, $linenum)); } // FutureWork: Do no rely on contentsx's cache as much as possible. $i = 0; $size = sizeof($this->headlines); foreach ($this->narrowed_headlines as $narrowed_headline) { $linenum = $narrowed_headline['linenum']; for (; $i < $size; $i++) { $current = $i; if ($linenum != $this->headlines[$current]['linenum']) { continue; } $next = $i + 1; if ($next < $size) { $len = $this->headlines[$next]['linenum'] - $linenum; $lines = array_merge($lines, array_slice($this->lines, $linenum, $len)); } else { $lines = array_merge($lines, array_slice($this->lines, $linenum)); } break; } } $this->lines = $lines; }
function linkstr_metapages() { switch ($this->options['linkstr'][1]) { case 'absolute': foreach ($this->metapages as $i => $metapage) { $this->metapages[$i]['linkstr'] = htmlspecialchars($metapage['page']); } break; case 'basename': foreach ($this->metapages as $i => $metapage) { $this->metapages[$i]['linkstr'] = htmlspecialchars($this->my_basename($metapage['page'])); } break; case 'title': $contentsx = new PluginContentsx(); foreach ($this->metapages as $i => $metapage) { $title = $contentsx->get_title($metapage['page']); $title = strip_htmltag(make_link($title)); $this->metapages[$i]['linkstr'] = $title; } break; case 'headline': $contentsx = new PluginContentsx(); foreach ($this->metapages as $i => $metapage) { $metalines = $contentsx->get_metalines($metapage['page']); $title = $metalines[0]['headline']; $title = strip_htmltag(make_link($title)); $this->metapages[$i]['linkstr'] = $title; } break; } // default: relative if ($this->options['hierarchy'][1] === true) { foreach ($this->metapages as $i => $metapage) { if (!isset($metapage['linkstr']) || $metapage['linkstr'] === '') { $this->metapages[$i]['linkstr'] = htmlspecialchars($this->my_basename($metapage['page'])); } } } else { foreach ($this->metapages as $i => $metapage) { if (!isset($metapage['linkstr']) || $metapage['linkstr'] === '') { $this->metapages[$i]['linkstr'] = htmlspecialchars($metapage['relative']); } } } }