function handle_lead_request($request_id, $new_status, $approver, $user_uid, $reason, $signer) { $ma_url = get_first_service_of_type(SR_SERVICE_TYPE::MEMBER_AUTHORITY); $conn = portal_conn(); if ($new_status == "approved") { $response = add_member_privilege($ma_url, $signer, $user_uid, "PROJECT_LEAD"); if (!$response) { error_log("User {$user_uid} already a project lead, cannot be made a project lead"); } else { send_approved_mail(geni_load_user_by_member_id($user_uid), $reason, $approver); } } $sql = "UPDATE lead_request set " . "status = " . $conn->quote($new_status, 'text') . ", " . "reason = " . $conn->quote($reason, 'text') . ", " . "approver = " . $conn->quote($approver, 'text') . "where id = " . $conn->quote($request_id, 'text'); $db_response = db_execute_statement($sql, "Update lead request id#:" . $request_id); $db_error = $db_response[RESPONSE_ARGUMENT::OUTPUT]; if ($db_error == "") { print "Response successfully stored"; } else { print "DB error: " . $db_error; error_log("DB error when updating lead request table: " . $db_error); } }
function removeFromGroup($project_id, $group_name, $member_id, $user) { if (!isset($project_id) || $project_id == "-1" || !uuid_is_valid($project_id)) { error_log("iRODS removeFromGroup: not a valid project ID. Nothing to do. {$project_id}"); return -1; } if (!isset($group_name) || is_null($group_name) || $group_name === '') { error_log("iRODS removeFromGroup: not a valid group name. Nothing to do. {$project_id}, {$group_name}"); return -1; } if (!isset($member_id) || $member_id == "-1" || !uuid_is_valid($member_id)) { error_log("iRODS removeFromGroup: not a valid member ID. Nothing to do. {$member_id}"); return -1; } global $disable_irods; if (isset($disable_irods)) { error_log("irods removeFromGroup: disable_irods was set. Doing nothing."); return -1; } // must get member username $member = geni_load_user_by_member_id($member_id); $username = base_username($member); error_log("iRODS removeFromGroup {$group_name} member {$member_id} with username {$username}"); global $irods_url; global $portal_irods_user; global $portal_irods_pw; global $irods_cert; $removed = -1; // -1=Error, 0=Success, 1=Already gone try { // Note the method is called doRESTCall, but the op arg tells the real method $rmstruct = doRESTCall($irods_url . IRODS_REMOVE_USER_URI1 . $group_name . IRODS_REMOVE_USER_URI2 . $username, $portal_irods_user, $portal_irods_pw, "DELETE", "", "", $irods_cert); // look for (\r or \n or \r\n){2} and move past that preg_match("/(\r|\n|\r\n){2}([^\r\n].+)\$/", $rmstruct, $m); if (!array_key_exists(2, $m)) { error_log("irods removeFromGroup: Malformed DELETE result from iRODS - error? Got: " . $rmstruct); throw new Exception("Failed to remove member from iRODS group - server error: " . $rmstruct); } // error_log("DELETE result content: " . $m[2]); $rmjson = json_decode($m[2], true); // Parse the json return // error_log("remove user from group result: " . print_r($rmjson, true)); if (is_array($rmjson)) { $status = null; $msg = null; $groupCmdStatus = null; if (array_key_exists("status", $rmjson)) { $status = $rmjson["status"]; // Return true if 0 if removed the user, 1 if user wasnt in the group, -1 on error if ($status == IRODS_STATUS_ERROR) { $removed = -1; } elseif ($status == IRODS_STATUS_SUCCESS) { $removed = 0; } } if (array_key_exists("message", $rmjson)) { $msg = $rmjson["message"]; // error_log("removeFromGroup result: '$msg'"); } if (array_key_exists(IRODS_USER_GROUP_COMMAND_STATUS, $rmjson)) { $groupCmdStatus = $rmjson[IRODS_USER_GROUP_COMMAND_STATUS]; if ($groupCmdStatus != IRODS_STATUS_SUCCESS) { if ($groupCmdStatus === IRODS_STATUS_BAD_USER) { error_log("iRODS: user {$username} was not in group {$group_name} to delete. ({$groupCmdStatus}: '{$msg}')"); } else { error_log("iRODS failed to remove {$username} from group {$group_name}: {$groupCmdStatus}: '{$msg}'"); } } } elseif ($removed !== 0) { error_log("iRODS failed to remove user {$username} from group {$group_name}: '{$msg}'"); } } else { $removed = -1; error_log("iRODS malformed return from removeUserFromGroup: " . print_r($rmjson, true)); } } catch (Exception $e) { error_log("Error doing iRODS delete to remove member from group: " . $e->getMessage()); $removed = -1; } // Return 0 if removed the user, 1 if user already not in the group, -1 on error return $removed; }