";
if (!function_exists("generate_table_of_contents")) {
/**
* @param string $html
* @param int|string $row_id
*
* @return array
*/
function generate_table_of_contents($html, $row_id) {
$dom = HtmlDomParser::str_get_html($html);
$font_classnames = array(
"h1" => "tpl-text-default-big",
"h2" => "tpl-text-default",
"h3" => "tpl-text-default-small",
"h4" => "tpl-text-default-small",
"h5" => "tpl-text-default-smaller",
"h6" => "tpl-text-default-smaller",
);
$last_level = 0;
$i = 1;
$toc = "";
foreach ($dom->find("h1,h2,h3,h4,h5,h6") as $h) {
$id = "toc-header-n-" . $row_id . "-" . $i++;
$h->outertext = "" . $h->outertext;
$level = intval($h->tag[1]);
if ($level > $last_level) {
$toc .= "";
} else {
$toc .= str_repeat("
", $last_level - $level);
$toc .= "";
}
$toc .= "$h->innertext";
$last_level = $level;
}
$toc .= str_repeat("", $last_level);
$toc = preg_replace("#
|
|
|#", " ", $toc);
$html_with_toc = $dom->save();
$dom->clear();
unset($dom);
return array(
"index" => $toc,
"html" => $html_with_toc,
);
}
}