예제 #1
0
    // warn that no cert has been generated
    $warnings[] = '<p class="warn">No certificate has been generated.' . ' Please <a href="kmcert.php?close=1" target="_blank">' . 'generate a certificate' . '</a>.' . '</p>';
}
// FIXME: hardcoded path
$download_url = 'https://' . $_SERVER['SERVER_NAME'] . '/secure/kmcert.php?close=1';
$download_text = 'Create and download your certificate';
if ($has_certificate) {
    $download_text = 'Download your certificate';
}
/* --------- PROJECTS ---------- */
$all_project_ids = get_projects_for_member($sa_url, $user, $user->account_id, true);
$num_projects = count($all_project_ids);
$project_ids = array();
// Filter out expired projects
if ($num_projects > 0) {
    $projects = lookup_project_details($sa_url, $user, $all_project_ids);
    foreach ($projects as $proj) {
        if (!convert_boolean($proj[PA_PROJECT_TABLE_FIELDNAME::EXPIRED])) {
            $project_ids[] = $proj[PA_PROJECT_TABLE_FIELDNAME::PROJECT_ID];
        }
    }
}
// Update the count to only the active projects
$num_projects = count($project_ids);
$is_project_lead = $user->isAllowed(PA_ACTION::CREATE_PROJECT, CS_CONTEXT_TYPE::RESOURCE, null);
if ($num_projects == 0) {
    // warn that the user has no projects
    $warn = '<p class="warn">You are not a member of any projects.' . ' No default project can be chosen unless you';
    if ($is_project_lead) {
        $warn .= ' <button onClick="window.location=\'edit-project.php\'"><b>create a project</b></button> or';
    }
예제 #2
0
function get_user_project_info($user_id, $name, $signer)
{
    $sa_url = get_first_service_of_type(SR_SERVICE_TYPE::SLICE_AUTHORITY);
    $projects = get_projects_for_member($sa_url, $signer, $user_id, true);
    $project_info = lookup_project_details($sa_url, $signer, $projects);
    $project_data = "<b style='text-decoration: underline;'>{$name}'s projects</b><br>";
    foreach ($project_info as $project_id => $project_details) {
        if ($project_details['expired'] != 1) {
            $project_data .= "<b>Project name: </b>" . $project_details[PA_PROJECT_TABLE_FIELDNAME::PROJECT_NAME] . "<br>";
            $project_data .= $project_details[PA_PROJECT_TABLE_FIELDNAME::LEAD_ID] == $user_id ? "<b>{$name} is lead on this project</b><br>" : "";
            $project_data .= "<button onclick='remove_from_project(\"{$user_id}\", \"{$project_id}\");'>Remove</button>";
            $project_data .= "<hr style='height: 1px; background-color: #5F584E; margin: 3px'>";
        }
    }
    if (count($project_info) == 0) {
        $project_data .= "<i>user has no projects</i>";
    }
    return $project_data;
}
예제 #3
0
function get_project_slice_member_info($sa_url, $ma_url, $user, $allow_expired = False, $project_id = null)
{
    $member_ids = array();
    $slice_ids = array();
    $slice_objects = array();
    $project_objects = array();
    $member_objects = array();
    $project_slice_map = array();
    $project_activeslice_map = array();
    if (!is_null($project_id)) {
        $projects = array($project_id);
    } else {
        // This is all project IDs the member belongs to, even expired
        $projects = get_projects_for_member($sa_url, $user, $user->account_id, true);
    }
    if (count($projects) > 0) {
        // These are the details of these projects
        $project_objects = lookup_project_details($sa_url, $user, $projects);
        // We get back all the projects. But optionally filter out expired projects.
        if (!$allow_expired) {
            $unexpired_projects = array();
            $unexpired_project_objects = array();
            $now = new DateTime();
            foreach ($project_objects as $project) {
                $project_id = $project[PA_PROJECT_TABLE_FIELDNAME::PROJECT_ID];
                $project_expired = $project[PA_PROJECT_TABLE_FIELDNAME::EXPIRED];
                $project_name = $project[PA_PROJECT_TABLE_FIELDNAME::PROJECT_NAME];
                //	error_log("PEXP = " . $project_id . " " . $project_name .
                //      " " . $project_expired);
                if (convert_boolean($project_expired)) {
                    continue;
                }
                $unexpired_project_objects[] = $project;
                $unexpired_projects[] = $project_id;
            }
            $projects = $unexpired_projects;
            $project_objects = $unexpired_project_objects;
        }
        // At this point, $projects and $project_objects have all
        // the projects we're interested in: expired or not
        // Get all slices of which user is a member (expired or not)
        $slice_member_role_ids = get_slices_for_member($sa_url, $user, $user->account_id, True);
        $slice_member_ids = array();
        foreach ($slice_member_role_ids as $slice_member_role_id) {
            //NOTE: FOR NOW ONLY ALLOW UNEXPIRED SLICES
            if (!$slice_member_role_id[SA_SLICE_TABLE_FIELDNAME::EXPIRED]) {
                $slice_member_id = $slice_member_role_id[SA_SLICE_MEMBER_TABLE_FIELDNAME::SLICE_ID];
                $slice_member_ids[] = $slice_member_id;
            }
        }
        // $slice_member_ids is the ID's of slices to which the member belongs
        // This is indexed by project_id, containing an array of slice data
        // CHAPI: this doesn't generally work any more, since non-members aren't allowed
        // to get details for slices they aren't members of
        //$slice_data = get_slices_for_projects($sa_url, $user, $projects, $allow_expired);
        $slice_data = get_slices_in_projects($sa_url, $user, $slice_member_ids, $projects, $allow_expired);
        //    error_log("SLICE_MEMBER_IDS = " . print_r($slice_member_ids, true));
        //    error_log("SLICE_DATA =  = " . print_r($slice_data, true));
        //    error_log("PROJECTS = " . print_r($projects, true));
        foreach ($project_objects as $project) {
            $project_id = $project[PA_PROJECT_TABLE_FIELDNAME::PROJECT_ID];
            $proj_lead_id = $project[PA_PROJECT_TABLE_FIELDNAME::LEAD_ID];
            $proj_slices = $slice_data[$project_id];
            $member_ids[] = $proj_lead_id;
            $proj_slice_ids = array();
            $proj_activeslice_ids = array();
            foreach ($proj_slices as $proj_slice) {
                $proj_slice_id = $proj_slice[SA_SLICE_TABLE_FIELDNAME::SLICE_ID];
                $proj_slice_id_expired = $proj_slice[SA_SLICE_TABLE_FIELDNAME::EXPIRED];
                if (!in_array($proj_slice_id, $slice_member_ids)) {
                    continue;
                }
                $proj_slice_ids[] = $proj_slice_id;
                //error_log("slice id = ". $proj_slice_id . " expired = " . $proj_slice_id_expired);
                if (!$proj_slice_id_expired) {
                    //error_log("Adding active slice to list ....");
                    $proj_activeslice_ids[] = $proj_slice_id;
                }
                $owner_id = $proj_slice[SA_SLICE_TABLE_FIELDNAME::OWNER_ID];
                if (!in_array($owner_id, $member_ids)) {
                    $member_ids[] = $owner_id;
                }
                // Optionally filter out expired slices
                if (!convert_boolean($proj_slice_id_expired) || $allow_expired) {
                    $slice_objects[$proj_slice_id] = $proj_slice;
                }
            }
            //	$proj_slice_ids = lookup_slice_ids($sa_url, $user, $project_id);
            $project_slice_map[$project_id] = $proj_slice_ids;
            $project_activeslice_map[$project_id] = $proj_activeslice_ids;
            //error_log("GPSMI: project ".$project_id." ids = ".print_r($proj_activeslice_ids,true));
            $slice_ids = array_merge($slice_ids, $proj_slice_ids);
            // is this ok
        }
    }
    if (count($member_ids) > 0) {
        $member_objects = lookup_member_details($ma_url, $user, $member_ids);
    }
    //  error_log("SIDS = " . print_r($slice_ids, true));
    //  error_log("MIDS = " . print_r($member_ids, true));
    //  error_log("SMIDS = " . print_r($slice_member_ids, true));
    //  foreach($project_objects as $po) { error_log("PO = " . print_r($po, true)); }
    //  foreach($slice_objects as $so) { error_log("SO = " . print_r($so, true)); }
    //  foreach($member_objects as $mo) { error_log("MO = " . print_r($mo, true)); }
    //  error_log("PSM = " . print_r($project_slice_map, true));
    //  error_log("PASM = " . print_r($project_activeslice_map, true));
    // At this point, we should have
    // project_objects has all the projects to which the member belongs
    //    expired or not by request
    // slice_objects has all the slices to which the member belongs
    //    expired or not by request
    // member_objects
    //    all the members who are leads of slices or projects in previous lists
    return array($project_objects, $slice_objects, $member_objects, $project_slice_map, $project_activeslice_map);
}
예제 #4
0
        print "<p>You have " . count($rpids) . " open <a href='dashboard.php#projects'>request(s) to join a project</a>.</p>";
    }
} else {
    print "<h2>Select a project to join</h2>\n";
    print "<p><i>Please do not try to join arbitrary projects. Abuse of\n   this functionality may result in revocation of your GENI account.\n   </i></p>";
    /* datatables.net (for sortable/searchable tables) */
    echo '<script type="text/javascript">';
    echo '$(document).ready( function () {';
    echo '  $(\'#projects\').DataTable({paging: false});';
    echo '} );';
    echo '</script>';
    print "<table id=\"projects\" class=\"display\">\n";
    print "<thead>\n";
    print "<tr><th>Project</th><th>Purpose</th><th>Project Lead</th><th>Join</th></tr>\n";
    $jointhis_url = "join-this-project.php?project_id=";
    $project_details = lookup_project_details($sa_url, $user, $pids);
    usort($project_details, "project_name_compare");
    //  error_log("PROJ_DETAILS = " . print_r($project_details, true));
    $ma_url = get_first_service_of_type(SR_SERVICE_TYPE::MEMBER_AUTHORITY);
    $member_names = lookup_member_names_for_rows($ma_url, $user, $project_details, PA_PROJECT_TABLE_FIELDNAME::LEAD_ID);
    //  error_log("MEMBER_DETAILS = " . print_r($member_names, true));
    print "</thead><tbody>\n";
    foreach ($project_details as $project) {
        //    $project = lookup_project($sa_url, $user, $project_id);
        $expired = $project[PA_PROJECT_TABLE_FIELDNAME::EXPIRED];
        if (convert_boolean($expired)) {
            continue;
        }
        print "<tr><td>";
        print $project[PA_PROJECT_TABLE_FIELDNAME::PROJECT_NAME];
        print "</td><td>";