X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=planetlab%2Fincludes%2Fplc_functions.php;h=fa287027aac9380f855dbf820f2a794a046c82aa;hb=6f26004ce994fbfde02c70a12a8615f10c610a55;hp=a0f3e598fa3ec2f9ca4c9cb09eefa7c22db5eaa7;hpb=2726975955eab4c1424f244daf0fb173b1eed8ca;p=plewww.git diff --git a/planetlab/includes/plc_functions.php b/planetlab/includes/plc_functions.php index a0f3e59..fa28702 100644 --- a/planetlab/includes/plc_functions.php +++ b/planetlab/includes/plc_functions.php @@ -5,6 +5,104 @@ // will trash this eventually require_once 'plc_functions_trash.php'; +//////////////////////////////////////////////////////////// roles & other checks on global $plc +function plc_is_admin () { + global $plc; + return in_array( 10, $plc->person['role_ids']); +} +function plc_is_pi () { + global $plc; + return in_array( 20, $plc->person['role_ids']); +} +function plc_is_tech () { + global $plc; + return in_array( 40, $plc->person['role_ids']); +} +function plc_in_site ($site_id) { + global $plc; + return in_array( $site_id, $plc->person['site_ids']); +} + +function plc_my_site_id () { + global $plc; + return $plc->person['site_ids'][0]; +} + +function plc_my_person_id () { + global $plc; + return $plc->person['person_id']; +} + +//////////////////////////////////////////////////////////// links +function href ($url,$text) { return "" . $text . ""; } + +// naming scheme is +// l_objects() -> the url to the page that list objects +// l_object($object_id) -> the url to hte page thas details object with given id +// l_object_t($object_id,text) -> an tag that shows text and links to the above +// l_object_add () -> the url to that object-afding page + +function l_nodes () { return "/db/nodes/index.php"; } +function l_node ($node_id) { return "/db/nodes/node.php?id=" . $node_id; } +function l_node_t ($node_id,$text) { return href (l_node($node_id),$text); } +function l_node_add () { return "/db/nodes/add_node.php"; } +function l_nodes_site ($site_id) { return "/db/nodes/index.php?site_id=" . $site_id; } + +function l_interface ($interface_id) { return "/db/nodes/interfaces.php?id=" . $interface_id; } +function l_interface_t ($interface_id,$text) { + return href (l_interface($interface_id),$text); } +function l_interface_add($node_id) { return "/db/nodes/interfaces.php?node_id=" . $node_id; } + +function l_sites () { return "/db/sites/index.php"; } +function l_site ($site_id) { return "/db/sites/index.php?id=" . $site_id; } +function l_site_t ($site_id,$text) { return href (l_site($site_id),$text); } + +function l_slices () { return "/db/slices/index.php"; } +function l_slice ($slice_id) { return "/db/slices/index.php?id=" . $slice_id; } +function l_slice_t ($slice_id,$text) { return href (l_slice($slice_id),$text); } +function l_slice_add () { return "/db/slices/add_slice.php"; } + +function l_sliver ($node_id,$slice_id) { return "/db/nodes/slivers.php?node_id=" . $node_id. "&slice_id=" . $slice_id; } +function l_sliver_t ($node_id,$slice_id,$text) { + return href (l_sliver($node_id,$slice_id),$text) ; } + +function l_persons () { return "/db/persons/index.php"; } +function l_person ($person_id) { return "/db/persons/index.php?id=" . $person_id; } +function l_person_t ($person_id,$text) { return href (l_person($person_id),$text); } +function l_persons_site ($site_id) { return "/db/persons/index.php?site_id=" . $site_id; } + +function l_tags () { return "/db/tags/index.php"; } +function l_tags_node () { return "/db/tags/index.php?type=node"; } +# xxx cleanup duplicate pages +#function l_tags_interface () { return "/db/tags/index.php?type=interface"; } +function l_tags_interface () { return "/db/nodes/settings.php"; } +function l_tags_slice () { return "/db/tags/index.php?type=slice"; } + +function l_nodegroups () { return "/db/tags/node_groups.php"; } +function l_nodegroup ($nodegroup_id) { return "/db/tags/node_groups.php?id=" . $nodegroup_id; } +function l_nodegroup_t ($nodegroup_id,$text) { + return href(l_nodegroup($nodegroup_id),$text); } + +function l_events () { return '/db/events/index.php'; } +function l_event ($type,$param,$id) { return '/db/events/index.php?type=' . $type . '&' . $param . '=' . $id; } + +function l_peers() { return "/db/peers/index.php"; } +function l_peer($peer_id) { return "/db/peers/index.php?id=" . $peer_id; } + +function l_comon($id_name,$id_value) { return '/db/nodes/comon.php?' . $id_name . "=" . $id_value; } +function l_sirius() { return "/db/sirius/index.php"; } +function l_about() { return "/db/about.php"; } +function l_doc_plcapi() { return "/db/doc/PLCAPI.php"; } +function l_doc_nmapi() { return "/db/doc/NMAPI.php"; } + +function l_logout() { return "/planetlab/logout.php"; } +function l_sulogout() { return "/planetlab/sulogout.php"; } +function l_reset_password() { return "/db/persons/reset_password.php"; } +function l_person_register() { return "/db/persons/register.php"; } +function l_site_register() { return "/db/sites/register.php"; } +function l_site_pending() { return "/db/sites/join_request.php"; } +function l_site_status() { return "/db/sites/peers.php"; } + //////////////////////////////////////////////////////////// validation functions function topdomain ($hostname) { $exploded=array_reverse(explode(".",$hostname)); @@ -86,9 +184,47 @@ function is_reserved_network_addr($network_addr) { return false; } -//////////////////////////////////////////////////////////// peerscopes +//////////////////////////////////////////////////////////// peer & peerscopes +// when shortnames are needed on peers +function plc_peer_get_hash ($api) { + $peer_columns=array('peer_id','shortname'); + $peer_filter=array(); + $peers = $api->GetPeers($peer_filter,$peer_columns); + + $peer_hash=array(); + foreach ($peers as $peer) { + $peer_hash[$peer['peer_id']]=$peer; + } +} + +function plc_peer_shortname ($peer_hash,$peer_id) { + if ( ! $peer_id ) { + return PLC_SHORTNAME; + } else { + return $peer_hash[$node['peer_id']]['shortname']; + } +} + +// to set the background to grey on foreign objects +// return true if the peer is local +function plc_peer_block_start ($peer_hash,$peer_id) { + if ( ! $peer_id ) { + print "
"; + return true; + } else { + // set two classes, one eneraic to all foreign, and one based on the peer's shortname for finer grain tuning + printf ('
\n"; +} + +// interpret standard syntax for peerscope function plc_peer_info ($api,$peerscope) { - switch ($_GET['peerscope']) { + switch ($peerscope) { case '': $peer_filter=array(); $peer_label="all peers"; @@ -102,54 +238,34 @@ function plc_peer_info ($api,$peerscope) { $peer_label="foreign peers"; break; default: - $peer_id=intval($_GET['peerscope']); - $peer_filter=array("peer_id"=>$peer_id); - $peer=$api->GetPeers(array("peer_id"=>$peer_id)); - $peer_label='peer "' . $peer[0]['peername'] . '"'; + if (is_int ($peerscope)) { + $peer_id=intval($peerscope); + $peers=$api->GetPeers(array("peer_id"=>$peer_id)); + } else { + $peers=$api->GetPeers(array("shortname"=>$peerscope)); + } + if ($peers) { + $peer=$peers[0]; + $peer_id=$peer['peer_id']; + $peer_filter=array("peer_id"=>$peer_id); + $peer_label='peer "' . $peer['shortname'] . '"'; + } else { + $peer_filter=array(); + $peer_label="[no such peer " . $peerscope . "]"; + } break; } return array ($peer_filter,$peer_label); } -//////////////////////////////////////////////////////////// links -function href ($url,$text) { return "" . $text . ""; } - -function l_nodes () { return "/db/nodes/newindex.php"; } -function l_node_u ($node_id) { return "/db/nodes/node.php?id=" . $node_id; } -function l_node ($node_id) { return href (l_node_u($node_id),$node_id); } -function l_node2 ($node_id,$text) { return href (l_node_u($node_id),$text); } - -function l_sites () { return "/db/sites/index.php"; } -function l_site_u ($site_id) { return "/db/persons/index.php?id=" . $site_id; } -function l_site ($site_id) { return href (l_site_u($site_id),$site_id); } -function l_site2 ($site_id,$text) { return href (l_site_u($site_id),$text); } - -function l_slices () { return "/db/slices/index.php"; } -function l_slice_u ($slice_id) { return "/db/persons/index.php?id=" . $slice_id; } -function l_slice ($slice_id) { return href (l_slice_u($slice_id),$slice_id); } -function l_slice2 ($slice_id,$text) { return href (l_slice_u($slice_id),$text); } - -function l_persons () { return "/db/persons/index.php"; } -function l_person_u ($person_id) { return "/db/persons/index.php?id=" . $person_id; } -function l_person ($person_id) { return href (l_person_u($person_id),$person_id); } -function l_person2 ($person_id,$text) { return href (l_person_u($person_id),$text); } - -function l_interfaces () { return "/db/interfaces/index.php"; } -function l_interface_u ($interface_id) { return "/db/interfaces/index.php?id=" . $interface_id; } -function l_interface ($interface_id) { return href (l_interface_u($interface_id),$interface_id); } -function l_interface2 ($interface_id,$text) { return href (l_interface_u($interface_id),$text); } - -function l_event ($type,$param,$id) { return '/db/events/index.php?type=' . $type . '&' . $param . '=' . $id; } -function l_comon($id_name,$id_value) { return '/db/nodes/comon.php?' . $id_name . "=" . $id_value; } - //////////////////////////////////////////////////////////// titles function t_site($site) { return " on site " . $site['name'] . " (" . $site['login_base'] .")"; } function t_slice ($slice) { return " running slice " . $slice['name'] . " (" . $slice['slice_id'] . ")"; } //////////////////////////////////////////////////////////// nav tabs -function tabs_node($node) { return array('Node ' . $node['hostname']=>l_node_u($node_id)); } -function tabs_site($site) { return array('Site ' . $site['name']=>l_site_u($site_id)); } -function tabs_slice($slice) { return array('Slice ' . $slice['name']=>l_slice_u($slice_id)); } +function tabs_node($node) { return array('Node ' . $node['hostname']=>l_node($node_id)); } +function tabs_site($site) { return array('Site ' . $site['name']=>l_site($site_id)); } +function tabs_slice($slice) { return array('Slice ' . $slice['name']=>l_slice($slice_id)); } //////////////////////////////////////////////////////////// presentation // builds a table from an array of strings, with the given class @@ -184,27 +300,41 @@ function plc_comon_button ($id_name, $id_value,$target="") { return $result; } -function plc_make_table ($class, $messages) { +function plc_vertical_table ($messages, $class="") { // pretty print the cell + if ( empty( $messages) ) return ""; $formatted = ""; - if (! empty ($messages)) { - $formatted=""; - foreach ($messages as $message) { - $formatted .= ""; - } - $formatted .= "
" . $message . "
"; + $formatted .= ""; } + $formatted .= "
"; return $formatted; } //////////////////////////////////////////////////////////// function plc_error ($text) { // should use the same channel as the php errors.. - print "
Error " . $text . "
"; + print "
Error " . $text . "
"; } +function plc_errors ($list) { + print( "
" ); + print( "

The following errors occured:

" ); + print("
    "); + foreach( $errors as $err ) { + print( "
  • $err
  • \n" ); + } + print( "
\n" ); +} + +function plc_warning_div ($text) { + return "
" . $text . "
"; +} function plc_warning ($text) { - print "
Warning " . $text . "
"; + print plc_warning_div("Warning " . $text); } // shows a php variable verbatim with a heading message