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); | 			$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 | else | ||||||
| { | { | ||||||
| 	$http_user_agent = $_SERVER['HTTP_USER_AGENT'];  | 	$http_user_agent = $_SERVER['HTTP_USER_AGENT'];  | ||||||
| 	$is_msie = (stristr($http_user_agent, 'MSIE') != FALSE &&  | 	$is_msie = (stristr($http_user_agent, 'MSIE') !== FALSE &&  | ||||||
| 	            stristr($http_user_agent, 'Opera') == FALSE); | 	            stristr($http_user_agent, 'Opera') === FALSE); | ||||||
| 	if (!$is_msie) | 	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">'; | 	print '<div style="width: 100%; overflow: hidden;" id="code_diff_mainarea_result_fullview">'; | ||||||
|  | |||||||
| @ -83,10 +83,10 @@ $this->load->view ( | |||||||
| <?php | <?php | ||||||
| 	$xfullpath = $this->converter->AsciiToHex (($fullpath == '')? '.': $fullpath); | 	$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}' />"; | 	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}' />"; | 	print "<img src='{$graph_url}' />"; | ||||||
| ?> | ?> | ||||||
|  |  | ||||||
|  | |||||||
| @ -98,6 +98,7 @@ $this->load->view ( | |||||||
| 		$m = $members[$i]; | 		$m = $members[$i]; | ||||||
| 		if ($m == '') continue; | 		if ($m == '') continue; | ||||||
|  |  | ||||||
|  | 		/* | ||||||
| 		$icon_src = ''; | 		$icon_src = ''; | ||||||
| 		if (array_key_exists($m, $icons)) | 		if (array_key_exists($m, $icons)) | ||||||
| 		{ | 		{ | ||||||
| @ -115,6 +116,9 @@ $this->load->view ( | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		print "<li>{$icon_src}{$m}</li>"; | 		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> | </ul> | ||||||
|  | |||||||
| @ -11,6 +11,7 @@ function show_taskbar ($con, $login) | |||||||
| 		$title = (isset($login['email']) && $login['email'] != '')? | 		$title = (isset($login['email']) && $login['email'] != '')? | ||||||
| 			('title=' . htmlspecialchars($login['email'])): ''; | 			('title=' . htmlspecialchars($login['email'])): ''; | ||||||
|  |  | ||||||
|  | 		/* | ||||||
| 		// attempt to load the user icon regardless of its upload state. | 		// attempt to load the user icon regardless of its upload state. | ||||||
| 		// if it has not been uploaded, it won't be found.  | 		// if it has not been uploaded, it won't be found.  | ||||||
| 		// check a file system may be faster than checking the database. | 		// check a file system may be faster than checking the database. | ||||||
| @ -26,6 +27,9 @@ function show_taskbar ($con, $login) | |||||||
| 			); | 			); | ||||||
| 		} | 		} | ||||||
| 		print $icon_src; | 		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); | 		print anchor ('user/home', htmlspecialchars($login['id']), $title); | ||||||
|  |  | ||||||
|  | |||||||
| @ -68,6 +68,7 @@ body { | |||||||
|  |  | ||||||
| .content .taskbar .boxb .user_icon_img { | .content .taskbar .boxb .user_icon_img { | ||||||
| 	height: 2em; /* as large as line-height of taskbar */ | 	height: 2em; /* as large as line-height of taskbar */ | ||||||
|  | 	width: auto; | ||||||
| 	vertical-align: middle; | 	vertical-align: middle; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -493,9 +494,11 @@ pre.prettyprint li.L9 { background: #eee } | |||||||
|  |  | ||||||
| .content .sidebar .box .user_icon_img { | .content .sidebar .box .user_icon_img { | ||||||
| 	height: 2em; | 	height: 2em; | ||||||
|  | 	width: auto; | ||||||
| 	vertical-align: middle; | 	vertical-align: middle; | ||||||
| 	padding-top: 1px; | 	padding-top: 1px; | ||||||
| 	padding-bottom: 1px; | 	padding-bottom: 1px; | ||||||
|  | 	padding-right: 1px; | ||||||
| } | } | ||||||
|  |  | ||||||
| .content .sidebar .boxtitle { | .content .sidebar .boxtitle { | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user