"Page list",
"version" => "0.6",
"author" => "Starbeamrainbowlabs",
"description" => "Adds a page that lists all the pages in the index along with their metadata.",
"id" => "page-list",
"code" => function() {
add_action("list", function() {
global $pageindex, $settings;
$title = "All Pages";
$content = "
$title on $settings->sitename
";
$sorted_pageindex = get_object_vars($pageindex);
ksort($sorted_pageindex, SORT_NATURAL);
$content .= generate_page_list(array_keys($sorted_pageindex));
exit(page_renderer::render_main("$title - $settings->sitename", $content));
});
add_action("list-tags", function() {
global $pageindex, $settings;
if(!isset($_GET["tag"]))
{
// Render a list of all tags
$all_tags = [];
foreach($pageindex as $entry)
{
if(!isset($entry->tags)) continue;
foreach($entry->tags as $tag)
{
if(!in_array($tag, $all_tags)) $all_tags[] = $tag;
}
}
$content = "All tags
\n";
foreach($all_tags as $tag)
{
$content .= " - $tag
\n";
}
$content .= "
";
exit(page_renderer::render("All tags - $settings->sitename", $content));
}
$tag = $_GET["tag"];
$sorted_pageindex = get_object_vars($pageindex);
ksort($sorted_pageindex, SORT_NATURAL);
$pagelist = [];
foreach($pageindex as $pagename => $pagedetails)
{
if(empty($pagedetails->tags)) continue;
if(in_array($tag, $pagedetails->tags))
$pagelist[] = $pagename;
}
$content = "$tag
\n";
$content .= generate_page_list($pagelist);
exit(page_renderer::render("$tag - Page List - $settings->sitename", $content));
});
}
]);
function generate_page_list($pagelist)
{
global $pageindex;
$result = "
Page Name |
Size |
Last Editor |
Last Edit Time |
Tags |
\n";
foreach($pagelist as $pagename)
{
// Construct a list of tags that are attached to this page ready for display
$tags = "";
// Make sure that this page does actually have some tags first
if(isset($pageindex->$pagename->tags))
{
foreach($pageindex->$pagename->tags as $tag)
{
$tags .= "$tag, ";
}
$tags = substr($tags, 0, -2); // Remove the last ", " from the tag list
}
$result .= "\t\t
$pagename |
" . human_filesize($pageindex->$pagename->size) . " |
" . $pageindex->$pagename->lasteditor . " |
" . human_time_since($pageindex->$pagename->lastmodified) . " (" . date("l jS \of F Y \a\\t h:ia T", $pageindex->$pagename->lastmodified) . ") |
$tags |
\n";
}
$result .= "
";
return $result;
}
?>