site_stats_utils.php

来自「GForge 3.0 协作开发平台 支持CVS, mailing lists, 」· PHP 代码 · 共 506 行 · 第 1/2 页

PHP
506
字号
<?php/**  *  * SourceForge Sitewide Statistics - stats common module  *  * SourceForge: Breaking Down the Barriers to Open Source Development  * Copyright 1999-2001 (c) VA Linux Systems  * http://sourceforge.net  *  * @version   $Id: site_stats_utils.php,v 1.79 2001/05/22 15:47:25 pfalcon Exp $  *  */   // week_to_datesfunction week_to_dates( $week, $year = 0 ) {	if ( $year == 0 ) {		$year = gmstrftime("%Y", time() );	} 	   // One second into the New Year!	$beginning = gmmktime(0,0,0,1,1,$year);	while ( gmstrftime("%U", $beginning) < 1 ) {		   // 86,400 seconds? That's almost exactly one day!		$beginning += 86400;	}	$beginning += (86400 * 7 * ($week - 1));	$end = $beginning + (86400 * 6);	return array( $beginning, $end );}function stats_util_sum_array( $sum, $add ) {	while( list( $key, $val ) = each( $add ) ) {		$sum[$key] += $val;	}	return $sum;}/** *	generates the trove list in a select box format. *	contains the odd choices of "-2" and "-1" which mean "All projects *	and "special project list" respectively */function stats_generate_trove_pulldown( $selected_id = 0 ) {	global $Language;		$res = db_query("		SELECT trove_cat_id,fullpath		FROM trove_cat		ORDER BY fullpath");		print '		<select name="trovecatid">';		print '			<option value="-2">'.$Language->getString('stats_site_utils','all_projects').'</option>			<option value="-1">'.$Language->getString('stats_site_utils','sprecial_project_list').'</option>';	while ( $row = db_fetch_array($res) ) {		print	'			<option value="' . $row['trove_cat_id'] . '"'			. ( $selected_id == $row["trove_cat_id"] ? " selected=\"selected\"" : "" )			. ">" . $row["fullpath"] . '</option>';	}	print '		</select>';}function stats_trove_cat_to_name( $trovecatid ) {	$res = db_query("		SELECT fullpath		FROM trove_cat		WHERE trove_cat_id = '$trovecatid'");	if ( $row = db_fetch_array($res) ) {		return $row["fullpath"];	} else { 		return " ( $trovecatid $Language->getString('stats_site_utils','returned_no_category')) ";	}}function stats_generate_trove_grouplist( $trovecatid ) {		$results = array();	$res = db_query("		SELECT *		FROM trove_group_link		WHERE trove_cat_id='$trovecatid'");	print db_error( $res );	$i = 0;	while ( $row = db_fetch_array($res) ) {		$results[$i++] = $row["group_id"];	}	return $results;}function stats_site_projects_form( $report='last_30', $orderby = 'downloads', $projects = 0, $trovecat = 0 ) {	global $Language;		print '<form action="projects.php" method="get">' . "\n";	print '<table width="100%" cellpadding="0" cellspacing="0" style="background-color:#eeeeee">' . "\n";	print '<tr><td><strong>'.$Language->getText('stats_site_utils','in_trove_category').'</strong></td><td>';	stats_generate_trove_pulldown( $trovecat );	print '</td></tr>';	print '<tr><td><strong>'.$Language->getText('stats_site_utils','or_special_project_list').'</strong></td>';	print '<td> <input type="text" width="100" name="projects" value="'. $projects . '" />';	print '  ('.$Language->getText('stats_site_utils','comma_seperated_group_id').'</td></tr>';	print '<tr><td><strong>'.$Language->getText('stats_site_utils','report').'</strong></td><td>';	$reports_ids=array();	$reports_ids[]='last_30';	$reports_ids[]='all';	$reports_names=array();	$reports_names[]=$Language->getText('stats_site_utils','last_30');	$reports_names[]=$Language->getText('stats_site_utils','all');	echo html_build_select_box_from_arrays($reports_ids, $reports_names, 'report', $report, false);	print ' </td></tr>';	print '<tr><td><strong>'.$Language->getText('stats_site_utils','view_by').'</strong></td><td>';	$orderby_vals = array("downloads",				"site_views",				"subdomain_views",				"msg_posted",				"bugs_opened",				"bugs_closed",				"support_opened",				"support_closed",				"patches_opened",				"patches_closed",				"tasks_opened",				"tasks_closed",				"cvs_checkouts",				"cvs_commits",				"cvs_adds");	print html_build_select_box_from_arrays ( $orderby_vals, $orderby_vals, "orderby", $orderby, false );	print '</td></tr>';	print '<tr><td colspan="2" align="center"> <input type="submit" value="'.$Language->getText('stats_site_utils','generate_report').'" /> </td></tr>';	print '</table>' . "\n";	print '</form>' . "\n";}/** *	New function to separate out the SQL so it may be reused in other *	potential reports. * */function stats_site_project_result( $report, $orderby, $projects, $trove ) {	//	//	Determine if we are looking at ALL projects, 	//	a trove category, or a specific list	//	if ($trove == '-2') {		//do a query of ALL groups		$grp_str='';	} elseif ($trove == '-1') {		//do a query of just a specific list of passed in groups		$grp_str=" AND g.group_id IN (" . $projects . ") ";	} else {		//do a query of 		$grp_str=" AND EXISTS 			(SELECT group_id 				FROM trove_group_link 				WHERE trove_cat_id ='$trove' 				AND g.group_id=trove_group_link.group_id) ";	}	if ($report == 'last_30') {		$sql = "SELECT g.group_id, 		g.group_name,		SUM(s.downloads) AS downloads, 		SUM(s.site_views) AS site_views, 		SUM(s.subdomain_views) AS subdomain_views, 		SUM(s.msg_posted) AS msg_posted, 		SUM(s.bugs_opened) AS bugs_opened, 		SUM(s.bugs_closed) AS bugs_closed, 		SUM(s.support_opened) AS support_opened, 		SUM(s.support_closed) AS support_closed, 		SUM(s.patches_opened) AS patches_opened, 		SUM(s.patches_closed) AS patches_closed, 		SUM(s.tasks_opened) AS tasks_opened, 		SUM(s.tasks_closed) AS tasks_closed, 		SUM(s.cvs_checkouts) AS cvs_checkouts, 		SUM(s.cvs_commits) AS cvs_commits, 		SUM(s.cvs_adds) AS cvs_adds 		FROM 			stats_project_vw s, groups g		WHERE 			s.group_id = g.group_id			$grp_str		GROUP BY g.group_id, g.group_name		ORDER BY $orderby DESC ";	} else {		$sql = "SELECT g.group_id, 	   	g.group_name,		s.downloads, 		s.site_views, 		s.subdomain_views, 		s.msg_posted, 		s.bugs_opened,		s.bugs_closed,		s.support_opened,		s.support_closed,		s.patches_opened,		s.patches_closed,		s.tasks_opened,		s.tasks_closed,		s.cvs_checkouts,		s.cvs_commits,		s.cvs_adds		FROM 			stats_project_all_vw s, groups g		WHERE 			s.group_id = g.group_id			$grp_str		ORDER BY $orderby DESC ";	}	return db_query( $sql, 30, 0, SYS_DB_STATS);}function stats_site_projects( $report, $orderby, $projects, $trove ) {	global $Language;	$res=stats_site_project_result( $report, $orderby, $projects, $trove );	   // if there are any rows, we have valid data (or close enough).	if ( db_numrows( $res ) > 1 ) {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?