person; $_roles= $_person['role_ids']; //plc_debug("person", $_person ); $tag_columns=array( "tag_type_id", "category", "tagname", "description", "min_role_id" ); // prepare dict role_id => role_name global $roles; $roles= $api->GetRoles(); global $roles_id_to_name; $roles_id_to_name=array(); foreach ($roles as $role) { $roles_id_to_name[$role['role_id']] = $role['name']; } // compute person's smallest role global $person_role; $person_role=50; foreach ($_person['role_ids'] as $role_id) { if ($role_id < $person_role) { $person_role=$role_id; } } //plc_debug("person_role",$person_role); // post-process results from GetTagTypes // with planetlab 4.2, we've moved to php-5.2 // with the former 5.0 reelase, I could invoke array_map // with a function that took a reference and could do side-effects // Now I have to return the copy... // this new way of doing things might require more memory // on the other hand we should move to a schema where // pagination is done in the API, so it's no big deal hopefully function layout_setting_type ($setting_type) { // replace role_id with name global $roles_id_to_name; $setting_type['min_role']=$roles_id_to_name[$setting_type['min_role_id']]; return $setting_type; } // if no id, display list of tag types if( !$_GET['id'] && !$_GET['add'] && !$_GET['add_type'] && !$_GET['edit_type'] ) { // get types global $person_role; $filter = array (']min_role_id'=>$person_role,'category'=>'interface*'); $setting_types= $api->GetTagTypes( $filter, $tag_columns ); $setting_types = array_map(layout_setting_type,$setting_types); sort_interface_tags ($setting_types); // list them echo ""; echo ""; // if admin we need one more cells for delete links if( in_array( "10", $_person['role_ids'] ) ) echo ""; $role_header="
min
Role
"; echo "Name"; echo "Category"; echo "" . $role_header . ""; echo "Id"; echo "Description"; echo ""; echo ""; foreach( $setting_types as $type ) { echo ""; // if admin display delete links if( in_array( "10", $_person['role_ids'] ) ) { echo ""; echo plc_delete_link_button('setting_action.php?del_type='. $type['tag_type_id'], $type['tagname']); echo ""; } // if admin, the name is a link to edition if (in_array( "10", $_person['role_ids'])) { echo "" . $type['tagname'] . ""; } else { echo "" . $type['tagname'] . ""; } echo "" . $type['category'] . ""; echo "" . $type['min_role'] . "" . $type['min_role_id'] . "" . $type['description'] . ""; echo "\n"; } if( in_array( "10", $_person['role_ids'] ) ) echo "Add a Setting Type"; echo "\n"; // back link o nodes echo "

Back to Nodes\n"; } elseif( $_GET['add_type'] || $_GET['edit_type'] ) { // if its edit get the tag info if( $_GET['edit_type'] ) { $type_id= intval( $_GET['edit_type'] ); $type= $api->GetTagTypes( array( $type_id ) ); $category=$type[0]['category']; $name= $type[0]['tagname']; $min_role_id= $type[0]['min_role_id']; $description= $type[0]['description']; } // display form for setting types echo "

\n"; if ($_GET['edit_type']) { drupal_set_title("Edit Setting Type"); } else { drupal_set_title("Add Setting Type"); } echo ""; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo ""; echo "
Category:
Name:
Min Role:
Description:"; echo "\n"; echo "
"; if( $_GET['edit_type'] ) { echo "\n"; echo "\n"; } else { echo "\n"; } echo "
"; echo "
\n"; echo "

Back to Setting Types\n"; } elseif( $_GET['add'] ) { // get interface id from GET $interface_id= intval( $_GET['add'] ); // get all setting types global $person_role; $filter = array (']min_role_id'=>$person_role,'category'=>'interface*'); $setting_types= $api->GetTagTypes( $filter, array( "tag_type_id", "tagname" , "category") ); sort_interface_tags($setting_types); // get interface's settings $interface = $api->GetInterfaces( array( $interface_id ), array( "interface_tag_ids","ip" ) ); drupal_set_title("Add a setting to ". $interface[0]['ip']); // start form echo "

\n"; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "
New Setting
Select\n"; echo "
Value:
"; echo "
\n"; } else { $setting_id= intval( $_GET['id'] ); // get setting info $setting= $api->GetInterfaceTags( array( $setting_id )); // interface info $interface= $api->GetInterfaces( array( $setting[0]['interface_id'] ), array( "ip" ) ); drupal_set_title("Edit setting ". $setting[0]['tagname'] ." on ". $interface[0]['ip']); // start form and put values in to be edited. echo "
\n"; echo "\n"; echo "\n"; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
Edit Setting
Category " . $setting[0]['category'] . "
Name " . $setting[0]['tagname'] . "
Value
"; echo "
\n"; } // back link is case-dependant // Print footer include 'plc_footer.php'; ?>