X-Git-Url: http://git.pk910.de/?p=phpgitweb.git;a=blobdiff_plain;f=htdocs%2Flib%2Fgraph.class.php;fp=htdocs%2Flib%2Fgraph.class.php;h=0906391d77cdcbb1e92bfc74a8c79b6e18426e07;hp=78deef381d341161ca9e988b45e654af1fcf8fb1;hb=574f4ed4076c84231ec75dc70a9120c553e37374;hpb=ee39a29d2d94cb45f3634bc853f223192d3ad0d4 diff --git a/htdocs/lib/graph.class.php b/htdocs/lib/graph.class.php index 78deef3..0906391 100644 --- a/htdocs/lib/graph.class.php +++ b/htdocs/lib/graph.class.php @@ -294,14 +294,19 @@ class graph_image_generator { ); } - public function generate($data) { + public function generate($data, $return = false) { if(!GitConfig::GITGRAPH_ENABLE) return; $data = $this->parse_data($data); if(!$data) { + if($return) + return null; header('Content-Type: text/plain'); die(base64_decode("ICAgIC0tLS0tLS0tOi0tLS0tLS0tDQogICAgICAgICAgLC0iLC5fX19fX19fIC8NCiAgICAgICAgIC8gKSB8ICAgLC0tLS0nXA0KICAgICAgICAgXC9fX3wuLSINCiAgICAgICAgLl8vL19cXF8NCk5vdCB3aGF0IHlvdSBleHBlY3RlZCwgZWVlaD8=")); } + if($data['header']) { + return $this->display_header($data['data'], $return); + } $count = $data['count']; if($count > $this->max_branches) @@ -314,12 +319,21 @@ class graph_image_generator { imagecolortransparent($this->image, $transparentIndex); - header('Content-Type: image/png'); - imagepng($this->image); + if($return) { + ob_start(); + imagepng($this->image); + $ret = ob_get_contents(); + ob_end_clean(); + } else { + header('Content-Type: image/png'); + imagepng($this->image); + $ret = null; + } imagedestroy($this->image); + return $ret; } - private function display_header($header) { + private function display_header($header, $return = false) { $header = explode("//",$header); $count = $header[0]; $header = array_slice($header, 1); @@ -347,12 +361,21 @@ class graph_image_generator { $color = imagecolorallocatealpha($image, $color[0], $color[1], $color[2], 0); imagettftext($image, 8, 28, ($head[0]-1) * $this->size + 10, $this->header_height-2, $color, realpath(dirname(__FILE__)."/../")."/res/arial.ttf", $name); } - if(!$branches) die(); + if(!$branches) return null; imagecolortransparent($image, $transparentIndex); - header('Content-Type: image/png'); - imagepng($image); + + if($return) { + ob_start(); + imagepng($image); + $ret = ob_get_contents(); + ob_end_clean(); + } else { + header('Content-Type: image/png'); + imagepng($image); + $ret = null; + } imagedestroy($image); - die(); + return $ret; } private function parse_data($data) { @@ -360,12 +383,16 @@ class graph_image_generator { $data = base64_decode($data); if(!preg_match("/^([0-9]+)([abc]{1})([0-9]+)\(([^\)]*)\)([a-z0-9,\|]*)(\(([^\)]*)\)|)/i", $data, $matches)) { if(preg_match("/head:(.*)/i", $data, $matches)) { - $this->display_header(substr($data, strlen("head:"))); + $cdata = array(); + $cdata['header'] = true; + $cdata['data'] = substr($data, strlen("head:")); + return $cdata; } return null; } $data = array(); + $data['header'] = false; $data['dot'] = array(); $data['dot']['pos'] = $matches[1]; $data['dot']['type'] = $matches[2];