boxTop(sprintf(_('%1$s Statistics'), $GLOBALS['sys_name']),0); $return .= show_sitestats(); $return .= $HTML->boxMiddle(_('Top Project Downloads')); $return .= show_top_downloads(); if ($sys_use_ratings) { $return .= $HTML->boxMiddle(_('Highest Ranked Users')); $return .= show_highest_ranked_users(); } $return .= $HTML->boxMiddle(_('Most Active This Week')); $return .= show_highest_ranked_projects(); $return .= $HTML->boxMiddle(_('Recently Registered Projects')); $return .= show_newest_projects(); $return .= $HTML->boxBottom(0); return $return; } function show_top_downloads() { // TODO yesterday is now defined as two days ago. Quick fix // to allow download list to be cached before nightly // aggregation is done. jbyers 2001.03.19 // $month = date("Ym",time()-(2*3600*24)); $day = date("d",time()-(2*3600*24)); $res_topdown = db_query(" SELECT groups.group_id, groups.group_name, groups.unix_group_name, frs_dlstats_grouptotal_vw.downloads FROM frs_dlstats_grouptotal_vw,groups WHERE frs_dlstats_grouptotal_vw.group_id=groups.group_id AND groups.is_public='1' and groups.status='A' ORDER BY downloads DESC ", 10, 0, SYS_DB_STATS); // echo db_error(); if (db_numrows($res_topdown) == 0) { return _('No Stats Available'); } // print each one $return = ""; while ($row_topdown = db_fetch_array($res_topdown)) { if ($row_topdown['downloads'] > 0) $return .= '(' . number_format($row_topdown['downloads']) . ')' . util_make_link_g ($row_topdown['unix_group_name'],$row_topdown['group_id'],$row_topdown['group_name']) . "
\n"; } $return .= '
'.util_make_link ('/top/',_('More')).'
'; return $return; } function stats_getprojects_active_public() { $res_count = db_query("SELECT count(*) AS count FROM groups WHERE status='A' AND is_public=1"); if (db_numrows($res_count) > 0) { $row_count = db_fetch_array($res_count); return $row_count['count']; } else { return "error"; } } function stats_getprojects_total() { $res_count = db_query("SELECT count(*) AS count FROM groups WHERE status='A' OR status='H'"); if (db_numrows($res_count) > 0) { $row_count = db_fetch_array($res_count); return $row_count['count']; } else { return "error"; } } function stats_getpageviews_total() { $res_count = db_query("SELECT SUM(site_views) AS site, SUM(subdomain_views) AS subdomain FROM stats_site"); if (db_numrows($res_count) > 0) { $row_count = db_fetch_array($res_count); return ($row_count['site'] + $row_count['subdomain']); } else { return "error"; } } function stats_downloads_total() { $res_count = db_query("SELECT SUM(downloads) AS downloads FROM stats_site"); if (db_numrows($res_count) > 0) { $row_count = db_fetch_array($res_count); return $row_count['downloads']; } else { return "error"; } } function show_sitestats() { $gforge = new FusionForge(); $return = ''; $return .= _('Hosted Projects').': '.number_format($gforge->getNumberOfPublicHostedProjects()).''; $return .= '
'._('Registered Users').': '.number_format($gforge->getNumberOfActiveUsers()).''; return $return; } function show_newest_projects() { $sql = "SELECT group_id,unix_group_name,group_name,register_time FROM groups " . "WHERE is_public=1 AND status='A' AND type_id=1 AND register_time > 0 " . "ORDER BY register_time DESC"; $res_newproj = db_query($sql,10); $return = ''; if (!$res_newproj || db_numrows($res_newproj) < 1) { return _('No Stats Available')." ".db_error(); } else { while ( $row_newproj = db_fetch_array($res_newproj) ) { $return .= "(" . date(_('m/d'),$row_newproj['register_time']) . ") " . util_make_link_g ($row_newproj['unix_group_name'],$row_newproj['group_id'],$row_newproj['group_name']) .'
'; } } /// TODO: Add more link to show all project //$return .= '
'.util_make_link ('/top/projlist.php','[ '._('More').' ]').'
'; return $return; } function show_highest_ranked_users() { //select out the users information to show the top users on the site $sql="SELECT users.user_name,users.user_id,users.realname,user_metric.metric FROM user_metric,users WHERE users.user_id=user_metric.user_id AND user_metric.ranking < 11 AND users.status != 'D' ORDER BY ranking ASC"; $res=db_query($sql); $rows=db_numrows($res); if (!$res || $rows<1) { return _('No Stats Available').db_error(); } else { $return = ''; for ($i=0; $i<$rows; $i++) { $return .= ($i+1).' - ('. number_format(db_result($res,$i,'metric'),4) .') ' . util_make_link_u (db_result($res,$i,'user_name'),db_result($res,$i,'user_id'),db_result($res,$i,'realname')) .'
'; } } $return .= '
'.util_make_link ('/top/topusers.php','[ '._('More').' ]').'
'; return $return; } function show_highest_ranked_projects() { $sql="SELECT groups.group_name,groups.unix_group_name,groups.group_id,". "project_weekly_metric.ranking,project_weekly_metric.percentile ". "FROM groups,project_weekly_metric ". "WHERE groups.group_id=project_weekly_metric.group_id ". "AND groups.is_public=1 ". "AND groups.type_id=1 ". "AND groups.status != 'D' ". "ORDER BY ranking ASC"; $result=db_query($sql,20); if (!$result || db_numrows($result) < 1) { return _('No Stats Available')." ".db_error(); } else { $return=''; while ($row=db_fetch_array($result)) { $return .= '('.number_format(substr($row['percentile'],0,5),1).'%) ' .util_make_link_g ($row['unix_group_name'],$row['group_id'],$row['group_name']) .'
'; } $return .= '
' .util_make_link ('/top/mostactive.php?type=week','[ '._('More').' ]') .'
'; } return $return; } // Local Variables: // mode: php // c-file-style: "bsd" // End: ?>