4 // pattern-matching selection not implemented
5 // due to GetSlices bug, see test.php for details
6 // in addition that would not make much sense
9 require_once 'plc_login.php';
11 // Get session and API handles
12 require_once 'plc_session.php';
16 require_once 'plc_drupal.php';
17 include 'plc_header.php';
20 require_once 'plc_functions.php';
21 require_once 'plc_peers.php';
22 require_once 'linetabs.php';
23 require_once 'table.php';
24 require_once 'nifty.php';
26 // --------------------
27 // recognized URL arguments
28 $peerscope=get_array($_GET, 'peerscope');
29 $pattern=get_array($_GET, 'pattern');
30 $site_id=intval(get_array($_GET, 'site_id'));
31 $person_id=intval(get_array($_GET, 'person_id'));
38 $tabs []= tab_slices();
41 $tabs []= tab_slices_person();
43 $tabs []= tab_slices_mysite();
44 if (plc_is_admin()) $tabs []= tab_slices_local();
47 $slice_filter=array();
51 $slice_columns=array('slice_id','name','expires','person_ids','peer_id','node_ids');
52 // server-side filtering - set pattern in $_GET for filtering on hostname
54 $slice_filter['name']=$pattern;
55 $title .= " matching " . $pattern;
57 $slice_filter['name']="*";
60 // server-side selection on peerscope
61 $peerscope=new PeerScope($api,get_array($_GET, 'peerscope'));
62 $slice_filter=array_merge($slice_filter,$peerscope->filter());
63 $title .= ' - ' . $peerscope->label();
67 $sites=$api->GetSites(array($site_id));
70 $login_base=$site['login_base'];
71 $title .= t_site($site);
72 $tabs []= tab_site($site);
73 $slice_filter['site_id']=array($site_id);
77 // fetch the person's slice_ids
78 $persons = $api->GetPersons(array('person_id'=>$person_id),array('person_id','email','slice_ids'));
80 $slice_ids['slice_id']=$person['slice_ids'];
81 $title .= t_person($person);
82 $slice_filter['slice_id']=$person['slice_ids'];
86 $slices=$api->GetSlices($slice_filter,$slice_columns);
90 if ($slices) foreach ($slices as $slice) {
91 $person_ids = array_merge ($person_ids,$slice['person_ids']);
93 $persons=$api->GetPersons($person_ids,array('person_id','email'));
96 if ($persons) foreach ($persons as $person) $person_hash[$person['person_id']]=$person;
98 function email_link_from_hash($person_id) {
100 return l_person_obj($person_hash[$person_id]);
103 // --------------------
104 drupal_set_title($title);
106 plekit_linetabs($tabs);
109 drupal_set_message ('No slice found');
113 $nifty=new PlekitNifty ('','objects-list','big');
115 if (plc_is_admin()) $headers["I"]="int";
116 $headers["Peer"]="string";
117 $headers["Name"]="string";
118 $headers["Users"]="string";
121 $headers["Exp. d/m/y"]="date-dmy";
123 # initial sort on hostnames
124 if (plc_is_admin()) $slices_sort_column = 3;
125 else $slices_sort_column = 2;
127 $table=new PlekitTable ("slices",$headers,$slices_sort_column,
128 array('search_width'=>20));
131 $peers = new Peers ($api);
133 foreach ($slices as $slice) {
134 $slice_id=$slice['slice_id'];
135 $peer_id=$slice['peer_id'];
136 $users=plc_vertical_table (array_map ("email_link_from_hash",$slice['person_ids']));
137 $expires= date( "d/m/Y", $slice['expires'] );
140 if (plc_is_admin()) $table->cell (l_slice_t($slice_id,$slice_id));
141 $peers->cell($table,$peer_id);
142 $table->cell (href(l_slice_nodes($slice_id),$slice['name']));
143 $table->cell ($users);
144 $table->cell(href(l_persons_slice($slice_id),count($slice['person_ids'])));
145 $table->cell (href(l_nodes_slice($slice_id),count($slice['node_ids'])));
146 $table->cell ($expires);
151 $notes []= "U = number of users";
152 $notes []= "N = number of nodes";
153 $table->end(array('notes'=>$notes));
156 //plekit_linetabs ($tabs,"bottom");
159 include 'plc_footer.php';