r4156 addIPv4Prefix(): don't handle errors, exceptions already do
authorDenis Ovsienko <infrastation@yandex.ru>
Wed, 26 Jan 2011 22:51:01 +0000 (22:51 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Wed, 26 Jan 2011 22:51:01 +0000 (22:51 +0000)
addIPv6Prefix(): idem
addRSPool(): idem
commitAddRack(): idem
commitAddObject(): idem
commitCreateRSPool(): idem
destroyIPv4Prefix(): idem
delIPv4Prefix(): idem
destroyIPv6Prefix(): idem
delIPv6Prefix(): idem
produceTagsForLastRecord(): idem
addFileToEntity(): idem
linkFileToEntity(): idem
addFileWithoutLink(): idem
commitDeleteFile(): idem
deleteFile(): idem

createIPv4Prefix(): employ exceptions to signal errors
createIPv6Prefix(): idem
addFileToEntity(): idem
replaceFile(): idem

inc/database.php
inc/ophandlers.php

index 7d4ac5f..5deb941 100644 (file)
@@ -579,11 +579,9 @@ function getObjectPortsAndLinks ($object_id)
        return sortPortList ($ret, TRUE);
 }
 
-function commitAddRack ($name, $height = 0, $row_id = 0, $comment, $taglist)
+function commitAddRack ($name, $height, $row_id, $comment, $taglist)
 {
-       if ($row_id <= 0 or $height <= 0 or !strlen ($name))
-               return FALSE;
-       $result = usePreparedInsertBlade
+       usePreparedInsertBlade
        (
                'Rack',
                array
@@ -595,7 +593,8 @@ function commitAddRack ($name, $height = 0, $row_id = 0, $comment, $taglist)
                )
        );
        $last_insert_id = lastInsertID();
-       return (produceTagsForLastRecord ('rack', $taglist, $last_insert_id) == '') and recordHistory ('Rack', $last_insert_id);
+       produceTagsForLastRecord ('rack', $taglist, $last_insert_id);
+       recordHistory ('Rack', $last_insert_id);
 }
 
 function commitAddObject ($new_name, $new_label, $new_barcode, $new_type_id, $new_asset_no, $taglist = array())
@@ -618,7 +617,7 @@ function commitAddObject ($new_name, $new_label, $new_barcode, $new_type_id, $ne
        // Do AutoPorts magic
        executeAutoPorts ($last_insert_id, $new_type_id);
        // Now tags...
-       $error = produceTagsForLastRecord ('object', $taglist, $last_insert_id);
+       produceTagsForLastRecord ('object', $taglist, $last_insert_id);
 
        recordHistory ('RackObject', $last_insert_id);
 
@@ -2695,9 +2694,7 @@ function getRSPoolsForObject ($object_id = 0)
 
 function commitCreateRSPool ($name = '', $vsconfig = '', $rsconfig = '', $taglist = array())
 {
-       if (!strlen ($name))
-               throw new InvalidArgException ('$name', $name);
-       if (!usePreparedInsertBlade
+       usePreparedInsertBlade
        (
                'IPv4RSPool',
                array
@@ -2706,9 +2703,8 @@ function commitCreateRSPool ($name = '', $vsconfig = '', $rsconfig = '', $taglis
                        'vsconfig' => (!strlen ($vsconfig) ? NULL : $vsconfig),
                        'rsconfig' => (!strlen ($rsconfig) ? NULL : $rsconfig)
                )
-       ))
-               return __FUNCTION__ . ': SQL insertion failed';
-       return produceTagsForLastRecord ('ipv4rspool', $taglist);
+       );
+       produceTagsForLastRecord ('ipv4rspool', $taglist);
 }
 
 function commitDeleteRSPool ($pool_id = 0)
