Пример #1
0
 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;
 }
Пример #2
0
 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']);
             }
         }
     }
 }