4 // SourceForge: Breaking Down the Barriers to Open Source Development
5 // Copyright 1999-2001 (c) VA Linux Systems
6 // http://sourceforge.net
8 // Attempt to set up the include path, to fix problems with relative includes
10 //require_once('../env.inc.php');
11 //require_once('pre.php');
12 require_once $gfcommon.'include/FusionForge.class.php';
14 function show_features_boxes() {
15 GLOBAL $HTML,$sys_use_ratings;
18 $return .= $HTML->boxTop(sprintf(_('%1$s Statistics'), $GLOBALS['sys_name']),0);
19 $return .= show_sitestats();
20 $return .= $HTML->boxMiddle(_('Top Project Downloads'));
21 $return .= show_top_downloads();
22 if ($sys_use_ratings) {
23 $return .= $HTML->boxMiddle(_('Highest Ranked Users'));
24 $return .= show_highest_ranked_users();
26 $return .= $HTML->boxMiddle(_('Most Active This Week'));
27 $return .= show_highest_ranked_projects();
28 $return .= $HTML->boxMiddle(_('Recently Registered Projects'));
29 $return .= show_newest_projects();
30 $return .= $HTML->boxBottom(0);
34 function show_top_downloads() {
35 // TODO yesterday is now defined as two days ago. Quick fix
36 // to allow download list to be cached before nightly
37 // aggregation is done. jbyers 2001.03.19
39 $month = date("Ym",time()-(2*3600*24));
40 $day = date("d",time()-(2*3600*24));
42 $res_topdown = db_query("
43 SELECT groups.group_id,
45 groups.unix_group_name,
46 frs_dlstats_grouptotal_vw.downloads
47 FROM frs_dlstats_grouptotal_vw,groups
49 frs_dlstats_grouptotal_vw.group_id=groups.group_id AND groups.is_public='1' and groups.status='A'
50 ORDER BY downloads DESC
51 ", 10, 0, SYS_DB_STATS);
54 if (db_numrows($res_topdown) == 0) {
55 return _('No Stats Available');
59 while ($row_topdown = db_fetch_array($res_topdown)) {
60 if ($row_topdown['downloads'] > 0)
61 $return .= '(' . number_format($row_topdown['downloads']) . ')'
62 . util_make_link_g ($row_topdown['unix_group_name'],$row_topdown['group_id'],$row_topdown['group_name'])
65 $return .= '<div align="center">'.util_make_link ('/top/',_('More')).'</div>';
72 function stats_getprojects_active_public() {
73 $res_count = db_query("SELECT count(*) AS count FROM groups WHERE status='A' AND is_public=1");
74 if (db_numrows($res_count) > 0) {
75 $row_count = db_fetch_array($res_count);
76 return $row_count['count'];
82 function stats_getprojects_total() {
83 $res_count = db_query("SELECT count(*) AS count FROM groups WHERE status='A' OR status='H'");
84 if (db_numrows($res_count) > 0) {
85 $row_count = db_fetch_array($res_count);
86 return $row_count['count'];
92 function stats_getpageviews_total() {
93 $res_count = db_query("SELECT SUM(site_views) AS site, SUM(subdomain_views) AS subdomain FROM stats_site");
94 if (db_numrows($res_count) > 0) {
95 $row_count = db_fetch_array($res_count);
96 return ($row_count['site'] + $row_count['subdomain']);
102 function stats_downloads_total() {
103 $res_count = db_query("SELECT SUM(downloads) AS downloads FROM stats_site");
104 if (db_numrows($res_count) > 0) {
105 $row_count = db_fetch_array($res_count);
106 return $row_count['downloads'];
112 function show_sitestats() {
113 $gforge = new FusionForge();
115 $return .= _('Hosted Projects').': <strong>'.number_format($gforge->getNumberOfPublicHostedProjects()).'</strong>';
116 $return .= '<br />'._('Registered Users').': <strong>'.number_format($gforge->getNumberOfActiveUsers()).'</strong>';
120 function show_newest_projects() {
121 $sql = "SELECT group_id,unix_group_name,group_name,register_time FROM groups " .
122 "WHERE is_public=1 AND status='A' AND type_id=1 AND register_time > 0 " .
123 "ORDER BY register_time DESC";
124 $res_newproj = db_query($sql,10);
128 if (!$res_newproj || db_numrows($res_newproj) < 1) {
129 return _('No Stats Available')." ".db_error();
131 while ( $row_newproj = db_fetch_array($res_newproj) ) {
132 $return .= "<strong>(" . date(_('m/d'),$row_newproj['register_time']) . ")</strong> "
133 . util_make_link_g ($row_newproj['unix_group_name'],$row_newproj['group_id'],$row_newproj['group_name'])
137 /// TODO: Add more link to show all project
138 //$return .= '<div align="center">'.util_make_link ('/top/projlist.php','[ '._('More').' ]').'</div>';
142 function show_highest_ranked_users() {
143 //select out the users information to show the top users on the site
144 $sql="SELECT users.user_name,users.user_id,users.realname,user_metric.metric
145 FROM user_metric,users
146 WHERE users.user_id=user_metric.user_id AND user_metric.ranking < 11 AND users.status != 'D'
147 ORDER BY ranking ASC";
149 $rows=db_numrows($res);
150 if (!$res || $rows<1) {
151 return _('No Stats Available').db_error();
154 for ($i=0; $i<$rows; $i++) {
155 $return .= ($i+1).' - ('. number_format(db_result($res,$i,'metric'),4) .') '
156 . util_make_link_u (db_result($res,$i,'user_name'),db_result($res,$i,'user_id'),db_result($res,$i,'realname'))
160 $return .= '<div align="center">'.util_make_link ('/top/topusers.php','[ '._('More').' ]').'</div>';
164 function show_highest_ranked_projects() {
165 $sql="SELECT groups.group_name,groups.unix_group_name,groups.group_id,".
166 "project_weekly_metric.ranking,project_weekly_metric.percentile ".
167 "FROM groups,project_weekly_metric ".
168 "WHERE groups.group_id=project_weekly_metric.group_id ".
169 "AND groups.is_public=1 ".
170 "AND groups.type_id=1 ".
171 "AND groups.status != 'D' ".
172 "ORDER BY ranking ASC";
173 $result=db_query($sql,20);
174 if (!$result || db_numrows($result) < 1) {
175 return _('No Stats Available')." ".db_error();
178 while ($row=db_fetch_array($result)) {
179 $return .= '<strong>('.number_format(substr($row['percentile'],0,5),1).'%)</strong> '
180 .util_make_link_g ($row['unix_group_name'],$row['group_id'],$row['group_name'])
183 $return .= '<div align="center">'
184 .util_make_link ('/top/mostactive.php?type=week','[ '._('More').' ]')
192 // c-file-style: "bsd"