@@ -2941,18 +2937,10 @@ function rebuildTagChainForEntity ($realm, $entity_id, $extrachain = array())
 // Presume, that the target record has no tags attached.
 function produceTagsForLastRecord ($realm, $tagidlist, $last_insert_id = 0)
 {
-       if (!count ($tagidlist))
-               return '';
        if (!$last_insert_id)
                $last_insert_id = lastInsertID();
-       $errcount = 0;
        foreach (getExplicitTagsOnly (buildTagChainFromIds ($tagidlist)) as $taginfo)
-               if (addTagForEntity ($realm, $last_insert_id, $taginfo['id']) == FALSE)
-                       $errcount++;    
-       if (!$errcount)
-               return '';
-       else
-               return "Experienced ${errcount} errors adding tags in realm '${realm}' for entity ID == ${last_insert_id}";
+               addTagForEntity ($realm, $last_insert_id, $taginfo['id']);
 }
 
 function createIPv4Prefix ($range = '', $name = '', $is_bcast = FALSE, $taglist = array())
@@ -2960,23 +2948,23 @@ function createIPv4Prefix ($range = '', $name = '', $is_bcast = FALSE, $taglist
        // $range is in x.x.x.x/x format, split into ip/mask vars
        $rangeArray = explode('/', $range);
        if (count ($rangeArray) != 2)
-               return "Invalid IPv4 prefix '${range}'";
+               throw new InvalidRequestArgException ('range', $range, 'Invalid IPv4 prefix');
        $ip = $rangeArray[0];
        $mask = $rangeArray[1];
 
        if (!strlen ($ip) or !strlen ($mask))
-               return "Invalid IPv4 prefix '${range}'";
+               throw new InvalidRequestArgException ('range', $range, 'Invalid IPv4 prefix');
        $ipL = ip2long($ip);
        $maskL = ip2long($mask);
        if ($ipL == -1 || $ipL === FALSE)
-               return 'Bad IPv4 address';
+               throw new InvalidRequestArgException ('range', $range, 'Invalid IPv4 address');
        if ($mask < 32 && $mask > 0)
                $maskL = $mask;
        else
        {
                $maskB = decbin($maskL);
                if (strlen($maskB)!=32)
-                       return 'Invalid netmask';
+                       throw new InvalidRequestArgException ('range', $range, 'Invalid netmask');
                $ones=0;
                $zeroes=FALSE;
                foreach( str_split ($maskB) as $digit)
@@ -2987,14 +2975,14 @@ function createIPv4Prefix ($range = '', $name = '', $is_bcast = FALSE, $taglist
                        {
                                $ones++;
                                if ($zeroes == TRUE)
-                                       return 'Invalid netmask';
+                                       throw new InvalidRequestArgException ('range', $range, 'Invalid netmask');
                        }
                }
                $maskL = $ones;
        }
        $binmask = binMaskFromDec($maskL);
        $ipL = $ipL & $binmask;
-       $result = usePreparedInsertBlade
+       usePreparedInsertBlade
        (
                'IPv4Network',
                array
@@ -3004,8 +2992,6 @@ function createIPv4Prefix ($range = '', $name = '', $is_bcast = FALSE, $taglist
                        'name' => $name
                )
        );
-       if ($result != TRUE)
-               return "Could not add ${range} (already exists?).";
 
        if ($is_bcast and $maskL < 31)
        {
@@ -3014,7 +3000,7 @@ function createIPv4Prefix ($range = '', $name = '', $is_bcast = FALSE, $taglist
                updateV4Address ($network_addr, 'network', 'yes');
                updateV4Address ($broadcast_addr, 'broadcast', 'yes');
        }
-       return produceTagsForLastRecord ('ipv4net', $taglist);
+       produceTagsForLastRecord ('ipv4net', $taglist);
 }
 
 function createIPv6Prefix ($range = '', $name = '', $taglist = array())
@@ -3022,17 +3008,17 @@ function createIPv6Prefix ($range = '', $name = '', $taglist = array())
        // $range is in aaa0:b::c:d/x format, split into ip/mask vars
        $rangeArray = explode ('/', $range);
        if (count ($rangeArray) != 2)
-               return "Invalid IPv6 prefix '${range}'";
+               throw new InvalidRequestArgException ('range', $range, 'Invalid IPv6 prefix');
        $ip = $rangeArray[0];
        $mask = $rangeArray[1];
        $address = new IPv6Address;
        if (!strlen ($ip) or !strlen ($mask) or ! $address->parse ($ip))
-               return "Invalid IPv6 prefix '${range}'";
+               throw new InvalidRequestArgException ('range', $range, 'Invalid IPv4 prefix');
        $network_addr = $address->get_first_subnet_address ($mask);
        $broadcast_addr = $address->get_last_subnet_address ($mask);
        if (! $network_addr || ! $broadcast_addr)
-               return 'Invalid netmask';
-       $result = usePreparedInsertBlade
+               throw new InvalidRequestArgException ('range', $range, 'Invalid netmask');
+       usePreparedInsertBlade
        (
                'IPv6Network',
                array
@@ -3043,32 +3029,23 @@ function createIPv6Prefix ($range = '', $name = '', $taglist = array())
                        'name' => $name
                )
        );
