changed user icon delivery - still lacking etags/if-none-match handling
This commit is contained in:
		@ -235,6 +235,65 @@ class User extends Controller
 | 
			
		||||
			$this->load->view ($this->VIEW_SETTINGS, $data);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function icon ($userid = '')
 | 
			
		||||
	{
 | 
			
		||||
	// TODO: ETag, If-None-Match???
 | 
			
		||||
		$userid_len = strlen($userid);
 | 
			
		||||
		if ($userid_len > 0)
 | 
			
		||||
		{
 | 
			
		||||
			$userid = $this->converter->HexToAscii ($userid);
 | 
			
		||||
			$userid_len = strlen($userid);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ($userid_len > 0)
 | 
			
		||||
		{
 | 
			
		||||
			$icon_path = CODEPOT_USERICON_DIR . '/' . $userid . '.png';
 | 
			
		||||
			$icon_size = @filesize ($icon_path);
 | 
			
		||||
			if (@file_exists($icon_path) === TRUE && 
 | 
			
		||||
			    ($icon_size = @filesize($icon_path)) !== FALSE &&
 | 
			
		||||
			    @getimagesize($icon_path) !== FALSE)
 | 
			
		||||
			{
 | 
			
		||||
				header ("Content-Type: image/png");
 | 
			
		||||
				header ("Content-Length: $icon_size");
 | 
			
		||||
				@readfile ($icon_path);
 | 
			
		||||
				return $icon_size;
 | 
			
		||||
			}
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
		$img = imagecreate (50, 50);
 | 
			
		||||
 | 
			
		||||
		$bgcolor = imagecolorallocate($img, 250, 255, 250);
 | 
			
		||||
		imagefill ($img, 0, 0, $bgcolor);
 | 
			
		||||
 | 
			
		||||
		if ($userid_len > 0) 
 | 
			
		||||
		{
 | 
			
		||||
			$fgcolor = imagecolorallocate($img, 0, 0, 0);
 | 
			
		||||
			$font_size = 4;
 | 
			
		||||
			$font_width = imagefontwidth(5);
 | 
			
		||||
			$font_height = imagefontheight(5);
 | 
			
		||||
			$img_width = imagesx($img);
 | 
			
		||||
			$y = 2;
 | 
			
		||||
			$k = 1;
 | 
			
		||||
			for ($i = 0; $i < $userid_len; $i++) 
 | 
			
		||||
			{
 | 
			
		||||
				$x = $k * $font_width;
 | 
			
		||||
				if ($x > $img_width - $font_width) 
 | 
			
		||||
				{
 | 
			
		||||
					$k = 1;
 | 
			
		||||
					$y += $font_height + 2;
 | 
			
		||||
					$x = $k * $font_width;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				$k++;
 | 
			
		||||
				imagechar ($img, $font_size, $x, $y, $userid[$i], $fgcolor);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		header ("Content-Type: image/png");
 | 
			
		||||
		imagepng ($img);
 | 
			
		||||
		imagedestroy ($img);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
@ -15,3 +15,15 @@ if ( ! function_exists('base_url_make'))
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ( ! function_exists('codepot_merge_path'))
 | 
			
		||||
{
 | 
			
		||||
	function codepot_merge_path($base, $path)
 | 
			
		||||
	{
 | 
			
		||||
		if (substr($base, -1) == '/')
 | 
			
		||||
		{
 | 
			
		||||
			for ($i = 0; substr($path, $i, 1) == '/'; $i++);
 | 
			
		||||
			return $base . substr($path, $i);
 | 
			
		||||
		}
 | 
			
		||||
		else return $base . $path;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -308,11 +308,11 @@ if (FALSE) // don't want to delete code for the original diff view.
 | 
			
		||||
else
 | 
			
		||||
{
 | 
			
		||||
	$http_user_agent = $_SERVER['HTTP_USER_AGENT']; 
 | 
			
		||||
	$is_msie = (stristr($http_user_agent, 'MSIE') != FALSE && 
 | 
			
		||||
	            stristr($http_user_agent, 'Opera') == FALSE);
 | 
			
		||||
	$is_msie = (stristr($http_user_agent, 'MSIE') !== FALSE && 
 | 
			
		||||
	            stristr($http_user_agent, 'Opera') === FALSE);
 | 
			
		||||
	if (!$is_msie)
 | 
			
		||||
	{
 | 
			
		||||
		$is_msie = (preg_match ("/^Mozilla.+\(Windows.+\) like Gecko$/", $http_user_agent) != FALSE);
 | 
			
		||||
		$is_msie = (preg_match ("/^Mozilla.+\(Windows.+\) like Gecko$/", $http_user_agent) !== FALSE);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	print '<div style="width: 100%; overflow: hidden;" id="code_diff_mainarea_result_fullview">';
 | 
			
		||||
 | 
			
		||||
@ -83,10 +83,10 @@ $this->load->view (
 | 
			
		||||
<?php
 | 
			
		||||
	$xfullpath = $this->converter->AsciiToHex (($fullpath == '')? '.': $fullpath);
 | 
			
		||||
 | 
			
		||||
	$graph_url = site_url() . "/code/graph/commits-by-users/{$project->id}/{$xfullpath}";
 | 
			
		||||
	$graph_url = codepot_merge_path (site_url(), "/code/graph/commits-by-users/{$project->id}/{$xfullpath}");
 | 
			
		||||
	print "<img src='{$graph_url}' />";
 | 
			
		||||
 | 
			
		||||
	$graph_url = site_url() . "/code/graph/commit-share-by-users/{$project->id}/{$xfullpath}";
 | 
			
		||||
	$graph_url = codepot_merge_path (site_url(), "/code/graph/commit-share-by-users/{$project->id}/{$xfullpath}");
 | 
			
		||||
	print "<img src='{$graph_url}' />";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -98,6 +98,7 @@ $this->load->view (
 | 
			
		||||
		$m = $members[$i];
 | 
			
		||||
		if ($m == '') continue;
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		$icon_src = '';
 | 
			
		||||
		if (array_key_exists($m, $icons))
 | 
			
		||||
		{
 | 
			
		||||
@ -115,6 +116,9 @@ $this->load->view (
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		print "<li>{$icon_src}{$m}</li>";
 | 
			
		||||
		*/
 | 
			
		||||
		$user_icon_url = codepot_merge_path (site_url(), '/user/icon/' . $this->converter->AsciiToHex($m));
 | 
			
		||||
		print "<li><img src='{$user_icon_url}' class='user_icon_img' />{$m}</li>";
 | 
			
		||||
	}
 | 
			
		||||
?>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,7 @@ function show_taskbar ($con, $login)
 | 
			
		||||
		$title = (isset($login['email']) && $login['email'] != '')?
 | 
			
		||||
			('title=' . htmlspecialchars($login['email'])): '';
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		// attempt to load the user icon regardless of its upload state.
 | 
			
		||||
		// if it has not been uploaded, it won't be found. 
 | 
			
		||||
		// check a file system may be faster than checking the database.
 | 
			
		||||
@ -26,6 +27,9 @@ function show_taskbar ($con, $login)
 | 
			
		||||
			);
 | 
			
		||||
		}
 | 
			
		||||
		print $icon_src;
 | 
			
		||||
		*/
 | 
			
		||||
		$user_icon_url = codepot_merge_path (site_url(), '/user/icon/' . $con->converter->AsciiToHex($login['id']));
 | 
			
		||||
		print "<img src='{$user_icon_url}' class='user_icon_img' />";
 | 
			
		||||
 | 
			
		||||
		print anchor ('user/home', htmlspecialchars($login['id']), $title);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -68,6 +68,7 @@ body {
 | 
			
		||||
 | 
			
		||||
.content .taskbar .boxb .user_icon_img {
 | 
			
		||||
	height: 2em; /* as large as line-height of taskbar */
 | 
			
		||||
	width: auto;
 | 
			
		||||
	vertical-align: middle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -493,9 +494,11 @@ pre.prettyprint li.L9 { background: #eee }
 | 
			
		||||
 | 
			
		||||
.content .sidebar .box .user_icon_img {
 | 
			
		||||
	height: 2em;
 | 
			
		||||
	width: auto;
 | 
			
		||||
	vertical-align: middle;
 | 
			
		||||
	padding-top: 1px;
 | 
			
		||||
	padding-bottom: 1px;
 | 
			
		||||
	padding-right: 1px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.content .sidebar .boxtitle {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user