You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
misc/pmwiki_recipes/graphformatexporter.php

130 lines
4.6 KiB

<?php if (!defined('PmWiki')) exit();
## give a visual representation of pages and group
$RecipeInfo['GraphCSV']['Version'] = '2010-04-11';
SDV($HandleActions['graphcsv'],'GraphCSV');
SDV($HandleAuth['graphcsv'],'view');
function GraphCSV($pagename, $auth){
$sourcename = preg_replace("/.*\.(.*)/","$1",$pagename);
$groupname = preg_replace("/(.*)\..*/","$1",$pagename);
global $FarmD, $WikiTitle, $ScriptUrl;
//entire wiki
if ($pagename == "Main.HomePage")
$pages = ListPages("//e");
else
$pages = ListPages("/$groupname\./e");
//$pages = MatchPageNames($pages,array('-*.RecentChanges,-*.GroupFooter,-*.GroupHeader'));
$pagesnum = count($pages);
$nodes = "Id,Group,Label,Size,Time,Rev\n";
$edges = "Source,Target\n";
# scan over the array of pages to get mazimum and generate axis...
foreach ($pages as $page) {
$cleanpage = preg_replace("/.*\.(.*)/","$1",$page);
$content = ReadPage($page,$since=0);
$size = strlen($content["text"]);
$pagetime = $content["time"];
$pagerev = $content["rev"];
$group = preg_replace("/(.*)\..*/","$1",$page);
$nodes .= "$page,$group,$cleanpage,$size,$pagetime,$pagerev\n";
$page_category = preg_replace("/.*\[\[\!(.*)\]\].*/s","$1",$content["text"]);
$author = $content["author"];
$links = $content["targets"];
$links_array = explode(",",$links);
foreach ($links_array as $link) {
if (($linkindex = array_search($link,$pages)) !== false )
{
$cleanlink = preg_replace("/.*\.(.*)/","$1",$link);
$edges .= "$page,$link\n";
}
}
}
// ----------------------- return the processed result -----------------------
print "$nodes<hr/>$edges";
$nodesfile = $FarmD."/pub/nodes.csv";
if (!file_exists($nodesfile))
if (!touch($nodesfile))
print "Creation of the processing file fails, check write permissions for pmWiki and $nodesfile.";
$write_result = file_put_contents($nodesfile,$nodes);
if (!$write_result)
if (strlen($nodes)>0)
print "Creation of the feed file fails, check write permissions for pmWiki and $nodesfile.";
else
print "No code to generate, did you correctly generate your Processing code?";
$edgesfile = $FarmD."/pub/edges.csv";
if (!file_exists($edgesfile))
if (!touch($edgesfile))
print "Creation of the processing file fails, check write permissions for pmWiki and $edgesfile.";
$write_result = file_put_contents($edgesfile,$edges);
if (!$write_result)
if (strlen($edges)>0)
print "Creation of the feed file fails, check write permissions for pmWiki and $edgesfile.";
else
print "No code to generate, did you correctly generate your Processing code?";
return ;
}
SDV($HandleActions['graphvan'],'GraphVAN');
SDV($HandleAuth['graphvan'],'view');
function GraphVAN($pagename, $auth){
$sourcename = preg_replace("/.*\.(.*)/","$1",$pagename);
$groupname = preg_replace("/(.*)\..*/","$1",$pagename);
global $FarmD, $WikiTitle, $ScriptUrl;
//entire wiki
if ($pagename == "Main.HomePage")
$pages = ListPages("//e");
else
$pages = ListPages("/$groupname\./e");
//$pages = MatchPageNames($pages,array('-*.RecentChanges,-*.GroupFooter,-*.GroupHeader'));
$pagesnum = count($pages);
$vangraph = "*Node data\nId Group Label Size Time Rev\n";
$vangraphties = "*Tie data\nFROM TO\n";
# scan over the array of pages to get mazimum and generate axis...
foreach ($pages as $page) {
$cleanpage = preg_replace("/.*\.(.*)/","$1",$page);
$content = ReadPage($page,$since=0);
$size = strlen($content["text"]);
$pagetime = $content["time"];
$pagerev = $content["rev"];
$group = preg_replace("/(.*)\..*/","$1",$page);
$vangraph .= "$page $group $cleanpage $size $pagetime $pagerev\n";
$page_category = preg_replace("/.*\[\[\!(.*)\]\].*/s","$1",$content["text"]);
$author = $content["author"];
$links = $content["targets"];
$links_array = explode(",",$links);
foreach ($links_array as $link) {
if (($linkindex = array_search($link,$pages)) !== false )
{
$cleanlink = preg_replace("/.*\.(.*)/","$1",$link);
$vangraphties .= "$page $link\n";
}
}
}
// ----------------------- return the processed result -----------------------
print "$vangraph<hr />$vangraphties";
$vanfile = $FarmD."/pub/graph.van";
if (!file_exists($vanfile))
if (!touch($vanfile))
print "Creation of the processing file fails, check write permissions for pmWiki and $vanfile.";
$write_result = file_put_contents($vanfile,$vangraph.$vangraphties);
if (!$write_result)
if (strlen($vangraph)>0)
print "Creation of the feed file fails, check write permissions for pmWiki and $vanfile.";
else
print "No code to generate, did you correctly generate your Processing code?";
return ;
}