The parse_it function scans the string to see if any tag occurs, and if it does, break
down the tagname in $fun and its optional parameters into the associated array $arglist.
<?php
function parse_it ($str) {
global $loaded;
if (eregi ("<[Mm][Yy]-([A-Za-z0-9]*) ([^>]*)", $str, $regs)) {
$tag = $regs[1];
if (!$loaded[$tag]) {
include "res/$tag/$tag.php";
$loaded[$tag] = 1;
}
This function calls the function $tag directly in the file included from res/$tag/$tag.php
and uses the output to return to the parse main loop.
As you notice, the variable $cache_file is also being built pointing to cache/$tag...
where ... is a string combining all parameters to form a unique cache entry for this tag. To
actually use the cache, we must add some code between the end of the for loop and the creation of $buf:
<?php
$read_cache = 0;
$write_cache = 0;
if (!(isset ($arglist["cache"]) && ($arglist["cache"] < 10))) {
$write_cache = 1;
if (file_exists ($cache_file)) {
if (!isset ($arglist["cache"])) {
if ((filemtime ($cache_file) + $default_cache_time) > date ("U")) {
$read_cache = 1;
$write_cache = 0;
}
} else {
if ((filemtime ($cache_file) + $arglist["cache"]) > date ("U")) {
$read_cache = 1;
$write_cache = 0;
}
}
}
}