function do_block($page, $param1, $param2) { $nest = max((int) trim($param1), 1); $body = parse_Page($page); $list = array(); foreach ($body->getelements() as $e) { if (get_class($e) == 'T_Heading') { $str = $e->getelem()->getsource(); $id = 'id' . substr(md5($e->getlevel() . $e->getsource()), 0, 6); if ($e->getlevel() <= $nest) { $list[] = str_repeat('-', $e->getlevel()) . "&anchor({$id}){{$str}}"; } } } return convert_block(join("\n", $list), $page->getpagename()); }
/** * リンクする側を軸にして逆リンクを更新する。 * * @param Page $linker リンクする側のページ名。 */ function refreshlinker($linker) { //隠しページからのリンク情報は出さない。 if ($linker->ishidden()) { return; } $db = DataBase::getinstance(); $db->begin(); $body = parse_Page($linker); $seeker = new LinkSeeker($linker); $body->accept($seeker); $list = $seeker->getlist(); $_linker = $db->escape($linker->getpagename()); $db->query("DELETE FROM linklist WHERE linker = '{$_linker}'"); foreach ($list as $linkedname => $times) { if ($linker->getpagename() != $linkedname) { $_linked = $db->escape($linkedname); $query = "INSERT INTO linklist (linker, linked, times)"; $query .= " VALUES('{$_linker}', '{$_linked}', {$times})"; $db->query($query); } } $db->commit(); }
/** * Pageの内容ををhtmlに変換する。 * * @param Page $page * @return string HTML形式の文字列。 */ function convert_Page($page) { return HTMLConverter::visit(parse_Page($page)); }