ckp
[plewww.git] / planetlab / common / actions.php
index 0a0bec4..6105b1b 100644 (file)
@@ -66,6 +66,16 @@ $known_actions []= "expire-all-slices-in-site";
 $known_actions []= "update-site";
 //     expects:        site_id & name abbreviated_name url latitude longitude [login_base max_slices]
 
+//////////////////////////////////////// slices
+$known_actions []= "update-slice";     
+//     expects:        slice_id, name, description, url
+$known_actions []= "renew-slice";
+//     expects:        slice_id & expires
+$known_actions []= 'remove-persons-from-slice';
+//     expects:        slice_id & person_ids
+$known_actions []= 'add-persons-in-slice';
+//     expects:        slice_id & person_ids
+
 //////////////////////////////////////// tag types
 $known_actions []= "update-tag-type";
 //     expects:        tag_type_id & name & description & category & min_role_id  
@@ -425,6 +435,89 @@ switch ($action) {
    break;
  }
 
+//////////////////////////////////////////////////////////// slices
+ case 'update-slice': {
+   $slice_id = $_POST['slice_id'];
+   $name = $_POST['name'];
+   $description= $_POST['description'];
+   $url= $_POST['url'];
+
+   $fields= array( "description"=>$description, "url"=>$url );
+   $api->UpdateSlice( intval( $slice_id ), $fields );
+   $error= $api->error();
+
+   if( empty( $error ) ) {
+     drupal_set_message("Update slice $name");
+     plc_redirect(l_slice($slice_id));
+   } else {
+     drupal_set_error($error);
+   }
+   break;
+ }
+
+ case 'renew-slice': {
+   $slice_id = intval ($_POST['slice_id']);    
+   $expires = intval ($_POST['expires']);
+   // 8 weeks from now
+   // xxx
+   $now=mktime();
+   $WEEK=7*24*3600;
+   $WEEKS=8;
+   $MAX_FUTURE=$WEEKS*$WEEK;
+   if ( ($expires-$now) > $MAX_FUTURE) {
+     drupal_set_error("Cannot renew slice that far in the future, max is $WEEKS weeks from now");
+     plc_redirect(l_slice($slice_id));
+   }
+   plc_debug('slice_id',$slice_id);
+   plc_debug('expires',$expires);
+   if ($api->UpdateSlice ($slice_id, array('expires'=>$expires)) == 1)
+     drupal_set_message("Slice renewed");
+   else
+     drupal_set_error("Could not update slice $slice_id");
+   plc_redirect(l_slice($slice_id));
+   break;
+ }
+
+ case 'remove-persons-from-slice': {
+   $slice_id = intval ($_POST['slice_id']);    
+   $person_ids = $_POST['person_ids'];
+   
+   $success=true;
+   $counter=0;
+   foreach( $person_ids as $person_id ) {
+     if ($api->DeletePersonFromSlice(intval($person_id),$slice_id) != 1) 
+       $success=false;
+     else
+       $counter++;
+   }
+   if ($success) 
+     drupal_set_message ("Deleted $counter person(s)");
+   else
+     drupal_set_error ("Could not delete all selected persons, only $counter were removed");
+   plc_redirect(l_slice($slice_id) . " &show_users=true");
+   break;
+ }
+
+ case 'add-persons-in-slice': {
+   $slice_id = intval ($_POST['slice_id']);    
+   $person_ids = $_POST['person_ids'];
+   
+   $success=true;
+   $counter=0;
+   foreach ($person_ids as $person_id) {
+     if ($api->AddPersonToSlice(intval($person_id),$slice_id) != 1) 
+       $success=false;
+     else
+       $counter++;
+   }
+   if ($success) 
+     drupal_set_message ("Added $counter person(s)");
+   else
+     drupal_set_error ("Could not add all selected persons, only $counter were added");
+   plc_redirect(l_slice($slice_id) . "&show_users=true" );
+   break;
+ }
+
 //////////////////////////////////////////////////////////// tag types
 
  case 'update-tag-type': {