You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by jf...@apache.org on 2014/11/19 20:15:10 UTC

svn commit: r1640618 - /vcl/trunk/web/.ht-inc/computer.php

Author: jfthomps
Date: Wed Nov 19 19:15:10 2014
New Revision: 1640618

URL: http://svn.apache.org/r1640618
Log:
VCL-776 - rework resource code to have a base class for all resources and inheriting classes for each resource type

computer.php: modified validateResourceData: added check to some conditionals for adding or editing so that $olddata will only be referenced when doing edits

Modified:
    vcl/trunk/web/.ht-inc/computer.php

Modified: vcl/trunk/web/.ht-inc/computer.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/computer.php?rev=1640618&r1=1640617&r2=1640618&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/computer.php (original)
+++ vcl/trunk/web/.ht-inc/computer.php Wed Nov 19 19:15:10 2014
@@ -1842,19 +1842,19 @@ class Computer extends Resource {
 			$return['provisioning'] = $provisioning[$return['provisioningid']]['name'];
 		# stateid  2 - available, 10 - maintenance, 20 - vmhostinuse
 		if(! preg_match('/^(2|10|20)$/', $return['stateid']) &&
-		   $return['stateid'] != $olddata['stateid']) {
+		   ($return['mode'] == 'add' || $return['stateid'] != $olddata['stateid'])) {
 			$return['error'] = 1;
 			$errormsg[] = "Invalid value submitted for State";
 		}
 		# validate type/provisioning combinations
 		$provtypes = getProvisioningTypes();
-		if($olddata['provisioningid'] != $return['provisioningid'] &&
+		if(($return['mode'] == 'add' || $olddata['provisioningid'] != $return['provisioningid']) &&
 		   ! array_key_exists($return['provisioningid'], $provtypes[$return['type']])) {
 			$return['error'] = 1;
 			$errormsg[] = "Invalid Provisioning Engine selected for computer type";
 		}
 		# validate type/provisioning/state combinations
-		if($olddata['stateid'] != $return['stateid']) {
+		if($return['mode'] == 'add' || $olddata['stateid'] != $return['stateid']) {
 			if($return['type'] == 'lab') {
 				if($return['stateid'] != 2 && $return['stateid'] != 10) {
 					$return['error'] = 1;
@@ -1863,7 +1863,7 @@ class Computer extends Resource {
 			}
 			elseif($return['type'] == 'virtualmachine') {
 				if($return['stateid'] != 10 &&
-				   (! is_numeric($olddata['vmhostid']) || $return['stateid'] != 2)) {
+				   ($return['mode'] == 'add' || ! is_numeric($olddata['vmhostid']) || $return['stateid'] != 2)) {
 					$return['error'] = 1;
 					$errormsg[] = "Invalid state submitted for computer type Virtual Machine";
 				}
@@ -1946,22 +1946,24 @@ class Computer extends Resource {
 			$naterror = 1;
 		}
 		# nat change - check for active reservations
-		if($olddata['nathostid'] == '')
-			$olddata['nathostid'] = 0;
-		if(! $naterror && ($olddata['natenabled'] != $return['natenabled'] ||
-		   $olddata['nathostid'] != $return['nathostid'])) {
-			$query = "SELECT rq.id "
-			       . "FROM request rq, "
-			       .      "reservation rs "
-			       . "WHERE rs.requestid = rq.id AND "
-			       .       "rs.computerid = {$return['rscid']} AND "
-			       .       "rq.start <= NOW() AND "
-			       .       "rq.end > NOW() AND "
-			       .       "rq.stateid NOT IN (1,5,11,12)";
-			$qh = doQuery($query);
-			if(mysql_num_rows($qh)) {
-				$return['error'] = 1;
-				$errormsg[] = "This computer has an active reservation. NAT settings cannot be changed for computers having<br>active reservations.";
+		if($return['mode'] == 'edit') {
+			if($olddata['nathostid'] == '')
+				$olddata['nathostid'] = 0;
+			if(! $naterror && ($olddata['natenabled'] != $return['natenabled'] ||
+			   $olddata['nathostid'] != $return['nathostid'])) {
+				$query = "SELECT rq.id "
+				       . "FROM request rq, "
+				       .      "reservation rs "
+				       . "WHERE rs.requestid = rq.id AND "
+				       .       "rs.computerid = {$return['rscid']} AND "
+				       .       "rq.start <= NOW() AND "
+				       .       "rq.end > NOW() AND "
+				       .       "rq.stateid NOT IN (1,5,11,12)";
+				$qh = doQuery($query);
+				if(mysql_num_rows($qh)) {
+					$return['error'] = 1;
+					$errormsg[] = "This computer has an active reservation. NAT settings cannot be changed for computers having<br>active reservations.";
+				}
 			}
 		}
 		# location