4 // SourceForge: Breaking Down the Barriers to Open Source Development
5 // Copyright 1999-2001 (c) VA Linux Systems
6 // http://sourceforge.net
11 require_once('common/include/GForge.class');
13 function show_features_boxes() {
14 GLOBAL $HTML,$Language;
17 $return .= $HTML->boxTop($Language->getText('home','gforge_statistics', $GLOBALS['sys_name']),0);
18 $return .= show_sitestats();
19 $return .= $HTML->boxMiddle($Language->getText('home','top_project_downloads'));
20 $return .= show_top_downloads();
21 $return .= $HTML->boxMiddle($Language->getText('home','highest_ranked_users'));
22 $return .= show_highest_ranked_users();
23 $return .= $HTML->boxMiddle($Language->getText('home','most_active_this_week'));
24 $return .= show_highest_ranked_projects();
25 $return .= $HTML->boxMiddle($Language->getText('home','recently_registered'));
26 $return .= show_newest_projects();
27 $return .= $HTML->boxBottom(0);
31 function show_top_downloads() {
34 // TODO yesterday is now defined as two days ago. Quick fix
35 // to allow download list to be cached before nightly
36 // aggregation is done. jbyers 2001.03.19
38 $month = date("Ym",time()-(2*3600*24));
39 $day = date("d",time()-(2*3600*24));
41 $res_topdown = db_query("
42 SELECT groups.group_id,
44 groups.unix_group_name,
45 frs_dlstats_grouptotal_vw.downloads
46 FROM frs_dlstats_grouptotal_vw,groups
48 frs_dlstats_grouptotal_vw.group_id=groups.group_id AND groups.is_public='1' and groups.status='A'
49 ORDER BY downloads DESC
50 ", 10, 0, SYS_DB_STATS);
53 if (db_numrows($res_topdown) == 0) {
54 return $Language->getText('home','no_stats_available');
58 while ($row_topdown = db_fetch_array($res_topdown)) {
59 if ($row_topdown['downloads'] > 0)
60 $return .= "(" . number_format($row_topdown['downloads']) . ") <a href=\"/projects/$row_topdown[unix_group_name]/\">"
61 . "$row_topdown[group_name]</a><br />\n";
63 $return .= '<div align="center"><a href="/top/">[ '.$Language->getText('general','more').' ]</a></div>';
70 function stats_getprojects_active_public() {
71 $res_count = db_query("SELECT count(*) AS count FROM groups WHERE status='A' AND is_public=1");
72 if (db_numrows($res_count) > 0) {
73 $row_count = db_fetch_array($res_count);
74 return $row_count['count'];
80 function stats_getprojects_total() {
81 $res_count = db_query("SELECT count(*) AS count FROM groups WHERE status='A' OR status='H'");
82 if (db_numrows($res_count) > 0) {
83 $row_count = db_fetch_array($res_count);
84 return $row_count['count'];
90 function stats_getpageviews_total() {
91 $res_count = db_query("SELECT SUM(site_views) AS site, SUM(subdomain_views) AS subdomain FROM stats_site");
92 if (db_numrows($res_count) > 0) {
93 $row_count = db_fetch_array($res_count);
94 return ($row_count['site'] + $row_count['subdomain']);
100 function stats_downloads_total() {
101 $res_count = db_query("SELECT SUM(downloads) AS downloads FROM stats_site");
102 if (db_numrows($res_count) > 0) {
103 $row_count = db_fetch_array($res_count);
104 return $row_count['downloads'];
110 function show_sitestats() {
112 $gforge = new GForge();
114 $return .= $Language->getText('home','hosted_projects').': <strong>'.number_format($gforge->getNumberOfHostedProjects()).'</strong>';
115 $return .= '<br />'.$Language->getText('home','registered_users').': <strong>'.number_format($gforge->getNumberOfActiveUsers()).'</strong>';
119 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 $Language->getText('home','no_stats_available')." ".db_error();
131 while ( $row_newproj = db_fetch_array($res_newproj) ) {
132 $return .= "<strong>(" . date($Language->getText('home','recently_registered_date_format'),$row_newproj['register_time']) . ")</strong> "
133 . "<a href=\"/projects/$row_newproj[unix_group_name]/\">"
134 . "$row_newproj[group_name]</a><br />";
137 /// TODO: Add more link to show all project
138 //$return .= '<div align="center"><a href="/top/projlist.php">[ '.$Language->getText('general','more').' ]</a></div>';
142 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 $Language->getText('home','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="/users/'. db_result($res,$i,'user_name') .'">'. db_result($res,$i,'realname') .'</a><br />';
159 $return .= '<div align="center"><a href="/top/topusers.php">[ '.$Language->getText('general','more').' ]</a></div>';
163 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 $Language->getText('home','no_stats_available')." ".db_error();
177 while ($row=db_fetch_array($result)) {
178 $return .= '<strong>( '.number_format(substr($row['percentile'],0,5),1).'% )</strong>'
179 .' <a href="/projects/'.$row['unix_group_name'].
180 '/">'.$row['group_name'].'</a><br />';
182 $return .= '<div align="center"><a href="/top/mostactive.php?type=week">[ '.$Language->getText('general','more').' ]</a></div>';