r4136 addPortForObject(): update assertion
authorDenis Ovsienko <infrastation@yandex.ru>
Sat, 15 Jan 2011 21:21:32 +0000 (21:21 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sat, 15 Jan 2011 21:21:32 +0000 (21:21 +0000)
editPortForObject(): use modern patterns
commitUpdatePort(): make use of usePreparedUpdateBlade() and exception

inc/database.php
inc/interface.php
inc/ophandlers.php

index 67184a1..b10f001 100644 (file)
@@ -952,31 +952,29 @@ function commitUpdatePort ($object_id, $port_id, $port_name, $port_type_id, $por
        if (alreadyUsedL2Address ($db_l2address, $object_id))
        {
                $dbxlink->exec ('UNLOCK TABLES');
-               return "address ${db_l2address} belongs to another object";
+               // FIXME: it is more correct to throw InvalidArgException here
+               // and convert it to InvalidRequestArgException at upper level,
+               // when there is a mean to do that.
+               throw new InvalidRequestArgException ('port_l2address', $db_l2address, 'address belongs to another object');
        }
-       $result = usePreparedExecuteBlade
+       usePreparedUpdateBlade
        (
-               'UPDATE Port SET name=?, type=?, label=?, reservation_comment=?, ' .
-               'l2address=? WHERE id=? AND object_id=?',
+               'Port',
+               array
+               (
+                       'name' => $port_name,
+                       'type' => $port_type_id,
+                       'label' => $port_label,
+                       'reservation_comment' => mb_strlen ($port_reservation_comment) ? $port_reservation_comment : NULL,
+                       'l2address' => ($db_l2address === '') ? NULL : $db_l2address,
+               ),
                array
                (
-                       $port_name,
-                       $port_type_id,
-                       $port_label,
-                       mb_strlen ($port_reservation_comment) ? $port_reservation_comment : NULL,
-                       ($db_l2address === '') ? NULL : $db_l2address,
-                       $port_id,
-                       $object_id
+                       'id' => $port_id,
+                       'object_id' => $object_id
                )
        );
        $dbxlink->exec ('UNLOCK TABLES');
-       if ($result == 1)
-               return '';
-       $errorInfo = $dbxlink->errorInfo();
-       // We could update nothing.
-       if ($errorInfo[0] == '00000')
-               return '';
-       return $errorInfo[2];
 }
 
 function getAllIPv4Allocations ()
index c810334..0f9f76d 100644 (file)
@@ -1720,7 +1720,6 @@ function showMessageOrError ()
                                87 => array ('code' => 'success', 'format' => '802.1Q recalculate: %d ports changed on %d switches'),
 // records 100~199 with fatal error messages
                                100 => array ('code' => 'error', 'format' => '%s'),
-                               101 => array ('code' => 'error', 'format' => 'Port name cannot be empty'),
                                102 => array ('code' => 'error', 'format' => "Error creating user account '%s'"),
                                104 => array ('code' => 'error', 'format' => "failed updating record '%s'"),
                                105 => array ('code' => 'error', 'format' => 'default VLAN cannot be changed'),
index c68b5eb..ca8263f 100644 (file)
@@ -491,14 +491,12 @@ function updPortForwarding ()
 }
 
 $msgcode['addPortForObject']['OK'] = 48;
-$msgcode['addPortForObject']['ERR1'] = 101;
 $msgcode['addPortForObject']['ERR2'] = 100;
 function addPortForObject ()
 {
        assertStringArg ('port_name', TRUE);
        genericAssertion ('port_l2address', 'l2address0');
-       if (!strlen ($_REQUEST['port_name']))
-               return buildRedirectURL (__FUNCTION__, 'ERR1');
+       genericAssertion ('port_name', 'string');
        $error = commitAddPort
        (
                $_REQUEST['object_id'],
@@ -514,24 +512,16 @@ function addPortForObject ()
 }
 
 $msgcode['editPortForObject']['OK'] = 7;
-$msgcode['editPortForObject']['ERR1'] = 101;
-$msgcode['editPortForObject']['ERR2'] = 100;
 function editPortForObject ()
 {
+       global $sic;
        assertUIntArg ('port_id');
        assertUIntArg ('port_type_id');
        assertStringArg ('reservation_comment', TRUE);
        genericAssertion ('l2address', 'l2address0');
-       // tolerate empty value now to produce custom informative message later
-       assertStringArg ('name', TRUE);
-       if (!strlen ($_REQUEST['name']))
-               return buildRedirectURL (__FUNCTION__, 'ERR1');
-
-       $error = commitUpdatePort ($_REQUEST['object_id'], $_REQUEST['port_id'], $_REQUEST['name'], $_REQUEST['port_type_id'], $_REQUEST['label'], $_REQUEST['l2address'], $_REQUEST['reservation_comment']);
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR2', array ($error));
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
+       genericAssertion ('name', 'string');
+       commitUpdatePort ($sic['object_id'], $sic['port_id'], $sic['name'], $sic['port_type_id'], $sic['label'], $sic['l2address'], $sic['reservation_comment']);
+       return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
 }
 
 $msgcode['linkPortForObject']['OK'] = 8;