5 // Mark Huang <mlhuang@cs.princeton.edu>
6 // Copyright (C) 2006 The Trustees of Princeton University
12 require_once 'plc_session.php';
15 // Get PlanetFlow stats
16 global $planetflow, $active_bytes;
17 include_once '_gen_planetflow.php';
20 require_once 'plc_drupal.php';
21 drupal_set_title('Projects');
22 include 'plc_header.php';
24 if (isset($_REQUEST['active'])) {
28 <p>A slice is essentially a login account on a set of nodes. The
29 following is a list of the most active slices; you may also view a
30 list of <a href="/db/pub/slices.php">all slices</a>.</p>
34 <p>A slice is essentially a login account on a set of nodes. The
35 following is a list of all slices; you may also view a list of <a
36 href="/db/pub/slices.php?active">just the most active slices</a>.</p>
40 <p>To provide feedback to the principals responsible for each slice,
41 check the <b>Feedback</b> box for each slice that you would like to
42 comment on, then click <b>Provide Feedback</b>.</p>
44 <form method="post" action="/db/pub/feedback.php">
46 <table cellspacing="0">
61 $sites = $adm->GetSites(NULL, array('abbreviated_name', 'site_id'));
62 if (!empty($sites)) foreach ($sites as $site) {
63 $sites[$site['site_id']] = $site;
67 $slices = $adm->GetSlices(NULL, array('name', 'url', 'description', 'site_id'));
69 // List just the active slices
70 if (isset($_REQUEST['active'])) {
71 // Byte threshold to be considered "active"
72 if (!empty($_REQUEST['mbytes'])) {
73 $active_bytes = intval($_REQUEST['mbytes'])*1024*1024;
75 $active_bytes = 100*1024*1024;
78 // Filter just the active slices
79 function __active_slice($slice) {
80 global $planetflow, $active_bytes;
81 return isset($planetflow[$slice['name']]) &&
82 ($planetflow[$slice['name']]['bytes'] >= $active_bytes);
84 $slices = array_filter($slices, '__active_slice');
86 // Sort active slices by bytes in descending order
87 function __cmp_slices_by_bytes($slicea, $sliceb) {
89 return ($planetflow[$slicea['name']]['bytes'] > $planetflow[$sliceb['name']]['bytes']) ? -1 : 1;
91 usort($slices, '__cmp_slices_by_bytes');
94 function __cmp_slices($a, $b) {
95 return strcasecmp($a['name'], $b['name']);
97 // Alphabetically sort slices
98 usort($slices, '__cmp_slices');
102 foreach ($slices as $slice) {
103 print "<tr class=\"$class\">";
105 print '<td valign="top"><a name="' .
106 htmlspecialchars($slice['name']) .
108 htmlspecialchars($slice['name']) .
111 print '<td valign="top">';
112 print htmlspecialchars(trim($slice['description']));
113 if (!empty($slice['url'])) {
114 if (strncasecmp($slice['url'], "http", 4) != 0) {
115 $slice['url'] = "http://" . $slice['url'];
117 print '<br /><a href="' . htmlspecialchars($slice['url']) . '">More details...</a>';
121 print '<td valign="top">';
122 if (isset($sites[$slice['site_id']])) {
123 $site = $sites[$slice['site_id']];
124 print htmlspecialchars($site['abbreviated_name']);
128 print '<td valign="top">';
129 if (isset($planetflow[$slice['name']]) &&
130 isset($planetflow[$slice['name']]['bytes']) &&
131 $planetflow[$slice['name']]['bytes']/1024/1024 >= 1) {
132 print number_format($planetflow[$slice['name']]['bytes']/1024/1024, 0, '.', ',');
136 print '<td valign="top">';
137 print '<input type="checkbox" name="slices[]" value="' . htmlspecialchars($slice['name']) . '" />';
142 $class = $class == "oddrow" ? "" : "oddrow";
150 <input type="submit" value="Provide Feedback" />
156 include 'plc_footer.php';