4 // SourceForge: Breaking Down the Barriers to Open Source Development
5 // Copyright 1999-2001 (c) VA Linux Systems
6 // http://sourceforge.net
10 // Attempt to set up the include path, to fix problems with relative includes
12 //require_once('../env.inc.php');
13 //require_once('pre.php');
14 require_once('common/include/GForge.class.php');
16 function show_features_boxes() {
17 GLOBAL $HTML,$sys_use_ratings;
20 $return .= $HTML->boxTop(sprintf(_('%1$s Statistics'), $GLOBALS['sys_name']),0);
21 $return .= show_sitestats();
22 $return .= $HTML->boxMiddle(_('Top Project Downloads'));
23 $return .= show_top_downloads();
24 if ($sys_use_ratings) {
25 $return .= $HTML->boxMiddle(_('Highest Ranked Users'));
26 $return .= show_highest_ranked_users();
28 $return .= $HTML->boxMiddle(_('Most Active This Week'));
29 $return .= show_highest_ranked_projects();
30 $return .= $HTML->boxMiddle(_('Recently Registered Projects'));
31 $return .= show_newest_projects();
32 $return .= $HTML->boxBottom(0);
36 function show_top_downloads() {
37 // TODO yesterday is now defined as two days ago. Quick fix
38 // to allow download list to be cached before nightly
39 // aggregation is done. jbyers 2001.03.19
41 $month = date("Ym",time()-(2*3600*24));
42 $day = date("d",time()-(2*3600*24));
44 $res_topdown = db_query("
45 SELECT groups.group_id,
47 groups.unix_group_name,
48 frs_dlstats_grouptotal_vw.downloads
49 FROM frs_dlstats_grouptotal_vw,groups
51 frs_dlstats_grouptotal_vw.group_id=groups.group_id AND groups.is_public='1' and groups.status='A'
52 ORDER BY downloads DESC
53 ", 10, 0, SYS_DB_STATS);
56 if (db_numrows($res_topdown) == 0) {
57 return _('No Stats Available');
61 while ($row_topdown = db_fetch_array($res_topdown)) {
62 if ($row_topdown['downloads'] > 0)
63 $return .= "(" . number_format($row_topdown['downloads']) . ') <a href="'.$GLOBALS['sys_urlprefix'].'/projects/'.$row_topdown['unix_group_name'].'/">'
64 . $row_topdown['group_name']."</a><br />\n";
66 $return .= '<div align="center"><a href="'.$GLOBALS['sys_urlprefix'].'/top/">[ '._('More').' ]</a></div>';
73 function stats_getprojects_active_public() {
74 $res_count = db_query("SELECT count(*) AS count FROM groups WHERE status='A' AND is_public=1");
75 if (db_numrows($res_count) > 0) {
76 $row_count = db_fetch_array($res_count);
77 return $row_count['count'];
83 function stats_getprojects_total() {
84 $res_count = db_query("SELECT count(*) AS count FROM groups WHERE status='A' OR status='H'");
85 if (db_numrows($res_count) > 0) {
86 $row_count = db_fetch_array($res_count);
87 return $row_count['count'];
93 function stats_getpageviews_total() {
94 $res_count = db_query("SELECT SUM(site_views) AS site, SUM(subdomain_views) AS subdomain FROM stats_site");
95 if (db_numrows($res_count) > 0) {
96 $row_count = db_fetch_array($res_count);
97 return ($row_count['site'] + $row_count['subdomain']);
103 function stats_downloads_total() {
104 $res_count = db_query("SELECT SUM(downloads) AS downloads FROM stats_site");
105 if (db_numrows($res_count) > 0) {
106 $row_count = db_fetch_array($res_count);
107 return $row_count['downloads'];
113 function show_sitestats() {
114 $gforge = new GForge();
116 $return .= _('Hosted Projects').': <strong>'.number_format($gforge->getNumberOfHostedProjects()).'</strong>';
117 $return .= '<br />'._('Registered Users').': <strong>'.number_format($gforge->getNumberOfActiveUsers()).'</strong>';
121 function show_newest_projects() {
122 $sql = "SELECT group_id,unix_group_name,group_name,register_time FROM groups " .
123 "WHERE is_public=1 AND status='A' AND type_id=1 AND register_time > 0 " .
124 "ORDER BY register_time DESC";
125 $res_newproj = db_query($sql,10);
129 if (!$res_newproj || db_numrows($res_newproj) < 1) {
130 return _('No Stats Available')." ".db_error();
132 while ( $row_newproj = db_fetch_array($res_newproj) ) {
133 $return .= "<strong>(" . date(_('m/d'),$row_newproj['register_time']) . ")</strong> "
134 . '<a href="'.$GLOBALS['sys_urlprefix'].'/projects/'.$row_newproj['unix_group_name'].'/">'
135 . $row_newproj['group_name'].'</a><br />';
138 /// TODO: Add more link to show all project
139 //$return .= '<div align="center"><a href="'.$GLOBALS['sys_urlprefix'].'/top/projlist.php">[ '._('More').' ]</a></div>';
143 function show_highest_ranked_users() {
144 //select out the users information to show the top users on the site
145 $sql="SELECT users.user_name,users.realname,user_metric.metric
146 FROM user_metric,users
147 WHERE users.user_id=user_metric.user_id AND user_metric.ranking < 11 AND users.status != 'D'
148 ORDER BY ranking ASC";
150 $rows=db_numrows($res);
151 if (!$res || $rows<1) {
152 return _('No Stats Available').db_error();
155 for ($i=0; $i<$rows; $i++) {
156 $return .= ($i+1).' - ('. number_format(db_result($res,$i,'metric'),4) .') <a href="'.$GLOBALS['sys_urlprefix'].'/users/'. db_result($res,$i,'user_name') .'">'. db_result($res,$i,'realname') .'</a><br />';
159 $return .= '<div align="center"><a href="'.$GLOBALS['sys_urlprefix'].'/top/topusers.php">[ '._('More').' ]</a></div>';
163 function show_highest_ranked_projects() {
164 $sql="SELECT groups.group_name,groups.unix_group_name,groups.group_id,".
165 "project_weekly_metric.ranking,project_weekly_metric.percentile ".
166 "FROM groups,project_weekly_metric ".
167 "WHERE groups.group_id=project_weekly_metric.group_id ".
168 "AND groups.is_public=1 ".
169 "AND groups.type_id=1 ".
170 "AND groups.status != 'D' ".
171 "ORDER BY ranking ASC";
172 $result=db_query($sql,20);
173 if (!$result || db_numrows($result) < 1) {
174 return _('No Stats Available')." ".db_error();
176 while ($row=db_fetch_array($result)) {
177 $return .= '<strong>( '.number_format(substr($row['percentile'],0,5),1).'% )</strong>'
178 .' <a href="'.$GLOBALS['sys_urlprefix'].'/projects/'.$row['unix_group_name'].
179 '/">'.$row['group_name'].'</a><br />';
181 $return .= '<div align="center"><a href="'.$GLOBALS['sys_urlprefix'].'/top/mostactive.php?type=week">[ '._('More').' ]</a></div>';
188 // c-file-style: "bsd"