Example #1
0
function dashboard()
{
    print "<h2>VCL Dashboard</h2>\n";
    if (checkUserHasPerm('View Dashboard (global)')) {
        print "View data for:";
        $affils = getAffiliations();
        $affils = array_reverse($affils, TRUE);
        $affils[0] = "All Affiliations";
        $affils = array_reverse($affils, TRUE);
        printSelectInput('affilid', $affils, -1, 0, 0, 'affilid', 'onChange="updateDashboard();"');
    }
    print "<table summary=\"\" id=dashboard>\n";
    print "<tr>\n";
    # -------- left column ---------
    print "<td valign=\"top\">\n";
    print addWidget('status', 'Current Status');
    print addWidget('topimages', 'Top 5 Images in Use', '(Reservations &lt; 24 hours long)');
    print addWidget('toplongimages', 'Top 5 Long Term Images in Use', '(Reservations &gt; 24 hours long)');
    print addWidget('toppastimages', 'Top 5 Images From Past Day', '(Reservations with a start<br>time within past 24 hours)');
    print addWidget('topfailedcomputers', 'Top Recent Computer Failures', '(Failed in the last 5 days)');
    print addWidget('blockallocation', 'Block Allocation Status');
    print "</td>\n";
    # -------- end left column ---------
    # ---------- right column ---------
    print "<td valign=\"top\">\n";
    print addWidget('managementnodes', 'Management Nodes', '[ ] denotes node in maintenance state');
    print addWidget('topfailed', 'Top Recent Image Failures', '(Failed in the last 5 days)');
    print addLineChart('reschart', 'Past 12 Hours of Active Reservations');
    print "</td>\n";
    # -------- end right column --------
    print "</tr>\n";
    print "</table>\n";
    print addWidget('newreservations', 'Notable Reservations', '');
    if (checkUserHasPerm('View Dashboard (global)')) {
        print addWidget('failedimaging', 'Failed Imaging Reservations', '(Imaging Reservations in the maintenance state)');
    }
    $cont = addContinuationsEntry('AJupdateDashboard', array('val' => 0), 90, 1, 0);
    print "<input type=\"hidden\" id=\"updatecont\" value=\"{$cont}\">\n";
}
Example #2
0
function editOrAddGroup($state)
{
    global $submitErr, $user, $mode;
    $usergroups = getUserGroups();
    $type = getContinuationVar("type");
    if ($state) {
        $isowner = 1;
    } elseif ($type == 'resource') {
        $isowner = getContinuationVar('isowner');
    }
    if (!$state) {
        $groupid = getContinuationVar('groupid', processInputVar('groupid', ARG_NUMERIC));
        if ($type == 'user') {
            if (!array_key_exists($groupid, $usergroups)) {
                print "<h2>Edit User Group</h2>\n";
                print "The selected user group does not exist.\n";
                return;
            }
            $isowner = 0;
            if ($usergroups[$groupid]['ownerid'] != $user['id']) {
                if ($usergroups[$groupid]['custom'] == 0 || $usergroups[$groupid]['courseroll'] == 1) {
                    if (!checkUserHasPerm('Manage Federated User Groups (global)') && (!checkUserHasPerm('Manage Federated User Groups (affiliation only)') || $usergroups[$groupid]['groupaffiliationid'] != $user['affiliationid'])) {
                        print "<h2>Edit User Group</h2>\n";
                        print "You do not have access to modify the selected user group.\n";
                        return;
                    } else {
                        $isowner = 1;
                    }
                } elseif (!array_key_exists("editgroupid", $usergroups[$groupid]) || !array_key_exists($usergroups[$groupid]["editgroupid"], $user["groups"])) {
                    print "<h2>Edit User Group</h2>\n";
                    print "You do not have access to modify the selected user group.\n";
                    return;
                }
            } else {
                $isowner = 1;
            }
        } else {
            $userresources = getUserResources(array("groupAdmin"), array("manageGroup"), 1);
            $noaccess = 1;
            foreach (array_keys($userresources) as $rtype) {
                if (array_key_exists($groupid, $userresources[$rtype])) {
                    $noaccess = 0;
                    break;
                }
            }
            if ($noaccess) {
                print "<h2>Edit Resource Group</h2>\n";
                print "You do not have access to modify the selected resource group.\n";
                return;
            }
        }
    }
    $allcustomgroups = getUserGroups(1);
    if ($user['showallgroups']) {
        $affilusergroups = $allcustomgroups;
    } else {
        $affilusergroups = getUserGroups(1, $user['affiliationid']);
    }
    $defaultusergroupid = getUserGroupID('Default for Editable by', 1);
    if ($type == 'resource') {
        $dispUserGrpIDs = array();
        $dispUserGrpIDsAllAffils = array();
        foreach (array_keys($allcustomgroups) as $id) {
            # figure out if user is owner or in editor group
            $owner = 0;
            $editor = 0;
            if ($allcustomgroups[$id]["ownerid"] == $user["id"]) {
                $owner = 1;
            }
            if (array_key_exists("editgroupid", $allcustomgroups[$id]) && array_key_exists($allcustomgroups[$id]["editgroupid"], $user["groups"])) {
                $editor = 1;
            }
            if (!$owner && !$editor) {
                continue;
            }
            if ($user['showallgroups']) {
                $dispUserGrpIDs[$id] = $allcustomgroups[$id]['name'];
            } elseif (array_key_exists($id, $affilusergroups) && $allcustomgroups[$id]['groupaffiliation'] == $user['affiliation']) {
                $dispUserGrpIDs[$id] = $allcustomgroups[$id]['name'];
            }
            $dispUserGrpIDsAllAffils[$id] = $allcustomgroups[$id]['name'];
        }
    }
    $resourcegroups = getResourceGroups();
    $affils = getAffiliations();
    $resourcetypes = getTypes("resources");
    if ($submitErr) {
        $data = processGroupInput(0);
        if ($mode == "submitEditGroup") {
            $id = $data["groupid"];
            if ($data["type"] == "resource") {
                list($grouptype, $junk) = explode('/', $resourcegroups[$id]["name"]);
                $ownerid = $resourcegroups[$id]["ownerid"];
            }
        } else {
            if ($data["type"] == "resource") {
                if ($state) {
                    $grouptype = $resourcetypes['resources'][$data['resourcetypeid']];
                } else {
                    list($grouptype, $junk) = explode('/', $resourcegroups[$data['groupid']]["name"]);
                }
                $ownerid = $data["ownergroup"];
            } else {
                $selectAffil = getContinuationVar('selectAffil');
                if (empty($selectAffil) && $user['showallgroups']) {
                    $selectAffil = 1;
                }
            }
        }
    } else {
        $data["groupid"] = getContinuationVar("groupid");
        $data["type"] = getContinuationVar("type");
        $data["isowner"] = $isowner;
        if (!$state) {
            $id = $groupid;
            $data['groupid'] = $id;
        } else {
            $id = $data["groupid"];
        }
        if ($data["type"] == "user") {
            if ($state) {
                $data["name"] = '';
                $data["affiliationid"] = $user['affiliationid'];
                $data["owner"] = $user['unityid'];
                if (array_key_exists('VCLEDITGROUPID', $_COOKIE) && (array_key_exists($_COOKIE['VCLEDITGROUPID'], $affilusergroups) || $_COOKIE['VCLEDITGROUPID'] == $defaultusergroupid)) {
                    $data["editgroupid"] = $_COOKIE['VCLEDITGROUPID'];
                } else {
                    $data["editgroupid"] = $defaultusergroupid;
                }
                if (!array_key_exists($data['editgroupid'], $affilusergroups)) {
                    if ($user['showallgroups']) {
                        $affil = getAffiliationName(1);
                        $affilusergroups[$data['editgroupid']]['name'] = "Default for Editable by@{$affil}";
                    } else {
                        $affilusergroups[$data['editgroupid']]['name'] = 'Default for Editable by';
                    }
                }
                $data["initialmax"] = 240;
                $data["totalmax"] = 360;
                $data["maxextend"] = 30;
                $data["overlap"] = 0;
                $data["custom"] = 1;
                $data["courseroll"] = 0;
                $tmp = explode('@', $data['name']);
                $data['name'] = $tmp[0];
                if ($user['showallgroups']) {
                    $selectAffil = 1;
                } else {
                    $selectAffil = 0;
                }
            } else {
                $data["name"] = $usergroups[$id]["name"];
                $data["affiliationid"] = $usergroups[$id]["groupaffiliationid"];
                $data["owner"] = $usergroups[$id]["owner"];
                $data["editgroupid"] = $usergroups[$id]["editgroupid"];
                $data["initialmax"] = $usergroups[$id]["initialmaxtime"];
                $data["totalmax"] = $usergroups[$id]["totalmaxtime"];
                $data["maxextend"] = $usergroups[$id]["maxextendtime"];
                $data["overlap"] = $usergroups[$id]["overlapResCount"];
                $data["custom"] = $usergroups[$id]["custom"];
                $data["courseroll"] = $usergroups[$id]["courseroll"];
                $tmp = explode('@', $data['name']);
                $data['name'] = $tmp[0];
                if ($user['showallgroups'] || array_key_exists(1, $tmp) && $tmp[1] != $user['affiliation']) {
                    $selectAffil = 1;
                } else {
                    $selectAffil = 0;
                }
            }
        } else {
            unset($affilusergroups[$defaultusergroupid]);
            if ($state) {
                $grouptype = 'computer';
                $data['name'] = '';
                if (array_key_exists('VCLOWNERGROUPID', $_COOKIE) && array_key_exists($_COOKIE['VCLOWNERGROUPID'], $user['groups'])) {
                    $ownerid = $_COOKIE['VCLOWNERGROUPID'];
                } else {
                    $ownerid = "";
                    foreach (array_keys($user["groups"]) as $grpid) {
                        if (array_key_exists($grpid, $dispUserGrpIDs)) {
                            $ownerid = $grpid;
                            break;
                        }
                    }
                }
            } else {
                list($grouptype, $data["name"]) = explode('/', $resourcegroups[$id]["name"]);
                $ownerid = $resourcegroups[$id]["ownerid"];
            }
        }
    }
    if ($data['type'] == 'user' && !array_key_exists($defaultusergroupid, $affilusergroups)) {
        if ($user['showallgroups']) {
            $affil = getAffiliationName(1);
            $affilusergroups[$defaultusergroupid]['name'] = "Default for Editable by@{$affil}";
        } else {
            $affilusergroups[$defaultusergroupid]['name'] = 'Default for Editable by';
        }
        uasort($affilusergroups, "sortKeepIndex");
    }
    $editusergroup = 0;
    if ($data['type'] != 'user') {
        print "<FORM action=\"" . BASEURL . SCRIPT . "#resources\" method=post>\n";
    } else {
        print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    }
    print "<DIV align=center>\n";
    if ($state) {
        if ($data["type"] == "user") {
            print "<H2>Add User Group</H2>\n";
        } else {
            print "<H2>Add Resource Group</H2>\n";
        }
    } else {
        if ($data["type"] == "user") {
            print "<H2>Edit User Group</H2>\n";
            print "{$usergroups[$data['groupid']]['name']}<br><br>\n";
            if ($data['courseroll'] == 1) {
                print "Type: Course Roll<br><br>\n";
            } elseif ($data['custom'] == 0) {
                print "Type: Federated<br><br>\n";
            }
            $editusergroup = 1;
        } else {
            print "<H2>Edit Resource Group</H2>\n";
        }
    }
    if ($state && $data["type"] == "user" || $data["isowner"] || $data["type"] == "resource") {
        print "<TABLE>\n";
        if ($data["type"] == "resource") {
            print "  <TR>\n";
            print "    <TH align=right>Type:</TH>\n";
            print "    <TD>\n";
            if ($state && $submitErr) {
                $resourcetypeid = $data['resourcetypeid'];
            } else {
                $resourcetypeid = array_search($grouptype, $resourcetypes["resources"]);
            }
            if ($state) {
                printSelectInput("resourcetypeid", $resourcetypes["resources"], $resourcetypeid);
            } else {
                print "      {$grouptype}\n";
            }
            print "    </TD>\n";
            print "    <TD></TD>\n";
            print "  </TR>\n";
        }
        $editname = 1;
        if ($data['type'] == 'user' && $state == 0 && $usergroups[$groupid]['groupaffiliationid'] == 1) {
            $tmp = explode('@', $usergroups[$groupid]['name']);
            if ($tmp[0] == 'Specify End Time' || $tmp[0] == 'Allow No User Check' || $tmp[0] == 'Default for Editable by') {
                $editname = 0;
            }
        }
        if ($data['type'] == 'resource' || $editname && $data['courseroll'] == 0 && $data['custom'] == 1) {
            print "  <TR>\n";
            print "    <TH align=right>Name:</TH>\n";
            print "    <TD><INPUT type=text name=name value=\"{$data['name']}\" ";
            print "maxlength=30>";
            if ($data['type'] == 'user' && $selectAffil) {
                print "@";
                printSelectInput('affiliationid', $affils, $data['affiliationid']);
            }
            print "</TD>\n";
            print "    <TD>";
            printSubmitErr(GRPNAMEERR);
            print "</TD>\n";
            print "  </TR>\n";
        }
        if ($editname == 0) {
            print "<TR><TD colspan=2 align=\"center\">\n";
            print "(This is a system group whose name cannot be modified.)\n";
            print "</TD></TR>\n";
        }
        if ($data["type"] == "user") {
            if ($data['courseroll'] == 0 && $data['custom'] == 1) {
                print "  <TR>\n";
                print "    <TH align=right>Owner:</TH>\n";
                print "    <TD><INPUT type=text name=owner value=\"" . $data["owner"];
                print "\"></TD>\n";
                print "    <TD>";
                printSubmitErr(GRPOWNER);
                print "</TD>\n";
                print "  </TR>\n";
                print "  <TR>\n";
                print "    <TH align=right>Editable by:</TH>\n";
                print "    <TD valign=\"top\">\n";
                $groupwasnone = 0;
                if ($submitErr & EDITGROUPERR) {
                    if ($state == 0) {
                        $data['editgroupid'] = $usergroups[$data['groupid']]['editgroupid'];
                    } elseif (count($affilusergroups)) {
                        $tmp = array_keys($affilusergroups);
                        $data['editgroupid'] = $tmp[0];
                    }
                }
                $notice = '';
                if ($state == 0 && empty($usergroups[$data['groupid']]["editgroup"])) {
                    $affilusergroups = array_reverse($affilusergroups, TRUE);
                    $affilusergroups[0] = array('name' => 'None');
                    $affilusergroups = array_reverse($affilusergroups, TRUE);
                    $groupwasnone = 1;
                    $notice = "<strong>Note:</strong> You are the only person that can<br>" . "edit membership of this group. Select a<br>user group here " . "to allow members of that<br>group to edit membership of this one.";
                } elseif (!array_key_exists($data['editgroupid'], $affilusergroups) && $data['editgroupid'] != 0) {
                    $affilusergroups[$data['editgroupid']] = array('name' => getUserGroupName($data['editgroupid'], 1));
                    uasort($affilusergroups, "sortKeepIndex");
                }
                if ($state == 1 && $data['editgroupid'] == 0) {
                    print "None\n";
                } else {
                    printSelectInput("editgroupid", $affilusergroups, $data["editgroupid"]);
                }
                print "    </TD>\n";
                print "    <TD>";
                if ($submitErr & EDITGROUPERR) {
                    printSubmitErr(EDITGROUPERR);
                } else {
                    print $notice;
                }
                print "</TD>";
                print "  </TR>\n";
            } else {
                $groupwasnone = 1;
            }
            print "  <TR>\n";
            print "    <TH align=right>Initial Max Time:</TH>\n";
            print "    <TD>";
            $lengths = getReservationLengths(65535);
            if (!array_key_exists($data['initialmax'], $lengths)) {
                $data['initialmax'] = getReservationLengthCeiling($data['initialmax']);
            }
            printSelectInput("initialmax", $lengths, $data['initialmax']);
            print "    </TD>";
            print "    <TD>";
            printSubmitErr(INITIALMAXERR);
            print "</TD>\n";
            print "  </TR>\n";
            print "  <TR>\n";
            print "    <TH align=right>Total Max Time:</TH>\n";
            print "    <TD>";
            if (!array_key_exists($data['totalmax'], $lengths)) {
                $data['totalmax'] = getReservationLengthCeiling($data['totalmax']);
            }
            printSelectInput("totalmax", $lengths, $data['totalmax']);
            print "    </TD>\n";
            print "    <TD>";
            printSubmitErr(TOTALMAXERR);
            print "</TD>\n";
            print "  </TR>\n";
            print "  <TR>\n";
            print "    <TH align=right>Max Extend Time:</TH>\n";
            print "    <TD>";
            if (!array_key_exists($data['maxextend'], $lengths)) {
                $data['maxextend'] = getReservationLengthCeiling($data['maxextend']);
            }
            printSelectInput("maxextend", $lengths, $data['maxextend']);
            print "    </TD>\n";
            print "    <TD>";
            printSubmitErr(MAXEXTENDERR);
            print "</TD>\n";
            print "  </TR>\n";
            if (checkUserHasPerm('Set Overlapping Reservation Count')) {
                print "  <TR>\n";
                print "    <TH align=right>Max Overlapping Reservations:</TH>\n";
                print "    <TD><INPUT type=text name=overlap value=\"";
                print $data["overlap"] . "\" maxlength=4></TD>\n";
                print "    <TD>";
                printSubmitErr(MAXOVERLAPERR);
                print "</TD>\n";
                print "  </TR>\n";
            }
        } else {
            print "  <TR>\n";
            print "    <TH align=right>Owning User Group:</TH>\n";
            print "    <TD>\n";
            if ($submitErr & EDITGROUPERR) {
                $ownerid = $resourcegroups[$groupid]['ownerid'];
            }
            if ($state == 0 && $ownerid != '' && !array_key_exists($ownerid, $dispUserGrpIDs)) {
                $dispUserGrpIDs[$ownerid] = $usergroups[$ownerid]['name'];
                uasort($dispUserGrpIDs, "sortKeepIndex");
            }
            if (!empty($dispUserGrpIDs)) {
                printSelectInput("ownergroup", $dispUserGrpIDs, $ownerid);
            } else {
                printSelectInput("ownergroup", $dispUserGrpIDsAllAffils, $ownerid);
            }
            print "    </TD>\n";
            print "    <TD>\n";
            if ($submitErr & EDITGROUPERR) {
                printSubmitErr(EDITGROUPERR);
            }
            print "    </TD>\n";
            print "  </TR>\n";
        }
        print "</TABLE>\n";
        print "<TABLE>\n";
        print "  <TR valign=top>\n";
        print "    <TD>\n";
        if ($state) {
            $cdata = array('type' => $data['type']);
            if ($data['type'] == 'user') {
                $cdata['isowner'] = $data['isowner'];
                if ($data['editgroupid'] == 0) {
                    $cdata['editgroupid'] = 0;
                    $cdata['groupwasnone'] = 1;
                }
                $cdata['editgroupids'] = implode(',', array_keys($affilusergroups));
            } else {
                if (!empty($dispUserGrpIDs)) {
                    $cdata['ownergroupids'] = implode(',', array_keys($dispUserGrpIDs));
                } else {
                    $cdata['ownergroupids'] = implode(',', array_keys($dispUserGrpIDsAllAffils));
                }
            }
            $cont = addContinuationsEntry('submitAddGroup', $cdata);
            print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
            print "      <INPUT type=submit value=\"Add Group\">\n";
        } else {
            $cdata = array('type' => $data['type'], 'groupid' => $data['groupid'], 'isowner' => $data['isowner'], 'editname' => $editname);
            if ($data['type'] == 'resource') {
                $cdata['resourcetypeid'] = $resourcetypeid;
                if (!empty($dispUserGrpIDs)) {
                    $cdata['ownergroupids'] = implode(',', array_keys($dispUserGrpIDs));
                } else {
                    $cdata['ownergroupids'] = implode(',', array_keys($dispUserGrpIDsAllAffils));
                }
            } else {
                if ($data['courseroll'] == 1 || $data['custom'] == 0 || $editname == 0) {
                    $cdata['name'] = $data['name'];
                    $cdata['affiliationid'] = $data['affiliationid'];
                }
                $cdata['selectAffil'] = $selectAffil;
                $cdata['groupwasnone'] = $groupwasnone;
                $cdata['custom'] = $data['custom'];
                $cdata['courseroll'] = $data['courseroll'];
                $cdata['editgroupids'] = implode(',', array_keys($affilusergroups));
            }
            $cont = addContinuationsEntry('confirmEditGroup', $cdata);
            print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
            print "      <INPUT type=submit value=\"Confirm Changes\">\n";
        }
        print "      </FORM>\n";
        print "    </TD>\n";
        print "    <TD>\n";
        print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        print "      <INPUT type=hidden name=mode value=viewGroups>\n";
        print "      <INPUT type=submit value=Cancel>\n";
        print "      </FORM>\n";
        print "    </TD>\n";
        print "  </TR>\n";
        print "</TABLE>\n";
    }
    if ($data["type"] != "user") {
        print "</DIV>\n";
        return;
    }
    if ($editusergroup) {
        $newuser = processInputVar("newuser", ARG_STRING);
        print "<H3>Group Membership</H3>\n";
        if ($mode == "addGroupUser" && !($submitErr & IDNAMEERR)) {
            print "<font color=\"#008000\">{$newuser} successfully added to group";
            print "</font><br><br>\n";
        }
        if ($mode == "deleteGroupUser") {
            print "<font color=\"#008000\">{$newuser} successfully deleted from ";
            print "group</font><br><br>\n";
        }
        $groupmembers = getUserGroupMembers($data["groupid"]);
        $edit = 1;
        if ($data['courseroll'] == 1 || $data['custom'] == 0) {
            $edit = 0;
        }
        if (empty($groupmembers) && !$edit) {
            print "(empty group)<br>\n";
        }
        print "<TABLE border=1>\n";
        if ($edit) {
            print "  <TR>\n";
            print "  <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
            print "    <TD align=right><INPUT type=submit value=Add></TD>\n";
            print "    <TD><INPUT type=text name=newuser maxlength=80 size=40 ";
            if ($submitErr & IDNAMEERR) {
                print "value=\"{$newuser}\"></TD>\n";
            } else {
                print "></TD>\n";
            }
            if ($submitErr) {
                print "    <TD>\n";
                printSubmitErr(IDNAMEERR);
                print "    </TD>\n";
            }
            $cont = addContinuationsEntry('addGroupUser', $data);
            print "  <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
            print "  </FORM>\n";
            print "  </TR>\n";
        }
        foreach ($groupmembers as $id => $login) {
            print "  <TR>\n";
            if ($edit) {
                print "    <TD>\n";
                print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
                print "      <INPUT type=submit value=Delete>\n";
                $data['userid'] = $id;
                $data['newuser'] = $login;
                $cont = addContinuationsEntry('deleteGroupUser', $data);
                print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
                print "      </FORM>\n";
                print "    </TD>\n";
            }
            print "    <TD>{$login}</TD>\n";
            print "  </TR>\n";
        }
        print "</TABLE>\n";
    }
    print "</DIV>\n";
}
Example #3
0
function selectStatistics()
{
    global $submitErr, $viewmode, $user;
    list($month1, $day1, $year1) = explode(',', date('F,j,Y', time() - SECINDAY * 6));
    list($month2, $day2, $year2) = explode(',', date('F,j,Y', time()));
    print "<H2>Statistic Information</H2>\n";
    if ($submitErr) {
        printSubmitErr(STARTERR);
        printSubmitErr(ENDERR);
        printSubmitErr(ORDERERR);
        $monthkey1 = processInputVar("month1", ARG_NUMERIC);
        $daykey1 = processInputVar("day1", ARG_NUMERIC);
        $yearkey1 = processInputVar("year1", ARG_NUMERIC);
        $monthkey2 = processInputVar("month2", ARG_NUMERIC);
        $daykey2 = processInputVar("day2", ARG_NUMERIC);
        $yearkey2 = processInputVar("year2", ARG_NUMERIC);
        $affilid = processInputVar("affilid", ARG_NUMERIC);
    } else {
        $affilid = $user['affiliationid'];
    }
    print "Select a starting date:<br>\n";
    $months = array("", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
    unset($months[0]);
    $days = array();
    for ($i = 0; $i < 32; $i++) {
        array_push($days, $i);
    }
    unset($days[0]);
    $years = array();
    for ($i = 2004; $i <= $year2; $i++) {
        $years[$i] = $i;
    }
    if (!$submitErr) {
        $monthkey1 = array_search($month1, $months);
        $daykey1 = array_search($day1, $days);
        $yearkey1 = array_search($year1, $years);
    }
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    printSelectInput("month1", $months, $monthkey1);
    printSelectInput("day1", $days, $daykey1);
    printSelectInput("year1", $years, $yearkey1);
    print "<br>\n";
    print "Select a ending date:<br>\n";
    if (!$submitErr) {
        $monthkey2 = array_search($month2, $months);
        $daykey2 = array_search($day2, $days);
        $yearkey2 = array_search($year2, $years);
    }
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    printSelectInput("month2", $months, $monthkey2);
    printSelectInput("day2", $days, $daykey2);
    printSelectInput("year2", $years, $yearkey2);
    print "<br>\n";
    if ($viewmode >= ADMIN_FULL) {
        print "Select an affiliation:<br>\n";
        $affils = getAffiliations();
        if (!array_key_exists($affilid, $affils)) {
            $affilid = $user['affiliationid'];
        }
        $affils = array_reverse($affils, TRUE);
        $affils[0] = "All";
        $affils = array_reverse($affils, TRUE);
        printSelectInput("affilid", $affils, $affilid);
        print "<br>\n";
    }
    $cont = addContinuationsEntry('viewstats');
    print "<INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "<INPUT type=submit value=Submit>\n";
    print "</FORM>\n";
}
Example #4
0
function printReserveItems($modifystart = 1, $day = NULL, $hour = NULL, $minute = NULL, $meridian = NULL, $length = 60, $oneline = 0, $nolength = 0)
{
    global $user;
    $enddate = processInputVar("enddate", ARG_STRING);
    $groupid = getUserGroupID('Specify End Time', 1);
    $members = getUserGroupMembers($groupid);
    if (array_key_exists($user['id'], $members)) {
        $openend = 1;
    } else {
        $openend = 0;
    }
    $days = array();
    $inputday = "";
    for ($cur = time(), $end = $cur + DAYSAHEAD * SECINDAY; $cur < $end; $cur += SECINDAY) {
        $tmp = getdate($cur);
        $index = $tmp["mon"] . "/" . $tmp["mday"] . "/" . $tmp["year"];
        $days[$index] = $tmp["weekday"];
        if ($tmp["weekday"] == $day) {
            $inputday = $index;
        }
    }
    if ($modifystart) {
        printSelectInput("day", $days, $inputday);
        print "&nbsp;At&nbsp;\n";
        $tmpArr = array();
        for ($i = 1; $i < 13; $i++) {
            $tmpArr[$i] = $i;
        }
        printSelectInput("hour", $tmpArr, $hour);
        $minutes = array("zero" => "00", "15" => "15", "30" => "30", "45" => "45");
        printSelectInput("minute", $minutes, $minute);
        printSelectInput("meridian", array("am" => "a.m.", "pm" => "p.m."), $meridian);
        print "<small>(Eastern Time Zone)</small>";
        //if(! $oneline)
        print "<br><br>";
        /*else
        		print "&nbsp;&nbsp;";*/
        if (!$nolength) {
            if ($openend) {
                print "&nbsp;&nbsp;&nbsp;<INPUT type=radio name=ending ";
                print "onclick='updateWaitTime(0);' value=length checked>";
            }
            print "Duration:&nbsp;\n";
        }
    } else {
        print "<INPUT type=hidden name=day value={$inputday}>\n";
        print "<INPUT type=hidden name=hour value={$hour}>\n";
        print "<INPUT type=hidden name=minute value={$minute}>\n";
        print "<INPUT type=hidden name=meridian value={$meridian}>\n";
    }
    // check for a "now" reservation that got 15 min added to it
    if ($length % 30) {
        $length -= 15;
    }
    // if ! $modifystart, we return at this point because we don't
    # know enough about the current reservation to determine how
    # long they can extend it for, the calling function would have
    # to determine that and print a length dropdown box
    if (!$modifystart) {
        return;
    }
    # create an array of usage times based on the user's max times
    $maxtimes = getUserMaxTimes("initialmaxtime");
    $lengths = array();
    if ($maxtimes["initial"] >= 30) {
        $lengths["30"] = "30 minutes";
    }
    if ($maxtimes["initial"] >= 60) {
        $lengths["60"] = "1 hour";
    }
    for ($i = 120; $i <= $maxtimes["initial"]; $i += 120) {
        $lengths[$i] = $i / 60 . " hours";
    }
    if ($nolength) {
        print "Reservation will be for 8 hours<br>\n";
    } else {
        printSelectInput("length", $lengths, $length, 0, 0, 'reqlength', "onChange='updateWaitTime(0);'");
        print "<br>\n";
        if ($openend) {
            print "&nbsp;&nbsp;&nbsp;<INPUT type=radio name=ending id=openend ";
            print "onclick='updateWaitTime(0);' value=date>Until\n";
            print "<INPUT type=text name=enddate size=20 value=\"{$enddate}\">(YYYY-MM-DD HH:MM:SS)\n";
            printSubmitErr(ENDDATEERR);
            print "<br>\n";
        }
    }
}
Example #5
0
function pickTimeTable()
{
    $data = getUserComputerMetaData();
    print "<H2 align=center>Time Table</H2>\n";
    print "Select the criteria for the computers you want to have in the timetable:\n";
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    print "<table id=layouttable summary=\"\">\n";
    print "  <TR>\n";
    print "    <TH>Platforms:</TH>\n";
    print "    <TH>Schedules:</TH>\n";
    print "  </TR>\n";
    print "  <TR valign=top>\n";
    print "    <TD>\n";
    printSelectInput("platforms[]", $data["platforms"], -1, 0, 1);
    print "    </TD>\n";
    print "    <TD>\n";
    printSelectInput("schedules[]", $data["schedules"], -1, 0, 1);
    print "    </TD>\n";
    print "  </TR>\n";
    print "</table>\n";
    $cont = addContinuationsEntry('showTimeTable');
    print "<INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "<INPUT type=submit value=Submit>\n";
    print "</FORM>\n";
}
Example #6
0
function editOrAddMgmtnode($state)
{
    global $submitErr;
    $mgmtnodes = getManagementNodes();
    $premodules = getPredictiveModules();
    if ($submitErr || $state == 1) {
        $data = processMgmtnodeInput(0);
    } else {
        $data["mgmtnodeid"] = getContinuationVar("mgmtnodeid");
        $id = $data["mgmtnodeid"];
        $data["hostname"] = $mgmtnodes[$id]["hostname"];
        $data["IPaddress"] = $mgmtnodes[$id]["IPaddress"];
        $data["owner"] = $mgmtnodes[$id]["owner"];
        $data["stateid"] = $mgmtnodes[$id]["stateid"];
        $data["premoduleid"] = $mgmtnodes[$id]["predictivemoduleid"];
        $data["checkininterval"] = $mgmtnodes[$id]["checkininterval"];
        $data["installpath"] = $mgmtnodes[$id]["installpath"];
        if ($mgmtnodes[$id]['imagelibenable']) {
            $data['imagelibenable'] = "checked";
        } else {
            $data['imagelibenable'] = "";
        }
        $data['imagelibgroupid'] = $mgmtnodes[$id]['imagelibgroupid'];
        $data['imagelibgroup'] = $mgmtnodes[$id]['imagelibgroup'];
        # TODO this can be removed
        $data['imagelibuser'] = $mgmtnodes[$id]['imagelibuser'];
        $data['imagelibkey'] = $mgmtnodes[$id]['imagelibkey'];
        $data['keys'] = $mgmtnodes[$id]['keys'];
        $data['sshport'] = $mgmtnodes[$id]['sshport'];
    }
    $disabled = '';
    if (!$data['imagelibenable']) {
        $disabled = 'disabled';
    }
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    print "<DIV align=center>\n";
    if ($state) {
        print "<H2>Add Management Node</H2>\n";
    } else {
        print "<H2>Edit Management Node</H2>\n";
    }
    print "<TABLE>\n";
    print "  <TR>\n";
    print "    <TH align=right>Hostname:</TH>\n";
    print "    <TD><INPUT type=text name=hostname value=\"{$data["hostname"]}\" ";
    print "maxlength=50></TD>\n";
    print "    <TD>";
    printSubmitErr(MNHOSTNAMEERR);
    print "</TD>\n";
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TH align=right>IP address:</TH>\n";
    print "    <TD><INPUT type=text name=IPaddress value=\"";
    print $data["IPaddress"] . "\" maxlength=15></TD>\n";
    print "    <TD>";
    printSubmitErr(IPADDRESSERR);
    print "</TD>\n";
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TH align=right>Owner:</TH>\n";
    print "    <TD><INPUT type=text name=owner value=\"" . $data["owner"];
    print "\"></TD>\n";
    print "    <TD>";
    printSubmitErr(MNOWNERERR);
    print "</TD>\n";
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TH align=right>State:</TH>\n";
    print "    <TD>\n";
    $mgmtnodestates = array(2 => "available", 1 => "deleted", 10 => "maintenance", 5 => "failed");
    printSelectInput("stateid", $mgmtnodestates, $data["stateid"]);
    print "    </TD>\n";
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TH align=right>Predictive Loading Module:</TH>\n";
    print "    <TD>\n";
    printSelectInput("premoduleid", $premodules, $data["premoduleid"]);
    print "    </TD>\n";
    print "  </TR>\n";
    # checkininterval
    print "  <TR>\n";
    print "    <TH id=th1 align=right\n";
    print "        onmouseover=\"showHelp('interval between database checks for new tasks', 'th1');\"\n";
    print "        onmouseout=\"clearHelpbox();\">\n";
    print "      Check-in Interval (sec):\n";
    print "    </TH>\n";
    print "    <TD>\n";
    print "      <input dojoType=\"dijit.form.NumberSpinner\"\n";
    print "                value=\"{$data['checkininterval']}\"\n";
    print "                constraints=\"{min:5,max:30,places:0}\"\n";
    print "                maxlength=\"2\"\n";
    print "                id=\"checkininterval\"\n";
    print "                name=\"checkininterval\">\n";
    print "    </TD>\n";
    print "    <TD></TD>";
    print "  </TR>\n";
    # installpath
    print "  <TR>\n";
    print "    <TH id=th2 align=right\n";
    print "        onmouseover=\"showHelp('path to parent directory of image repository directories', 'th2');\"\n";
    print "        onmouseout=\"clearHelpbox();\">\n";
    print "      Install Path:</TH>\n";
    print "    <TD><INPUT type=text name=installpath value=\"";
    print $data["installpath"] . "\" maxlength=100></TD>\n";
    print "    <TD>";
    printSubmitErr(MNINSTPATHERR);
    print "</TD>\n";
    print "  </TR>\n";
    # keys
    print "  <TR>\n";
    print "    <TH id=th5 align=right\n";
    print "        onmouseover=\"showHelp('comma delimited list of full paths to ssh identity keys to try when connecting to end nodes (optional)', 'th5');\"\n";
    print "        onmouseout=\"clearHelpbox();\">\n";
    print "      End Node SSH Identity Key Files:</TH>\n";
    print "    <TD><INPUT type=text name=keys value=\"";
    print $data["keys"] . "\" maxlength=1024></TD>\n";
    print "    <TD>";
    printSubmitErr(MNSSHIDKEYSERR);
    print "</TD>\n";
    print "  </TR>\n";
    # sshport
    print "  <TR>\n";
    print "    <TH id=th6 align=right\n";
    print "        onmouseover=\"showHelp('SSH port this node is listening on for image file transfers', 'th6');\"\n";
    print "        onmouseout=\"clearHelpbox();\">\n";
    print "      SSH Port for this node:\n";
    print "    </TH>\n";
    print "    <TD>\n";
    print "      <input dojoType=\"dijit.form.NumberSpinner\"\n";
    print "                value=\"{$data['sshport']}\"\n";
    print "                constraints=\"{min:1,max:65535,places:0}\"\n";
    print "                maxlength=\"5\"\n";
    print "                id=\"sshport\"\n";
    print "                name=\"sshport\">\n";
    print "    </TD>\n";
    print "    <TD>";
    printSubmitErr(MNSSHPORTERR);
    print "</TD>\n";
    print "  </TR>\n";
    # imagelibenable
    print "  <TR>\n";
    print "    <TH id=th7 align=right\n";
    print "        onmouseover=\"showHelp('path to parent directory of image repository directories', 'th7');\"\n";
    print "        onmouseout=\"clearHelpbox();\">\n";
    print "      Enable Image Library:</TH>\n";
    print "    <TD><input type=checkbox name=imagelibenable value=1 ";
    print $data["imagelibenable"] . " onchange=\"toggleImageLibrary();\" \n";
    if ($data['imagelibenable']) {
        print "id=imagelibenable checked></TD>\n";
    } else {
        print "id=imagelibenable></TD>\n";
    }
    print "    <TD></TD>\n";
    print "  </TR>\n";
    # imagelibgroupid
    print "  <TR>\n";
    print "    <TH id=th8 align=right\n";
    print "        onmouseover=\"showHelp('this management node will try to get image files from other nodes in the selected group', 'th8');\"\n";
    print "        onmouseout=\"clearHelpbox();\">\n";
    print "      Image Library Management Node Group:</TH>\n";
    print "    <TD>";
    $mgmtnodegroups = getUserResources(array('mgmtNodeAdmin'), array("manageGroup"), 1);
    printSelectInput("imagelibgroupid", $mgmtnodegroups['managementnode'], -1, 0, 0, 'imagelibgroupid', $disabled);
    print "    </TD>\n";
    print "    <TD>";
    printSubmitErr(MNIMGLIBGRPIDERR);
    print "</TD>\n";
    print "  </TR>\n";
    # imagelibuser
    print "  <TR>\n";
    print "    <TH id=th3 align=right\n";
    print "        onmouseover=\"showHelp('userid to use when scp\\'ing image files from another management node', 'th3');\"\n";
    print "        onmouseout=\"clearHelpbox();\">\n";
    print "      Image Library User:</TH>\n";
    print "    <TD><INPUT type=text name=imagelibuser value=\"";
    print $data["imagelibuser"] . "\" {$disabled} id=imagelibuser></TD>\n";
    print "    <TD>";
    printSubmitErr(MNIMGLIBUSERERR);
    print "</TD>\n";
    print "  </TR>\n";
    # imagelibkey
    print "  <TR>\n";
    print "    <TH id=th4 align=right\n";
    print "        onmouseover=\"showHelp('path to ssh identity key file to use when scp\\'ing image files from another management node', 'th4');\"\n";
    print "        onmouseout=\"clearHelpbox();\">\n";
    print "      Image Library SSH Identity Key File:</TH>\n";
    print "    <TD><INPUT type=text name=imagelibkey value=\"";
    print $data["imagelibkey"] . "\" maxlength=100 {$disabled} id=imagelibkey></TD>\n";
    print "    <TD>";
    printSubmitErr(MNIMGLIBKEYERR);
    print "</TD>\n";
    print "  </TR>\n";
    print "</TABLE>\n";
    print "<TABLE>\n";
    print "  <TR valign=top>\n";
    print "    <TD>\n";
    if ($state) {
        $cdata = array('mgmtgroups' => $mgmtnodegroups['managementnode']);
        $cont = addContinuationsEntry('confirmAddMgmtnode', $cdata, SECINDAY, 0, 1, 1);
        print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
        print "      <INPUT type=submit value=\"Confirm Management Node\">\n";
    } else {
        $cdata = array('mgmtnodeid' => $data['mgmtnodeid'], 'mgmtgroups' => $mgmtnodegroups['managementnode']);
        $cont = addContinuationsEntry('confirmEditMgmtnode', $cdata, SECINDAY, 0, 1, 1);
        print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
        print "      <INPUT type=submit value=\"Confirm Changes\">\n";
    }
    print "      </FORM>\n";
    print "    </TD>\n";
    print "    <TD>\n";
    print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    $cont = addContinuationsEntry('viewMgmtnodes');
    print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "      <INPUT type=submit value=Cancel>\n";
    print "      </FORM>\n";
    print "    </TD>\n";
    print "  </TR>\n";
    print "</TABLE>\n";
    print "<div id=helpbox onmouseover=\"blockClear();\" onmouseout=\"clearHelpbox2(0);\"></div>\n";
}
Example #7
0
function userLookup()
{
    global $user;
    $userid = processInputVar("userid", ARG_STRING);
    if (get_magic_quotes_gpc()) {
        $userid = stripslashes($userid);
    }
    $affilid = processInputVar('affiliationid', ARG_NUMERIC, $user['affiliationid']);
    $force = processInputVar('force', ARG_NUMERIC, 0);
    print "<div align=center>\n";
    print "<H2>User Lookup</H2>\n";
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    print "<TABLE>\n";
    print "  <TR>\n";
    print "    <TH>Name (last, first) or User ID:</TH>\n";
    print "    <TD><INPUT type=text name=userid value=\"{$userid}\" size=25></TD>\n";
    if (checkUserHasPerm('User Lookup (global)')) {
        $affils = getAffiliations();
        print "    <TD>\n";
        print "@";
        printSelectInput("affiliationid", $affils, $affilid);
        print "    </TD>\n";
    }
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TD colspan=2>\n";
    print "      <input type=checkbox id=force name=force value=1>\n";
    print "      <label for=force>Attempt forcing an update from LDAP (User ID only)</label>\n";
    print "    </TD>\n";
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TD colspan=3 align=center><INPUT type=submit value=Submit>\n";
    print "  </TR>\n";
    print "</TABLE>\n";
    $cont = addContinuationsEntry('submitUserLookup');
    print "<INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "</FORM><br>\n";
    if (!empty($userid)) {
        $esc_userid = mysql_real_escape_string($userid);
        if (preg_match('/,/', $userid)) {
            $mode = 'name';
            $force = 0;
        } else {
            $mode = 'userid';
        }
        if (!checkUserHasPerm('User Lookup (global)') && $user['affiliationid'] != $affilid) {
            print "<font color=red>{$userid} not found</font><br>\n";
            return;
        }
        if ($mode == 'userid') {
            $query = "SELECT id " . "FROM user " . "WHERE unityid = '{$esc_userid}' AND " . "affiliationid = {$affilid}";
            $affilname = getAffiliationName($affilid);
            $userid = "{$userid}@{$affilname}";
            $esc_userid = "{$esc_userid}@{$affilname}";
        } else {
            $tmp = explode(',', $userid);
            $last = mysql_real_escape_string(trim($tmp[0]));
            $first = mysql_real_escape_string(trim($tmp[1]));
            $query = "SELECT CONCAT(u.unityid, '@', a.name) AS unityid " . "FROM user u, " . "affiliation a " . "WHERE u.firstname = '{$first}' AND " . "u.lastname = '{$last}' AND " . "u.affiliationid = {$affilid} AND " . "a.id = {$affilid}";
        }
        $qh = doQuery($query, 101);
        if (!mysql_num_rows($qh)) {
            if ($mode == 'name') {
                print "<font color=red>User not found</font><br>\n";
                return;
            } else {
                print "<font color=red>{$userid} not currently found in VCL user database, will try to add...</font><br>\n";
            }
        } elseif ($force) {
            $_SESSION['userresources'] = array();
            $row = mysql_fetch_assoc($qh);
            $newtime = unixToDatetime(time() - SECINDAY - 5);
            $query = "UPDATE user SET lastupdated = '{$newtime}' WHERE id = {$row['id']}";
            doQuery($query, 101);
        } elseif ($mode == 'name') {
            $row = mysql_fetch_assoc($qh);
            $userid = $row['unityid'];
            $esc_userid = $row['unityid'];
        }
        $userdata = getUserInfo($esc_userid);
        if (is_null($userdata)) {
            $userdata = getUserInfo($esc_userid, 1);
            if (is_null($userdata)) {
                print "<font color=red>{$userid} not found</font><br>\n";
                return;
            }
        }
        $userdata["groups"] = getUsersGroups($userdata["id"], 1, 1);
        print "<TABLE>\n";
        if (!empty($userdata['unityid'])) {
            print "  <TR>\n";
            print "    <TH align=right>User ID:</TH>\n";
            print "    <TD>{$userdata["unityid"]}</TD>\n";
            print "  </TR>\n";
        }
        if (!empty($userdata['firstname'])) {
            print "  <TR>\n";
            print "    <TH align=right>First Name:</TH>\n";
            print "    <TD>{$userdata["firstname"]}</TD>\n";
            print "  </TR>\n";
        }
        if (!empty($userdata['lastname'])) {
            print "  <TR>\n";
            print "    <TH align=right>Last Name:</TH>\n";
            print "    <TD>{$userdata["lastname"]}</TD>\n";
            print "  </TR>\n";
        }
        if (!empty($userdata['preferredname'])) {
            print "  <TR>\n";
            print "    <TH align=right>Preferred Name:</TH>\n";
            print "    <TD>{$userdata["preferredname"]}</TD>\n";
            print "  </TR>\n";
        }
        if (!empty($userdata['affiliation'])) {
            print "  <TR>\n";
            print "    <TH align=right>Affiliation:</TH>\n";
            print "    <TD>{$userdata["affiliation"]}</TD>\n";
            print "  </TR>\n";
        }
        if (!empty($userdata['email'])) {
            print "  <TR>\n";
            print "    <TH align=right>Email:</TH>\n";
            print "    <TD>{$userdata["email"]}</TD>\n";
            print "  </TR>\n";
        }
        print "  <TR>\n";
        print "    <TH align=right style=\"vertical-align: top\">Groups:</TH>\n";
        print "    <TD>\n";
        uasort($userdata["groups"], "sortKeepIndex");
        foreach ($userdata["groups"] as $group) {
            print "      {$group}<br>\n";
        }
        print "    </TD>\n";
        print "  </TR>\n";
        print "  <TR>\n";
        print "    <TH align=right style=\"vertical-align: top\">User Group Permissions:</TH>\n";
        print "    <TD>\n";
        if (count($userdata['groupperms'])) {
            foreach ($userdata['groupperms'] as $perm) {
                print "      {$perm}<br>\n";
            }
        } else {
            print "      No additional user group permissions\n";
        }
        print "    </TD>\n";
        print "  </TR>\n";
        print "  <TR>\n";
        print "    <TH align=right style=\"vertical-align: top\">Privileges (found somewhere in the tree):</TH>\n";
        print "    <TD>\n";
        uasort($userdata["privileges"], "sortKeepIndex");
        foreach ($userdata["privileges"] as $priv) {
            if ($priv == "block" || $priv == "cascade") {
                continue;
            }
            print "      {$priv}<br>\n";
        }
        print "    </TD>\n";
        print "  </TR>\n";
        print "</TABLE>\n";
        # get user's resources
        $userResources = getUserResources(array("imageCheckOut"), array("available"), 0, 0, $userdata['id']);
        # find nodes where user has privileges
        $query = "SELECT p.name AS privnode, " . "upt.name AS userprivtype, " . "up.privnodeid " . "FROM userpriv up, " . "privnode p, " . "userprivtype upt " . "WHERE up.privnodeid = p.id AND " . "up.userprivtypeid = upt.id AND " . "up.userid = {$userdata['id']} " . "ORDER BY p.name, " . "upt.name";
        $qh = doQuery($query, 101);
        if (mysql_num_rows($qh)) {
            print "Nodes where user is granted privileges:<br>\n";
            print "<TABLE>\n";
            $privnodeid = 0;
            while ($row = mysql_fetch_assoc($qh)) {
                if ($privnodeid != $row['privnodeid']) {
                    if ($privnodeid) {
                        print "    </TD>\n";
                        print "  </TR>\n";
                    }
                    print "  <TR>\n";
                    $privnodeid = $row['privnodeid'];
                    $path = getNodePath($privnodeid);
                    print "    <TH align=right>{$path}</TH>\n";
                    print "    <TD>\n";
                }
                print "      {$row['userprivtype']}<br>\n";
            }
            print "    </TD>\n";
            print "  </TR>\n";
            print "</TABLE>\n";
        }
        # find nodes where user's groups have privileges
        if (!empty($userdata['groups'])) {
            $query = "SELECT DISTINCT p.name AS privnode, " . "upt.name AS userprivtype, " . "up.privnodeid " . "FROM userpriv up, " . "privnode p, " . "userprivtype upt " . "WHERE up.privnodeid = p.id AND " . "up.userprivtypeid = upt.id AND " . "upt.name != 'cascade' AND " . "upt.name != 'block' AND " . "up.usergroupid IN (" . implode(',', array_keys($userdata['groups'])) . ") " . "ORDER BY p.name, " . "upt.name";
            $qh = doQuery($query, 101);
            if (mysql_num_rows($qh)) {
                print "Nodes where user's groups are granted privileges:<br>\n";
                print "<TABLE>\n";
                $privnodeid = 0;
                while ($row = mysql_fetch_assoc($qh)) {
                    if ($privnodeid != $row['privnodeid']) {
                        if ($privnodeid) {
                            print "    </TD>\n";
                            print "  </TR>\n";
                        }
                        print "  <TR>\n";
                        $privnodeid = $row['privnodeid'];
                        $path = getNodePath($privnodeid);
                        print "    <TH align=right>{$path}</TH>\n";
                        print "    <TD>\n";
                    }
                    print "      {$row['userprivtype']}<br>\n";
                }
                print "    </TD>\n";
                print "  </TR>\n";
                print "</TABLE>\n";
            }
        }
        print "<table>\n";
        print "  <tr>\n";
        print "    <th>Images User Has Access To:<th>\n";
        print "    <td>\n";
        foreach ($userResources['image'] as $img) {
            print "      {$img}<br>\n";
        }
        print "    </td>\n";
        print "  </tr>\n";
        print "</table>\n";
        # login history
        $query = "SELECT authmech, " . "timestamp, " . "passfail, " . "remoteIP, " . "code " . "FROM loginlog " . "WHERE (user = '******'unityid']}' OR " . "user = '******'unityid']}@{$userdata['affiliation']}') AND " . "affiliationid = {$userdata['affiliationid']} " . "ORDER BY timestamp DESC " . "LIMIT 8";
        $logins = array();
        $qh = doQuery($query);
        while ($row = mysql_fetch_assoc($qh)) {
            $logins[] = $row;
        }
        if (count($logins)) {
            $logins = array_reverse($logins);
            print "<h3>Login History (last 8 attempts)</h3>\n";
            print "<table summary=\"login attempts\">\n";
            print "<colgroup>\n";
            print "<col class=\"logincol\" />\n";
            print "<col class=\"logincol\" />\n";
            print "<col class=\"logincol\" />\n";
            print "<col class=\"logincol\" />\n";
            print "<col />\n";
            print "</colgroup>\n";
            print "  <tr>\n";
            print "    <th>Authentication Method</th>\n";
            print "    <th>Timestamp</th>\n";
            print "    <th>Result</th>\n";
            print "    <th>Remote IP</th>\n";
            print "    <th>Extra Info</th>\n";
            print "  </tr>\n";
            foreach ($logins as $login) {
                print "  <tr>\n";
                print "    <td class=\"logincell\">{$login['authmech']}</td>\n";
                $ts = prettyDatetime($login['timestamp'], 1);
                print "    <td class=\"logincell\">{$ts}</td>\n";
                if ($login['passfail']) {
                    print "    <td class=\"logincell\"><font color=\"#008000\">Pass</font></td>\n";
                } else {
                    print "    <td class=\"logincell\"><font color=\"red\">Fail</font></td>\n";
                }
                print "    <td class=\"logincell\">{$login['remoteIP']}</td>\n";
                print "    <td class=\"logincell\">{$login['code']}</td>\n";
                print "  </tr>\n";
            }
            print "</table>\n";
        } else {
            print "<h3>Login History</h3>\n";
            print "There are no login attempts by this user.<br>\n";
        }
        # reservation history
        $requests = array();
        $query = "SELECT DATE_FORMAT(l.start, '%W, %b %D, %Y, %h:%i %p') AS start, " . "DATE_FORMAT(l.finalend, '%W, %b %D, %Y, %h:%i %p') AS end, " . "c.hostname, " . "i.prettyname AS prettyimage, " . "s.IPaddress, " . "l.ending " . "FROM log l, " . "image i, " . "computer c, " . "sublog s " . "WHERE l.userid = {$userdata['id']} AND " . "s.logid = l.id AND " . "i.id = s.imageid AND " . "c.id = s.computerid " . "ORDER BY l.start DESC " . "LIMIT 5";
        $qh = doQuery($query, 290);
        while ($row = mysql_fetch_assoc($qh)) {
            array_push($requests, $row);
        }
        $requests = array_reverse($requests);
        if (!empty($requests)) {
            print "<h3>User's last " . count($requests) . " reservations:</h3>\n";
            print "<table>\n";
            $first = 1;
            foreach ($requests as $req) {
                if ($first) {
                    $first = 0;
                } else {
                    print "  <tr>\n";
                    print "    <td colspan=2><hr></td>\n";
                    print "  </tr>\n";
                }
                print "  <tr>\n";
                print "    <th align=right>Image:</th>\n";
                print "    <td>{$req['prettyimage']}</td>\n";
                print "  </tr>\n";
                print "  <tr>\n";
                print "    <th align=right>Computer:</th>\n";
                print "    <td>{$req['hostname']}</td>\n";
                print "  </tr>\n";
                print "  <tr>\n";
                print "    <th align=right>Start:</th>\n";
                print "    <td>{$req['start']}</td>\n";
                print "  </tr>\n";
                print "  <tr>\n";
                print "    <th align=right>End:</th>\n";
                print "    <td>{$req['end']}</td>\n";
                print "  </tr>\n";
                if ($req['IPaddress'] != '') {
                    print "  <tr>\n";
                    print "    <th align=right>IP Address:</th>\n";
                    print "    <td>{$req['IPaddress']}</td>\n";
                    print "  </tr>\n";
                }
                print "  <tr>\n";
                print "    <th align=right>Ending:</th>\n";
                print "    <td>{$req['ending']}</td>\n";
                print "  </tr>\n";
            }
            print "</table>\n";
        } else {
            print "User made no reservations in the past week.<br>\n";
        }
        # current reservations
        $requests = array();
        $query = "SELECT DATE_FORMAT(rq.start, '%W, %b %D, %Y, %h:%i %p') AS start, " . "DATE_FORMAT(rq.end, '%W, %b %D, %Y, %h:%i %p') AS end, " . "rq.id AS requestid, " . "MIN(rs.id) AS reservationid, " . "c.hostname AS computer, " . "i.prettyname AS prettyimage, " . "c.IPaddress AS compIP, " . "rs.remoteIP AS userIP, " . "ch.hostname AS vmhost, " . "mn.hostname AS managementnode, " . "srq.name AS servername, " . "aug.name AS admingroup, " . "lug.name AS logingroup, " . "s1.name AS state, " . "s2.name AS laststate " . "FROM image i, " . "managementnode mn, " . "request rq " . "LEFT JOIN reservation rs ON (rs.requestid = rq.id) " . "LEFT JOIN computer c ON (rs.computerid = c.id) " . "LEFT JOIN vmhost vh ON (c.vmhostid = vh.id) " . "LEFT JOIN computer ch ON (vh.computerid = ch.id) " . "LEFT JOIN serverrequest srq ON (srq.requestid = rq.id) " . "LEFT JOIN usergroup aug ON (aug.id = srq.admingroupid) " . "LEFT JOIN usergroup lug ON (lug.id = srq.logingroupid) " . "LEFT JOIN state s1 ON (s1.id = rq.stateid) " . "LEFT JOIN state s2 ON (s2.id = rq.laststateid) " . "WHERE rq.userid = {$userdata['id']} AND " . "i.id = rs.imageid AND " . "mn.id = rs.managementnodeid " . "GROUP BY rq.id " . "ORDER BY rq.start";
        $qh = doQuery($query, 290);
        while ($row = mysql_fetch_assoc($qh)) {
            array_push($requests, $row);
        }
        $requests = array_reverse($requests);
        if (!empty($requests)) {
            print "<h3>User's current reservations:</h3>\n";
            print "<table>\n";
            $first = 1;
            foreach ($requests as $req) {
                if ($first) {
                    $first = 0;
                } else {
                    print "  <tr>\n";
                    print "    <td colspan=2><hr></td>\n";
                    print "  </tr>\n";
                }
                print "  <tr>\n";
                print "    <th align=right>Request ID:</th>\n";
                print "    <td>{$req['requestid']}</td>\n";
                print "  </tr>\n";
                if ($req['servername'] != '') {
                    print "  <tr>\n";
                    print "    <th align=right>Reservation Name:</th>\n";
                    print "    <td>{$req['servername']}</td>\n";
                    print "  </tr>\n";
                }
                print "  <tr>\n";
                print "    <th align=right>Image:</th>\n";
                print "    <td>{$req['prettyimage']}</td>\n";
                print "  </tr>\n";
                print "  <tr>\n";
                print "    <th align=right>State:</th>\n";
                if ($req['state'] == 'pending') {
                    print "    <td>{$req['laststate']}</td>\n";
                } else {
                    print "    <td>{$req['state']}</td>\n";
                }
                print "  </tr>\n";
                print "  <tr>\n";
                print "    <th align=right>Computer:</th>\n";
                print "    <td>{$req['computer']}</td>\n";
                print "  </tr>\n";
                if (!empty($req['vmhost'])) {
                    print "  <tr>\n";
                    print "    <th align=right>VM Host:</th>\n";
                    print "    <td>{$req['vmhost']}</td>\n";
                    print "  </tr>\n";
                }
                print "  <tr>\n";
                print "    <th align=right>Start:</th>\n";
                print "    <td>{$req['start']}</td>\n";
                print "  </tr>\n";
                print "  <tr>\n";
                print "    <th align=right>End:</th>\n";
                if ($req['end'] == 'Friday, Jan 1st, 2038, 12:00 AM') {
                    print "    <td>(indefinite)</td>\n";
                } else {
                    print "    <td>{$req['end']}</td>\n";
                }
                print "  </tr>\n";
                if ($req['compIP'] != '') {
                    print "  <tr>\n";
                    print "    <th align=right>Node's IP Address:</th>\n";
                    print "    <td>{$req['compIP']}</td>\n";
                    print "  </tr>\n";
                }
                if ($req['userIP'] != '') {
                    print "  <tr>\n";
                    print "    <th align=right>User's IP Address:</th>\n";
                    print "    <td>{$req['userIP']}</td>\n";
                    print "  </tr>\n";
                }
                if ($req['admingroup'] != '') {
                    print "  <tr>\n";
                    print "    <th align=right>Admin Group:</th>\n";
                    print "    <td>{$req['admingroup']}</td>\n";
                    print "  </tr>\n";
                }
                if ($req['logingroup'] != '') {
                    print "  <tr>\n";
                    print "    <th align=right>Access Group:</th>\n";
                    print "    <td>{$req['logingroup']}</td>\n";
                    print "  </tr>\n";
                }
                print "  <tr>\n";
                print "    <th align=right>Management Node:</th>\n";
                print "    <td>{$req['managementnode']}</td>\n";
                print "  </tr>\n";
            }
            print "</table>\n";
        } else {
            print "User does not have any current reservations.<br>\n";
        }
    }
    print "</div>\n";
}
Example #8
0
function viewNodes()
{
    global $user;
    # FIXME change activeNode if current one has been deleted
    $mode = processInputVar("mode", ARG_STRING);
    $tmp = processInputVar("openNodes", ARG_STRING);
    if ($tmp != "") {
        $openNodes = explode(":", $tmp);
    } else {
        if (!empty($_COOKIE["VCLNODES"])) {
            $openNodes = explode(":", $_COOKIE["VCLNODES"]);
        } else {
            $openNodes = array(DEFAULT_PRIVNODE);
        }
    }
    $topNodes = getChildNodes();
    if (count($topNodes)) {
        $keys = array_keys($topNodes);
        $defaultActive = array_shift($keys);
    }
    $activeNode = processInputVar("activeNode", ARG_NUMERIC);
    if (empty($activeNode)) {
        if (!empty($_COOKIE["VCLACTIVENODE"]) && nodeExists($_COOKIE['VCLACTIVENODE'])) {
            $activeNode = $_COOKIE["VCLACTIVENODE"];
        } else {
            $activeNode = $defaultActive;
        }
    }
    $hasNodeAdmin = checkUserHasPriv("nodeAdmin", $user["id"], $activeNode);
    # tree
    print "<H2>Privilege Tree</H2>\n";
    /*if($mode == "submitAddChildNode") {
    		print "<font color=\"#008000\">Node successfully added to tree";
    		print "</font><br><br>\n";
    	}
    	if($mode == "submitDeleteNode") {
    		print "<font color=\"#008000\">Nodes successfully deleted from tree";
    		print "</font><br><br>\n";
    	}*/
    print "<dojo:TreeSelector widgetId=treeSelector eventNames=select:nodeSelected></dojo:TreeSelector>\n";
    #print "<dojo:TreeRPCController RPCUrl=local widgetId=treeController></dojo:TreeRPCController>\n";
    print "<div dojoType=Tree widgetId=privTree selector=treeSelector>\n";
    recursivePrintNodes2($topNodes, $openNodes, $activeNode);
    print "</div>\n";
    print "<div id=treebuttons>\n";
    if ($hasNodeAdmin) {
        $openNodes = implode(":", $openNodes);
        print "<TABLE>\n";
        print "  <TR valign=top>\n";
        print "    <TD><FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        print "    <button id=addNodeBtn dojoType=Button ";
        print "onClick=\"showAddNodePane(); return false;\">";
        print "Add Child</button>\n";
        print "    </FORM></TD>\n";
        print "    <TD><FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        print "    <button id=deleteNodeBtn dojoType=Button onClick=\"dojo.widget.byId('deleteDialog').show();\">";
        print "Delete Node and Children</button>\n";
        print "    </FORM></TD>\n";
        print "  </TR>\n";
        print "</TABLE>\n";
    }
    print "</div>\n";
    $cont = addContinuationsEntry('selectNode');
    print "<INPUT type=hidden id=nodecont value=\"{$cont}\">\n";
    # privileges
    print "<H2>Privileges at Selected Node</H2>\n";
    $node = $activeNode;
    if ($openNodes == "") {
        $openNodes = DEFAULT_PRIVNODE;
    }
    $nodeInfo = getNodeInfo($node);
    $privs = getNodePrivileges($node);
    $cascadePrivs = getNodeCascadePrivileges($node);
    $usertypes = getTypes("users");
    $i = 0;
    $hasUserGrant = checkUserHasPriv("userGrant", $user["id"], $node, $privs, $cascadePrivs);
    $hasResourceGrant = checkUserHasPriv("resourceGrant", $user["id"], $node, $privs, $cascadePrivs);
    print "<div id=nodePerms>\n";
    # users
    print "<A name=\"users\"></a>\n";
    print "<div id=usersDiv>\n";
    print "<H3>Users</H3>\n";
    print "<FORM id=usersform action=\"" . BASEURL . SCRIPT . "#users\" method=post>\n";
    $users = array();
    if (count($privs["users"]) || count($cascadePrivs["users"])) {
        print "<TABLE border=1 summary=\"\">\n";
        print "  <TR>\n";
        print "    <TD></TD>\n";
        print "    <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>\n";
        print "    <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>\n";
        foreach ($usertypes["users"] as $type) {
            $img = getImageText($type);
            print "    <TD>{$img}</TD>\n";
        }
        print "  </TR>\n";
        $users = array_unique(array_merge(array_keys($privs["users"]), array_keys($cascadePrivs["users"])));
        sort($users);
        foreach ($users as $_user) {
            printUserPrivRow($_user, $i, $privs["users"], $usertypes["users"], $cascadePrivs["users"], 'user', !$hasUserGrant);
            $i++;
        }
        print "</TABLE>\n";
        print "<div id=lastUserNum class=hidden>" . ($i - 1) . "</div>\n";
        if ($hasUserGrant) {
            $cont = addContinuationsEntry('AJchangeUserPrivs');
            print "<INPUT type=hidden id=changeuserprivcont value=\"{$cont}\">\n";
        }
    } else {
        print "There are no user privileges at the selected node.<br>\n";
    }
    if ($hasUserGrant) {
        print "<BUTTON id=addUserBtn dojoType=Button onclick=\"showAddUserPane(); return false;\">";
        print "Add User</button>\n";
    }
    print "</FORM>\n";
    print "</div>\n";
    # groups
    print "<A name=\"groups\"></a>\n";
    print "<div id=usergroupsDiv>\n";
    print "<H3>User Groups</H3>\n";
    if (count($privs["usergroups"]) || count($cascadePrivs["usergroups"])) {
        print "<FORM action=\"" . BASEURL . SCRIPT . "#groups\" method=post>\n";
        print "<div id=firstUserGroupNum class=hidden>{$i}</div>";
        print "<TABLE border=1 summary=\"\">\n";
        print "  <TR>\n";
        print "    <TD></TD>\n";
        print "    <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>\n";
        #$img = getImageText("Block Cascaded Rights");
        #print "    <TD>$img</TD>\n";
        print "    <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>\n";
        #$img = getImageText("Cascade to Child Nodes");
        #print "    <TD>$img</TD>\n";
        foreach ($usertypes["users"] as $type) {
            $img = getImageText($type);
            print "    <TH>{$img}</TH>\n";
        }
        print "  </TR>\n";
        $groups = array_unique(array_merge(array_keys($privs["usergroups"]), array_keys($cascadePrivs["usergroups"])));
        sort($groups);
        foreach ($groups as $group) {
            printUserPrivRow($group, $i, $privs["usergroups"], $usertypes["users"], $cascadePrivs["usergroups"], 'group', !$hasUserGrant);
            $i++;
        }
        print "</TABLE>\n";
        print "<div id=lastUserGroupNum class=hidden>" . ($i - 1) . "</div>";
        if ($hasUserGrant) {
            $cont = addContinuationsEntry('AJchangeUserGroupPrivs');
            print "<INPUT type=hidden id=changeusergroupprivcont value=\"{$cont}\">\n";
        }
    } else {
        print "There are no user group privileges at the selected node.<br>\n";
        $groups = array();
    }
    if ($hasUserGrant) {
        print "<BUTTON id=addGroupBtn dojoType=Button onclick=\"showAddUserGroupPane(); return false;\">";
        print "Add Group</button>\n";
    }
    print "</FORM>\n";
    print "</div>\n";
    # resources
    $resourcetypes = array("available", "administer", "manageGroup");
    print "<A name=\"resources\"></a>\n";
    print "<div id=resourcesDiv>\n";
    print "<H3>Resources</H3>\n";
    print "<FORM id=resourceForm action=\"" . BASEURL . SCRIPT . "#resources\" method=post>\n";
    if (count($privs["resources"]) || count($cascadePrivs["resources"])) {
        print "<TABLE border=1 summary=\"\">\n";
        print "  <TR>\n";
        print "    <TH>Group<br>Name</TH>\n";
        print "    <TH>Group<br>Type</TH>\n";
        print "    <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>\n";
        print "    <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>\n";
        foreach ($resourcetypes as $type) {
            $img = getImageText("{$type}");
            print "    <TH>{$img}</TH>\n";
        }
        print "  </TR>\n";
        $resources = array_unique(array_merge(array_keys($privs["resources"]), array_keys($cascadePrivs["resources"])));
        sort($resources);
        $resourcegroups = getResourceGroups();
        $resgroupmembers = getResourceGroupMembers();
        foreach ($resources as $resource) {
            printResourcePrivRow($resource, $i, $privs["resources"], $resourcetypes, $resourcegroups, $resgroupmembers, $cascadePrivs["resources"], !$hasResourceGrant);
            $i++;
        }
        print "</TABLE>\n";
        if ($hasResourceGrant) {
            $cont = addContinuationsEntry('AJchangeResourcePrivs');
            print "<INPUT type=hidden id=changeresourceprivcont value=\"{$cont}\">\n";
        }
    } else {
        print "There are no resource group privileges at the selected node.<br>\n";
        $resources = array();
    }
    if ($hasResourceGrant) {
        print "<BUTTON id=addResourceBtn dojoType=Button onclick=\"showAddResourceGroupPane(); return false;\">";
        print "Add Resource Group</button>\n";
    }
    print "</FORM>\n";
    print "</div>\n";
    print "</div>\n";
    print "<div dojoType=FloatingPane\n";
    print "      id=addUserPane\n";
    print "      title=\"Add User Permission\"\n";
    print "      constrainToContainer=false\n";
    print "      hasShadow=true\n";
    print "      resizable=true\n";
    print "      style=\"width: 520px; height: 410px; position: absolute; left: 15; top: 250px; display: none\"\n";
    print ">\n";
    print "<H2>Add User</H2>\n";
    print "<div id=addPaneNodeName></div>\n";
    print "<TABLE border=1 summary=\"\">\n";
    print "  <TR>\n";
    print "    <TD></TD>\n";
    print "    <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>\n";
    print "    <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>\n";
    foreach ($usertypes["users"] as $type) {
        $img = getImageText($type);
        print "    <TD>{$img}</TD>\n";
    }
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TD><INPUT type=text id=newuser name=newuser size=15";
    print "></TD>\n";
    # block rights
    $count = count($usertypes) + 1;
    print "    <TD align=center bgcolor=gray><INPUT type=checkbox ";
    print "dojoType=Checkbox id=blockchk name=block></TD>\n";
    #cascade rights
    print "    <TD align=center bgcolor=\"#008000\" id=usercell0:0>";
    print "<INPUT type=checkbox dojoType=Checkbox id=userck0:0 name=cascade ";
    print "></TD>\n";
    # normal rights
    $j = 1;
    foreach ($usertypes["users"] as $type) {
        print "    <TD align=center id=usercell0:{$j}><INPUT type=checkbox ";
        print "dojoType=Checkbox name=\"{$type}\" id=userck0:{$j}></TD>\n";
        $j++;
    }
    print "  </TR>\n";
    print "</TABLE>\n";
    print "<div id=addUserPrivStatus></div>\n";
    print "<TABLE summary=\"\"><TR>\n";
    print "<TD><button id=submitAddUserBtn dojoType=Button onclick=\"submitAddUser();\">";
    print "Submit New User</button></TD>\n";
    print "<TD><button id=cancelAddUserBtn dojoType=Button onclick=\"addUserPaneHide();\">";
    print "Cancel</button></TD>\n";
    print "</TR></TABLE>\n";
    $cont = addContinuationsEntry('AJsubmitAddUserPriv');
    print "<INPUT type=hidden id=addusercont value=\"{$cont}\">\n";
    print "</div>\n";
    print "<div dojoType=FloatingPane\n";
    print "      id=addUserGroupPane\n";
    print "      title=\"Add User Group Permission\"\n";
    print "      constrainToContainer=false\n";
    print "      hasShadow=true\n";
    print "      resizable=true\n";
    print "      style=\"width: 520px; height: 410px; position: absolute; left: 15; top: 450px; display: none\"\n";
    print ">\n";
    print "<H2>Add User Group</H2>\n";
    print "<div id=addGroupPaneNodeName></div>\n";
    print "<TABLE border=1 summary=\"\">\n";
    print "  <TR>\n";
    print "    <TD></TD>\n";
    print "    <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>\n";
    print "    <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>\n";
    foreach ($usertypes["users"] as $type) {
        $img = getImageText($type);
        print "    <TD>{$img}</TD>\n";
    }
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TD>\n";
    # FIXME should $groups be only the user's groups?
    $groups = getUserGroups(0, $user['affiliationid']);
    if (array_key_exists(82, $groups)) {
        unset($groups[82]);
    }
    # remove None group
    printSelectInput("newgroupid", $groups, -1, 0, 0, 'newgroupid');
    print "    </TD>\n";
    # block rights
    print "    <TD align=center bgcolor=gray><INPUT type=checkbox ";
    print "dojoType=Checkbox id=blockgrpchk name=blockgrp></TD>\n";
    #cascade rights
    print "    <TD align=center bgcolor=\"#008000\" id=grpcell0:0>";
    print "<INPUT type=checkbox dojoType=Checkbox id=usergrpck0:0 ";
    print "name=cascadegrp></TD>\n";
    # normal rights
    $j = 1;
    foreach ($usertypes["users"] as $type) {
        print "    <TD align=center id=usergrpcell0:{$j}><INPUT type=checkbox ";
        print "dojoType=Checkbox name=\"{$type}\" id=usergrpck0:{$j}></TD>\n";
        $j++;
    }
    print "  </TR>\n";
    print "</TABLE>\n";
    print "<div id=addUserGroupPrivStatus></div>\n";
    print "<TABLE summary=\"\"><TR>\n";
    print "<TD><button id=submitAddGroupBtn dojoType=Button onclick=\"submitAddUserGroup();\">";
    print "Submit New User Group</button></TD>\n";
    print "<TD><button id=cancelAddGroupBtn dojoType=Button onclick=\"addUserGroupPaneHide();\">";
    print "Cancel</button></TD>\n";
    print "</TR></TABLE>\n";
    $cont = addContinuationsEntry('AJsubmitAddUserGroupPriv');
    print "<INPUT type=hidden id=addusergroupcont value=\"{$cont}\">\n";
    print "</div>\n";
    print "<div dojoType=FloatingPane\n";
    print "      id=addResourceGroupPane\n";
    print "      title=\"Add Resource Group Permission\"\n";
    print "      constrainToContainer=false\n";
    print "      hasShadow=true\n";
    print "      resizable=true\n";
    print "      style=\"width: 520px; height: 410px; position: absolute; left: 15; top: 450px; display: none\"\n";
    print ">\n";
    print "<H2>Add Resource Group</H2>\n";
    print "<div id=addResourceGroupPaneNodeName></div>\n";
    print "<TABLE border=1 summary=\"\">\n";
    print "  <TR>\n";
    print "    <TD></TD>\n";
    print "    <TH bgcolor=gray style=\"color: black;\">Block<br>Cascaded<br>Rights</TH>\n";
    print "    <TH bgcolor=\"#008000\" style=\"color: black;\">Cascade<br>to Child<br>Nodes</TH>\n";
    $resourcetypes = array("available", "administer", "manageGroup");
    foreach ($resourcetypes as $type) {
        $img = getImageText("{$type}");
        print "    <TH>{$img}</TH>\n";
    }
    print "  </TR>\n";
    print "  <TR>\n";
    print "    <TD>\n";
    $resources = array();
    $privs = array("computerAdmin", "mgmtNodeAdmin", "imageAdmin", "scheduleAdmin");
    $resourcesgroups = getUserResources($privs, array("manageGroup"), 1);
    foreach (array_keys($resourcesgroups) as $type) {
        foreach ($resourcesgroups[$type] as $id => $group) {
            $resources[$id] = $type . "/" . $group;
        }
    }
    printSelectInput("newresourcegroupid", $resources, -1, 0, 0, 'newresourcegroupid');
    print "    </TD>\n";
    # block rights
    print "    <TD align=center bgcolor=gray><INPUT type=checkbox ";
    print "dojoType=Checkbox id=blockresgrpck name=blockresgrp></TD>\n";
    #cascade rights
    print "    <TD align=center bgcolor=\"#008000\" id=resgrpcell0:0>";
    print "<INPUT type=checkbox dojoType=Checkbox id=resgrpck0:0 ";
    print "name=cascaderesgrp></TD>\n";
    # normal rights
    print "    <TD align=center id=resgrpcell0:1><INPUT type=checkbox ";
    print "dojoType=Checkbox name=available id=resgrpck0:1></TD>\n";
    print "    <TD align=center id=resgrpcell0:2><INPUT type=checkbox ";
    print "dojoType=Checkbox name=administer id=resgrpck0:2></TD>\n";
    print "    <TD align=center id=resgrpcell0:3><INPUT type=checkbox ";
    print "dojoType=Checkbox name=manageGroup id=resgrpck0:3></TD>\n";
    print "  </TR>\n";
    print "</TABLE>\n";
    print "<div id=addResourceGroupPrivStatus></div>\n";
    print "<TABLE summary=\"\"><TR>\n";
    print "<TD><button dojoType=Button onclick=\"submitAddResourceGroup();\">";
    print "Submit New Resource Group</button></TD>\n";
    print "<TD><button dojoType=Button onclick=\"addResourceGroupPaneHide();\">";
    print "Cancel</button></TD>\n";
    print "</TR></TABLE>\n";
    $cont = addContinuationsEntry('AJsubmitAddResourcePriv');
    print "<INPUT type=hidden id=addresourcegroupcont value=\"{$cont}\">\n";
    print "</div>\n";
    print "<div dojoType=FloatingPane\n";
    print "      id=addNodePane\n";
    print "      title=\"Add Child Node\"\n";
    print "      constrainToContainer=false\n";
    print "      hasShadow=true\n";
    print "      resizable=true\n";
    print "      style=\"width: 280px; height: 200px; position: absolute; left: 15; top: 150px; display: none\"\n";
    print ">\n";
    print "<H2>Add Child Node</H2>\n";
    print "<div id=addChildNodeName></div>\n";
    print "<strong>New Node:</strong> <INPUT type=text id=childNodeName>\n";
    print "<div id=addChildNodeStatus></div>\n";
    print "<TABLE summary=\"\"><TR>\n";
    print "<TD><button id=submitAddNodeBtn dojoType=Button onclick=\"submitAddChildNode();\">";
    print "Create Child</button></TD>\n";
    print "<TD><button id=cancelAddNodeBtn dojoType=Button onclick=\"addNodePaneHide();\">";
    print "Cancel</button></TD>\n";
    print "</TR></TABLE>\n";
    $cont = addContinuationsEntry('AJsubmitAddChildNode');
    print "<INPUT type=hidden id=addchildcont value=\"{$cont}\"\n>";
    print "</div>\n";
    print "<div dojoType=dialog id=deleteDialog bgColor=white bgOpacity=0.5 toggle=fade toggleDuration=250>\n";
    print "Delete the following node and all of its children?<br><br>\n";
    print "<div id=deleteNodeName></div><br>\n";
    print "<div align=center>\n";
    print "<TABLE summary=\"\"><TR>\n";
    print "<TD><button id=submitDeleteNodeBtn dojoType=Button onClick=\"deleteNode();\">";
    print "Delete Nodes</button></TD>\n";
    print "<TD><button id=cancelDeleteNodeBtn dojoType=Button ";
    print "onClick=\"dojo.widget.byId('deleteDialog').hide();\">Cancel</button>";
    print "</TD>\n";
    print "</TR></TABLE>\n";
    $cont = addContinuationsEntry('AJsubmitDeleteNode');
    print "<INPUT type=hidden id=delchildcont value=\"{$cont}\"\n>";
    print "</div>\n";
    print "</div>\n";
    print "<div dojoType=dialog id=workingDialog bgColor=white bgOpacity=0.5 toggle=fade toggleDuration=250>\n";
    print "Loading...\n";
    print "</div>\n";
}
Example #9
0
function userpreferences()
{
    global $user, $submitErr, $mode;
    if ($submitErr) {
        $data = processUserPrefsInput(0);
        $data['affiliation'] = $user['affiliation'];
    } else {
        $data = $user;
        if ($data["width"] == 0) {
            $data["resolution"] = "Full Screen";
        } else {
            $data["resolution"] = $user["width"] . "x" . $user["height"];
        }
    }
    print i("<H2 align=center>User Preferences</H2>\n");
    print "<div align=center id=status class=visible>\n";
    if ($mode == "submituserprefs") {
        print "<font color=green>" . i("User preferences successfully updated") . "</font><br>\n";
    }
    print "</div>\n";
    print "<table summary=\"\">\n";
    print "  <TR>\n";
    print "    <TD valign=top>\n";
    print "      <div id=preflinks class=hidden>\n";
    print "      <ul class=preferenceslist>\n";
    $showpersonal = 0;
    if (!empty($user['firstname']) || !empty($user['lastname']) || !empty($user['email']) || $user['affiliation'] == 'Local') {
        $showpersonal = 1;
        print "      <li><a href=#personal onclick=\"";
        print "show('personal'); return false;\">" . i("Personal Information") . "</a>";
        print "</li>\n";
    }
    print "      <li><a href=#rdpfile onclick=\"";
    print "show('rdpfile'); return false;\">" . i("RDP Preferences") . "</a>";
    print "</li>\n";
    print "      <li><a href=#uiprefs onclick=\"javascript:show('uiprefs'); ";
    print "return false\">" . i("General Preferences") . "</a></li>\n";
    print "      </ul>\n";
    print "      </div>\n";
    print "    </TD>\n";
    print "    <TD rowspan=2 width=50px></TD>\n";
    print "    <TD rowspan=2>\n";
    if ($showpersonal) {
        print "      <fieldset id=personal class=shown>\n";
        print "      <legend>" . i("Personal") . "</legend>\n";
        print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        print "      <table summary=\"displays your personal information\">\n";
        $showsubmit = 0;
        if (!empty($user['firstname'])) {
            print "        <TR>\n";
            print "          <TH align=right>" . i("First Name:") . "<a href=#updateinfo>*</a></TH>\n";
            print "          <TD>" . $user["firstname"] . "</TD>\n";
            print "          <TD></TD>\n";
            print "        </TR>\n";
        }
        if (!empty($user['lastname'])) {
            print "        <TR>\n";
            print "          <TH align=right>" . i("Last Name:") . "<a href=#updateinfo>*</a></TH>\n";
            print "          <TD>" . $user["lastname"] . "</TD>\n";
            print "          <TD></TD>\n";
            print "        </TR>\n";
        }
        # preferred name is stored locally; allow setting preferred name if a firstname is defined
        if (!empty($user['firstname'])) {
            print "        <TR>\n";
            print "          <TH align=right>" . i("Preferred Name:") . "</TH>\n";
            print "          <TD><label class=hidden for=preferredname>Preferred Name</label>\n";
            print "              <INPUT type=text name=preferredname maxlength=100 ";
            print "size=15 value=\"" . $data["preferredname"] . "\"></TD>\n";
            print "          <TD>";
            printSubmitErr(PREFNAMEERR);
            print "</TD>\n";
            print "        </TR>\n";
            $showsubmit = 1;
        }
        if (!empty($user['email'])) {
            print "        <TR>\n";
            print "          <TH align=right>" . i("Email Address:") . "<a href=#updateinfo>*</a></TH>\n";
            print "          <TD>" . $user["email"] . "</TD>\n";
            print "          <TD></TD>\n";
            print "        </TR>\n";
        }
        if ($user['affiliation'] == 'Local') {
            print "        <TR>\n";
            print "          <TD colspan=3 align=center><h3>" . i("Change Password") . "</h3></TD>\n";
            print "        </TR>\n";
            print "        <TR>\n";
            print "          <TH align=right>" . i("Current Password:"******"</TH>\n";
            print "          <TD>\n";
            print "            <label class=hidden for=currentpassword>Current Password</label>\n";
            print "            <INPUT type=password name=currentpassword maxlength=100 size=15>\n";
            print "          </TD>\n";
            print "          <TD>";
            printSubmitErr(LOCALPASSWORDERR);
            print "</TD>\n";
            print "        </TR>\n";
            print "        <TR>\n";
            print "          <TH align=right>" . i("New Password:"******"</TH>\n";
            print "          <TD>\n";
            print "            <label class=hidden for=newpassword>New Password</label>\n";
            print "            <INPUT type=password name=newpassword maxlength=100 ";
            print "id=newpassword onkeyup=\"checkNewLocalPassword();\" size=15>\n";
            print "          </TD>\n";
            print "          <TD></TD>\n";
            print "        </TR>\n";
            print "        <TR>\n";
            print "          <TH align=right>" . i("Confirm Password:"******"</TH>\n";
            print "          <TD>\n";
            print "            <label class=hidden for=confirmpassword>Confirm Password</label>\n";
            print "            <INPUT type=password name=confirmpassword maxlength=100 ";
            print "id=confirmpassword onkeyup=\"checkNewLocalPassword();\" size=15>\n";
            print "          </TD>\n";
            print "          <TD><span id=pwdstatus></span></TD>\n";
            print "        </TR>\n";
            $showsubmit = 1;
        }
        print "      </table>\n";
        $updateText = getAffiliationDataUpdateText($user['affiliationid']);
        print "<a name=updateinfo></a>\n";
        if (!empty($updateText[$user['affiliationid']])) {
            print "{$updateText[$user['affiliationid']]}<br><br>";
        }
        if ($showsubmit) {
            $cont = addContinuationsEntry('confirmpersonalprefs', array(), SECINDAY, 1, 1, 1);
            print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
            print "      <div align=center>\n";
            print "      <INPUT type=submit value=\"" . i("Submit Changes") . "\">\n";
            print "      </div>\n";
        }
        print "      </FORM>\n";
        print "      </fieldset>\n";
    }
    print "      <fieldset id=rdpfile class=shown>\n";
    print "      <legend>" . i("RDP") . "</legend>\n";
    print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    print "      <table summary=\"lists adjustable preferences for the RDP ";
    print "file that is sent when you click the Get RDP File button on the ";
    print "Connect! page and the port on which RDP is listening\">\n";
    print "        <TR>\n";
    print "          <TD colspan=3><div style=\"width: 300px;\"><small>";
    print i("Try decreasing <em>Resolution</em> or <em>Color Depth</em> to speed up your connection if things seem slow when connected to a remote computer.");
    print "</div></small></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>" . i("Resolution:") . "</TH>\n";
    $resolutionArray = array("Full Screen" => "Full Screen", "1920x1440" => "1920x1440", "1600x1200" => "1600x1200", "1280x1024" => "1280x1024", "1152x864" => "1152x864", "1024x768" => "1024x768", "800x600" => "800x600", "640x480" => "640x480", "1680x1050" => "1680x1050", "1600x1024" => "1600x1024", "1440x900" => "1440x900", "1280x854" => "1280x854", "1280x768" => "1280x768", "1024x576" => "1024x576");
    print "          <TD>\n";
    printSelectInput("resolution", $resolutionArray, $data["resolution"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>" . i("Color Depth:") . "</TH>\n";
    print "          <TD>\n";
    $colordepth = array("8" => "8", "16" => "16", "24" => "24", "32" => "32");
    printSelectInput("bpp", $colordepth, $data["bpp"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>" . i("Audio:") . "</TH>\n";
    print "          <TD>\n";
    $audio = array("none" => i("None"), "local" => i("Use my speakers"));
    printSelectInput("audiomode", $audio, $data["audiomode"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>" . i("Map Local Drives:") . "</TH>\n";
    print "          <TD>\n";
    $yesno = array(1 => i("Yes"), 0 => i("No"));
    printSelectInput("mapdrives", $yesno, $data["mapdrives"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>" . i("Map Local Printers:") . "</TH>\n";
    print "          <TD>\n";
    printSelectInput("mapprinters", $yesno, $data["mapprinters"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>" . i("Map Local Serial Ports:") . "</TH>\n";
    print "          <TD>\n";
    printSelectInput("mapserial", $yesno, $data["mapserial"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>" . i("RDP Port") . ":</TH>\n";
    print "          <TD>\n";
    print "            <INPUT type=text name=rdpport maxlength=5 ";
    print "size=8 value=\"" . $data["rdpport"] . "\"></TD>\n";
    print "          </TD>\n";
    print "          <TD>\n";
    printSubmitErr(RDPPORTERR);
    print "          </TD>\n";
    print "        </TR>\n";
    print "      </table>\n";
    $cont = addContinuationsEntry('confirmrdpprefs', array(), SECINDAY, 1, 1, 1);
    print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "      <div align=center>\n";
    print "      <INPUT type=submit value=\"" . i("Submit Changes") . "\">\n";
    print "      </div>\n";
    print "      </FORM>\n";
    print "      </fieldset>\n";
    print "      <div id=uiprefs class=shown>\n";
    print "      <fieldset>\n";
    print "      <legend>" . i("General Preferences") . "</legend>\n";
    print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post ";
    print "onsubmit=\"return validatePublicKeys();\">\n";
    $cdata = array();
    if ($user['showallgroups']) {
        $selected['affiliation'] = '';
        $selected['allgroups'] = 'checked';
    } else {
        $selected['affiliation'] = 'checked';
        $selected['allgroups'] = '';
    }
    print "      <p>" . i("View User Groups:") . "<br>\n";
    print "      <INPUT type=radio id=r1 name=groupview value=affiliation ";
    print "{$selected['affiliation']}" . "><label for=r1>" . i("matching my affiliation");
    print "</label><br>\n";
    print "      <INPUT type=radio id=r2 name=groupview value=allgroups ";
    print "{$selected['allgroups']}" . "><label for=r2>" . i("from all affiliations");
    print "</label></p>\n";
    if ($user['emailnotices']) {
        $selected['enabled'] = 'checked';
        $selected['disabled'] = '';
    } else {
        $selected['enabled'] = '';
        $selected['disabled'] = 'checked';
    }
    print "      <p>" . i("Send email notifications about reservations:") . "<br>\n";
    print "      <INPUT type=radio id=r3 name=emailnotify value=2 ";
    print "{$selected['enabled']}" . "><label for=r3>" . i("Enabled");
    print "</label><br>\n";
    print "      <INPUT type=radio id=r4 name=emailnotify value=1 ";
    print "{$selected['disabled']}" . "><label for=r4>" . i("Disabled");
    print "</label></p>\n";
    ###########################
    # temporary
    if (!array_key_exists('usepublickeys', $user)) {
        $user['usepublickeys'] = 0;
        $_SESSION['user']['usepublickeys'] = 0;
        $user['sshpublickeys'] = '';
        $_SESSION['user']['sshpublickeys'] = '';
    }
    # end temporary
    ###########################
    if ($user['usepublickeys']) {
        $selected['enabled'] = 'checked';
        $selected['disabled'] = '';
    } else {
        $selected['enabled'] = '';
        $selected['disabled'] = 'checked';
    }
    print "      <p>" . i("Use public key authentication for SSH logins:") . "<br>\n";
    print "      <INPUT type=radio id=r5 name=pubkeyauth value=2 ";
    print "{$selected['enabled']} onclick=\"togglePubKeys(1);\"><label for=r5>";
    print i("Enabled") . "</label><br>\n";
    print "      <INPUT type=radio id=r6 name=pubkeyauth value=1 ";
    print "{$selected['disabled']} onclick=\"togglePubKeys(0);\"><label for=r6>";
    print i("Disabled") . "</label><br><br>\n";
    print "      " . i("Public keys:") . "<br>\n";
    print "      <div style=\"width: 300px;\" id=\"pubkeyerr\" ";
    print "class=\"hidden\">";
    print "<font color=\"red\"><em>\n      ";
    print i("Public keys can only contain letters, numbers, spaces, and these characters: + / @ . =");
    print "</em></font></div>\n";
    print "      <textarea id=\"pubkeys\" dojoType=\"dijit.form.Textarea\" ";
    print "name=\"pubkeys\" style=\"width: 27em;\"";
    if (!$user['usepublickeys']) {
        print " disabled=\"disabled\"";
    }
    print ">{$user['sshpublickeys']}</textarea><br><br>\n";
    print "<strong>" . i("NOTE:") . "</strong> ";
    $h = "      " . i("Images using network storage (such as AFS) may not work well with public key authentication. In some cases, you may still be prompted for a password. In other cases, you may need to run additional commands after logging in to gain access to the network storage.");
    print preg_replace("/(.{1,55}([ \n]|\$))/", '\\1<br>', $h) . "\n";
    print "      </p>\n";
    $cont = addContinuationsEntry('submitgeneralprefs', $cdata, SECINDAY, 1, 0);
    print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "      <INPUT type=submit value=\"" . i("Submit General Preferences") . "\">\n";
    print "      </FORM>\n";
    print "      </fieldset>\n";
    print "      </div>\n";
    print "    </TD>\n";
    print "  </TR>\n";
    print "</table>\n";
    printUserprefJavascript();
}
Example #10
0
function selectAuth()
{
    global $HTMLheader, $printedHTMLheader, $authMechs, $skin;
    $authtype = getContinuationVar('authtype', processInputVar("authtype", ARG_STRING));
    if (array_key_exists($authtype, $authMechs)) {
        if ($authMechs[$authtype]['type'] == 'redirect') {
            header("Location: {$authMechs[$authtype]['URL']}");
            dbDisconnect();
            exit;
        } elseif ($authMechs[$authtype]['type'] == 'ldap' || $authMechs[$authtype]['type'] == 'local') {
            printLoginPageWithSkin($authtype);
            return;
        }
    }
    require_once "themes/{$skin}/page.php";
    $HTMLheader = getHeader(0);
    print $HTMLheader;
    $printedHTMLheader = 1;
    print "<H2>Welcome to the Virtual Computing Lab</H2>\n";
    print "<TABLE>\n";
    print "<TR>\n";
    print "<TD nowrap class=rightborder>\n";
    print "Please select an authentication method to use:<br><br>\n";
    if (strlen($authtype)) {
        print "<font color=red>Selected method failed, please try again</font><br>\n";
    }
    foreach (array_keys($authMechs) as $mech) {
        $methods["{$mech}"] = $mech;
    }
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post name=loginform>\n";
    /*if($skin == 'example1')
    		printSelectInput("authtype", $methods, 'EXAMPLE1 LDAP');
    	elseif($skin == 'example2')
    		printSelectInput("authtype", $methods, 'EXAMPLE2 LDAP');
    	else*/
    printSelectInput("authtype", $methods, -1, 0, 0, '', 'tabindex=1');
    print "<br><INPUT type=hidden name=mode value=selectauth>\n";
    print "<INPUT type=submit value=\"Proceed to Login\" tabindex=2 name=userid>\n";
    print "</FORM>\n";
    print "</TD>\n";
    print "<TD>\n";
    print "<h3>Explanation of authentication methods:</h3>\n";
    print "<UL id=expauthul>\n";
    foreach ($authMechs as $mech) {
        print "<LI>{$mech['help']}</LI>\n";
    }
    print "</UL>\n";
    print "</TD>\n";
    print "</TR>\n";
    print "</TABLE>\n";
    print getFooter();
}
Example #11
0
function userpreferences()
{
    global $user, $submitErr, $viewmode, $mode;
    if ($submitErr) {
        $data = processUserPrefsInput(0);
        $data['affiliation'] = $user['affiliation'];
    } else {
        $data = $user;
        if ($data["width"] == 0) {
            $data["resolution"] = "Full Screen";
        } else {
            $data["resolution"] = $user["width"] . "x" . $user["height"];
        }
    }
    $adminleveldeveloper = 0;
    if ($user['adminlevelid'] == ADMIN_DEVELOPER) {
        $adminleveldeveloper = 1;
    }
    print "<H2 align=center>User Preferences</H2>\n";
    print "<div align=center id=status class=visible>\n";
    if ($mode == "submituserprefs") {
        print "<font color=green>User preferences successfully updated</font><br>\n";
    }
    print "</div>\n";
    print "<table id=layouttable summary=\"\">\n";
    print "  <TR>\n";
    print "    <TD>\n";
    print "      <div id=preflinks class=hidden>\n";
    print "      <ul class=preferenceslist>\n";
    print "      <li><a href=#personal onclick=\"";
    print "show('personal'); return false;\">Personal&nbsp;Information</a>";
    print "</li>\n";
    print "      <li><a href=#rdpfile onclick=\"";
    print "show('rdpfile'); return false;\">RDP&nbsp;File&nbsp;Preferences</a>";
    print "</li>\n";
    print "      <li><a href=#uiprefs onclick=\"javascript:show('uiprefs'); ";
    print "return false\">General&nbsp;Preferences</a></li>\n";
    if ($adminleveldeveloper) {
        print "      <li><a href=#viewmode onclick=\"javascript:";
        print "show('viewmode'); return false\">View&nbsp;Mode</a></li>\n";
    }
    print "      </ul>\n";
    print "      </div>\n";
    print "    </TD>\n";
    print "    <TD rowspan=2 width=50px></TD>\n";
    print "    <TD rowspan=2>\n";
    print "      <fieldset id=personal class=shown>\n";
    print "      <legend>Personal</legend>\n";
    print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    print "      <table summary=\"displays your personal information\">\n";
    print "        <TR>\n";
    print "          <TH align=right>First Name<a href=#updateinfo>*</a>:</TH>\n";
    print "          <TD>" . $user["firstname"] . "</TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Last Name<a href=#updateinfo>*</a>:</TH>\n";
    print "          <TD>" . $user["lastname"] . "</TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Preferred Name:</TH>\n";
    print "          <TD><label class=hidden for=preferredname>Preferred Name</label>\n";
    print "              <INPUT type=text name=preferredname maxlength=100 ";
    print "size=15 value=\"" . $data["preferredname"] . "\"></TD>\n";
    print "          <TD>";
    printSubmitErr(PREFNAMEERR);
    print "</TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Email Address<a href=#updateinfo>*</a>:</TH>\n";
    print "          <TD>" . $user["email"] . "</TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    if ($user['affiliation'] == 'Local') {
        print "        <TR>\n";
        print "          <TD colspan=3 align=center><h3>Change Password</h3></TD>\n";
        print "        </TR>\n";
        print "        <TR>\n";
        print "          <TH align=right>Current Password:</TH>\n";
        print "          <TD>\n";
        print "            <label class=hidden for=currentpassword>Current Password</label>\n";
        print "            <INPUT type=password name=currentpassword maxlength=100 size=15>\n";
        print "          </TD>\n";
        print "          <TD>";
        printSubmitErr(LOCALPASSWORDERR);
        print "</TD>\n";
        print "        </TR>\n";
        print "        <TR>\n";
        print "          <TH align=right>New Password:</TH>\n";
        print "          <TD>\n";
        print "            <label class=hidden for=newpassword>New Password</label>\n";
        print "            <INPUT type=password name=newpassword maxlength=100 ";
        print "id=newpassword onkeyup=\"checkNewLocalPassword();\" size=15>\n";
        print "          </TD>\n";
        print "          <TD></TD>\n";
        print "        </TR>\n";
        print "        <TR>\n";
        print "          <TH align=right>Confirm Password:</TH>\n";
        print "          <TD>\n";
        print "            <label class=hidden for=confirmpassword>Confirm Password</label>\n";
        print "            <INPUT type=password name=confirmpassword maxlength=100 ";
        print "id=confirmpassword onkeyup=\"checkNewLocalPassword();\" size=15>\n";
        print "          </TD>\n";
        print "          <TD><span id=pwdstatus></span></TD>\n";
        print "        </TR>\n";
    }
    print "      </table>\n";
    $updateText = getAffiliationDataUpdateText($user['affiliationid']);
    print "<a name=updateinfo></a>\n";
    if (!empty($updateText[$user['affiliationid']])) {
        print "{$updateText[$user['affiliationid']]}<br><br>";
    }
    $cont = addContinuationsEntry('confirmpersonalprefs', array(), SECINDAY, 1, 1, 1);
    print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "      <div align=center>\n";
    print "      <INPUT type=submit value=\"Submit Changes\">\n";
    print "      </div>\n";
    print "      </FORM>\n";
    print "      </fieldset>\n";
    print "      <fieldset id=rdpfile class=visible>\n";
    print "      <legend>RDP</legend>\n";
    print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    print "      <table summary=\"lists adjustable preferences for the RDP ";
    print "file that is sent when you click the Get RDP File button on the ";
    print "Connect! page\">\n";
    print "        <TR>\n";
    print "          <TD colspan=3><small>Try decreasing <em>Resolution</em> or <em>";
    print "Color Depth</em> to<br>speed up your connection if things seem ";
    print "slow<br>when connected to a remote computer.</small></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Resolution:</TH>\n";
    $resolutionArray = array("Full Screen" => "Full Screen", "1920x1440" => "1920x1440", "1600x1200" => "1600x1200", "1280x1024" => "1280x1024", "1152x864" => "1152x864", "1024x768" => "1024x768", "800x600" => "800x600", "640x480" => "640x480", "1680x1050" => "1680x1050", "1600x1024" => "1600x1024", "1440x900" => "1440x900", "1280x854" => "1280x854", "1280x768" => "1280x768", "1024x576" => "1024x576");
    print "          <TD>\n";
    printSelectInput("resolution", $resolutionArray, $data["resolution"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Color Depth:</TH>\n";
    print "          <TD>\n";
    #$colordepth = array("8" => "8", "16" => "16", "24" => "24");
    $colordepth = array("8" => "8", "16" => "16", "24" => "24", "32" => "32 (Vista only)");
    printSelectInput("bpp", $colordepth, $data["bpp"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Audio:</TH>\n";
    print "          <TD>\n";
    $audio = array("none" => "None", "local" => "Use my speakers");
    printSelectInput("audiomode", $audio, $data["audiomode"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Map Local Drives:</TH>\n";
    print "          <TD>\n";
    $yesno = array(1 => "Yes", 0 => "No");
    printSelectInput("mapdrives", $yesno, $data["mapdrives"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Map Local Printers:</TH>\n";
    print "          <TD>\n";
    printSelectInput("mapprinters", $yesno, $data["mapprinters"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "        <TR>\n";
    print "          <TH align=right>Map Local Serial Ports:</TH>\n";
    print "          <TD>\n";
    printSelectInput("mapserial", $yesno, $data["mapserial"]);
    print "          </TD>\n";
    print "          <TD></TD>\n";
    print "        </TR>\n";
    print "      </table>\n";
    $cont = addContinuationsEntry('confirmrdpprefs', array(), SECINDAY, 1, 1, 1);
    print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "      <div align=center>\n";
    print "      <INPUT type=submit value=\"Submit Changes\">\n";
    print "      </div>\n";
    print "      </FORM>\n";
    print "      </fieldset>\n";
    print "      <div id=uiprefs class=visible>\n";
    print "      <fieldset>\n";
    print "      <legend>General Preferences</legend>\n";
    print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    $cdata = array();
    if (in_array("userGrant", $user["privileges"])) {
        if ($user['showallgroups']) {
            $selected['affiliation'] = '';
            $selected['allgroups'] = 'checked';
        } else {
            $selected['affiliation'] = 'checked';
            $selected['allgroups'] = '';
        }
        print "      <p>View User Groups:<br>\n";
        print "      <INPUT type=radio id=r1 name=groupview value=affiliation ";
        print "{$selected['affiliation']}><label for=r1>matching my affiliation";
        print "</label><br>\n";
        print "      <INPUT type=radio id=r2 name=groupview value=allgroups ";
        print "{$selected['allgroups']}><label for=r2>from all affiliations";
        print "</label></p>\n";
    } else {
        $cdata['groupview'] = 'affiliation';
    }
    if ($user['emailnotices']) {
        $selected['enabled'] = 'checked';
        $selected['disabled'] = '';
    } else {
        $selected['enabled'] = '';
        $selected['disabled'] = 'checked';
    }
    print "      <p>Send email notifications about reservations:<br>\n";
    print "      <INPUT type=radio id=r3 name=emailnotify value=2 ";
    print "{$selected['enabled']}><label for=r3>Enabled";
    print "</label><br>\n";
    print "      <INPUT type=radio id=r4 name=emailnotify value=1 ";
    print "{$selected['disabled']}><label for=r4>Disabled";
    print "</label></p>\n";
    $cont = addContinuationsEntry('submitgeneralprefs', $cdata, SECINDAY, 1, 0);
    print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "      <INPUT type=submit value=\"Submit General Preferences\">\n";
    print "      </FORM>\n";
    print "      </fieldset>\n";
    print "      </div>\n";
    print "      <div id=viewmode class=visible>\n";
    if ($adminleveldeveloper) {
        print "      <fieldset>\n";
        print "      <legend>View Mode</legend>\n";
        print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        if ($viewmode == ADMIN_FULL) {
            $selected[ADMIN_NONE] = "";
            $selected[ADMIN_FULL] = "checked";
            $selected[ADMIN_DEVELOPER] = "";
        } elseif ($viewmode == ADMIN_DEVELOPER) {
            $selected[ADMIN_NONE] = "";
            $selected[ADMIN_FULL] = "";
            $selected[ADMIN_DEVELOPER] = "checked";
        } else {
            $selected[ADMIN_NONE] = "checked";
            $selected[ADMIN_FULL] = "";
            $selected[ADMIN_DEVELOPER] = "";
        }
        if ($user["adminlevelid"] != ADMIN_NONE) {
            print "      <p>View site as:<br>\n";
            print "      <INPUT type=radio name=viewmode value=" . ADMIN_NONE . " ";
            print $selected[ADMIN_NONE] . ">Normal User<br>\n";
            if ($user["adminlevel"] == "full" || $user["adminlevel"] == "developer") {
                print "      <INPUT type=radio name=viewmode value=" . ADMIN_FULL . " ";
                print $selected[ADMIN_FULL] . ">Admin Level<br>\n";
            }
            if ($user["adminlevel"] == "developer") {
                print "      <INPUT type=radio name=viewmode value=" . ADMIN_DEVELOPER . " ";
                print $selected[ADMIN_DEVELOPER] . ">Developer Level<br>\n";
            }
            print "      </p>\n";
        }
        print "      View As User: <INPUT type=text name=viewasuser  ";
        if (!array_key_exists('unityid', $data)) {
            print "size=20 value=\"{$user["unityid"]}@{$user['affiliation']}\">\n";
        } else {
            print "size=20 value=\"{$data["unityid"]}@{$data['affiliation']}\">\n";
        }
        printSubmitErr(VIEWASUSERERR);
        print "<br>\n";
        $cont = addContinuationsEntry('submitviewmode', array(), SECINDAY, 1, 0);
        print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
        print "      <INPUT type=submit value=\"Submit View Mode\">\n";
        print "      </FORM>\n";
        print "      </fieldset>\n";
    }
    print "      </div>\n";
    print "    </TD>\n";
    print "  </TR>\n";
    print "</table>\n";
    printUserprefJavascript();
}
Example #12
0
function editOrAddGroup($state)
{
    global $submitErr, $user, $mode, $viewmode;
    $usergroups = getUserGroups(1);
    if ($user['showallgroups']) {
        $affilusergroups = $usergroups;
    } else {
        $affilusergroups = getUserGroups(1, $user['affiliationid']);
    }
    $resourcegroups = getResourceGroups();
    $affils = getAffiliations();
    $resourcetypes = getTypes("resources");
    if ($submitErr) {
        $data = processGroupInput(0);
        $newuser = processInputVar("newuser", ARG_STRING);
        if ($mode == "submitEditGroup") {
            $id = $data["groupid"];
            if ($data["type"] == "resource") {
                list($grouptype, $junk) = explode('/', $resourcegroups[$id]["name"]);
                $ownerid = $resourcegroups[$id]["ownerid"];
            }
        } else {
            if ($data["type"] == "resource") {
                if ($state) {
                    $grouptype = $resourcetypes['resources'][$data['resourcetypeid']];
                } else {
                    list($grouptype, $junk) = explode('/', $resourcegroups[$data['groupid']]["name"]);
                }
                $ownerid = $data["ownergroup"];
            } else {
                $selectAffil = getContinuationVar('selectAffil');
                if (empty($selectAffil) && $user['showallgroups']) {
                    $selectAffil = 1;
                }
            }
        }
    } else {
        $newuser = processInputVar("newuser", ARG_STRING);
        $data["groupid"] = getContinuationVar("groupid");
        $data["type"] = getContinuationVar("type");
        $data["isowner"] = getContinuationVar("isowner");
        $id = $data["groupid"];
        if ($data["type"] == "user") {
            $data["name"] = $usergroups[$id]["name"];
            $data["affiliationid"] = $usergroups[$id]["groupaffiliationid"];
            $data["owner"] = $usergroups[$id]["owner"];
            $data["editgroupid"] = $usergroups[$id]["editgroupid"];
            $data["initialmax"] = $usergroups[$id]["initialmaxtime"];
            $data["totalmax"] = $usergroups[$id]["totalmaxtime"];
            $data["maxextend"] = $usergroups[$id]["maxextendtime"];
            $data["overlap"] = $usergroups[$id]["overlapResCount"];
            $tmp = explode('@', $data['name']);
            $data['name'] = $tmp[0];
            if ($user['showallgroups'] || array_key_exists(1, $tmp) && $tmp[1] != $user['affiliation']) {
                $selectAffil = 1;
            } else {
                $selectAffil = 0;
            }
        } else {
            list($grouptype, $data["name"]) = explode('/', $resourcegroups[$id]["name"]);
            $ownerid = $resourcegroups[$id]["ownerid"];
        }
    }
    $editusergroup = 0;
    if ($data['type'] != 'user') {
        print "<FORM action=\"" . BASEURL . SCRIPT . "#resources\" method=post>\n";
    } else {
        print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    }
    print "<DIV align=center>\n";
    if ($state) {
        if ($data["type"] == "user") {
            print "<H2>Add User Group</H2>\n";
        } else {
            print "<H2>Add Resource Group</H2>\n";
        }
    } else {
        if ($data["type"] == "user") {
            print "<H2>Edit User Group</H2>\n";
            print "{$usergroups[$data['groupid']]['name']}<br>\n";
            $editusergroup = 1;
        } else {
            print "<H2>Edit Resource Group</H2>\n";
        }
    }
    if ($state && $data["type"] == "user" || $data["isowner"] || $data["type"] == "resource") {
        print "<TABLE>\n";
        if ($data["type"] == "resource") {
            print "  <TR>\n";
            print "    <TH align=right>Type:</TH>\n";
            print "    <TD>\n";
            if ($state && $submitErr) {
                $resourcetypeid = $data['resourcetypeid'];
            } else {
                $resourcetypeid = array_search($grouptype, $resourcetypes["resources"]);
            }
            if ($state) {
                printSelectInput("resourcetypeid", $resourcetypes["resources"], $resourcetypeid);
            } else {
                print "      {$grouptype}\n";
            }
            print "    </TD>\n";
            print "    <TD></TD>\n";
            print "  </TR>\n";
        }
        print "  <TR>\n";
        print "    <TH align=right>Name:</TH>\n";
        print "    <TD><INPUT type=text name=name value=\"{$data['name']}\" ";
        print "maxlength=30>";
        if ($data['type'] == 'user' && $selectAffil) {
            print "@";
            printSelectInput('affiliationid', $affils, $data['affiliationid']);
        }
        print "</TD>\n";
        print "    <TD>";
        printSubmitErr(GRPNAMEERR);
        print "</TD>\n";
        print "  </TR>\n";
        if ($data["type"] == "user") {
            print "  <TR>\n";
            print "    <TH align=right>Owner:</TH>\n";
            print "    <TD><INPUT type=text name=owner value=\"" . $data["owner"];
            print "\"></TD>\n";
            print "    <TD>";
            printSubmitErr(GRPOWNER);
            print "</TD>\n";
            print "  </TR>\n";
            print "  <TR>\n";
            print "    <TH align=right>Editable by:</TH>\n";
            print "    <TD>\n";
            if (!empty($data['editgroupid']) && !array_key_exists($data['editgroupid'], $affilusergroups)) {
                $affilusergroups[$data['editgroupid']] = array('name' => getUserGroupName($data['editgroupid'], 1));
                uasort($affilusergroups, "sortKeepIndex");
            }
            printSelectInput("editgroupid", $affilusergroups, $data["editgroupid"]);
            print "    </TD>\n";
            print "    <TD></TD>";
            print "  </TR>\n";
            print "  <TR>\n";
            print "    <TH align=right>Initial Max Time (minutes):</TH>\n";
            print "    <TD><INPUT type=text name=initialmax value=\"";
            print $data["initialmax"] . "\" maxlength=4></TD>\n";
            print "    <TD>";
            printSubmitErr(INITIALMAXERR);
            print "</TD>\n";
            print "  </TR>\n";
            print "  <TR>\n";
            print "    <TH align=right>Total Max Time (minutes):</TH>\n";
            print "    <TD><INPUT type=text name=totalmax value=\"";
            print $data["totalmax"] . "\" maxlength=4></TD>\n";
            print "    <TD>";
            printSubmitErr(TOTALMAXERR);
            print "</TD>\n";
            print "  </TR>\n";
            print "  <TR>\n";
            print "    <TH align=right>Max Extend Time (minutes):</TH>\n";
            print "    <TD><INPUT type=text name=maxextend value=\"";
            print $data["maxextend"] . "\" maxlength=4></TD>\n";
            print "    <TD>";
            printSubmitErr(MAXEXTENDERR);
            print "</TD>\n";
            print "  </TR>\n";
            if ($viewmode == ADMIN_DEVELOPER) {
                print "  <TR>\n";
                print "    <TH align=right>Max Overlapping Reservations:</TH>\n";
                print "    <TD><INPUT type=text name=overlap value=\"";
                print $data["overlap"] . "\" maxlength=4></TD>\n";
                print "    <TD>";
                printSubmitErr(MAXOVERLAPERR);
                print "</TD>\n";
                print "  </TR>\n";
            }
        } else {
            print "  <TR>\n";
            print "    <TH align=right>Owning User Group:</TH>\n";
            print "    <TD>\n";
            if (!array_key_exists($ownerid, $affilusergroups)) {
                $affilusergroups[$ownerid] = $usergroups[$ownerid];
                uasort($affilusergroups, "sortKeepIndex");
            }
            printSelectInput("ownergroup", $affilusergroups, $ownerid);
            print "    </TD>\n";
            print "    <TD></TD>\n";
            print "  </TR>\n";
        }
        print "</TABLE>\n";
        print "<TABLE>\n";
        print "  <TR valign=top>\n";
        print "    <TD>\n";
        if ($state) {
            $cdata = array('type' => $data['type'], 'isowner' => $data['isowner']);
            $cont = addContinuationsEntry('submitAddGroup', $cdata);
            print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
            print "      <INPUT type=submit value=\"Add Group\">\n";
        } else {
            $cdata = array('type' => $data['type'], 'groupid' => $data['groupid'], 'isowner' => $data['isowner']);
            if ($data['type'] == 'resource') {
                $cdata['resourcetypeid'] = $resourcetypeid;
            } else {
                $cdata['selectAffil'] = $selectAffil;
            }
            $cont = addContinuationsEntry('confirmEditGroup', $cdata);
            print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
            print "      <INPUT type=submit value=\"Confirm Changes\">\n";
        }
        print "      </FORM>\n";
        print "    </TD>\n";
        print "    <TD>\n";
        print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        print "      <INPUT type=hidden name=mode value=viewGroups>\n";
        print "      <INPUT type=submit value=Cancel>\n";
        print "      </FORM>\n";
        print "    </TD>\n";
        print "  </TR>\n";
        print "</TABLE>\n";
    }
    if ($data["type"] != "user") {
        return;
    }
    if ($editusergroup) {
        print "<H3>Group Membership</H3>\n";
        if ($mode == "addGroupUser" && !($submitErr & IDNAMEERR)) {
            print "<font color=\"#008000\">{$newuser} successfully added to group";
            print "</font><br><br>\n";
        }
        if ($mode == "deleteGroupUser") {
            print "<font color=\"#008000\">{$newuser} successfully deleted from ";
            print "group</font><br><br>\n";
        }
        $groupmembers = getUserGroupMembers($data["groupid"]);
        print "<TABLE border=1>\n";
        print "  <TR>\n";
        print "  <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        print "    <TD align=right><INPUT type=submit value=Add></TD>\n";
        print "    <TD><INPUT type=text name=newuser maxlength=80 size=40 ";
        if ($submitErr & IDNAMEERR) {
            print "value=\"{$newuser}\"></TD>\n";
        } else {
            print "></TD>\n";
        }
        if ($submitErr) {
            print "    <TD>\n";
            printSubmitErr(IDNAMEERR);
            print "    </TD>\n";
        }
        $cont = addContinuationsEntry('addGroupUser', $data);
        print "  <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
        print "  </FORM>\n";
        print "  </TR>\n";
        foreach ($groupmembers as $id => $login) {
            print "  <TR>\n";
            print "    <TD>\n";
            print "      <FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
            print "      <INPUT type=submit value=Delete>\n";
            $data['userid'] = $id;
            $data['newuser'] = $login;
            $cont = addContinuationsEntry('deleteGroupUser', $data);
            print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
            print "      </FORM>\n";
            print "    </TD>\n";
            print "    <TD>{$login}</TD>\n";
            print "  </TR>\n";
        }
        print "</TABLE>\n";
    }
}
Example #13
0
function editVMInfo()
{
    print "<h2>Manage Virtual Hosts</h2>\n";
    $profiles = getVMProfiles();
    uasort($profiles, 'sortKeepIndex');
    if (checkUserHasPerm('Manage VM Profiles')) {
        print "<div id=\"mainTabContainer\" dojoType=\"dijit.layout.TabContainer\"\n";
        print "     style=\"width:650px;height:600px\">\n";
        print "<div id=\"vmhosts\" dojoType=\"dijit.layout.ContentPane\" title=\"VM Hosts\">\n";
    }
    print "<div dojoType=\"dijit.Dialog\"\n";
    print "     id=\"messages\">\n";
    print "<span id=messagestext></span>";
    print "<button id=\"messagesokbtn\"></button>\n";
    print "<button onclick=\"dijit.byId('messages').hide()\">Cancel</button>\n";
    print "</div>\n";
    $newmsg = "To create a new Virtual Host, change the state of a computer to<br>\n" . "'vmhostinuse' under Manage Computers-&gt;Computer Utilities.<br><br>\n";
    $vmhosts = getVMHostData();
    $resources = getUserResources(array("computerAdmin"), array("administer"));
    foreach ($vmhosts as $key => $value) {
        if (!array_key_exists($value['computerid'], $resources['computer'])) {
            unset($vmhosts[$key]);
        }
    }
    if (empty($vmhosts)) {
        print "You do not have access to manage any existing virtual hosts.<br><br>\n";
        print $newmsg;
    } else {
        print $newmsg;
        print "Select a Virtual Host:<br>\n";
        printSelectInput("vmhostid", $vmhosts, -1, 0, 0, 'vmhostid', 'onChange="dojo.byId(\'vmhostdata\').className = \'hidden\';"');
        $cont = addContinuationsEntry('vmhostdata');
        print "<button dojoType=\"dijit.form.Button\" id=\"fetchCompGrpsButton\">\n";
        print "\tConfigure Host\n";
        print "\t<script type=\"dojo/method\" event=onClick>\n";
        print "\t\tgetVMHostData('{$cont}');\n";
        print "\t</script>\n";
        print "</button><br><br>\n";
        print "<div id=vmhostdata class=hidden>\n";
        print "<table summary=\"\">\n";
        print "  <tr>\n";
        print "    <th align=right>VM limit:</th>\n";
        print "    <td>\n";
        $cont = addContinuationsEntry('updateVMlimit');
        print "      <input dojoType=\"dijit.form.NumberSpinner\"\n";
        print "             constraints=\"{min:1,max:" . MAXVMLIMIT . "}\"\n";
        print "             maxlength=\"3\"\n";
        print "             id=\"vmlimit\"\n";
        print "             intermediateChanges=\"true\"\n";
        print "             onChange=\"updateVMlimit('{$cont}')\">\n";
        print "    </td>\n";
        print "  </tr>\n";
        #$cont = addContinuationsEntry('changeVMprofile');
        print "  <tr>\n";
        print "    <th align=right>VM Profile:</th>\n";
        print "    <td>\n";
        #printSelectInput("vmprofileid", $profiles, -1, 0, 0, 'vmprofileid', "onchange=changeVMprofile('$cont')");
        print "      <div dojoType=\"dijit.TitlePane\" id=vmprofile></div>\n";
        print "    </td>\n";
        print "  </tr>\n";
        print "</table><br><br>\n";
        print "<div id=movevms class=hidden>\n";
        print "The following VM(s) will removed from this host at the listed ";
        print "time(s):<br>\n";
        print "<select name=movevmssel multiple id=movevmssel size=3>\n";
        print "</select><br>\n";
        print "<button dojoType=\"dijit.form.Button\" id=\"cancelBtn\">\n";
        print "\t<div>Cancel Removing of Selected VMs</div>\n";
        print "\t<script type=\"dojo/method\" event=onClick>\n";
        $cont = addContinuationsEntry('AJcancelVMmove');
        print "\t\tcancelVMmove('{$cont}');\n";
        print "\t</script>\n";
        print "</button>\n";
        print "<br><br></div>\n";
        print "<table summary=\"\"><tbody><tr>\n";
        # select for vms on host
        print "<td valign=top>\n";
        print "VMs assigned to host:<br>\n";
        print "<select name=currvms multiple id=currvms size=15 onChange=showVMstate()>\n";
        print "</select><br>\n";
        print "State of selected vm:<br>\n";
        print "<span id=vmstate></span>\n";
        print "<div id=\"noaccessdiv\" class=\"hidden\"><hr>VMs assigned to ";
        print "host that you<br>do not have access to remove:<br><br>\n";
        print "<div id=\"noaccess\"></div>\n";
        print "</div>\n";
        print "</td>\n";
        # transfer buttons
        print "<td style=\"vertical-align: middle;\">\n";
        print "<button dojoType=\"dijit.form.Button\" id=\"addBtn1\">\n";
        print "  <div style=\"width: 50px;\">&lt;-Add</div>\n";
        print "\t<script type=\"dojo/method\" event=onClick>\n";
        $cont = addContinuationsEntry('AJvmToHost');
        print "\t\tvmToHost('{$cont}');\n";
        print "\t</script>\n";
        print "</button>\n";
        print "<br>\n";
        print "<br>\n";
        print "<br>\n";
        print "<button dojoType=\"dijit.form.Button\" id=\"remBtn1\">\n";
        print "\t<div style=\"width: 50px;\">Remove</div>\n";
        print "\t<script type=\"dojo/method\" event=onClick>\n";
        $cont = addContinuationsEntry('AJvmFromHost');
        print "\t\tvmFromHost('{$cont}');\n";
        print "\t</script>\n";
        print "</button>\n";
        print "</td>\n";
        # select for unassigned vms
        print "<td valign=top>\n";
        print "Unassigned VMs:<br>\n";
        print "<select name=freevms multiple id=freevms size=20>\n";
        print "</select>\n";
        print "</td>\n";
        print "</tr><tbody/></table>\n";
        print "</div><br><br>\n";
        /*print "<div dojoType=\"dijit.Dialog\"\n";
        		print "     id=\"profileDlg\"\n";
        		print "     title=\"Change Profile\">\n";
        		print "You have selected to change the VM Profile for this host.<br>\n";
        		print "Doing this will attempt to move any future reservations on the<br>\n";
        		print "host's VMs to other VMs and will submit a reload reservation for this<br>\n";
        		print "host after any active reservations on its VMs.<br><br>\n";
        		print "Are you sure you want to do this?<br><br>\n";
        		print "<button onclick=\"submitChangeProfile()\">Update VM Profile</button>\n";
        		print "<button onclick=\"dijit.byId('profileDlg').hide()\">Cancel</button>\n";
        		print "<input type=hidden id=changevmcont>\n";
        		print "</div>\n";*/
    }
    print "</div>\n";
    if (!checkUserHasPerm('Manage VM Profiles')) {
        return;
    }
    $imagetypes = getImageTypes();
    print "<div id=\"vmprofiles\" dojoType=\"dijit.layout.ContentPane\" title=\"VM Host Profiles\">\n";
    if (count($profiles)) {
        print "<span id=\"selectprofilediv\">";
    } else {
        print "<span id=\"selectprofilediv\" class=\"hidden\">";
    }
    print "<br>Select a profile to configure:<br>\n";
    print "<select name=\"profileid\" id=\"profileid\" onChange=\"dojo.byId('vmprofiledata').className = 'hidden';\">\n";
    foreach ($profiles as $id => $item) {
        print "  <option value=\"{$id}\">{$item['profilename']}</option>\n";
    }
    print "</select>\n";
    $cont = addContinuationsEntry('AJprofiledata');
    print "<button dojoType=\"dijit.form.Button\" id=\"fetchProfilesBtn\">\n";
    print "\tConfigure Profile\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    print "\t\tgetVMprofileData('{$cont}');\n";
    print "\t</script>\n";
    print "</button>\n";
    print "</span>\n";
    $cont = addContinuationsEntry('AJnewProfile');
    print "<button dojoType=\"dijit.form.Button\" id=\"newProfilesBtn\">\n";
    print "\tNew Profile...\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    print "\t\tnewProfile('{$cont}');\n";
    print "\t</script>\n";
    print "</button>";
    print "<br><br>\n";
    print "<div id=vmprofiledata class=hidden>\n";
    $cont = addContinuationsEntry('AJdelProfile');
    print "<button dojoType=\"dijit.form.Button\" id=\"delProfilesBtn\">\n";
    print "\tDelete this Profile\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    print "\t\tdelProfile('{$cont}');\n";
    print "\t</script>\n";
    print "</button><br><br>";
    $cont = addContinuationsEntry('AJupdateVMprofileItem');
    print "(Click a value to edit it)<br>\n";
    print "(* denotes required fields)<br>\n";
    print "<input type=hidden id=pcont value=\"{$cont}\">\n";
    print "<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=right>Name:*</th>\n";
    print "    <td><span id=pname dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pname', 'profilename');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Image:</th>\n";
    print "    <td><span id=pimage dojoType=\"dijit.form.FilteringSelect\" searchAttr=\"name\" onchange=\"updateProfile('pimage', 'imageid');\" style=\"width: 420px\" required=\"false\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Resource Path:</th>\n";
    print "    <td><span id=presourcepath dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('presourcepath', 'resourcepath');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"resourcepathhelp\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Folder Path:</th>\n";
    print "    <td><span id=pfolderpath dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pfolderpath', 'folderpath');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"folderpathhelp\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Repository Path:</th>\n";
    print "    <td><span id=prepositorypath dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('prepositorypath', 'repositorypath');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"repositorypathhelp\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Repository Image Type:</th>\n";
    print "    <td>\n";
    printSelectInput("", $imagetypes, -1, 0, 0, 'prepositoryimgtype', 'dojoType="dijit.form.Select" onChange="updateProfile(\'prepositoryimgtype\', \'repositoryimagetypeid\');"');
    print "    <img tabindex=0 src=\"images/helpicon.png\" id=\"repositoryimgtypehelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Virtual Disk Path:*</th>\n";
    print "    <td><span id=pdspath dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pdspath', 'datastorepath');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"dspathhelp\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Virtual Disk Image Type:*</th>\n";
    print "    <td>\n";
    printSelectInput("", $imagetypes, -1, 0, 0, 'pdatastoreimgtype', 'dojoType="dijit.form.Select" onChange="updateProfile(\'pdatastoreimgtype\', \'datastoreimagetypeid\');"');
    print "    <img tabindex=0 src=\"images/helpicon.png\" id=\"datastoreimgtypehelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Virtual Disk Mode:*</th>\n";
    print "    <td><select id=pvmdisk dojoType=\"dijit.form.FilteringSelect\" searchAttr=\"name\" onchange=\"updateProfile('pvmdisk', 'vmdisk');\"></select><img tabindex=0 src=\"images/helpicon.png\" id=\"vmdiskhelp\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>VM Working Directory Path:</th>\n";
    print "    <td><span id=pvmpath dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pvmpath', 'vmpath');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"vmpathhelp\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>VM Network 0:*</th>\n";
    print "    <td><span id=pvs0 dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pvs0', 'virtualswitch0');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"vs0help\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>VM Network 1:*</th>\n";
    print "    <td><span id=pvs1 dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pvs1', 'virtualswitch1');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"vs1help\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>VM Network 2:</th>\n";
    print "    <td><span id=pvs2 dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pvs2', 'virtualswitch2');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"vs2help\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>VM Network 3:</th>\n";
    print "    <td><span id=pvs3 dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pvs3', 'virtualswitch3');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"vs3help\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Generate eth0 MAC:*</th>\n";
    print "    <td><select id=pgenmac0 dojoType=\"dijit.form.Select\" onchange=\"updateProfile('pgenmac0', 'eth0generated');\">\n";
    print "    <option value=\"1\">Yes</option>\n";
    print "    <option value=\"0\">No</option>\n";
    print "    </select><img tabindex=0 src=\"images/helpicon.png\" id=\"genmac0help\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Generate eth1 MAC:*</th>\n";
    print "    <td><select id=pgenmac1 dojoType=\"dijit.form.Select\" onchange=\"updateProfile('pgenmac1', 'eth1generated');\">\n";
    print "    <option value=\"1\">Yes</option>\n";
    print "    <option value=\"0\">No</option>\n";
    print "    </select><img tabindex=0 src=\"images/helpicon.png\" id=\"genmac1help\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>RSA Public Key:</th>\n";
    print "    <td>\n";
    print "      <span id=prsapub dojoType=\"dijit.InlineEditBox\" editor=\"dijit.form.Textarea\" onChange=\"updateProfile('prsapub','rsapub')\"></span>\n";
    print "      <img tabindex=0 src=\"images/helpicon.png\" id=\"rsapubhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>RSA Private Key File:</th>\n";
    print "    <td>\n";
    print "      <span id=prsakey dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('prsakey','rsakey');\"></span>\n";
    print "      <img tabindex=0 src=\"images/helpicon.png\" id=\"rsakeyhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Username:</th>\n";
    print "    <td><span id=pusername dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pusername', 'username');\"></span><img tabindex=0 src=\"images/helpicon.png\" id=\"usernamehelp\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Password:</th>\n";
    print "    <td><input type=password id=ppassword onkeyup=\"checkProfilePassword();\"></input><img tabindex=0 src=\"images/helpicon.png\" id=\"passwordhelp\" /></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Confirm:</th>\n";
    print "    <td>\n";
    print "      <input type=password id=ppwdconfirm onkeyup=\"checkProfilePassword();\"></input>\n";
    print "      <span id=ppwdmatch></span>\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <td></td>\n";
    print "    <td>\n";
    print "      <button dojoType=\"dijit.form.Button\" id=\"savePwdBtn\">\n";
    print "        Save Password\n";
    print "        <script type=\"dojo/method\" event=onClick>\n";
    print "        updateProfile('ppassword', 'password');\n";
    print "        </script>\n";
    print "      </button>\n";
    print "      <span id=savestatus></span>\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "</table>\n";
    print "</div>\n";
    print "</div>\n";
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"resourcepathhelp\">\n";
    print i("Resource Path only needs to be configured if VMware vCenter is used. It defines the location where VMs will be created in the vCenter inventory tree. The inventory tree contains at least one Datacenter, and may also contain Folders, Clusters, and Resource Pools.<br>Example: /DatacenterA/Folder1/Cluster2/ResourcePool3");
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"folderpathhelp\">\n";
    print i("Folder Path only needs to be configured if VMware vCenter is used. It defines the location where VMs will reside according to the vSphere Client's 'VMs and Templates' inventory view. This view will contain at least 1 Datacenter at the root level of the tree. Underneath each Datacenter, VMs may optionally be organized into VM Folders. Example: /DatacenterA/VCL_VMs");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"repositorypathhelp\">\n";
    print i("(Optional) The path where master copies of images are stored which are used to transfer images to VM host datastores or to other repositories. This is required if multiple management nodes need to share images. VMs do not run directly off of the images stored in the repository. It can refer to and be mounted on either the management node or VM host.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"repositoryimgtypehelp\">\n";
    print i("Virtual disk type of the images stored here.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"dspathhelp\">\n";
    print i("The location where master copies of images are stored which are used by running VMs. It can be either on local or network storge. If on network storage, it can be shared among multiple hosts.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"datastoreimgtypehelp\">\n";
    print i("Virtual disk type of the images stored here.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"vmdiskhelp\">\n";
    print i("Defines whether the Virtual Disk Path storage is dedicated to a single host or shared among multiple hosts. If set to dedicated, Repository Path must be definied and VCL will remove copies of images in the Virtual Disk Path to free up space if they are not being used.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"vmpathhelp\">\n";
    print i("(Optional) This is the path on VM host where VM working directories will reside. If not configured, the Datastore Path location will be used. It can be either on local or network storge. It should be dedicated for each VM host and should be optimized for read-write performance.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"vs0help\">\n";
    print i("The VM Network parameters should match the network names configured on the VM host. For ESXi, the Virtual Switch parameters must match the Virtual Machine Port Group Network Labels configured in the vSphere Client. VM Network 0 should be your public or private network.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"vs1help\">\n";
    print i("The VM Network parameters should match the network names configured on the VM host. For ESXi, the Virtual Switch parameters must match the Virtual Machine Port Group Network Labels configured in the vSphere Client. VM Network 1 should be your public or private network.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"vs2help\">\n";
    print i("(Optional) The VM Network parameters should match the network names configured on the VM host. For ESXi, the Virtual Switch parameters must match the Virtual Machine Port Group Network Labels configured in the vSphere Client. VM Network 2 is optional for connecting the VM to additional networks.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"vs3help\">\n";
    print i("(Optional) The VM Network parameters should match the network names configured on the VM host. For ESXi, the Virtual Switch parameters must match the Virtual Machine Port Group Network Labels configured in the vSphere Client. VM Network 3 is optional for connecting the VM to additional networks.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"genmac0help\">\n";
    print i("Specifies whether VMs are assigned MAC addresses defined in the VCL database or if random MAC addresses should be assigned.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"genmac1help\">\n";
    print i("Specifies whether VMs are assigned MAC addresses defined in the VCL database or if random MAC addresses should be assigned.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"rsapubhelp\">\n";
    print i("(Optional) In order to encrypt the VM Host password in the database, create an RSA public/private key pair on the relevant management node. Enter the public key here. Note that while this value will be available to every management node in your system, only those management nodes with the designated private key will be able to decrypt the password.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"rsakeyhelp\">\n";
    print i("(Optional) In order to decrypt an encrypted VM Host password, enter the path to a private key on the management node. Any management node without this private key will not be able to decrypt the password.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"usernamehelp\">\n";
    print i("Name of the administrative or root user residing on the VM host.");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"passwordhelp\">\n";
    print i("Password of the administrative or root user residing on the VM host.");
    print "</div>\n";
}
Example #14
0
function printStartEndTimeForm2($day, $time, $count, $startend)
{
    $days = array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
    print "    <TD>\n";
    printSelectInput("{$startend}" . "Day[{$count}]", $days, $day);
    $name = $startend . "Time[{$count}]";
    print "      <INPUT type=text name={$name} value=\"{$time}\" size=8 maxlength=8>\n";
    print "    </TD>\n";
}
Example #15
0
function selectStatistics()
{
    global $submitErr, $user;
    list($month1, $day1, $year1) = explode(',', date('n,j,Y', time() - SECINDAY * 6));
    list($month2, $day2, $year2) = explode(',', date('n,j,Y', time()));
    print "<H2>" . i("Statistic Information") . "</H2>\n";
    if ($submitErr) {
        printSubmitErr(STARTERR);
        printSubmitErr(ENDERR);
        printSubmitErr(ORDERERR);
        $monthkey1 = processInputVar("month1", ARG_NUMERIC);
        $daykey1 = processInputVar("day1", ARG_NUMERIC);
        $yearkey1 = processInputVar("year1", ARG_NUMERIC);
        $monthkey2 = processInputVar("month2", ARG_NUMERIC);
        $daykey2 = processInputVar("day2", ARG_NUMERIC);
        $yearkey2 = processInputVar("year2", ARG_NUMERIC);
        $affilid = processInputVar("affilid", ARG_NUMERIC);
    } else {
        $affilid = $user['affiliationid'];
    }
    print i("Select a starting date:") . "<br>\n";
    $months = array('');
    for ($i = 2 * SECINDAY, $cnt = 1; $cnt < 13; $i += SECINMONTH, $cnt++) {
        $months[$cnt] = strftime('%B', $i);
    }
    unset($months[0]);
    $days = array();
    for ($i = 0; $i < 32; $i++) {
        array_push($days, $i);
    }
    unset($days[0]);
    $years = array();
    for ($i = 2004; $i <= $year2; $i++) {
        $years[$i] = $i;
    }
    if (!$submitErr) {
        $monthkey1 = $month1;
        $daykey1 = array_search($day1, $days);
        $yearkey1 = array_search($year1, $years);
    }
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    printSelectInput("month1", $months, $monthkey1);
    printSelectInput("day1", $days, $daykey1);
    printSelectInput("year1", $years, $yearkey1);
    print "<br>\n";
    print i("Select an ending date:") . "<br>\n";
    if (!$submitErr) {
        $monthkey2 = $month2;
        $daykey2 = array_search($day2, $days);
        $yearkey2 = array_search($year2, $years);
    }
    printSelectInput("month2", $months, $monthkey2);
    printSelectInput("day2", $days, $daykey2);
    printSelectInput("year2", $years, $yearkey2);
    print "<br>\n";
    $cont = addContinuationsEntry('viewstats');
    if (checkUserHasPerm('View Statistics by Affiliation')) {
        print "<input type=radio id=stattype1 name=continuation value=\"{$cont}\" checked>\n";
        print "<label for=stattype1>" . i("View General Statistics") . "</label> - \n";
        print i("Select an affiliation:") . "\n";
        $affils = getAffiliations();
        if (!array_key_exists($affilid, $affils)) {
            $affilid = $user['affiliationid'];
        }
        $affils = array_reverse($affils, TRUE);
        $affils[0] = "All";
        $affils = array_reverse($affils, TRUE);
        printSelectInput("affilid", $affils, $affilid);
        print "<br>\n";
        $query = "SELECT id, " . "prettyname " . "FROM provisioning " . "ORDER BY prettyname";
        $qh = doQuery($query);
        $provs = array();
        while ($row = mysql_fetch_assoc($qh)) {
            $provs[$row['id']] = $row['prettyname'];
        }
        $cdata = array('mode' => 'provisioning', 'provs' => $provs);
        $cont2 = addContinuationsEntry('viewstats', $cdata);
        print "<input type=radio id=stattype3 name=continuation value=\"{$cont2}\">\n";
        print "<label for=stattype3>" . i("View Statistics by provisioning engine");
        print "</label>:\n";
        printSelectInput("provid", $provs);
        print "<br>\n";
    } else {
        print "<INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    }
    print "<INPUT type=submit value=" . i("Submit") . ">\n";
    print "</FORM>\n";
}
Example #16
0
function printAddSubimage()
{
    # FIXME need to pass on form data so if something is changed in the edit
    # page, it remains changed when we get back there
    $imageid = getContinuationVar("imageid");
    $images = getImages();
    $data = processImageInput(0);
    print "<H2>Add Subimage</H2>\n";
    if (array_key_exists("subimages", $images[$imageid]) && count($images[$imageid]["subimages"])) {
        print "Current subimages for <strong>{$images[$imageid]["prettyname"]}:";
        print "</strong><br><br>\n";
        foreach ($images[$imageid]["subimages"] as $imgid) {
            print "<img src=images/blank.gif width=25 height=1>\n";
            print "{$images[$imgid]["prettyname"]}<br>\n";
        }
        print "<br>Add additional subimage:<br><br>\n";
    } else {
        print "There are currently no subimages for <strong>";
        print "{$images[$imageid]["prettyname"]}</strong>.<br><br>";
    }
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    printSelectInput("addimageid", $images, -1, 1);
    $cdata = $data;
    $cdata['imageid'] = $imageid;
    $cont = addContinuationsEntry('submitAddSubimage', $cdata, SECINDAY, 0, 1, 1);
    print "<INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "<br><INPUT type=submit value=Add>\n";
    print "</FORM>\n";
}
Example #17
0
function blockAllocationForm()
{
    global $user, $days, $mode;
    $blockid = getContinuationVar('blockid', '');
    $data = getBlockAllocationData($blockid);
    if ($mode == 'newBlockAllocation') {
        $brname = '';
        $imageid = '';
        print "<h2>" . i("New Block Allocation") . "</h2>\n";
    } elseif ($mode == 'editBlockAllocation') {
        print "<h2>" . i("Edit Block Allocation") . "</h2>\n";
    } elseif ($mode == 'requestBlockAllocation') {
        print "<h2>" . i("Request New Block Allocation") . "</h2>\n";
        print i("Complete the following form to request a new block allocation. Your request will need to be approved by a VCL admin before it is created.");
        print "<br><br>\n";
    }
    $resources = getUserResources(array("imageAdmin", "imageCheckOut"));
    $resources["image"] = removeNoCheckout($resources["image"]);
    print "<table summary=\"\">\n";
    if ($mode != 'requestBlockAllocation') {
        print "  <tr>\n";
        print "    <th align=right>" . i("Name:") . "</th>\n";
        print "    <td>\n";
        print "      <input type=\"text\" value=\"{$data['name']}\" dojoType=\"dijit.form.ValidationTextBox\" ";
        print "id=\"brname\" required=\"true\" invalidMessage=\"";
        print i("Name can only contain letters, numbers, spaces, dashes(-), parenthesis, and periods(.) and can be from 3 to 80 characters long");
        print "\" regExp=\"^([-a-zA-Z0-9\\. \\(\\)]){3,80}\$\" style=\"width: 300px\" ";
        print "postCreate=\"dijit.byId('brname').focus();\">\n";
        print "    </td>\n";
        print "  </tr>\n";
        print "  <tr>\n";
        print "    <th align=right>" . i("Owner:") . "</th>\n";
        print "    <td>\n";
        $initval = $data['owner'];
        if (empty($initval)) {
            $initval = "{$user['unityid']}@{$user['affiliation']}";
        }
        print "      <input type=\"text\" value=\"{$initval}\" dojoType=\"dijit.form.ValidationTextBox\" ";
        print "id=\"browner\" required=\"true\" invalidMessage=\"" . i("Unknown user") . "\" style=\"width: 300px\" ";
        print "validator=\"checkOwner\" onFocus=\"ownerFocus\">\n";
        print "    </td>\n";
        print "  </tr>\n";
    }
    print "  <tr>\n";
    print "    <th align=right>" . i("Environment") . ":</th>\n";
    print "    <td>\n";
    if (USEFILTERINGSELECT && count($resources['image']) < FILTERINGSELECTTHRESHOLD) {
        print "      <select dojoType=\"dijit.form.FilteringSelect\" id=imagesel style=\"width: 300px\" ";
        print "queryExpr=\"*\${0}*\" highlightMatch=\"all\" autoComplete=\"false\" ";
        print "onChange=\"clearCont2();\">\n";
    } else {
        print "      <select id=imagesel onChange=\"clearCont2();\">";
    }
    foreach ($resources['image'] as $id => $name) {
        if ($id == $data['imageid']) {
            print "        <option value=\"{$id}\" selected>{$name}</option>\n";
        } else {
            print "        <option value=\"{$id}\">{$name}</option>\n";
        }
    }
    print "      </select>\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("User group") . ":</th>\n";
    print "    <td>\n";
    $groups = getUserGroups(0, $user['affiliationid']);
    if (USEFILTERINGSELECT && count($groups) < FILTERINGSELECTTHRESHOLD) {
        print "      <select dojoType=\"dijit.form.FilteringSelect\" id=groupsel style=\"width: 300px\" ";
        print "queryExpr=\"*\${0}*\" highlightMatch=\"all\" autoComplete=\"false\" ";
        print "onChange=\"clearCont2();\">\n";
    } else {
        print "      <select id=groupsel onChange=\"clearCont2();\">";
    }
    $extragroups = array();
    if ($mode == 'requestBlockAllocation') {
        print "        <option value=\"0\">(" . i("group not listed") . ")</option>\n";
    }
    if (!empty($data['usergroupid']) && !array_key_exists($data['usergroupid'], $groups)) {
        $groups[$data['usergroupid']] = array('name' => getUserGroupName($data['usergroupid'], 1));
        $extragroups[$data['usergroupid']] = array('name' => getUserGroupName($data['usergroupid'], 1));
        uasort($groups, "sortKeepIndex");
    }
    foreach ($groups as $id => $group) {
        if ($group['name'] == ' None@') {
            continue;
        }
        if ($id == $data['usergroupid']) {
            print "        <option value=\"{$id}\" selected>{$group['name']}</option>\n";
        } else {
            print "        <option value=\"{$id}\">{$group['name']}</option>\n";
        }
    }
    print "      </select>\n";
    print "      <img src=\"images/helpicon.png\" id=\"grouphelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("Number of seats") . ":</th>\n";
    print "    <td>\n";
    print "      <input dojoType=\"dijit.form.NumberSpinner\" value=\"{$data['seats']}\" ";
    print "smallDelta=1 largeDelta=5 constraints=\"{min:" . MIN_BLOCK_MACHINES . ", max:";
    print MAX_BLOCK_MACHINES . "}\" id=machinecnt required=\"true\" style=\"width: 70px\" filter=\"machinecntfilter\"/>\n";
    print "      <img src=\"images/helpicon.png\" id=\"seathelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "</table>\n";
    print i("Specify dates/times by:\n");
    print "<img src=\"images/helpicon.png\" id=\"repeattypehelp\" /><br>\n";
    print "<input type=\"radio\" name=\"datetime\" id=\"weeklyradio\" onClick=\"blockFormChangeTab('weekly');\" {$data['type']['weekly']} />\n";
    print "<label for=\"weeklyradio\">" . i("Repeating Weekly") . "</label><br>\n";
    print "<input type=\"radio\" name=\"datetime\" id=\"monthlyradio\" onClick=\"blockFormChangeTab('monthly');\" {$data['type']['monthly']} />\n";
    print "<label for=\"monthlyradio\">" . i("Repeating Monthly") . "</label><br>\n";
    print "<input type=\"radio\" name=\"datetime\" id=\"listradio\" onClick=\"blockFormChangeTab('list');\" {$data['type']['list']} />\n";
    print "<label for=\"listradio\">" . i("List of Dates/Times") . "</label><br><br>\n";
    print "<div style=\"border: 1px solid; margin-right: 8px;\">\n";
    print "<div id=\"timeTypeContainer\" dojoType=\"dijit.layout.StackContainer\"\n";
    print "     style=\"width:550px; height:240px; margin: 5px;\">\n";
    # repeating weekly
    print "<div id=\"weeklytab\" dojoType=\"dijit.layout.ContentPane\" ";
    print "title=\"" . i("Repeating Weekly") . "\" {$data['type2']['weekly']}>\n";
    print "<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("First Date of Usage") . ":</th>\n";
    print "    <td>\n";
    print "      <input type=\"text\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" id=\"wkfirstdate\" value=\"{$data['swdate']}\" />\n";
    print "    <img src=\"images/helpicon.png\" id=\"wkfdhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("Last Date of Usage") . ":</th>\n";
    print "    <td>\n";
    print "      <input type=\"text\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" id=\"wklastdate\" value=\"{$data['ewdate']}\" />\n";
    print "    <img src=\"images/helpicon.png\" id=\"wkldhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "</table>\n";
    print "<table summary=\"\">\n";
    print "<tr>\n";
    print "<th>" . i("Days") . " <img src=\"images/helpicon.png\" id=\"wkdayshelp\" /></th>\n";
    print "<th>" . i("Times") . " <img src=\"images/helpicon.png\" id=\"wktimeshelp\" /></th>\n";
    print "</tr>\n";
    print "<tr>\n";
    print "<td valign=top>\n";
    foreach ($days as $id => $day) {
        print "  <INPUT type=checkbox id=\"wdays{$id}\" value=\"{$day}\" {$data['wdayschecked'][$day]}>\n";
        print "  <label for=\"wdays{$day}\">" . i($day) . "</label><br>\n";
    }
    print "</td>\n";
    print "<td>\n";
    print i("Start") . ":<div type=\"text\" id=\"weeklyaddstart\" dojoType=\"dijit.form.TimeTextBox\" ";
    print "required=\"true\" onChange=\"blockFormWeeklyAddBtnCheck(1);\" style=\"width: 78px\"></div>\n";
    print i("End") . ":<div type=\"text\" id=\"weeklyaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" ";
    print "required=\"true\" onChange=\"blockFormWeeklyAddBtnCheck(0);\" startid=\"weeklyaddstart\" ";
    print "style=\"width: 78px\"></div>\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" ";
    print "id=\"requestBlockWeeklyAddBtn\">\n";
    print i("Add") . "\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormAddWeeklyTime();\n";
    print "  </script>\n";
    print "</button>\n";
    print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"requestBlockAddWeeklyStore\" ";
    print "data=\"blockFormAddWeeklyData\"></div>\n";
    print "<table dojoType=\"dojox.grid.DataGrid\" jsId=\"requestBlockAddWeeklyGrid\" sortInfo=1 ";
    print "store=\"requestBlockAddWeeklyStore\" style=\"width: 330px; height: 120px;\">\n";
    print "<thead>\n";
    print "<tr>\n";
    print "<th field=\"start\" width=\"102px\" formatter=\"gridTimePrimary\">";
    print i("Start") . "</th>\n";
    print "<th field=\"end\" width=\"102px\" formatter=\"timeFromTextBox\">";
    print i("End") . "</th>\n";
    print "<th field=\"remove\" width=\"80px\">" . i("Remove") . "</th>\n";
    print "</tr>\n";
    print "</thead>\n";
    print "</table>\n";
    print "</td>\n";
    print "</tr>\n";
    print "</table>\n";
    print "</div>\n";
    # repeating weekly
    # repeating monthly
    print "<div id=\"monthlytab\" dojoType=\"dijit.layout.ContentPane\" ";
    print "title=\"" . i("Repeating Monthly") . "\" {$data['type2']['monthly']}>\n";
    print "<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("First Date of Usage") . ":</th>\n";
    print "    <td>\n";
    print "      <input type=\"text\" id=\"mnfirstdate\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" value=\"{$data['smdate']}\"/>\n";
    print "    <img src=\"images/helpicon.png\" id=\"mnfdhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>" . i("Last Date of Usage") . ":</th>\n";
    print "    <td>\n";
    print "      <input type=\"text\" id=\"mnlastdate\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" value=\"{$data['emdate']}\" />\n";
    print "    <img src=\"images/helpicon.png\" id=\"mnldhelp\" />\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "</table>\n";
    $weeknumArr = array(1 => i("1st"), 2 => i("2nd"), 3 => i("3rd"), 4 => i("4th"), 5 => i("5th"));
    $dayArr = array(1 => i("Sunday"), 2 => i("Monday"), 3 => i("Tuesday"), 4 => i("Wednesday"), 5 => i("Thursday"), 6 => i("Friday"), 7 => i("Saturday"));
    print i("Repeat on the") . " ";
    printSelectInput('weeknum', $weeknumArr, $data['mnweeknumid'], 0, 0, 'mnweeknum');
    printSelectInput('day', $dayArr, $data['mndayid'], 0, 0, 'mnday');
    print " " . i("of every month") . "<br><br>\n";
    print i("Start") . ":<div type=\"text\" id=\"monthlyaddstart\" dojoType=\"dijit.form.TimeTextBox\" ";
    print "required=\"true\" onChange=\"blockFormMonthlyAddBtnCheck(1)\" style=\"width: 78px\"></div>\n";
    print i("End") . ":<div type=\"text\" id=\"monthlyaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" ";
    print "required=\"true\" onChange=\"blockFormMonthlyAddBtnCheck(0)\" startid=\"monthlyaddstart\" ";
    print "style=\"width: 78px\"></div>\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" ";
    print "id=\"requestBlockMonthlyAddBtn\">\n";
    print i("Add") . "\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormAddMonthlyTime();\n";
    print "  </script>\n";
    print "</button>\n";
    print "<img src=\"images/helpicon.png\" id=\"mntimeshelp\" />\n";
    print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"requestBlockAddMonthlyStore\" ";
    print "data=\"blockFormAddMonthlyData\"></div>\n";
    print "<table dojoType=\"dojox.grid.DataGrid\" jsId=\"requestBlockAddMonthlyGrid\" sortInfo=1 ";
    print "store=\"requestBlockAddMonthlyStore\" style=\"width: 330px; height: 120px;\">\n";
    print "<thead>\n";
    print "<tr>\n";
    print "<th field=\"start\" width=\"102px\" formatter=\"gridTimePrimary\">";
    print i("Start") . "</th>\n";
    print "<th field=\"end\" width=\"102px\" formatter=\"timeFromTextBox\">";
    print i("End") . "</th>\n";
    print "<th field=\"remove\" width=\"80px\">" . i("Remove") . "</th>\n";
    print "</tr>\n";
    print "</thead>\n";
    print "</table>\n";
    print "</div>\n";
    # repeating monthly
    # list of times
    print "<div id=\"listtab\" dojoType=\"dijit.layout.ContentPane\" ";
    print "title=\"" . i("List of Times") . "\" {$data['type2']['list']}>\n";
    print i("Date") . ":<div type=\"text\" id=\"listadddate\" dojoType=\"dijit.form.DateTextBox\" ";
    print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" style=\"width: 95px\"></div>\n";
    print i("Start") . ":<input type=\"text\" id=\"listaddstart\" dojoType=\"dijit.form.TimeTextBox\" ";
    print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" />\n";
    print i("End") . ":<input type=\"text\" id=\"listaddend\" dojoType=\"vcldojo.TimeTextBoxEnd\" ";
    print "required=\"true\" onChange=\"blockFormListAddBtnCheck\" startid=\"listaddstart\" />\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\" disabled=\"true\" ";
    print "id=\"requestBlockListAddBtn\">\n";
    print i("Add") . "\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormAddListSlot();\n";
    print "  </script>\n";
    print "</button>\n";
    print "<img src=\"images/helpicon.png\" id=\"listhelp\" />\n";
    print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"requestBlockAddListStore\" ";
    print "data=\"blockFormAddListData\"></div>\n";
    print "<div>\n";
    # grid wrapper
    print "<table dojoType=\"dojox.grid.DataGrid\" jsId=\"requestBlockAddListGrid\" sortInfo=1 ";
    print "store=\"requestBlockAddListStore\" style=\"width: 465px; height: 200px;\">\n";
    print "<thead>\n";
    print "<tr>\n";
    print "<th field=\"date1\" width=\"115px\" formatter=\"gridDateTimePrimary\">";
    print i("Date") . "</th>\n";
    print "<th field=\"start\" width=\"115px\" formatter=\"timeFromTextBox\">";
    print i("Start") . "</th>\n";
    print "<th field=\"end\" width=\"108px\" formatter=\"timeFromTextBox\">";
    print i("End") . "</th>\n";
    print "<th field=\"remove\" width=\"80px\">" . i("Remove") . "</th>\n";
    print "</tr>\n";
    print "</thead>\n";
    print "</table>\n";
    print "</div>\n";
    # grid wrapper
    print "</div>\n";
    # list of times
    print "</div>\n";
    # tabcontainer
    print "</div><br>\n";
    if ($mode == 'requestBlockAllocation') {
        print "<strong><big>" . i("Additional comments") . ":</big></strong>\n";
        print "<img src=\"images/helpicon.png\" id=\"commenthelp\" /><br>\n";
        print "<textarea id=\"comments\" dojoType=\"dijit.form.Textarea\" style=\"width: 400px;\">\n";
        print "</textarea><br><br>\n";
    }
    print "<button dojoType=\"dijit.form.Button\" type=\"button\" ";
    print "id=\"requestBlockSubmitBtn\">\n";
    if ($mode == 'requestBlockAllocation') {
        $btntxt = i("Submit Block Allocation Request") . "\n";
        $arg = 'request';
    } elseif ($mode == 'newBlockAllocation') {
        $btntxt = i("Submit New Block Allocation") . "\n";
        $arg = 'new';
    } elseif ($mode == 'editBlockAllocation') {
        $btntxt = i("Submit Block Allocation Changes") . "\n";
        $arg = 'edit';
    }
    print "  {$btntxt}\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormConfirm('{$arg}');\n";
    print "  </script>\n";
    print "</button>\n";
    $cont = addContinuationsEntry('AJvalidateUserid');
    print "<input type=\"hidden\" id=\"valuseridcont\" value=\"{$cont}\">\n";
    print "<div id=\"confirmDialog\" dojoType=\"dijit.Dialog\" title=\"";
    print i("Confirm Block Allocation") . "\">\n";
    print "<h2>" . i("Confirm Block Allocation") . "</h2>\n";
    if ($mode == 'requestBlockAllocation') {
        print i("Please confirm the following values and then click <strong>Submit Block Allocation Request</strong>");
    } else {
        printf(i("Please confirm the following values and then click <strong>%s</strong>"), $btntxt);
    }
    print "<br><br>\n<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=\"right\"><span id=\"confnametitle\"></span></th>\n";
    print "    <td><span id=\"confname\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\"><span id=\"confownertitle\"></span></th>\n";
    print "    <td><span id=\"confowner\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\">" . i("Environment") . ":</th>\n";
    print "    <td><span id=\"confimage\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\">" . i("User group") . ":</th>\n";
    print "    <td><span id=\"confgroup\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\">" . i("Seats") . ":</th>\n";
    print "    <td><span id=\"confseats\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=\"right\">" . i("Repeating") . ":</th>\n";
    print "    <td><span id=\"confrepeat\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr valign=\"top\">\n";
    print "    <th align=\"right\"><span id=\"conftitle1\"></span></th>\n";
    print "    <td><span id=\"confvalue1\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr valign=\"top\">\n";
    print "    <th align=\"right\"><span id=\"conftitle2\"></span></th>\n";
    print "    <td><span id=\"confvalue2\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr valign=\"top\">\n";
    print "    <th align=\"right\"><span id=\"conftitle3\"></span></th>\n";
    print "    <td><span id=\"confvalue3\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr valign=\"top\">\n";
    print "    <th align=\"right\"><span id=\"conftitle4\"></span></th>\n";
    print "    <td><span id=\"confvalue4\"></span></td>\n";
    print "  </tr>\n";
    print "</table>\n";
    print "<span id=\"commentsnote\" class=\"hidden\">" . i("Your additional comments will be submitted.") . "<br><br></span>\n";
    $data = array('extragroups' => $extragroups);
    if ($mode == 'newBlockAllocation') {
        $data['method'] = 'new';
    } elseif ($mode == 'editBlockAllocation') {
        $data['method'] = 'edit';
        $data['blockid'] = $blockid;
    } elseif ($mode == 'requestBlockAllocation') {
        $data['method'] = 'request';
    }
    $cont = addContinuationsEntry('AJblockAllocationSubmit', $data, SECINWEEK, 1, 0);
    print "<input type=\"hidden\" id=\"submitcont\" value=\"{$cont}\">\n";
    print "<input type=\"hidden\" id=\"submitcont2\">\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\">\n";
    print "  {$btntxt}\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    blockFormSubmit('{$arg}');\n";
    print "  </script>\n";
    print "</button>\n";
    print "<button dojoType=\"dijit.form.Button\" type=\"button\">\n";
    print i("Cancel") . "\n";
    print "  <script type=\"dojo/method\" event=\"onClick\">\n";
    print "    clearHideConfirmForm();\n";
    print "  </script>\n";
    print "</button>\n";
    print "</div>\n";
    # confirm dialog
    # tooltips
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"seathelp\">\n";
    print "<div style=\"width: 440px;\">\n";
    print i("This is the number of environments that will be loaded for the Block Allocation.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"grouphelp\">\n";
    print "<div style=\"width: 440px;\">\n";
    print i("User in this user group will be able to make reservations for the computers set aside for this block allocation.  If you do not see an applicable user group listed, please select \"<font color=\"blue\">(group not listed)</font>\" and describe the group you need in the <strong>Additional Comments</strong> section at the bottom of the page. If this is for a class, make sure to list the course and section number.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"repeattypehelp\">\n";
    print "<div style=\"width: 440px;\">\n";
    print i("For repeating block allocations, there are three ways you can enter the dates and times:") . "<br>\n";
    print "<ul>\n";
    print "<li>" . i("Repeating Weekly - Use this if the block allocation needs to occur every week.") . " ";
    print i("You can make it repeat on a single day each week or on multiple days.  The time(s) that it occurs will be the same on all days. You can list as many times as needed.") . "</li>\n";
    print "<li>" . i("Repeating Monthly - Use this if the block allocation needs to occur on a certain day of the month (i.e. 2nd Tuesday each month). You can list as many times as needed for that day of the month.") . "</li>\n";
    print "<li>" . i("List of Dates/Times - Use this to specify any other cases, including single events.") . " ";
    print i("You can specify as many date/time combinations as needed.") . "</li>\n";
    print "</ul>\n";
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkfdhelp\">\n";
    print i("This is the first date the block allocation will be used.\n");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkldhelp\">\n";
    print i("This is the last date the block allocation will be used.\n");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"wkdayshelp\">\n";
    print "<div style=\"width: 340px;\">\n";
    print i("Select the checkbox for each of the days you would like the block allocation to occur. For example, check Monday, Wednesday, and Friday for a class that meets on those days.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"wktimeshelp\">\n";
    print "<div style=\"width: 340px;\">\n";
    print i("Here you specify the start and end times of the block allocation. The times will occur on each of the selected days. You might specify more than one start/end combination if you had multiple sections that met on the same day.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"mnfdhelp\">\n";
    print i("This is the first date the block allocation will be used.\n");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"mnldhelp\">\n";
    print i("This is the last date the block allocation will be used.\n");
    print "</div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"mntimeshelp\">\n";
    print "<div style=\"width: 340px;\">\n";
    print i("Here you specify the start and end times of the block allocation. You might specify more than one start/end combination if you had multiple sections that met on the same day.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"listhelp\">\n";
    print "<div style=\"width: 300px;\">\n";
    print i("Specify individual dates and times during which the block allocation will occur.");
    print "</div></div>\n";
    print "<div dojoType=\"dijit.Tooltip\" connectId=\"commenthelp\">\n";
    print "<div style=\"width: 340px;\">\n";
    print i("Enter any additional information about this block allocation. &lt; and &gt; are not allowed. If you selected \"<font color=\"blue\">(group not listed)</font>\" as the User group, make sure to clearly describe the requirements of a new user group that will be created for this block allocation.");
    print "</div></div>\n";
}
Example #18
0
function editVMInfo()
{
    global $viewmode;
    print "<h2>Manage Virtual Hosts</h2>\n";
    $profiles = getVMProfiles();
    if ($viewmode == ADMIN_DEVELOPER) {
        print "<div id=\"mainTabContainer\" dojoType=\"dijit.layout.TabContainer\"\n";
        print "     style=\"width:650px;height:600px\">\n";
        print "<div id=\"vmhosts\" dojoType=\"dijit.layout.ContentPane\" title=\"VM Hosts\">\n";
    }
    print "<div dojoType=\"dijit.Dialog\"\n";
    print "     id=\"messages\">\n";
    print "<span id=messagestext></span>";
    print "<button id=\"messagesokbtn\"></button>\n";
    print "<button onclick=\"dijit.byId('messages').hide()\">Cancel</button>\n";
    print "</div>\n";
    $newmsg = "To create a new Virtual Host, change the state of a computer to<br>\n" . "'vmhostinuse' under Manage Computers-&gt;Computer Utilities.<br><br>\n";
    $vmhosts = getVMHostData();
    $resources = getUserResources(array("computerAdmin"), array("administer"));
    foreach ($vmhosts as $key => $value) {
        if (!array_key_exists($value['computerid'], $resources['computer'])) {
            unset($vmhosts[$key]);
        }
    }
    if (empty($vmhosts)) {
        print "You do not have access to manage any existing virtual hosts.<br><br>\n";
        print $newmsg;
        return;
    }
    print $newmsg;
    print "Select a Virtual Host:<br>\n";
    printSelectInput("vmhostid", $vmhosts, -1, 0, 0, 'vmhostid');
    $cont = addContinuationsEntry('vmhostdata');
    print "<button dojoType=\"dijit.form.Button\" id=\"fetchCompGrpsButton\">\n";
    print "\tConfigure Host\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    print "\t\tgetVMHostData('{$cont}');\n";
    print "\t</script>\n";
    print "</button><br><br>\n";
    print "<div id=vmhostdata class=hidden>\n";
    print "<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=right>VM limit:</th>\n";
    print "    <td>\n";
    $cont = addContinuationsEntry('updateVMlimit');
    print "      <input dojoType=\"dijit.form.NumberSpinner\"\n";
    print "             constraints=\"{min:1,max:" . MAXVMLIMIT . "}\"\n";
    print "             maxlength=\"3\"\n";
    print "             id=\"vmlimit\"\n";
    print "             onChange=\"updateVMlimit('{$cont}')\">\n";
    print "    </td>\n";
    print "  </tr>\n";
    #$cont = addContinuationsEntry('changeVMprofile');
    print "  <tr>\n";
    print "    <th align=right>VM Profile:</th>\n";
    print "    <td>\n";
    #printSelectInput("vmprofileid", $profiles, -1, 0, 0, 'vmprofileid', "onchange=changeVMprofile('$cont')");
    print "      <div dojoType=\"dijit.TitlePane\" id=vmprofile></div>\n";
    print "    </td>\n";
    print "  </tr>\n";
    /*if(! empty($data['vmkernalnic'])) {
    		print "  <tr>\n";
    		print "    <th align=right>VM Kernal NIC:</th>\n";
    		print "    <td>{$data['vmkernalnic']}</td>\n";
    		print "  </tr>\n";
    	}*/
    print "</table><br><br>\n";
    print "<div id=movevms class=hidden>\n";
    print "The followig VM(s) will removed from this host at the listed ";
    print "time(s):<br>\n";
    print "<select name=movevmssel multiple id=movevmssel size=3>\n";
    print "</select><br>\n";
    print "<button dojoType=\"dijit.form.Button\" id=\"cancelBtn\">\n";
    print "\t<div>Cancel Removing of Selected VMs</div>\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    $cont = addContinuationsEntry('AJcancelVMmove');
    print "\t\tcancelVMmove('{$cont}');\n";
    print "\t</script>\n";
    print "</button>\n";
    print "<br><br></div>\n";
    print "<table summary=\"\"><tbody><tr>\n";
    # select for vms on host
    print "<td valign=top>\n";
    print "VMs assigned to host:<br>\n";
    print "<select name=currvms multiple id=currvms size=15 onChange=showVMstate()>\n";
    print "</select><br>\n";
    print "State of selected vm:<br>\n";
    print "<span id=vmstate></span>\n";
    print "</td>\n";
    # transfer buttons
    print "<td style=\"vertical-align: middle;\">\n";
    print "<button dojoType=\"dijit.form.Button\" id=\"addBtn1\">\n";
    print "  <div style=\"width: 50px;\">&lt;-Add</div>\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    $cont = addContinuationsEntry('AJvmToHost');
    print "\t\tvmToHost('{$cont}');\n";
    print "\t</script>\n";
    print "</button>\n";
    print "<br>\n";
    print "<br>\n";
    print "<br>\n";
    print "<button dojoType=\"dijit.form.Button\" id=\"remBtn1\">\n";
    print "\t<div style=\"width: 50px;\">Remove</div>\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    $cont = addContinuationsEntry('AJvmFromHost');
    print "\t\tvmFromHost('{$cont}');\n";
    print "\t</script>\n";
    print "</button>\n";
    print "</td>\n";
    # select for unassigned vms
    print "<td valign=top>\n";
    print "Unassigned VMs:<br>\n";
    print "<select name=freevms multiple id=freevms size=20>\n";
    print "</select>\n";
    print "</td>\n";
    print "</tr><tbody/></table>\n";
    print "</div><br><br>\n";
    /*print "<div dojoType=\"dijit.Dialog\"\n";
    	print "     id=\"profileDlg\"\n";
    	print "     title=\"Change Profile\">\n";
    	print "You have selected to change the VM Profile for this host.<br>\n";
    	print "Doing this will attempt to move any future reservations on the<br>\n";
    	print "host's VMs to other VMs and will submit a reload reservation for this<br>\n";
    	print "host after any active reservations on its VMs.<br><br>\n";
    	print "Are you sure you want to do this?<br><br>\n";
    	print "<button onclick=\"submitChangeProfile()\">Update VM Profile</button>\n";
    	print "<button onclick=\"dijit.byId('profileDlg').hide()\">Cancel</button>\n";
    	print "<input type=hidden id=changevmcont>\n";
    	print "</div>\n";*/
    print "</div>\n";
    if ($viewmode != ADMIN_DEVELOPER) {
        return;
    }
    print "<div id=\"vmprofiles\" dojoType=\"dijit.layout.ContentPane\" title=\"VM Host Profiles\">\n";
    print "<br>Select a profile to configure:<br>\n";
    printSelectInput("profileid", $profiles, -1, 0, 0, 'profileid');
    $cont = addContinuationsEntry('AJprofiledata');
    print "<button dojoType=\"dijit.form.Button\" id=\"fetchProfilesBtn\">\n";
    print "\tConfigure Profile\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    print "\t\tgetVMprofileData('{$cont}');\n";
    print "\t</script>\n";
    print "</button>";
    $cont = addContinuationsEntry('AJnewProfile');
    print "<button dojoType=\"dijit.form.Button\" id=\"newProfilesBtn\">\n";
    print "\tNew Profile...\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    print "\t\tnewProfile('{$cont}');\n";
    print "\t</script>\n";
    print "</button>";
    print "<br><br>\n";
    print "<div id=vmprofiledata class=hidden>\n";
    $cont = addContinuationsEntry('AJdelProfile');
    print "<button dojoType=\"dijit.form.Button\" id=\"delProfilesBtn\">\n";
    print "\tDelete this Profile\n";
    print "\t<script type=\"dojo/method\" event=onClick>\n";
    print "\t\tdelProfile('{$cont}');\n";
    print "\t</script>\n";
    print "</button><br><br>";
    $cont = addContinuationsEntry('AJupdateVMprofileItem');
    print "(Click a value to edit it)<br>\n";
    print "<input type=hidden id=pcont value=\"{$cont}\">\n";
    print "<table summary=\"\">\n";
    print "  <tr>\n";
    print "    <th align=right>Name:</th>\n";
    print "    <td><span id=pname dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pname', 'name');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Type:</th>\n";
    print "    <td><select id=ptype dojoType=\"dijit.form.FilteringSelect\" searchAttr=\"name\" onchange=\"updateProfile('ptype', 'vmtypeid');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Image:</th>\n";
    print "    <td><span id=pimage dojoType=\"dijit.form.FilteringSelect\" searchAttr=\"name\" onchange=\"updateProfile('pimage', 'imageid');\" style=\"width: 420px\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>NAS Share:</th>\n";
    print "    <td><span id=pnasshare dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pnasshare', 'nasshare');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Data Store Path:</th>\n";
    print "    <td><span id=pdspath dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pdspath', 'datastorepath');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>VM Path:</th>\n";
    print "    <td><span id=pvmpath dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pvmpath', 'vmpath');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Virtual Switch 0:</th>\n";
    print "    <td><span id=pvs0 dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pvs0', 'virtualswitch0');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Virtual Switch 1:</th>\n";
    print "    <td><span id=pvs1 dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pvs1', 'virtualswitch1');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>VM Disk:</th>\n";
    print "    <td><select id=pvmdisk dojoType=\"dijit.form.FilteringSelect\" searchAttr=\"name\" onchange=\"updateProfile('pvmdisk', 'vmdisk');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Username:</th>\n";
    print "    <td><span id=pusername dojoType=\"dijit.InlineEditBox\" onChange=\"updateProfile('pusername', 'username');\"></span></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Password:</th>\n";
    print "    <td><input type=password id=ppassword onkeyup=\"checkProfilePassword();\"></input></td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <th align=right>Confirm:</th>\n";
    print "    <td>\n";
    print "      <input type=password id=ppwdconfirm onkeyup=\"checkProfilePassword();\"></input>\n";
    print "      <span id=ppwdmatch></span>\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "  <tr>\n";
    print "    <td></td>\n";
    print "    <td>\n";
    print "      <button dojoType=\"dijit.form.Button\" id=\"savePwdBtn\">\n";
    print "        Save Password\n";
    print "        <script type=\"dojo/method\" event=onClick>\n";
    print "        updateProfile('ppassword', 'password');\n";
    print "        </script>\n";
    print "      </button>\n";
    print "      <span id=savestatus></span>\n";
    print "    </td>\n";
    print "  </tr>\n";
    print "</table>\n";
    print "</div>\n";
    print "</div>\n";
    print "</div>\n";
}
Example #19
0
function selectAuth()
{
    global $HTMLheader, $printedHTMLheader, $authMechs, $skin;
    $authtype = getContinuationVar('authtype', processInputVar("authtype", ARG_STRING));
    if ($authtype == '' && array_key_exists('VCLAUTHSEL', $_COOKIE)) {
        $authtype = $_COOKIE['VCLAUTHSEL'];
    }
    if (array_key_exists('clearselection', $_GET) && $_GET['clearselection'] == 1) {
        setcookie("VCLAUTHSEL", '', time() - 10, "/", COOKIEDOMAIN);
        $authtype = '';
    }
    if (array_key_exists($authtype, $authMechs)) {
        if (array_key_exists('remsel', $_POST) && $_POST['remsel'] == 1) {
            setcookie("VCLAUTHSEL", $authtype, time() + SECINYEAR, "/", COOKIEDOMAIN);
        }
        if ($authMechs[$authtype]['type'] == 'redirect') {
            header("Location: {$authMechs[$authtype]['URL']}");
            dbDisconnect();
            exit;
        } elseif ($authMechs[$authtype]['type'] == 'ldap' || $authMechs[$authtype]['type'] == 'local') {
            printLoginPageWithSkin($authtype);
            return;
        }
    }
    require_once "themes/{$skin}/page.php";
    $HTMLheader = getHeader(0);
    print $HTMLheader;
    $printedHTMLheader = 1;
    print "<H2>" . i("Welcome to the Virtual Computing Lab") . "</H2>\n";
    print "<TABLE>\n";
    print "<TR>\n";
    print "<TD nowrap class=rightborder>\n";
    print i("Please select an authentication method to use:") . "<br><br>\n";
    if (strlen($authtype)) {
        print "<font color=red>" . i("Selected method failed, please try again") . "</font><br>\n";
    }
    foreach (array_keys($authMechs) as $mech) {
        $methods["{$mech}"] = $mech;
    }
    print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post name=loginform>\n";
    /*if($skin == 'example1')
    		printSelectInput("authtype", $methods, 'EXAMPLE1 LDAP');
    	elseif($skin == 'example2')
    		printSelectInput("authtype", $methods, 'EXAMPLE2 LDAP');
    	else*/
    printSelectInput("authtype", $methods, -1, 0, 0, '', 'tabindex=1');
    print "<br><INPUT type=hidden name=mode value=selectauth>\n";
    print "<input type=checkbox id=remsel name=remsel value=1 tabindex=2>\n";
    print "<label for=remsel>" . i("Remember my selection") . "</label><br>\n";
    print "<INPUT type=submit value=\"" . i("Proceed to Login") . "\" tabindex=3 name=userid>\n";
    print "</FORM>\n";
    print "</TD>\n";
    print "<TD>\n";
    print "<h3>" . i("Explanation of authentication methods:") . "</h3>\n";
    print "<UL id=expauthul>\n";
    foreach ($authMechs as $mech) {
        print "<LI>{$mech['help']}</LI>\n";
    }
    print "</UL>\n";
    print "</TD>\n";
    print "</TR>\n";
    print "</TABLE>\n";
    print getFooter();
}
Example #20
0
function compStateChange()
{
    global $submitErr;
    print "<H2>Change State of Computers</H2>\n";
    $data = processComputerInput3();
    $computers = getComputers(1);
    if ($data['stateid'] == 10) {
        $notes = explode('@', $data['notes']);
        if (count($notes) != 2) {
            $notes[1] = "";
        }
    }
    if ($data['stateid'] == 2) {
        print "You are about to place the following computers into the ";
        print "available state:\n";
        print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    } elseif ($data['stateid'] == 10) {
        print "Please enter a reason you are changing the following computers to ";
        print "the maintenance state:<br><br>\n";
        print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        print "<TEXTAREA name=notes rows=4 cols=35>{$notes[1]}</TEXTAREA><br>\n";
        print "<br>Selected computers:\n";
    } elseif ($data['stateid'] == 20) {
        $profiles = getVMProfiles();
        $data['profiles'] = $profiles;
        print "Select a VM Host Profile and then click <strong>Submit</strong>\n";
        print "to place the computers into the vmhostinuse state:<br><br>\n";
        print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
        printSelectInput('profileid', $profiles);
        print "<br><br>\n";
    } elseif ($data['stateid'] == 23) {
        print "You are about to place the following computers into the ";
        print "hpc state:\n";
        print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
    }
    $cont = addContinuationsEntry('submitCompStateChange', $data, SECINDAY, 0, 0);
    print "      <INPUT type=hidden name=continuation value=\"{$cont}\">\n";
    print "<TABLE>\n";
    foreach ($data['computerids'] as $compid) {
        print "  <TR>\n";
        #print "    <TD><font color=\"#008000\">{$computers[$compid]['hostname']}</font></TD>\n";
        print "    <TD>{$computers[$compid]['hostname']}</TD>\n";
        print "  </TR>\n";
    }
    print "</TABLE>\n";
    print "<br>\n";
    print "<INPUT type=submit value=Submit>\n";
    print "</FORM>\n";
}