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 + -
显示快捷键?