a lot more improvements

This commit is contained in:
Michael Save 2012-05-06 01:33:10 +10:00
parent ac2837c620
commit a610458720
40 changed files with 986 additions and 271 deletions

View file

@ -28,7 +28,7 @@
$__boards = listBoards();
$__default_boards = Array();
foreach($__boards as $__board)
foreach ($__boards as $__board)
$__default_boards[] = $__board['uri'];
$theme['config'][] = Array(
@ -83,31 +83,31 @@
);
$theme['install_callback'] = 'rrdtool_install';
if(!function_exists('rrdtool_install')) {
if (!function_exists('rrdtool_install')) {
function rrdtool_install($settings) {
global $config;
if(!is_numeric($settings['interval']) || $settings['interval'] < 1 || $settings['interval'] > 86400)
if (!is_numeric($settings['interval']) || $settings['interval'] < 1 || $settings['interval'] > 86400)
return Array(false, 'Invalid interval: <strong>' . $settings['interval'] . '</strong>. Must be an integer greater than 1 and less than 86400.');
if(!is_numeric($settings['width']) || $settings['width'] < 1)
if (!is_numeric($settings['width']) || $settings['width'] < 1)
return Array(false, 'Invalid width: <strong>' . $settings['width'] . '</strong>!');
if(!is_numeric($settings['height']) || $settings['height'] < 1)
if (!is_numeric($settings['height']) || $settings['height'] < 1)
return Array(false, 'Invalid height: <strong>' . $settings['height'] . '</strong>!');
if(!in_array($settings['rate'], Array('second', 'minute', 'day', 'hour', 'week', 'month', 'year')))
if (!in_array($settings['rate'], Array('second', 'minute', 'day', 'hour', 'week', 'month', 'year')))
return Array(false, 'Invalid rate: <strong>' . $settings['rate'] . '</strong>!');
$job = '*/' . $settings['interval'] . ' * * * * php -q ' . str_replace('\\', '/', dirname(__FILE__)) . '/cron.php' . PHP_EOL;
if(function_exists('system')) {
if (function_exists('system')) {
$crontab = tempnam($config['tmp'], 'tinyboard-rrdtool');
file_write($crontab, $job);
@system('crontab ' . escapeshellarg($crontab), $ret);
unlink($crontab);
if($ret === 0)
if ($ret === 0)
return ''; // it seems to install okay?
}

View file

@ -17,7 +17,7 @@
public function build($action, $settings) {
global $config, $_theme, $argv;
if(!$settings) {
if (!$settings) {
error('This theme is not currently installed.');
}
@ -26,18 +26,18 @@
// exclude boards from the "combined" graph
$this->combined_exclude = Array();
if($action == 'cron') {
if(!file_exists($settings['path']))
if ($action == 'cron') {
if (!file_exists($settings['path']))
mkdir($settings['path']);
if(!file_exists($settings['images']))
if (!file_exists($settings['images']))
mkdir($settings['images']);
foreach($this->boards as &$board) {
foreach ($this->boards as &$board) {
$file = $settings['path'] . '/' . $board . '.rrd';
if(!file_exists($file)) {
if (!file_exists($file)) {
// Create graph
if(!rrd_create($file, Array(
if (!rrd_create($file, Array(
'-s 60',
'DS:posts:COUNTER:86400:0:10000',
@ -59,22 +59,22 @@
}
// debug just the graphing (not updating) with the --debug switch
if(!isset($argv[1]) || $argv[1] != '--debug') {
if (!isset($argv[1]) || $argv[1] != '--debug') {
// Update graph
$query = query(sprintf("SELECT MAX(`id`) AS `count` FROM `posts_%s`", $board));
$count = $query->fetch();
$count = $count['count'];
if(!rrd_update($file, Array(
if (!rrd_update($file, Array(
'-t',
'posts',
'N:' . $count)))
error('RRDtool failed: ' . htmlentities(rrd_error()));
}
foreach($this->spans as &$span) {
foreach ($this->spans as &$span) {
// Graph graph
if(!rrd_graph($settings['images'] . '/' . $board . '-' . $span . '.png', Array(
if (!rrd_graph($settings['images'] . '/' . $board . '-' . $span . '.png', Array(
'-s -1' . $span,
'-t Posts on ' . sprintf($config['board_abbreviation'], $board) .' this ' . $span,
'--lazy',
@ -105,7 +105,7 @@
}
// combined graph
foreach($this->spans as &$span) {
foreach ($this->spans as &$span) {
$options = Array(
'-s -1' . $span,
'-t Posts this ' . $span,
@ -129,8 +129,8 @@
$c = 1;
$cc = 0;
$red = 2;
foreach($this->boards as &$board) {
if(in_array($board, $this->combined_exclude))
foreach ($this->boards as &$board) {
if (in_array($board, $this->combined_exclude))
continue;
$color = str_pad(dechex($red*85), 2, '0', STR_PAD_LEFT) .
str_pad(dechex($green*85), 2, '0', STR_PAD_LEFT) .
@ -147,31 +147,35 @@
sprintf($config['board_abbreviation'], $board);
// Randomize colors using this horrible undocumented algorithm I threw together while debugging
if($c == 0)
if ($c == 0)
$red++;
elseif($c == 1)
elseif ($c == 1)
$green++;
elseif($c == 2)
elseif ($c == 2)
$blue++;
elseif($c == 3)
elseif ($c == 3)
$green--;
elseif($c == 4)
elseif ($c == 4)
$red--;
$cc++;
if($cc > 2) {
if ($cc > 2) {
$c++;
$cc = 0;
}
if($c>4) $c = 0;
if ($c > 4)
$c = 0;
if($red>3) $red = 0;
if($green>3) $green = 0;
if($blue>3) $blue = 0;
if ($red > 3)
$red = 0;
if ($green > 3)
$green = 0;
if ($blue > 3)
$blue = 0;
}
$options[] = 'HRULE:0#000000';
if(!rrd_graph($settings['images'] . '/combined-' . $span . '.png', $options))
if (!rrd_graph($settings['images'] . '/combined-' . $span . '.png', $options))
error('RRDtool failed: ' . htmlentities(rrd_error()));
}
}