<?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.