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/tikiwiki/wikiplugin_pjsviz.php

113 lines
3.7 KiB

<?php
/*
* Discovery Tiki by
* porting http://fabien.benetou.fr/pub/pim_functions.php.txt
* by following http://dev.tiki.org/Hello+World#To_create_a_new_plugin
* test in http://localhost/tiki/tiki-index.php?page=Testing
*/
//the info function is needed for tw >= 3.0
function wikiplugin_pjsviz_help() {
return "do the viz";
}
function wikiplugin_pjsviz_info() {
return array(
'name' => tra('Pjsviz'),
'documentation' => 'PJS Viz',
'description' => tra('Display a visualization of edits.'),
'format' => 'html', // html or wiki
'prefs' => array( 'wikiplugin_pjsviz'),
// else fails on the feature_myfeature
// each plugin can have an admin setting(pref) to enable them
'body' => tra('explain what the body of the plugin means'),
//'validate' =>'all',
//add this line if each insertion of this plugin needs to be validated by an admin,
// (because new or modified plugin body or plugin arguments is found). Possible values are: 'all', body' or 'arguments'.
'params' => array(
/*
'title' => array(
'required' => false,
'name' => tra('Title'),
'description' => tra('Describe what title is'),
),
*/
),
);
}
function wikiplugin_pjsviz($data, $params) {
require_once ('tiki-setup.php');
include_once ('lib/wiki/histlib.php');
$pagename = "Testing";
$history = $histlib->get_page_history($pagename);
//var_dump($history); returned from the newest to the oldest
$pjs_path = "/tiki/lib/processingjs/processing.min.js";
$processinglocalfile = 'e:\webserver\htdocs\tiki\lib\processingjs\edits_per_page\\'.$pagename.".pjs";
$processingfile = "/tiki/lib/processingjs/edits_per_page/$pagename.pjs";
$canvasheight = 600-2*10;
$canvaswidth = 100;
$block_width = 90;
$block_height = 4;
$content = "";
foreach ($history as $edit){
$diffs[] = intval($edit["lastModif"]);
}
//var_dump($diffs);
$min = min($diffs);
$max = max($diffs);
$number_of_diffs = count($history);
$now = time();
$content .= "<script src=\"$pjs_path\" type=\"text/javascript\"></script>";
$canvas = "
void setup()
{
size($canvaswidth, $canvasheight);
PFont font;
font = loadFont(\"FFScala-Bold-12.vlw\");
textFont(font);
}
void mouseMoved() {
checkButtons();
}
void mouseDragged() {
checkButtons();
}
void draw()
{
background(251);
fill(0,0,255,20);
noStroke();
";
foreach ($diffs as $diff){
$x = 5;
$y = round ( ($canvasheight - $block_height) * ( (($now - $min)-($now-$diff)) / ($now - $min)));
$canvas .= "\t\trect($x,$y,$block_width,$block_height);\n";
}
$canvas .= "\t\tstroke(0,155);\n";
$canvas .= "\t\tfill(0,0,255,80);\n";
$canvas .= "\t\ttext(\"Edits:\",2,10 );\n";
$canvas .= "}";
$write_result = file_put_contents($processinglocalfile,$canvas);
//here instead save to MongoDB
$content .= '<canvas data-src="'.$processingfile.'" width="'.$canvaswidth.'" height="'.$canvasheight.'"></canvas><br/>';
return $content;
//*************************************************************
//kept just to use if parameters are later given
if( isset( $params["title"] ) ) {
$title = $params["title"];
return "Hello World __".$title."__ $data!";
} else {
// Indicate that a parameter is missing
return WikiParser_PluginOutput::argumentError( array('title') );
}
//*************************************************************
}
?>