ckp
[plewww.git] / planetlab / persons / persons.php
index 89cd015..e4f5a39 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-// $Id: index.php 11645 2009-01-21 23:09:49Z thierry $
+// $Id$
 
 // Require login
 require_once 'plc_login.php';
@@ -15,6 +15,7 @@ include 'plc_header.php';
 
 // Common functions
 require_once 'plc_functions.php';
+require_once 'plc_peers.php';
 require_once 'plc_minitabs.php';
 require_once 'plc_tables.php';
 
@@ -31,12 +32,10 @@ $slice_id=intval($_GET['slice_id']);
 // --- decoration
 $title="Accounts";
 $tabs=array();
-$mysite_id=plc_my_site_id();
 $tabs['My accounts'] = array('url'=>l_persons(),
                             'values'=>array('site_id'=>plc_my_site_id()),
-                            'bubble'=>'Lists accounts on site ' . $mysite_id);
+                            'bubble'=>'Lists accounts on site ' . plc_my_site_id());
 // -------------------- 
-$peer_filter=array();
 $person_filter=array();
 
 ////////////////////
@@ -54,17 +53,20 @@ function person_status ($person) {
     $messages [] = "No Key";
   if ( ! $person['enabled'] ) 
     $messages[] = "Disabled";
-  //detect tech-only people involved in slices. 
+  // for tech-only people: outline user if in a slice
   if ( ( count($person['roles'])==1 ) && 
-       ( in_array('tech',$person['roles']) )  && 
-       (! empty($person["slice_ids"])) ) 
-    $messages[]="Tech involved in a Slice";  
+       ( in_array('tech',$person['roles']) ) ) {
+    if (! empty($person["slice_ids"]) ) $messages[]="Tech in a Slice";  
+  } else {
+    // or for other kind of people, if they have no slice
+    if ( count($person['slice_ids']) == 0) $messages [] = "No Slice";
+  }
   return plc_vertical_table($messages,$class);
 }
 
 
 // fetch persons 
-$person_columns=array('person_id','first_name','last_name','email','roles','peer_id','key_ids','site_ids','enabled');
+$person_columns=array('person_id','first_name','last_name','email','roles','peer_id','key_ids','site_ids','enabled','slice_ids');
 // PIs and admins can see users not yet enabled
 $privileges=plc_is_admin() || plc_is_pi();
 if ( ! $privileges ) 
@@ -78,8 +80,9 @@ if ($pattern) {
  }
 
 // server-side selection on peerscope
-list ( $peer_filter, $peer_label) = plc_peer_info($api,$_GET['peerscope']);
-$person_filter=array_merge($person_filter,$peer_filter);
+$peerscope=new PeerScope ($api,$_GET['peerscope']);
+$person_filter=array_merge($person_filter,$peerscope->filter());
+$title .= ' - ' . $peerscope->label();
 
 if ($site_id) {
   $sites=$api->GetSites(array($site_id),array("name","login_base","person_ids"));
@@ -131,32 +134,32 @@ if ( ! $persons ) {
   return;
  }
   
-$columns = array ("Peer"=>"string",
+$headers = array ("Peer"=>"string",
                  "Roles"=>"string",
                  "First"=>"string",
                  "Last"=>"string",
                  "Email"=>"string",
                  "Site" => "string",
+                 "S" => "int",
                  "Status"=>"string",
                  );
 
 // initial sort on email
-$table_options=array();
-plc_table_start("persons",$columns,4,$table_options);
+plc_table_start("persons",$headers,4);
 
-$peer_hash = plc_peer_get_hash ($api);
+$peers=new Peers ($api);
 // write rows
 
 foreach ($persons as $person) {
     $person_id=$person['person_id'];
     $email=$person['email'];
-    $shortname = plc_peer_shortname ($peer_hash,$person['peer_id']);
+    $shortname = $peers->shortname($person['peer_id']);
     $site_id=$person['site_ids'][0];
     $site=$site_hash[$site_id];
     $login_base = $site['login_base'];
     $roles = plc_vertical_table ($person['roles']);
 
-    plc_table_row_start($email);
+    plc_table_row_start();
     
     plc_table_cell($shortname);
     plc_table_cell($roles);
@@ -164,12 +167,13 @@ foreach ($persons as $person) {
     plc_table_cell ($person['last_name']);
     plc_table_cell(l_person_t($person_id,$email));
     plc_table_cell($login_base);
+    plc_table_cell(count($person['slice_ids']));
     plc_table_cell(person_status($person));
     plc_table_row_end();
                                 
 }
-
-plc_table_end($table_options);
+$notes=array("The S column shows the number of slices for the given user");
+plc_table_end("persons",array('notes'=>$notes));
 
 // Print footer
 include 'plc_footer.php';