X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fsites%2Fjoin_request.php;h=f0b5562f045ee212bc48f06d8f520dfb71c3838e;hb=9b8b74f6feeb99e0222717f0e1ed2f6e51f7b55b;hp=3a5e4e0d314937776100e6e90b4a3fa986f8bc19;hpb=05411893eee11af861e93000f4064d9a6ea23455;p=plewww.git diff --git a/planetlab/sites/join_request.php b/planetlab/sites/join_request.php index 3a5e4e0..f0b5562 100644 --- a/planetlab/sites/join_request.php +++ b/planetlab/sites/join_request.php @@ -9,7 +9,8 @@ require_once 'plc_login.php'; // Get session and API handles require_once 'plc_session.php'; -global $plc, $api; +require_once 'plc_api.php'; +global $plc, $api, $adm; // Print header require_once 'plc_drupal.php'; @@ -19,24 +20,46 @@ include 'plc_header.php'; require_once 'plc_functions.php'; require_once 'details.php'; require_once 'nifty.php'; +require_once 'table.php'; +require_once 'nifty.php'; include 'site_form.php'; //////////////////////////////////////// function render_all_join_requests($api) { - $sites = $api->GetSites( array("enabled" => False, "peer_id" => NULL)); - if (!empty($sites)) { - print(""); - print(""); - foreach($sites as $site) { - printf("", $site['site_id'], $site['name']); - printf("", $site['site_id'], $site['site_id']); - printf("", date("d F Y, G:i",$site['date_created'])); - } - print("
Site Namesite_idSubmitted
%s %d %s
"); - } else { + global $PENDING_CONSORTIUM_ID; + $filter = array("peer_id" => NULL, "ext_consortium_id" => $PENDING_CONSORTIUM_ID); + $columns=array('site_id','name','enabled','date_created'); + $sites = $api->GetSites( $filter, $columns); + if (empty($sites)) { print("

No open join requests

"); + return; } + $headers = array(); + $headers['id']='int'; + $headers['Site Name']='string'; + # trying the sortEnglishDateTime stuff - not too lucky so far + # http://www.frequency-decoder.com/demo/table-sort-revisited/custom-sort-functions/ + $headers['submitted']='sortEnglishDateTime'; + $headers['enabled']='string'; + + $nifty=new PlekitNifty ('pending','sites-pending','medium'); + $nifty->start(); + $table=new PlekitTable ('pending',$headers,2, + array('pagesize_area'=>FALSE,'pagesize'=>10000)); + $table->start(); + foreach($sites as $site) { + $site_id=$site['site_id']; + $link = $site['enabled'] ? l_site($site_id) : l_site_review_pending($site_id); + $table->row_start(); + $table->cell(href($link,$site['site_id'])); + $table->cell(href($link,$site['name'])); + $table->cell(date("dS F Y",$site['date_created']) . " at " . date("G:i",$site['date_created'])); + $table->cell( $site['enabled'] ? plc_warning_html('yes') : 'no'); + $table->row_end(); + } + $table->end(); + $nifty->end(); } function render_join_request_review($api, $site_id) { @@ -46,17 +69,19 @@ function render_join_request_review($api, $site_id) { return; } $site = $sites[0]; - if ($site['enabled']) { + if ($site['enabled'] && $site['ext_consortium_id'] === $PENDING_CONSORTIUM_ID) { print("

This site is already enabled

"); return; } $addresses = $api->GetAddresses ($site['address_ids']); if (empty ($addresses)) { - print("

No address found for site_id=$site_id

"); - return ; + drupal_set_message("Site $site_id has no address - never mind"); + $address=array('line1'=>''); + $address_id=0; + } else { + $address = $addresses[0]; + $address_id=$address['address_id']; } - $address = $addresses[0]; - $address_id=$address['address_id']; # just in case there is no person attached yet if (empty ($site['person_ids'])) { $persons=array(); @@ -76,7 +101,7 @@ function render_join_request_review($api, $site_id) { } $pi_id = $pi['person_id']; $tech_id = $tech['person_id']; - + print <<< EOF

Please review the join request below.

Warning: the PI email address that was provided in this form will not be checked automatically. We expect that as part of the handshake with the site, the support team has had an opportunity to use this address so it can be considered safe. Please check it manually if this is not the case.

@@ -87,6 +112,7 @@ function render_join_request_review($api, $site_id) { EOF; + // don't render the tech part if that was the same as the pi $site_form = build_site_form(FALSE); $input = array ('site' => $site, 'address'=> $address, 'pi' => $pi, 'tech' => $tech); @@ -150,7 +176,7 @@ EOF; PLC_MAIL_SUPPORT_ADDRESS); $subject="Site registration for " . $site['name'] . " has been approved by " . PLC_NAME; - $api->NotifyPersons(array($pi_id),$subject,$body); + $adm->NotifyPersons(array($pi_id),$subject,$body); } @@ -215,9 +241,10 @@ else if ($_POST['submitted'] ) case 'Update': { $api->begin(); $api->UpdateSite($site_id,$site); - $api->UpdateAddress($address_id,$address); + if ($address_id) $api->UpdateAddress($address_id,$address); + else if(!empty($address)) $api->AddSiteAddress($site_id,$address); $api->UpdatePerson($pi_id,$pi); - $api->UpdatePerson($tech_id,$tech); + if ($tech_id != $pi_id) $api->UpdatePerson($tech_id,$tech); $api->commit(); $api_error=$api->error(); if (!empty($api_error)) { @@ -234,16 +261,18 @@ else if ($_POST['submitted'] ) // the PI's email address, which makes the whole thing *a lot* simpler // enable the site, enable the PI, and VerifyPerson the thec if different from the PI $site['enabled'] = True; + global $APPROVED_CONSORTIUM_ID; + $site['ext_consortium_id'] = $APPROVED_CONSORTIUM_ID; $api->UpdateSite ($site_id,$site); $api_error=$api->error(); if (!empty($api_error)) { $error .= $api->error(); $messages [] = "Could not enable site"; } else { - $messages[] = "Site " . $site['name'] . " enabled"; + $messages[] = l_site_t ($site_id,"Site '" . $site['name'] . "' enabled"); } - if (empty ($error)) { + if (empty ($error) && $address_id) { // Update Address $api->UpdateAddress($address_id,$address); $api_error=$api->error();