X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fpersons%2Findex.php;h=ed8bc04074c9811110c52f4df5d9a88e4b262896;hb=50c52e39521aa6ac664e542848057822fed4d395;hp=e4260fcc58d2f9beb6263e282e38038f3e735d73;hpb=9c2c95763677a4f5045bc039f680e56752861f4b;p=plewww.git
diff --git a/planetlab/persons/index.php b/planetlab/persons/index.php
index e4260fc..ed8bc04 100644
--- a/planetlab/persons/index.php
+++ b/planetlab/persons/index.php
@@ -5,469 +5,7 @@
// Require login
require_once 'plc_login.php';
-// Get session and API handles
-require_once 'plc_session.php';
-global $plc, $api;
-
-// Print header
-require_once 'plc_drupal.php';
-// set default
-drupal_set_title('People');
-include 'plc_header.php';
-
-// Common functions
-require_once 'plc_functions.php';
-require_once 'plc_sorts.php';
-
-//fix the memory limit for this page
-ini_set("memory_limit","48M");
-
-// find person roles
-$_person= $plc->person;
-$_roles= $_person['role_ids'];
-
-
-////////////////////
-// The set of columns to fetch
-// and the filter applied for fetching sites
-if ( !in_array( '10', $_roles ) ) {
- $columns = array("person_id", "first_name", "last_name", "email", "roles" , "peer_id");
- // PIs can see users not yet enabled
- if ( ! in_array ('20', $_roles) ) {
- $filter = array ("enabled" => TRUE);
- } else {
- $filter = array();
- }
- } else {
- $columns = array("person_id", "first_name", "last_name", "email", "roles" , "peer_id", "key_ids", "enabled","slice_ids" );
- $filter = array ();
- }
-
-//////////////////
-// perform post-processing on site objects as returned by GetSites
-// performs sanity check and summarize the result in a single column
-// performs in-place replacement, so passes a reference
-function layout_person ($person) {
-
- // we need the 'key_ids' field to do this
- // so regular users wont run this
- if ( ! array_key_exists ('key_ids', $person))
- return $person ;
-
- $messages=array();
-
- // do all this stuff on local persons only
- if ( $person['peer_id'] ) {
- $class='plc-foreign';
- } else {
- $class='plc-warning';
- // check that the person has keys, but dont do that for admins
- if ( ! in_array ('admin',$person['roles']) && count($person['key_ids']) == 0)
- $messages [] = "No Key";
- }
- if ( ! $person['enabled'] )
- $messages[] = "Disabled";
- // but always cleanup $person columns
- unset ($person['key_ids']);
- unset ($person['enabled']);
- //detect tech already involved on some slices.
- if( ( count($person['roles'])==1 ) && ( in_array('tech',$person['roles']) ) && (! empty($person["slice_ids"])) ) {
- $messages[]="Tech involved in a Slice";
- }
- // cleanup $person columns
- unset ($person['slice_ids']);
- //display the extra status column
- $person['status'] = plc_make_table($class,$messages);
- return $person;
-}
-
-// if emailpattern or peerscope is set then search for Persons.
-// we use GET rather than POST so paginate can display the right contents on subsequent pages
-// can be useful for writing bookmarkable URL's as well
-if( $_GET['emailpattern'] || $_GET['peerscope']) {
- $emailpattern= $_GET['emailpattern'];
- if (empty($emailpattern)) {
- $emailpattern="*";
- }
- $filter = array_merge (array( "email"=>$emailpattern ), $filter);
- switch ($_GET['peerscope']) {
- case '':
- $peer_label="all peers";
- break;
- case 'local':
- $filter=array_merge(array("peer_id"=>NULL),$filter);
- $peer_label="local peer";
- break;
- case 'foreign':
- $filter=array_merge(array("~peer_id"=>NULL),$filter);
- $peer_label="foreign peers";
- break;
- default:
- $peer_id=intval($_GET['peerscope']);
- $filter=array_merge(array("peer_id"=>$peer_id),$filter);
- $peer=$api->GetPeers(array("peer_id"=>$peer_id));
- $peer_label='peer "' . $peer[0]['peername'] . '"';
- break;
- }
- // need to use a hash filter for patterns to be properly handled
- $persons= $api->GetPersons($filter , $columns );
- $persons= array_map(layout_person,$persons);
- $person_count = count ($persons);
- if ( $person_count == 1) {
- header( "location: index.php?id=". $persons[0]['person_id'] );
- exit();
- } else if ( $person_count == 0) {
- echo " No person whose email matches $emailpattern ";
- } else {
- drupal_set_title ("Users matching $emailpattern on ". $peer_label);
- sort_persons ($persons);
- echo paginate( $persons, "person_id", "Persons", 25, "email");
- }
- }
-// if a site_id is given, display the site persons only
-else if( $_GET['site_id'] ) {
- $site_id= $_GET['site_id'];
- // Get site info
- $site_info= $api->GetSites( array( intval( $site_id ) ), array( "name", "person_ids" ) );
- drupal_set_title("People with " . $site_info[0]['name']);
- // Get site nodes
- $persons= $api->GetPersons( array_merge (array("person_id"=>$site_info[0]['person_ids']),$filter), $columns );
- $persons= array_map(layout_person,$persons);
- sort_persons( $persons );
-
- echo paginate( $persons, "person_id", "Persons", 25, "email" );
-
-}
-// if a slice_id is given,display the persons involved in this slice
-else if( $_GET['slice_id'] ) {
- $slice_id= $_GET['slice_id'];
- // Get slice infos
- $slice_info= $api->GetSlices( array( intval( $slice_id ) ), array( "name", "person_ids" ) );
- drupal_set_title("People In " . $slice_info[0]['name']);
- // Get slice persons
- $persons= $api->GetPersons( array_merge (array("person_id"=>$slice_info[0]['person_ids']),$filter), $columns );
- if ( empty ($persons) ) {
- echo "No persons to display";
- } else {
-
- $persons= array_map(layout_person,$persons);
- sort_persons( $persons );
-
- echo paginate( $persons, "person_id", "Persons", 25, "email" );
- echo "