-       if ($result != TRUE)
-               return "Could not add ${range} (already exists?).";
-
-       return produceTagsForLastRecord ('ipv6net', $taglist);
+       produceTagsForLastRecord ('ipv6net', $taglist);
 }
 
 // FIXME: This function doesn't wipe relevant records from IPv4Address table.
-function destroyIPv4Prefix ($id = 0)
+function destroyIPv4Prefix ($id)
 {
        releaseFiles ('ipv4net', $id);
-       if (FALSE === usePreparedDeleteBlade ('IPv4Network', array ('id' => $id)))
-               return __FUNCTION__ . ': SQL query #1 failed';
-       if (FALSE === destroyTagsForEntity ('ipv4net', $id))
-               return __FUNCTION__ . ': SQL query #2 failed';
-       return '';
+       usePreparedDeleteBlade ('IPv4Network', array ('id' => $id));
+       destroyTagsForEntity ('ipv4net', $id);
 }
 
 // FIXME: This function doesn't wipe relevant records from IPv6Address table.
-function destroyIPv6Prefix ($id = 0)
+function destroyIPv6Prefix ($id)
 {
        releaseFiles ('ipv6net', $id);
-       if (FALSE === usePreparedDeleteBlade ('IPv6Network', array ('id' => $id)))
-               return __FUNCTION__ . ': SQL query #1 failed';
-       if (FALSE === destroyTagsForEntity ('ipv6net', $id))
-               return __FUNCTION__ . ': SQL query #2 failed';
-       return '';
+       usePreparedDeleteBlade ('IPv6Network', array ('id' => $id));
+       destroyTagsForEntity ('ipv6net', $id);
 }
 
 function loadScript ($name)
@@ -3445,9 +3422,7 @@ function commitUnlinkFile ($link_id)
 function commitDeleteFile ($file_id)
 {
        destroyTagsForEntity ('file', $file_id);
-       if (usePreparedDeleteBlade ('File', array ('id' => $file_id)) === FALSE)
-               return __FUNCTION__ . '(): query failed';
-       return '';
+       usePreparedDeleteBlade ('File', array ('id' => $file_id));
 }
 
 function getChapterList ()
index b5dc69a..80ed6c1 100644 (file)
@@ -818,7 +818,6 @@ function addIPv6Allocation ()
 }
 
 $msgcode['addIPv4Prefix']['OK'] = 48;
