3 // $Id: index.php 11645 2009-01-21 23:09:49Z thierry $
6 require_once 'plc_login.php';
8 // Get session and API handles
9 require_once 'plc_session.php';
13 require_once 'plc_drupal.php';
14 include 'plc_header.php';
17 require_once 'plc_functions.php';
18 require_once 'plc_minitabs.php';
19 require_once 'plc_tables.php';
21 //fix the memory limit for this page
22 ini_set("memory_limit","48M");
24 // --------------------
25 // recognized URL arguments
26 $peerscope=$_GET['peerscope'];
27 $pattern=$_GET['pattern'];
28 $site_id=intval($_GET['site_id']);
29 $slice_id=intval($_GET['slice_id']);
34 $mysite_id=plc_my_site_id();
35 $tabs['My accounts'] = array('url'=>l_persons(),
36 'values'=>array('site_id'=>plc_my_site_id()),
37 'bubble'=>'Lists accounts on site ' . $mysite_id);
38 // --------------------
40 $person_filter=array();
43 function person_status ($person) {
47 if ( $person['peer_id'] ) {
52 // check that the person has keys
53 if ( count($person['key_ids']) == 0)
54 $messages [] = "No Key";
55 if ( ! $person['enabled'] )
56 $messages[] = "Disabled";
57 //detect tech-only people involved in slices.
58 if ( ( count($person['roles'])==1 ) &&
59 ( in_array('tech',$person['roles']) ) &&
60 (! empty($person["slice_ids"])) )
61 $messages[]="Tech involved in a Slice";
62 return plc_vertical_table($messages,$class);
67 $person_columns=array('first_name','last_name','email','roles','peer_id','key_ids','site_ids');
68 // PIs and admins can see users not yet enabled
69 $privileges=plc_is_admin() || plc_is_pi();
71 $person_filter['enabled']=true;
72 // server-side filtering - set pattern in $_GET for filtering on email
74 $person_filter['email']=$pattern;
75 $title .= " matching " . $pattern;
77 $person_filter['email']="*";
80 // server-side selection on peerscope
81 list ( $peer_filter, $peer_label) = plc_peer_info($api,$_GET['peerscope']);
82 $person_filter=array_merge($person_filter,$peer_filter);
85 $sites=$api->GetSites(array($site_id),array("name","login_base","person_ids"));
88 $login_base=$site['login_base'];
89 $title .= t_site($site);
90 $tabs = array_merge($tabs,tabs_site($site));
91 $person_filter['person_id']=$site['person_ids'];
95 $slices=$api->GetSlices(array($slice_id),array('person_ids','name'));
97 $title .= t_slice($slice);
98 $tabs = array_merge($tabs,tabs_slice($slice));
99 $person_filter['person_id'] = $slice['person_ids'];
103 $persons=$api->GetPersons($person_filter,$person_columns);
107 if ($persons) foreach ($persons as $person)
108 if ($person['site_ids'][0])
109 $site_ids []= $person['site_ids'][0];
111 // fetch related sites
112 $site_columns=array('site_id','login_base');
113 $site_filter=array('site_id'=>$site_ids);
114 $sites=$api->GetSites($site_filter,$site_columns);
118 foreach ($sites as $site) {
119 $site_hash[$site['site_id']]=$site;
122 // --------------------
123 drupal_set_title($title);
128 drupal_set_message ('No account found');
132 $columns = array ("Peer"=>"string",
141 // initial sort on email
142 $table_options=array();
143 plc_table_start("persons",$columns,5,$table_options);
145 $peer_hash = plc_peer_get_hash ($api);
148 foreach ($persons as $person) {
149 $person_id=$person['person_id'];
150 $email=$person['email'];
151 $shortname = plc_peer_shortname ($peer_hash,$person['peer_id']);
152 $site_id=$person['site_ids'][0];
153 $site=$site_hash[$site_id];
154 $login_base = $site['login_base'];
155 $roles = plc_vertical_table ($person['roles']);
157 plc_table_row_start($email);
159 plc_table_cell($shortname);
160 plc_table_cell($roles);
161 plc_table_cell ($person['first_name']);
162 plc_table_cell ($person['last_name']);
163 plc_table_cell(l_person_t($person_id,$email));
164 plc_table_cell($login_base);
165 plc_table_cell(person_status($person));
170 plc_table_end($table_options);
173 include 'plc_footer.php';