Author: jfthomps Date: Thu Apr 22 15:01:39 2010 New Revision: 936884 URL: http://svn.apache.org/viewvc?rev=936884&view=rev Log: VCL-125 VCL-325
images.php: -added in patch attached to VCL-125 by Andy Kurth to add control of rootaccess field in imagemeta table -modified editOrAddImage, confirmEditOrAddImage, viewImageDetails (tweaked this part to always show rootaccess field, also modified to always show checkuser field), processInputVar, updateImage, addImage -modified subimageDialogContent: if there were duplicate subimages, only one of them was showing up which was introduced when I made the images sorted; corrected to still sort, but show all subimages -modified AJremSubimage: moved code to check for and delete imagemeta entry to separate function in utils.php -modified updateImage: added call to checkClearImageMeta to get the imagemeta entry cleared if all values set to defaults utils.php: -added in patch attached to VCL-125 by Andy Kurth to add control of rootaccess field in imagemeta table -modified getImages to include rootaccess field -added checkClearImageMeta Modified: incubator/vcl/trunk/web/.ht-inc/images.php incubator/vcl/trunk/web/.ht-inc/utils.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=936884&r1=936883&r2=936884&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/images.php (original) +++ incubator/vcl/trunk/web/.ht-inc/images.php Thu Apr 22 15:01:39 2010 @@ -936,6 +936,16 @@ function editOrAddImage($state) { printSelectInput("checkuser", $yesno, $default); print " </TD>\n"; print " </TR>\n"; + print " <TR>\n"; + print " <TH align=right>Users have administrative access:</TH>\n"; + if(array_key_exists("rootaccess", $data) && ! $data["rootaccess"]) + $default = 0; + else + $default = 1; + print " <TD>\n"; + printSelectInput("rootaccess", $yesno, $default); + print " </TD>\n"; + print " </TR>\n"; # finally just limited access so only high level access people see this # because it confused too many people if($user["adminlevel"] == "developer") { @@ -1133,11 +1143,12 @@ function subimageDialogContent() { if(array_key_exists("subimages", $image) && count($image["subimages"])) { $subimages = array(); foreach($image["subimages"] as $imgid) - $subimages[$imgid] = $images[$imgid]['prettyname']; + $subimages[] = array('id' => $imgid, + 'name' => $images[$imgid]['prettyname']); uasort($subimages, "sortKeepIndex"); $content .= "<select id=cursubimagesel multiple size=10>"; - foreach($subimages as $imgid => $name) { - $content .= "<option value=$imgid>$name</option>"; + foreach($subimages as $img) { + $content .= "<option value={$img['id']}>{$img['name']}</option>"; $subimgcnt++; } } @@ -1285,40 +1296,14 @@ function AJremSubimage() { $qh = doQuery($query, 101); $row = mysql_fetch_row($qh); if($row[0] == 0) { - # get defaults for imagemeta table - $query = "DESC imagemeta"; - $qh = doQuery($query, 101); - $defaults = array(); - while($row = mysql_fetch_assoc($qh)) - $defaults[$row['Field']] = $row['Default']; - # get imagemeta data - $query = "SELECT * FROM imagemeta WHERE id = $imagemetaid"; - $qh = doQuery($query, 101); - $row = mysql_fetch_assoc($qh); - $alldefaults = 1; - foreach($row as $field => $val) { - if($field == 'id' || $field == 'subimages') - continue; - if($defaults[$field] != $val) { - $alldefaults = 0; - break; - } - } - // if all default values, delete imagemeta entry - if($alldefaults) { - $query = "DELETE FROM imagemeta WHERE id = $imagemetaid"; - doQuery($query, 101); - $query = "UPDATE image SET imagemetaid = NULL WHERE id = $imageid"; - doQuery($query, 101); + $rc = checkClearImageMeta($imagemetaid, $imageid, 'subimages'); + if($rc) $imagemetaid = NULL; - $subimages = array(); - } - # otherwise, just set subimages to 0 else { $query = "UPDATE imagemeta SET subimages = 0 WHERE id = $imagemetaid"; doQuery($query, 101); - $subimages = array(); } + $subimages = array(); } # rebuild list of subimages else { @@ -1490,6 +1475,13 @@ function confirmEditOrAddImage($state) { else print " <TD>No</TD>\n"; print " </TR>\n"; + print " <TR>\n"; + print " <TH align=right>Users have administrative access:</TH>\n"; + if($data["rootaccess"]) + print " <TD>Yes</TD>\n"; + else + print " <TD>No</TD>\n"; + print " </TR>\n"; if($user["adminlevel"] == "developer" || $user['adminlevel'] == 'full') { print " <TR>\n"; print " <TH align=right>User group allowed to log in:</TH>\n"; @@ -2163,15 +2155,22 @@ function viewImageDetails() { else print " <TD>no</TD>\n"; print " </TR>\n"; - if(array_key_exists("checkuser", $images[$imageid])) { - print " <TR>\n"; - print " <TH align=right>Check for logged in user:</TH>\n"; - if($images[$imageid]["checkuser"]) - print " <TD>yes</TD>\n"; - else - print " <TD>no</TD>\n"; - print " </TR>\n"; - } + print " <TR>\n"; + print " <TH align=right>Check for logged in user:</TH>\n"; + if(array_key_exists("checkuser", $images[$imageid]) && + $images[$imageid]["checkuser"] == 0) + print " <TD>no</TD>\n"; + else + print " <TD>yes</TD>\n"; + print " </TR>\n"; + print " <TR>\n"; + print " <TH align=right>Users have administrative access:</TH>\n"; + if(array_key_exists("rootaccess", $images[$imageid]) && + $images[$imageid]["rootaccess"] == 0) + print " <TD>no</TD>\n"; + else + print " <TD>yes</TD>\n"; + print " </TR>\n"; if(! empty($images[$imageid]["usergroupid"])) { print " <TR>\n"; print " <TH align=right>User group allowed to log in:</TH>\n"; @@ -2431,6 +2430,7 @@ function processImageInput($checks=1) { $return["reloadtime"] = processInputVar("reloadtime", ARG_NUMERIC, 10); $return["forcheckout"] = processInputVar("forcheckout", ARG_NUMERIC, 1); $return["checkuser"] = processInputVar("checkuser", ARG_NUMERIC, 1); + $return["rootaccess"] = processInputVar("rootaccess", ARG_NUMERIC, 1); $return["usergroupid"] = processInputVar("usergroupid", ARG_NUMERIC); $return["sysprep"] = processInputVar("sysprep", ARG_NUMERIC, 1); $return["description"] = processInputVar("description", ARG_STRING); @@ -2568,14 +2568,18 @@ function updateImage($data) { $qh = doQuery($query, 200); $return = mysql_affected_rows($GLOBALS["mysql_link_vcl"]); if(empty($imgdata[$data["imageid"]]["imagemetaid"]) && - ($data["checkuser"] == 0 || $data["usergroupid"] != 0)) { + ($data["checkuser"] == 0 || + $data["usergroupid"] != 0 || + $data['rootaccess'] == 0)) { if($data["usergroupid"] == 0) $data["usergroupid"] = "NULL"; $query = "INSERT INTO imagemeta " . "(checkuser, " - . "usergroupid) " + . "usergroupid, " + . "rootaccess) " . "VALUES ({$data["checkuser"]}, " - . "{$data["usergroupid"]})"; + . "{$data["usergroupid"]}, " + . "{$data["rootaccess"]})"; doQuery($query, 101); $qh = doQuery("SELECT LAST_INSERT_ID() FROM imagemeta", 101); if(! $row = mysql_fetch_row($qh)) @@ -2586,16 +2590,20 @@ function updateImage($data) { . "WHERE id = {$data["imageid"]}"; doQuery($query, 101); } - elseif(! empty($imgdata[$data["imageid"]]["imagemetaid"]) && - ($data["checkuser"] != $imgdata[$data["imageid"]]["checkuser"] || - $data["usergroupid"] != $imgdata[$data["imageid"]]["usergroupid"])) { - if($data["usergroupid"] == 0) - $data["usergroupid"] = "NULL"; - $query = "UPDATE imagemeta " - . "SET checkuser = {$data["checkuser"]}, " - . "usergroupid = {$data["usergroupid"]} " - . "WHERE id = {$imgdata[$data["imageid"]]["imagemetaid"]}"; - doQuery($query, 101); + elseif(! empty($imgdata[$data["imageid"]]["imagemetaid"])) { + if($data["checkuser"] != $imgdata[$data["imageid"]]["checkuser"] || + $data["rootaccess"] != $imgdata[$data["imageid"]]["rootaccess"] || + $data["usergroupid"] != $imgdata[$data["imageid"]]["usergroupid"]) { + if($data["usergroupid"] == 0) + $data["usergroupid"] = "NULL"; + $query = "UPDATE imagemeta " + . "SET checkuser = {$data["checkuser"]}, " + . "rootaccess = {$data["rootaccess"]}, " + . "usergroupid = {$data["usergroupid"]} " + . "WHERE id = {$imgdata[$data["imageid"]]["imagemetaid"]}"; + doQuery($query, 101); + } + checkClearImageMeta($imgdata[$data['imageid']]['imagemetaid'], $data['imageid']); } return $return; } @@ -2666,19 +2674,24 @@ function addImage($data) { $imagemetaid = 0; if($data['checkuser'] != 0 && $data['checkuser'] != 1) $data['checkuser'] = 1; + if($data['rootaccess'] != 0 && $data['rootaccess'] != 1) + $data['rootaccess'] = 1; if(! is_numeric($data['usergroupid']) || $data['usergroupid'] <= 0) $data['usergroupid'] = "NULL"; if($data['sysprep'] != 0 && $data['sysprep'] != 1) $data['sysprep'] = 1; if($data['checkuser'] == 0 || + $data['rootaccess'] == 0 || (is_numeric($data['usergroupid']) && $data['usergroupid'] > 0) || $data['sysprep'] == 0) { $query = "INSERT INTO imagemeta " . "(checkuser, " + . "rootaccess, " . "usergroupid, " . "sysprep) " . "VALUES " . "({$data['checkuser']}, " + . "{$data['rootaccess']}, " . "{$data['usergroupid']}, " . "{$data['sysprep']})"; doQuery($query, 101); Modified: incubator/vcl/trunk/web/.ht-inc/utils.php URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/utils.php?rev=936884&r1=936883&r2=936884&view=diff ============================================================================== --- incubator/vcl/trunk/web/.ht-inc/utils.php (original) +++ incubator/vcl/trunk/web/.ht-inc/utils.php Thu Apr 22 15:01:39 2010 @@ -1096,6 +1096,7 @@ function getImages($includedeleted=0, $i $imagelist[$row["id"]] = $row; if($row["imagemetaid"] != NULL) { $query2 = "SELECT i.checkuser, " + . "i.rootaccess, " . "i.subimages, " . "i.usergroupid, " . "u.name AS usergroup, " @@ -1108,6 +1109,7 @@ function getImages($includedeleted=0, $i $qh2 = doQuery($query2, 101); if($row2 = mysql_fetch_assoc($qh2)) { $imagelist[$row["id"]]["checkuser"] = $row2["checkuser"]; + $imagelist[$row["id"]]["rootaccess"] = $row2["rootaccess"]; $imagelist[$row["id"]]["usergroupid"] = $row2["usergroupid"]; if(! empty($row2['affiliation'])) $imagelist[$row["id"]]["usergroup"] = "{$row2["usergroup"]...@{$row2['affiliation']}"; @@ -1228,6 +1230,52 @@ function getImageNotes($imageid) { //////////////////////////////////////////////////////////////////////////////// /// +/// \fn checkClearImageMeta($imagemetaid, $imageid, $ignorefield) +/// +/// \param $imagemetaid - id from imagemeta table +/// \param $imageid - id from image table +/// \param $ignorefield - (optional, default='') field to ignore being different +/// from default +/// +/// \return 0 if imagemeta entry was not deleted, 1 if it was +/// +/// \brief checks to see if all values of the imagemeta table are defaults, and +/// if so, deletes the entry and sets imagemetaid to NULL in image table +/// +//////////////////////////////////////////////////////////////////////////////// +function checkClearImageMeta($imagemetaid, $imageid, $ignorefield='') { + # get defaults for imagemeta table + $query = "DESC imagemeta"; + $qh = doQuery($query, 101); + $defaults = array(); + while($row = mysql_fetch_assoc($qh)) + $defaults[$row['Field']] = $row['Default']; + # get imagemeta data + $query = "SELECT * FROM imagemeta WHERE id = $imagemetaid"; + $qh = doQuery($query, 101); + $row = mysql_fetch_assoc($qh); + $alldefaults = 1; + foreach($row as $field => $val) { + if($field == 'id' || $field == $ignorefield) + continue; + if($defaults[$field] != $val) { + $alldefaults = 0; + break; + } + } + // if all default values, delete imagemeta entry + if($alldefaults) { + $query = "DELETE FROM imagemeta WHERE id = $imagemetaid"; + doQuery($query, 101); + $query = "UPDATE image SET imagemetaid = NULL WHERE id = $imageid"; + doQuery($query, 101); + return 1; + } + return 0; +} + +//////////////////////////////////////////////////////////////////////////////// +/// /// \fn getProductionRevisionid($imageid) /// /// \param $imageid