-$msgcode['addIPv4Prefix']['ERR'] = 100;
 function addIPv4Prefix ()
 {
        assertStringArg ('range');
@@ -827,15 +826,11 @@ function addIPv4Prefix ()
        $is_bcast = isset ($_REQUEST['is_bcast']) ? $_REQUEST['is_bcast'] : 'off';
        $taglist = isset ($_REQUEST['taglist']) ? $_REQUEST['taglist'] : array();
        global $sic;
-       $error = createIPv4Prefix ($_REQUEST['range'], $sic['name'], $is_bcast == 'on', $taglist);
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK');
+       createIPv4Prefix ($_REQUEST['range'], $sic['name'], $is_bcast == 'on', $taglist);
+       return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
 $msgcode['addIPv6Prefix']['OK'] = 48;
-$msgcode['addIPv6Prefix']['ERR'] = 100;
 function addIPv6Prefix ()
 {
        assertStringArg ('range');
@@ -843,35 +838,24 @@ function addIPv6Prefix ()
 
        $taglist = isset ($_REQUEST['taglist']) ? $_REQUEST['taglist'] : array();
        global $sic;
-       $error = createIPv6Prefix ($_REQUEST['range'], $sic['name'], $taglist);
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK');
+       createIPv6Prefix ($_REQUEST['range'], $sic['name'], $taglist);
+       return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
 $msgcode['delIPv4Prefix']['OK'] = 49;
-$msgcode['delIPv4Prefix']['ERR'] = 100;
 function delIPv4Prefix ()
 {
        assertUIntArg ('id');
-       $error = destroyIPv4Prefix ($_REQUEST['id']);
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK');
+       destroyIPv4Prefix ($_REQUEST['id']);
+       return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
 $msgcode['delIPv6Prefix']['OK'] = 49;
-$msgcode['delIPv6Prefix']['ERR'] = 100;
 function delIPv6Prefix ()
 {
        assertUIntArg ('id');
-       $error = destroyIPv6Prefix ($_REQUEST['id']);
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK');
+       destroyIPv6Prefix ($_REQUEST['id']);
+       return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
 $msgcode['editAddress']['OK'] = 51;
@@ -1623,23 +1607,19 @@ function addLoadBalancer ()
 }
 
 $msgcode['addRSPool']['OK'] = 48;
-$msgcode['addRSPool']['ERR'] = 100;
 function addRSPool ()
 {
-       assertStringArg ('name', TRUE);
+       assertStringArg ('name');
        assertStringArg ('vsconfig', TRUE);
        assertStringArg ('rsconfig', TRUE);
-       $error = commitCreateRSPool
+       commitCreateRSPool
        (
                $_REQUEST['name'],
                $_REQUEST['vsconfig'],
                $_REQUEST['rsconfig'],
                isset ($_REQUEST['taglist']) ? $_REQUEST['taglist'] : array()
        );
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK');
+       return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
 $msgcode['deleteRSPool']['OK'] = 49;
@@ -2033,7 +2013,6 @@ function querySNMPData ()
 }
 
 $msgcode['addFileWithoutLink']['OK'] = 5;
-$msgcode['addFileWithoutLink']['ERR2'] = 110;
 // File-related functions
 function addFileWithoutLink ()
 {
@@ -2045,41 +2024,42 @@ function addFileWithoutLink ()
 
        $fp = fopen($_FILES['file']['tmp_name'], 'rb');
        global $sic;
-       if (FALSE === commitAddFile ($_FILES['file']['name'], $_FILES['file']['type'], $fp, $sic['comment']))
-               return buildRedirectURL (__FUNCTION__, 'ERR2');
+       commitAddFile ($_FILES['file']['name'], $_FILES['file']['type'], $fp, $sic['comment']);
        if (isset ($_REQUEST['taglist']))
                produceTagsForLastRecord ('file', $_REQUEST['taglist']);
        return buildRedirectURL (__FUNCTION__, 'OK', array (htmlspecialchars ($_FILES['file']['name'])));
 }
 
 $msgcode['addFileToEntity']['OK'] = 5;
-$msgcode['addFileToEntity']['ERR2'] = 181;
-$msgcode['addFileToEntity']['ERR3'] = 110;
 function addFileToEntity ()
 {
        global $pageno, $etype_by_pageno;
        if (!isset ($etype_by_pageno[$pageno]))
                throw new RackTablesError ('key not found in etype_by_pageno', RackTablesError::INTERNAL);
        $realm = $etype_by_pageno[$pageno];
-       $entity_id = getBypassValue();
        assertStringArg ('comment', TRUE);
 
        // Make sure the file can be uploaded
        if (get_cfg_var('file_uploads') != 1)
-               return buildRedirectURL (__FUNCTION__, 'ERR2');
+               throw new RackTablesError ('file uploads not allowed, change "file_uploads" parameter in php.ini', RackTablesError::MISCONFIGURED);
 
        $fp = fopen($_FILES['file']['tmp_name'], 'rb');
        global $sic;
-       if (FALSE === commitAddFile ($_FILES['file']['name'], $_FILES['file']['type'], $fp, $sic['comment']))
-               return buildRedirectURL (__FUNCTION__, 'ERR3');
-       if (FALSE === usePreparedInsertBlade ('FileLink', array ('file_id' => lastInsertID(), 'entity_type' => $realm, 'entity_id' => $entity_id)))
-               return buildRedirectURL (__FUNCTION__, 'ERR3');
-
+       commitAddFile ($_FILES['file']['name'], $_FILES['file']['type'], $fp, $sic['comment']);
+       usePreparedInsertBlade
+       (
+               'FileLink',
+               array
+               (
+                       'file_id' => lastInsertID(),
+                       'entity_type' => $realm,
+                       'entity_id' => getBypassValue(),
+               )
+       );
        return buildRedirectURL (__FUNCTION__, 'OK', array (htmlspecialchars ($_FILES['file']['name'])));
 }
 
 $msgcode['linkFileToEntity']['OK'] = 71;
-$msgcode['linkFileToEntity']['ERR2'] = 110;
 function linkFileToEntity ()
 {
        assertUIntArg ('file_id');
@@ -2088,14 +2068,20 @@ function linkFileToEntity ()
                throw new RackTablesError ('key not found in etype_by_pageno', RackTablesError::INTERNAL);
 
        $fi = spotEntity ('file', $sic['file_id']);
-       if (FALSE === usePreparedInsertBlade ('FileLink', array ('file_id' => $sic['file_id'], 'entity_type' => $etype_by_pageno[$pageno], 'entity_id' => getBypassValue())))
-               return buildRedirectURL (__FUNCTION__, 'ERR2');
-
+       usePreparedInsertBlade
+       (
+               'FileLink',
+               array
+               (
+                       'file_id' => $sic['file_id'],
+                       'entity_type' => $etype_by_pageno[$pageno],
+                       'entity_id' => getBypassValue(),
+               )
+       );
        return buildRedirectURL (__FUNCTION__, 'OK', array (htmlspecialchars ($fi['name'])));
 }
 
 $msgcode['replaceFile']['OK'] = 7;
-$msgcode['replaceFile']['ERR1'] = 181;
 $msgcode['replaceFile']['ERR2'] = 207;
 $msgcode['replaceFile']['ERR3'] = 109;
 function replaceFile ()
@@ -2104,7 +2090,7 @@ function replaceFile ()
 
        // Make sure the file can be uploaded
        if (get_cfg_var('file_uploads') != 1)
-               return buildRedirectURL (__FUNCTION__, 'ERR1');
+               throw new RackTablesError ('file uploads not allowed, change "file_uploads" parameter in php.ini', RackTablesError::MISCONFIGURED);
        $shortInfo = spotEntity ('file', $sic['file_id']);
 
        $fp = fopen($_FILES['file']['tmp_name'], 'rb');
@@ -2131,16 +2117,11 @@ function unlinkFile ()
 }
 
 $msgcode['deleteFile']['OK'] = 6;
-$msgcode['deleteFile']['ERR'] = 111;
 function deleteFile ()
 {
        assertUIntArg ('file_id');
        $shortInfo = spotEntity ('file', $_REQUEST['file_id']);
-       $error = commitDeleteFile ($_REQUEST['file_id']);
-
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-
+       commitDeleteFile ($_REQUEST['file_id']);
        return buildRedirectURL (__FUNCTION__, 'OK', array (htmlspecialchars ($shortInfo['name'])));
 }