GraphViz Source

<?php //{{MediaWikiExtension}}<source lang="php"># CoffMan code adapted from timeline extension.# Timeline extension# To use, include this file from your LocalSettings.php# To configure, set members of $wgGraphVizSettings after the inclusion## This version was modified by Kenny Root ( https://the-b.org/ ) to use the# automatically generated SWIG version of GraphViz for PHP.#require_once("gv.php");
$wgExtensionFunctions[] = "wfGraphVizExtension";
function wfGraphVizExtension() {        global $wgParser;        $wgParser->setHook( "graphviz", "renderGraphviz" );}
function renderGraphviz( $text, $params = array(), &$parser){        global $wgUploadDirectory, $wgUploadPath, $IP, $wgGraphVizSettings, $wgArticlePath, $wgTmpDirectory;
        $layout = 'dot';        if (array_key_exists('layout', $params))                $layout = $params['layout'];
        $hash = md5( $layout . $text );        $dest = $wgUploadDirectory."/graphviz/";        if ( ! is_dir( $dest ) ) { mkdir( $dest, 0777 ); }
        $fname = $dest . $hash;
        if (! file_exists( $fname.".png" ) )        {                $G = gv::readstring($text);                if (!gv::layout($G, $layout))                        return "<p>Error in layout for Graphviz.</p>";                if (!gv::render($G, "png", $fname.".png"))                        return "<p>Error in PNG render for Graphviz.</p>";                if (!gv::render($G, "cmapx", $fname.".map"))                        return "<p>Error in map render for Graphviz.</p>";        }
        @$map = file_get_contents( $fname.".map" );
        $map=preg_replace("#<ma(.*)>#"," ",$map);        $map=str_replace("</map>","",$map);
        if (substr(php_uname(), 0, 7) == "Windows") {                $ext = "gif";        } else {                $ext = "png";        }
        if (trim($map) != "") {                $txt  = "<map name=\"$hash\">{$map}</map>".                        "<img usemap=\"#{$hash}\" src=\"{$wgUploadPath}/graphviz/{$hash}.{$ext}\" />";        } else {                $txt = "<img src=\"{$wgUploadPath}/graphviz/{$hash}.{$ext}\" />";        }
        return $txt;}//</source>

Kenny Root

Copyright © Kenny Root. All rights reserved.