Author: jfthomps
Date: Fri May 27 13:47:58 2011
New Revision: 1128304
URL: http://svn.apache.org/viewvc?rev=1128304&view=rev
Log:
VCL-30
overall - changed to connection methods being assigned by imagerevisionid
instead of imageid
modified selectImageOption - (unrelated to VCL-30) added labels to radio
buttons so that text can be clicked to select radio button
modified editOrAddImage - removed several initial definitions of variables that
were no longer used; changed to update connectionmethods immediately only when
editing and to pass the selected methods along to next function when adding
modified connectmethodDialogContent - update to allow imagerevision to be
selected if image has more than one revision
modified jsonImageConnectMethods - changed to provide code that updates
connectionmethods immediately only when editing and to pass the selected
methods along to next function when adding
modified AJaddImageConnectMethod - changed to update connectionmethods
immediately only when editing and to pass the selected methods along to next
function when adding; changed to assign methods by imagerevisionid instead of
imageid
modified AJremImageConnectMethod - changed to update connectionmethods
immediately only when editing and to pass the selected methods along to next
function when adding; changed to assign methods by imagerevisionid instead of
imageid
modified confirmEditOrAddImage - if adding, print selected connection methods
modified updateExistingImage - add any connection methods to new revisionid
that were enabled in previous revision
modified processImageInput - process connectmethodids
modified addImage - add entries to connectmethodmap
Modified:
incubator/vcl/trunk/web/.ht-inc/images.php
Modified: incubator/vcl/trunk/web/.ht-inc/images.php
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/images.php?rev=1128304&r1=1128303&r2=1128304&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/images.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/images.php Fri May 27 13:47:58 2011
@@ -70,28 +70,33 @@ function selectImageOption() {
print "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
if($imgAdminCnt) {
$cont = addContinuationsEntry('viewImages');
- print "<INPUT type=radio name=continuation value=\"$cont\"
checked>Edit ";
- print "Image Profiles<br>\n";
+ print "<INPUT type=radio name=continuation value=\"$cont\"
checked ";
+ print "id=\"imageedit\"><label for=\"imageedit\">Edit ";
+ print "Image Profiles</label><br>\n";
print "<img src=images/blank.gif width=20><INPUT type=checkbox
name=";
- print "details value=1>Include details<br>\n";
+ print "\"details\" value=\"1\" id=\"imagedetails\"><label
for=\"";
+ print "imagedetails\">Include details</label><br>\n";
}
if($imgGroupCnt) {
$cont = addContinuationsEntry('viewImageGrouping');
- print "<INPUT type=radio name=continuation value=\"$cont\">Edit
";
- print "Image Grouping<br>\n";
+ print "<INPUT type=radio name=continuation value=\"$cont\"
id=\"";
+ print "imagegrouping\"><label for=\"imagegrouping\">Edit Image
Grouping";
+ print "</label><br>\n";
}
if($imgMapCnt && $compMapCnt) {
$cont = addContinuationsEntry('viewImageMapping');
- print "<INPUT type=radio name=continuation value=\"$cont\">Edit
";
- print "Image Mapping<br>\n";
+ print "<INPUT type=radio name=continuation value=\"$cont\"
id=\"";
+ print "imagemapping\"><label for=\"imagemapping\">Edit Image
Mapping";
+ print "</label><br>\n";
}
if($imgCnt) {
$cont = addContinuationsEntry('newRequest', array('imaging' =>
1));
- print "<INPUT type=radio name=continuation
value=\"$cont\">Create /";
- print " Update an Image<br>\n";
+ print "<INPUT type=radio name=continuation value=\"$cont\"
id=\"";
+ print "newimage\"><label
for=\"newimage\">Create / Update an ";
+ print "Image</label><br>\n";
}
if($imgAdminCnt || $imgGroupCnt || $imgCnt)
@@ -817,15 +822,7 @@ function submitImageButton() {
///
////////////////////////////////////////////////////////////////////////////////
function editOrAddImage($state) {
- global $submitErr, $mode, $submode, $user;
-
- $images = getImages();
- $platforms = getPlatforms();
- $oslist = getOSList();
- $groups = getUserGroups(0, $user['affiliationid']);
- $groups = array_reverse($groups, TRUE);
- $groups[0] = array("name" => "Any");
- $groups = array_reverse($groups, TRUE);
+ global $submitErr, $mode;
if($submitErr || $state == 1 || $mode == "submitEditImageButtons") {
$data = processImageInput(0);
@@ -837,13 +834,29 @@ function editOrAddImage($state) {
$data['imageid'] = getContinuationVar('imageid');
if($mode == "newImage") {
$requestdata = getRequestInfo($data['requestid']);
- $imagedata = getImages(0,
$requestdata["reservations"][0]["imageid"]);
- $data["platformid"] =
$imagedata[$requestdata["reservations"][0]["imageid"]]["platformid"];
- $data["osid"] =
$imagedata[$requestdata["reservations"][0]["imageid"]]["osid"];
+ $baserevisionid =
$requestdata['reservations'][0]['imagerevisionid'];
+ $data['imageid'] =
$requestdata['reservations'][0]['imageid'];
+ $imagedata = getImages(0, $data["imageid"]);
+ $data["platformid"] =
$imagedata[$data["imageid"]]["platformid"];
+ $data["osid"] = $imagedata[$data["imageid"]]["osid"];
+ $data['connectmethods'] =
getImageConnectMethods($data['imageid'],
+ $baserevisionid);
+ }
+ if($submitErr) {
+ if($state == 1) {
+ $tmpconmeth =
getConnectMethods($data['imageid']);
+ $data['connectmethods'] = array();
+ foreach(explode(',', $data['connectmethodids'])
as $id)
+ $data['connectmethods'][$id] =
$tmpconmeth[$id]['description'];
+ $baserevisionid =
getContinuationVar('baserevisionid');
+ }
+ else
+ $data['connectmethods'] =
getImageConnectMethods($data['imageid']);
}
}
else {
$id = getContinuationVar("imageid");
+ $images = getImages(0, $id);
$data = $images[$id];
$data["imageid"] = $id;
$tmp = getImageNotes($id);
@@ -931,7 +944,7 @@ function editOrAddImage($state) {
$tmpArr = array("1" => "1", "2" => "2", "4" => "4", "8" => "8");
printSelectInput("minprocnumber", $tmpArr, $data["minprocnumber"]);
print " </TD>\n";
- print " <TD></TD>";
+ print " <TD></TD>\n";
print " </TR>\n";
print " <TR>\n";
print " <TH align=right>Minimum Processor Speed (MHz):</TH>\n";
@@ -947,7 +960,7 @@ function editOrAddImage($state) {
$tmpArr = array("10" => "10", "100" => "100", "1000" => "1000");
printSelectInput("minnetwork", $tmpArr, $data["minnetwork"]);
print " </TD>\n";
- print " <TD></TD>";
+ print " <TD></TD>\n";
print " </TR>\n";
print " <TR>\n";
print " <TH align=right>Maximum Concurrent Usage:</TH>\n";
@@ -956,7 +969,7 @@ function editOrAddImage($state) {
print " <TD>";
printSubmitErr(MAXCONCURRENTERR);
print "</TD>\n";
- print " <TD></TD>";
+ print " <TD></TD>\n";
print " </TR>\n";
if(! $state) {
print " <TR>\n";
@@ -1010,15 +1023,21 @@ function editOrAddImage($state) {
print " <TH style=\"vertical-align:top;
text-align:right;\">Connection methods:</TH>\n";
print " <TD>\n";
print " <div id=\"connectmethodlist\">\n";
- foreach($data['connectmethods'] AS $method)
- print "$method<br>\n";
print " </div>\n";
- $cont = addContinuationsEntry('connectmethodDialogContent',
array('imageid' => $data['imageid']));
+ $cdata = array('imageid' => $data['imageid'],
+ 'newimage' => $state,
+ 'curmethods' => $data['connectmethods']);
+ $cont = addContinuationsEntry('connectmethodDialogContent', $cdata);
$url = BASEURL . SCRIPT . "?continuation=$cont";
print " <div dojoType=\"dijit.form.DropDownButton\"
id=\"connectmethoddlg\">\n";
- print " <span>Modify Connection Methods</span>";
+ print " <span>Modify Connection Methods</span>\n";
print " <div dojoType=\"dijit.TooltipDialog\"
href=\"$url\"></div>\n";
- print " <div>\n";
+ print " </div>\n";
+ if($state) {
+ $cmids = implode(',', array_keys($data['connectmethods']));
+ print " <input type=\"hidden\" name=\"connectmethodids\" ";
+ print "id=\"connectmethodids\" value=\"$cmids\">\n";
+ }
print " </TD>\n";
print " </TR>\n";
print " <TR>\n";
@@ -1040,7 +1059,8 @@ function editOrAddImage($state) {
print " <TD>\n";
if($state) {
$cdata = array('requestid' => $data['requestid'],
- 'imageid' => $data['imageid']);
+ 'imageid' => $data['imageid'],
+ 'baserevisionid' => $baserevisionid);
$cont = addContinuationsEntry('submitEditImageButtons', $cdata,
SECINDAY, 0);
print " <INPUT type=hidden name=continuation
value=\"$cont\">\n"; # confirmAddImage
print " <INPUT type=submit name=submode value=\"Confirm
Image\">\n";
@@ -1066,12 +1086,6 @@ function editOrAddImage($state) {
print " </TR>\n";
print "</TABLE>\n";
- if($state)
- return;
- print "<div id=revisiondiv>\n";
- print getRevisionHTML($data['imageid']);
- print "</div>\n";
-
print "<div dojoType=dijit.Dialog\n";
print " id=\"autoconfirmdlg\"\n";
print " title=\"Confirm Manual Install\"\n";
@@ -1100,6 +1114,12 @@ function editOrAddImage($state) {
print " </button>\n";
print " </div>\n";
print "</div>\n";
+
+ if($state)
+ return;
+ print "<div id=revisiondiv>\n";
+ print getRevisionHTML($data['imageid']);
+ print "</div>\n";
}
////////////////////////////////////////////////////////////////////////////////
@@ -1193,31 +1213,48 @@ function getRevisionHTML($imageid) {
////////////////////////////////////////////////////////////////////////////////
function connectmethodDialogContent() {
$imageid = getContinuationVar('imageid');
+ $newimage = getContinuationVar('newimage');
+ $curmethods = getContinuationVar('curmethods');
$methods = getConnectMethods($imageid);
- $curmethods = getImageConnectMethods($imageid);
+ $revisions = getImageRevisions($imageid);
$h = "<h3>Modify Connection Methods</h3>";
- $cdata = array('imageid' => $imageid);
+ if(! $newimage && count($revisions) > 1) {
+ $h .= "Selected Revision ID: ";
+ $cdata = array('imageid' => $imageid,
+ 'revids' => array_keys($revisions),
+ 'curmethods' => $curmethods,
+ 'newimage' => $newimage);
+ $cont = addContinuationsEntry('jsonImageConnectMethods',
$cdata);
+ $url = BASEURL . SCRIPT . "?continuation=$cont";
+ $h .= "<select dojoType=\"dijit.form.Select\"
id=\"conmethodrevid\" ";
+ $h .= "onChange=\"selectConMethodRevision('$url');\">";
+ foreach($revisions as $revid => $revision) {
+ if($revision['production'])
+ $h .= "<option value=\"$revid\"
selected=\"true\">{$revision['revision']}</option>";
+ else
+ $h .= "<option
value=\"$revid\">{$revision['revision']}</option>";
+ }
+ $h .= "</select>";
+ }
+ $cdata = array('imageid' => $imageid,
+ 'curmethods' => $curmethods,
+ 'newimage' => $newimage);
$cont = addContinuationsEntry('jsonImageConnectMethods', $cdata);
$h .= "<div dojoType=\"dojo.data.ItemFileWriteStore\" url=\"" . BASEURL;
$h .= SCRIPT . "?continuation=$cont\" jsid=\"cmstore\" id=\"cmstore\">";
$h .= "</div>\n";
- if(count($methods) == count($curmethods))
- $disabled = 'disabled="true"';
- else
- $disabled = '';
$h .= "<div dojoType=\"dijit.form.Select\" id=\"addcmsel\" ";
- $h .= "store=\"cmstore\" query=\"{active: 0}\" $disabled></div>";
- $h .= "<button dojoType=\"dijit.form.Button\" id=\"addcmbtn\"
$disabled>";
+ $h .= "store=\"cmstore\" query=\"{active: 0}\" ";
+ $h .= "onSetStore=\"updateCurrentConMethods();\"></div>";
+ $h .= "<button dojoType=\"dijit.form.Button\" id=\"addcmbtn\">";
$h .= "Add Method";
$h .= "<script type=\"dojo/method\" event=onClick>";
$h .= "addConnectMethod();";
$h .= "</script>";
$h .= "</button><br>";
$h .= "<h3>Current Methods</h3>";
- $h .= "<select id=\"curmethodsel\" multiple size=5>";
- foreach($curmethods as $id => $method)
- $h .= "<option value=\"$id\">$method</option>";
+ $h .= "<select id=\"curmethodsel\" multiple size=\"5\">";
$h .= "</select><br>";
$h .= "<button dojoType=\"dijit.form.Button\" id=\"remcmbtn\">";
$h .= "Remove Selected Methods(s)";
@@ -1229,13 +1266,17 @@ function connectmethodDialogContent() {
$adminimages = getUserResources(array("imageAdmin"),
array("administer"));
$adminids = array_keys($adminimages["image"]);
$data = array('imageid' => $imageid,
- 'methods' => $methods);
+ 'methods' => $methods,
+ 'revids' => array_keys($revisions),
+ 'newimage' => $newimage);
$cont = addContinuationsEntry('AJaddImageConnectMethod', $data, 3600,
1, 0);
$h .= "<INPUT type=hidden id=addcmcont value=\"$cont\">";
$cont = addContinuationsEntry('AJremImageConnectMethod', $data, 3600,
1, 0);
$h .= "<INPUT type=hidden id=remcmcont value=\"$cont\">";
- $h .= "NOTE: Connection Method changes take effect immediately; you
do<br>";
- $h .= "<strong>not</strong> need to click \"Confirm Changes\" to submit
them.";
+ if(! $newimage) {
+ $h .= "NOTE: Connection Method changes take effect immediately;
you do<br>";
+ $h .= "<strong>not</strong> need to click \"Confirm Changes\"
to submit them.";
+ }
print $h;
}
@@ -1249,8 +1290,18 @@ function connectmethodDialogContent() {
////////////////////////////////////////////////////////////////////////////////
function jsonImageConnectMethods() {
$imageid = getContinuationVar('imageid');
+ $newimage = getContinuationVar('newimage');
+ $revid = processInputVar('revid', ARG_NUMERIC, 0);
+ if($revid != 0) {
+ $revids = getContinuationVar('revids');
+ if(! in_array($revid, $revids))
+ $revid = getProductionRevisionid($imageid);
+ }
+ if($newimage)
+ $curmethods = getContinuationVar('curmethods');
+ else
+ $curmethods = getImageConnectMethods($imageid, $revid);
$methods = getConnectMethods($imageid);
- $curmethods = getImageConnectMethods($imageid);
$items = array();
foreach($methods as $id => $method) {
if(array_key_exists($id, $curmethods))
@@ -1278,51 +1329,66 @@ function jsonImageConnectMethods() {
function AJaddImageConnectMethod() {
$imageid = getContinuationVar('imageid');
$methods = getContinuationVar('methods');
+ $revids = getContinuationVar('revids');
$curmethods = getImageConnectMethods($imageid);
$newid = processInputVar('newid', ARG_NUMERIC);
+ $revid = processInputVar('revid', ARG_NUMERIC);
+ $newimage = getContinuationVar('newimage');
if(! array_key_exists($newid, $methods)) {
$arr = array('error' => 'invalidmethod',
'msg' => 'Invalid method submitted.');
sendJSON($arr);
return;
}
- # delete any current entries for method and image (including disabled)
- $query = "DELETE FROM connectmethodmap "
- . "WHERE imageid = $imageid AND "
- . "connectmethodid = $newid AND "
- . "autoprovisioned IS NULL";
- doQuery($query, 101);
-
- # check to see if enabled for OStype or OS
- $query = "SELECT cm.connectmethodid "
- . "FROM connectmethodmap cm, "
- . "image i "
- . "LEFT JOIN OS o ON (o.id = i.OSid) "
- . "LEFT JOIN OStype ot ON (ot.name = o.type) "
- . "WHERE i.id = $imageid AND "
- . "cm.autoprovisioned IS NULL AND "
- . "cm.connectmethodid = $newid AND "
- . "cm.disabled = 0 AND "
- . "(cm.OStypeid = ot.id OR "
- . "cm.OSid = o.id)";
- $qh = doQuery($query, 101);
- if(! (mysql_num_rows($qh))) {
- # add entry for method and image
- $query = "INSERT INTO connectmethodmap "
- . "(connectmethodid, "
- . "imageid, "
- . "disabled) "
- . "VALUES "
- . "($newid, "
- . "$imageid, "
- . "0)";
+ if($revid != 0 && ! in_array($revid, $revids)) {
+ $arr = array('error' => 'invalidrevision',
+ 'msg' => 'Invalid revision id submitted.');
+ sendJSON($arr);
+ return;
+ }
+ if(! $newimage) {
+ if($revid == 0)
+ $revid = getProductionRevisionid($imageid);
+ # delete any current entries for method and image (including
disabled)
+ $query = "DELETE FROM connectmethodmap "
+ . "WHERE imagerevisionid = $revid AND "
+ . "connectmethodid = $newid AND "
+ . "autoprovisioned IS NULL";
doQuery($query, 101);
+
+ # check to see if enabled for OStype or OS
+ $query = "SELECT cm.connectmethodid "
+ . "FROM connectmethodmap cm, "
+ . "image i "
+ . "LEFT JOIN OS o ON (o.id = i.OSid) "
+ . "LEFT JOIN OStype ot ON (ot.name = o.type) "
+ . "WHERE i.id = $imageid AND "
+ . "cm.autoprovisioned IS NULL AND "
+ . "cm.connectmethodid = $newid AND "
+ . "cm.disabled = 0 AND "
+ . "(cm.OStypeid = ot.id OR "
+ . "cm.OSid = o.id)";
+ $qh = doQuery($query, 101);
+ if(! (mysql_num_rows($qh))) {
+ # not enabled, add entry for method and image revision
+ $query = "INSERT INTO connectmethodmap "
+ . "(connectmethodid, "
+ . "imagerevisionid, "
+ . "disabled) "
+ . "VALUES "
+ . "($newid, "
+ . "$revid, "
+ . "0)";
+ doQuery($query, 101);
+ }
}
# return success
$subimages[] = $newid;
$data = array('imageid' => $imageid,
- 'methods' => $methods);
+ 'methods' => $methods,
+ 'revids' => $revids,
+ 'newimage' => $newimage);
$addcont = addContinuationsEntry('AJaddImageConnectMethod', $data,
3600, 1, 0);
$remcont = addContinuationsEntry('AJremImageConnectMethod', $data,
3600, 1, 0);
$name = $methods[$newid]['description'];
@@ -1343,9 +1409,12 @@ function AJaddImageConnectMethod() {
function AJremImageConnectMethod() {
$imageid = getContinuationVar('imageid');
$methods = getContinuationVar('methods');
+ $revids = getContinuationVar('revids');
$curmethods = getImageConnectMethods($imageid);
$remidlist = mysql_real_escape_string(processInputVar('ids',
ARG_STRING));
$remids = explode(',', $remidlist);
+ $revid = processInputVar('revid', ARG_NUMERIC);
+ $newimage = getContinuationVar('newimage');
foreach($remids as $id) {
if(! is_numeric($id)) {
$arr = array('error' => 'invalidinput',
@@ -1354,43 +1423,55 @@ function AJremImageConnectMethod() {
return;
}
}
- # delete any current entries for method and image
- $query = "DELETE FROM connectmethodmap "
- . "WHERE imageid = $imageid AND "
- . "connectmethodid IN ($remidlist) AND "
- . "autoprovisioned IS NULL";
- doQuery($query, 101);
- # query to see if enabled for OStype or OS
- $insvals = array();
- foreach($remids as $id) {
- $query = "SELECT cm.connectmethodid "
- . "FROM connectmethodmap cm, "
- . "image i "
- . "LEFT JOIN OS o ON (o.id = i.OSid) "
- . "LEFT JOIN OStype ot ON (ot.name = o.type) "
- . "WHERE i.id = $imageid AND "
- . "cm.autoprovisioned IS NULL AND "
- . "cm.connectmethodid = $id AND "
- . "cm.disabled = 0 AND "
- . "(cm.OStypeid = ot.id OR "
- . "cm.OSid = o.id)";
- $qh = doQuery($query, 101);
- if(mysql_num_rows($qh))
- # if so, add disabled entry for image and method
- $insvals[] = "($id, $imageid, 1)";
+ if($revid != 0 && ! in_array($revid, $revids)) {
+ $arr = array('error' => 'invalidrevision',
+ 'msg' => 'Invalid revision id submitted.');
+ sendJSON($arr);
+ return;
}
- if(count($insvals)) {
- $allinsvals = implode(',', $insvals);
- $query = "INSERT INTO connectmethodmap "
- . "(connectmethodid, "
- . "imageid, "
- . "disabled) "
- . "VALUES $allinsvals";
+ if(! $newimage) {
+ if($revid == 0)
+ $revid = getProductionRevisionid($imageid);
+ # delete any current entries for method and image
+ $query = "DELETE FROM connectmethodmap "
+ . "WHERE imagerevisionid = $revid AND "
+ . "connectmethodid IN ($remidlist) AND "
+ . "autoprovisioned IS NULL";
doQuery($query, 101);
+ # query to see if enabled for OStype or OS
+ $insvals = array();
+ foreach($remids as $id) {
+ $query = "SELECT cm.connectmethodid "
+ . "FROM connectmethodmap cm, "
+ . "image i "
+ . "LEFT JOIN OS o ON (o.id = i.OSid) "
+ . "LEFT JOIN OStype ot ON (ot.name = o.type) "
+ . "WHERE i.id = $imageid AND "
+ . "cm.autoprovisioned IS NULL AND "
+ . "cm.connectmethodid = $id AND "
+ . "cm.disabled = 0 AND "
+ . "(cm.OStypeid = ot.id OR "
+ . "cm.OSid = o.id)";
+ $qh = doQuery($query, 101);
+ if(mysql_num_rows($qh))
+ # if so, add disabled entry for image revision
and method
+ $insvals[] = "($id, $revid, 1)";
+ }
+ if(count($insvals)) {
+ $allinsvals = implode(',', $insvals);
+ $query = "INSERT INTO connectmethodmap "
+ . "(connectmethodid, "
+ . "imagerevisionid, "
+ . "disabled) "
+ . "VALUES $allinsvals";
+ doQuery($query, 101);
+ }
}
$data = array('imageid' => $imageid,
- 'methods' => $methods);
+ 'methods' => $methods,
+ 'revids' => $revids,
+ 'newimage' => $newimage);
$addcont = addContinuationsEntry('AJaddImageConnectMethod', $data,
3600, 1, 0);
$remcont = addContinuationsEntry('AJremImageConnectMethod', $data,
3600, 1, 0);
$arr = array('addcont' => $addcont,
@@ -1780,6 +1861,14 @@ function confirmEditOrAddImage($state) {
else
print " <TD>No</TD>\n";
print " </TR>\n";
+ $conmethods = getConnectMethods($data['imageid']);
+ print " <TR>\n";
+ print " <TH align=right>Connection Methods:</TH>\n";
+ print " <TD>\n";
+ foreach(explode(',', $data['connectmethodids']) as $id)
+ print "{$conmethods[$id]['description']}<br>\n";
+ print " </TD>\n";
+ print " </TR>\n";
}
print " <TR>\n";
print " <TD colspan=2><hr></TD>\n";
@@ -2060,6 +2149,7 @@ function updateExistingImage($requestid=
foreach($data["reservations"] as $res) {
if($res["forcheckout"]) {
$imageid = $res["imageid"];
+ $oldrevisionid = $res['imagerevisionid'];
break;
}
}
@@ -2109,6 +2199,18 @@ function updateExistingImage($requestid=
$row = mysql_fetch_row($qh);
$imagerevisionid = $row[0];
+ # duplicate any entries in connectmethodmap for new revision
+ $query = "INSERT INTO connectmethodmap "
+ . "SELECT connectmethodid, "
+ . "OStypeid, "
+ . "OSid, "
+ . "$imagerevisionid, "
+ . "disabled, "
+ . "autoprovisioned "
+ . "FROM connectmethodmap "
+ . "WHERE imagerevisionid = $oldrevisionid";
+ doQuery($query, 101);
+
# update request and reservation
$query = "UPDATE request rq, "
. "reservation rs "
@@ -2880,6 +2982,7 @@ function processImageInput($checks=1) {
$return["description"] = processInputVar("description", ARG_STRING);
$return["usage"] = processInputVar("usage", ARG_STRING);
$return["comments"] = processInputVar("comments", ARG_STRING);
+ $return["connectmethodids"] = processInputVar("connectmethodids",
ARG_STRING);
$return['description'] = preg_replace("/[\n\s]*$/", '',
$return['description']);
$return['description'] = preg_replace("/\r/", '',
$return['description']);
@@ -2934,6 +3037,23 @@ function processImageInput($checks=1) {
$submitErr |= IMAGEDESCRIPTIONERR;
$submitErrMsg[IMAGEDESCRIPTIONERR] = "You must include a description
of the image<br>";
}
+ if(! preg_match('/^[,0-9]+$/', $return['connectmethodids'])) {
+ $tmp = getImageConnectMethods($return['imageid'],
+ getContinuationVar('baserevisionid', 0));
+ $return['connectmethodids'] = implode(',', array_keys($tmp));
+ }
+ else {
+ $conmethods = getConnectMethods($return['imageid']);
+ $ids = array();
+ foreach(explode(',', $return['connectmethodids']) as $id) {
+ if(array_key_exists($id, $conmethods))
+ $ids[$id] = 1;
+ }
+ if(empty($ids))
+ $ids = getImageConnectMethods($return['imageid'],
+ getContinuationVar('baserevisionid', 0));
+ $return['connectmethodids'] = implode(',', array_keys($ids));
+ }
return $return;
}
@@ -3152,6 +3272,32 @@ function addImage($data) {
. "'{$data['comments']}', "
. "{$data['autocaptured']})";
doQuery($query, 101);
+ $revid = dbLastInsertID();
+
+ // possibly add entries to connectmethodmap
+ $baseconmethods = getImageConnectMethods($imageid);
+ $baseids = array_keys($baseconmethods);
+ $conmethodids = explode(',', $data['connectmethodids']);
+ $adds = array_diff($conmethodids, $baseids);
+ $rems = array_diff($baseids, $conmethodids);
+ $vals = array();
+ if(count($adds)) {
+ foreach($adds as $id)
+ $vals[] = "($id, $revid, 0)";
+ }
+ if(count($rems)) {
+ foreach($rems as $id)
+ $vals[] = "($id, $revid, 1)";
+ }
+ if(count($vals)) {
+ $allvals = implode(',', $vals);
+ $query = "INSERT INTO connectmethodmap "
+ . "(connectmethodid, "
+ . "imagerevisionid, "
+ . "disabled) "
+ . "VALUES $allvals";
+ doQuery($query, 101);
+ }
// add entry in resource table
$query = "INSERT INTO resource "