r3181 Got rid of showError()
authorDenis Yeldandi <dyeldandi@gmail.com>
Thu, 5 Nov 2009 14:30:02 +0000 (14:30 +0000)
committerDenis Yeldandi <dyeldandi@gmail.com>
Thu, 5 Nov 2009 14:30:02 +0000 (14:30 +0000)
16 files changed:
download.php
inc/auth.php
inc/code.php
inc/config.php
inc/database.php
inc/exceptions.php
inc/functions.php
inc/gateways.php
inc/init.php
inc/interface.php
inc/ophandlers.php
inc/triggers.php
index.php
popup.php
process.php
render_image.php

index 62b99faef88715e20014301337afab790eb95a8e..13b894937477c5ecc124084432b1b870fbdb6207 100644 (file)
@@ -3,7 +3,7 @@ require 'inc/init.php';
 // purely for renderAccessDenied()
 require 'inc/interface.php';
 
-assertUIntArg ('file_id', __FILE__);
+assertUIntArg ('file_id');
 $pageno = 'file';
 $tabno = 'download';
 fixContext();
index 9aea1c6babbaf65d59f8d3c4f69c6730e44d015e..d1710cbc08fa2389082b5bb4f9a8be110143c5eb 100644 (file)
@@ -21,8 +21,7 @@ function authenticate ()
                $require_local_account;
        if (!isset ($user_auth_src) or !isset ($require_local_account))
        {
-               showError ('secret.php misconfiguration: either user_auth_src or require_local_account are missing', __FUNCTION__);
-               exit (1);
+               throw new RuntimeException('secret.php misconfiguration: either user_auth_src or require_local_account are missing');
        }
        if (isset ($_REQUEST['logout']))
                dieWith401(); // Reset browser credentials cache.
@@ -47,13 +46,12 @@ function authenticate ()
                                !strlen ($_SERVER['REMOTE_USER'])
                        )
                        {
-                               showError ('System misconfiguration. The web-server didn\'t authenticate the user, although ought to do.');
-                               die;
+                               throw new RuntimeException('System misconfiguration. The web-server didn\'t authenticate the user, although ought to do.');
                        }
                        $remote_username = $_SERVER['REMOTE_USER'];
                        break;
                default:
-                       showError ('Invalid authentication source!', __FUNCTION__);
+                       throw new RuntimeException('Invalid authentication source!');
                        die;
        }
        $userinfo = constructUserCell ($remote_username);
@@ -77,7 +75,7 @@ function authenticate ()
                                return;
                        break;
                default:
-                       showError ('Invalid authentication source!', __FUNCTION__);
+                       throw new RuntimeException('Invalid authentication source!');
                        die;
        }
        dieWith401();
@@ -86,9 +84,7 @@ function authenticate ()
 function dieWith401 ()
 {
        header ('WWW-Authenticate: Basic realm="' . getConfigVar ('enterprise') . ' RackTables access"');
-       header ('HTTP/1.0 401 Unauthorized');
-       showError ('This system requires authentication. You should use a username and a password.');
-       die();
+       throw new NotAuthorizedException('This system requires authentication. You should use a username and a password.');
 }
 
 // Merge accumulated tags into a single chain, add location-specific
@@ -211,7 +207,7 @@ function authenticated_via_ldap ($username, $password)
                releaseLDAPCache();
                return TRUE;
        default:
-               showError ('Internal error during LDAP cache dispatching', __FUNCTION__);
+               throw new RuntimeException('Internal error during LDAP cache dispatching');
                die;
        }
        // This is never reached.
@@ -261,8 +257,7 @@ function queryLDAPServer ($username, $password)
        }
        else
        {
-               showError ('LDAP misconfiguration. Cannon build username for authentication.', __FUNCTION__);
-               die;
+               throw new RuntimeException('LDAP misconfiguration. Cannon build username for authentication.');
        }
        if (array_key_exists ('options', $LDAP_options) and is_array ($LDAP_options['options']))
                foreach ($LDAP_options['options'] as $opt_code => $opt_value)
index b9535ca092586d9e61bd67d6f380d0dc6f7035b6..5d1bc3d6e1b6b4ee33bdba8d2e872b103e000b64 100644 (file)
@@ -802,7 +802,7 @@ function eval_expression ($expr, $tagchain, $ptable, $silent = FALSE)
                        if (!isset ($ptable[$pname]))
                        {
                                if (!$silent)
-                                       showError ("Predicate '${pname}' is referenced before declaration", __FUNCTION__);
+                                       showWarning ("Predicate '${pname}' is referenced before declaration", __FUNCTION__);
                                return NULL;
                        }
                        return $self ($ptable[$pname], $tagchain, $ptable);
@@ -828,7 +828,7 @@ function eval_expression ($expr, $tagchain, $ptable, $silent = FALSE)
                        return $self ($expr['right'], $tagchain, $ptable);
                default:
                        if (!$silent)
-                               showError ("Evaluation error, cannot process expression type '${expr['type']}'", __FUNCTION__);
+                               showWarning ("Evaluation error, cannot process expression type '${expr['type']}'", __FUNCTION__);
                        return NULL;
                        break;
        }
@@ -869,8 +869,7 @@ function processAdjustmentSentence ($modlist, &$chain)
                                $didChanges = TRUE;
                                break;
                        default: // HCF
-                               showError ('Internal error', __FUNCTION__);
-                               die;
+                               throw new CodeCompilationError('Internal error');
                }
        return $didChanges;
 }
@@ -898,7 +897,7 @@ function gotClearanceForTagChain ($const_base)
                                                case 'LEX_DENY':
                                                        return FALSE;
                                                default:
-                                                       showError ("Condition match for unknown grant decision '${sentence['decision']}'", __FUNCTION__);
+                                                       showWarning ("Condition match for unknown grant decision '${sentence['decision']}'", __FUNCTION__);
                                                        break;
                                        }
                                break;
@@ -911,7 +910,7 @@ function gotClearanceForTagChain ($const_base)
                                        $impl_tags = getImplicitTags ($expl_tags); // recalculate
                                break;
                        default:
-                               showError ("Can't process sentence of unknown type '${sentence['type']}'", __FUNCTION__);
+                               showWarning ("Can't process sentence of unknown type '${sentence['type']}'", __FUNCTION__);
                                break;
                }
        }
index eb75645e045e1487ddb69a90a28f1e397868d93e..cd5a732fdb6e3e8502a03ac86f598e51680813e8 100644 (file)
@@ -46,13 +46,11 @@ function getConfigVar ($varname = '')
        // has failed, we don't retry loading.
        if (!isset ($configCache))
        {
-               showError ("Configuration cache is unavailable", __FUNCTION__);
-               die;
+               throw new RuntimeException ("Configuration cache is unavailable");
        }
        if ($varname == '')
        {
-               showError ("Missing argument", __FUNCTION__);
-               die;
+               throw new InvalidArgException('$varname', $varname, 'Empty variable name');
        }
        if (isset ($configCache[$varname]))
        {
@@ -72,18 +70,16 @@ function setConfigVar ($varname = '', $varvalue = '', $softfail = FALSE)
        global $configCache;
        if (!isset ($configCache))
        {
-               showError ('Configuration cache is unavailable', __FUNCTION__);
-               die;
+               throw new RuntimeException ("Configuration cache is unavailable");
        }
        if (!strlen ($varname))
        {
-               showError ("Empty argument", __FUNCTION__);
-               die;
+               throw new InvalidArgException('$varname', $varname, 'Empty variable name');
        }
        // We don't operate on unknown data.
        if (!isset ($configCache[$varname]))
        {
-               showError ("don't know how to handle '${varname}'", __FUNCTION__);
+               throw new InvalidArgException('$varname', $varname, "Don't know how to handle '${varname}'");
                die;
        }
        if ($configCache[$varname]['is_hidden'] != 'no')
@@ -91,24 +87,21 @@ function setConfigVar ($varname = '', $varvalue = '', $softfail = FALSE)
                $errormsg = "'${varname}' is a system variable and cannot be changed by user.";
                if ($softfail)
                        return $errormsg;
-               showError ($errormsg, __FUNCTION__);
-               die;
+               throw new InvalidArgException('$varname', $varname, $errormsg);
        }
        if (!strlen ($varvalue) && $configCache[$varname]['emptyok'] != 'yes')
        {
                $errormsg = "'${varname}' is configured to take non-empty value. Perhaps there was a reason to do so.";
                if ($softfail)
                        return $errormsg;
-               showError ($errormsg, __FUNCTION__);
-               die;
+               throw new InvalidArgException('$varname', $varname, $errormsg);
        }
        if (strlen ($varvalue) && $configCache[$varname]['vartype'] == 'uint' && (!is_numeric ($varvalue) or $varvalue < 0 ))
        {
                $errormsg = "'${varname}' can accept UINT values only";
                if ($softfail)
                        return $errormsg;
-               showError ($errormsg, __FUNCTION__);
-               die;
+               throw new InvalidArgException('$varname', $varname, $errormsg);
        }
        // Update cache only if the changes went into DB.
        if (storeConfigVar ($varname, $varvalue))
index 94253dc01c32facf0ce578d5263faad2736e014e..bfe65f1cc19b372a4aed6f58c5ce5a0da77833ef 100644 (file)
@@ -178,7 +178,7 @@ function getRackRowInfo ($rackrow_id)
        if ($row = $result->fetch (PDO::FETCH_ASSOC))
                return $row;
        else
-               return NULL;
+               throw new EntityNotFoundException ('rackrow', $rackrow_id);
 }
 
 function getRackRows ()
@@ -212,7 +212,7 @@ function commitDeleteRow($rackrow_id)
        global $dbxlink;
        $query = "select count(*) from Rack where row_id=${rackrow_id}";
        $result = $dbxlink->query ($query);
-       if (($result!=NULL) && ($row = $result->fetch(PDO::FETCH_NUM)) )
+       if ($row = $result->fetch(PDO::FETCH_NUM))
        {
                if ($row[0] == 0)
                {
@@ -666,11 +666,12 @@ function commitDeleteRack($rack_id)
 
 function commitUpdateRack ($rack_id, $new_name, $new_height, $new_row_id, $new_comment)
 {
-       if (!strlen ($rack_id) || !strlen ($new_name) || !strlen ($new_height))
-       {
-               showError ('Not all required args are present.', __FUNCTION__);
-               return FALSE;
-       }
+       if (!strlen ($rack_id)) 
+               throw new InvalidArgException ('rack_id', $rack_id, 'Must not be empty');
+       if (!strlen ($new_name))
+               throw new InvalidArgException ('new_name', $new_name, 'Must not be empty');
+       if (!strlen ($new_height))
+               throw new InvalidArgException ('new_height', $new_height, 'Must not be empty');
        global $dbxlink;
 
        // Can't shrink a rack if rows being deleted contain mounted objects
@@ -679,8 +680,7 @@ function commitUpdateRack ($rack_id, $new_name, $new_height, $new_row_id, $new_c
        $check_row = $check_result->fetch (PDO::FETCH_ASSOC);
        unset ($check_result);
        if ($check_row['count'] > 0) {
-               showError ('Cannot shrink rack, objects are still mounted there', __FUNCTION__);
-               return FALSE;
+               throw new InvalidArgException ('new_height', $new_height, 'Cannot shrink rack, objects are still mounted there');
        }
 
        $update_sql = "update Rack set name='${new_name}', height='${new_height}', comment='${new_comment}', row_id=${new_row_id} " .
@@ -731,16 +731,12 @@ function processGridForm (&$rackData, $unchecked_state, $checked_state, $object_
                                "delete from RackSpace where rack_id = ${rack_id} and " .
                                "unit_no = ${unit_no} and atom = '${atom}' limit 1";
                        $r = $dbxlink->query ($query);
-                       if ($r == NULL)
-                               return array ('code' => 500, 'message' => __FUNCTION__ . ": ${rack_name}: SQL DELETE query failed");
                        if ($newstate != 'F')
                        {
                                $query =
                                        "insert into RackSpace(rack_id, unit_no, atom, state) " .
                                        "values(${rack_id}, ${unit_no}, '${atom}', '${newstate}') ";
                                $r = $dbxlink->query ($query);
-                               if ($r == NULL)
-                                       return array ('code' => 500, 'message' => __FUNCTION__ . ": ${rack_name}: SQL INSERT query failed");
                        }
                        if ($newstate == 'T' and $object_id != 0)
                        {
@@ -868,11 +864,7 @@ function getResidentRacksData ($object_id = 0, $fetch_rackdata = TRUE)
                        $ret[$row[0]] = $row[0];
                        continue;
                }
-               if (NULL == ($rackData = spotEntity ('rack', $row[0])))
-               {
-                       showError ('Rack not found', __FUNCTION__);
-                       return NULL;
-               }
+               $rackData = spotEntity ('rack', $row[0]);
                amplifyCell ($rackData);
                $ret[$row[0]] = $rackData;
        }
@@ -1718,22 +1710,20 @@ function getPortOIFCompat ()
 function removePortOIFCompat ($type1 = 0, $type2 = 0)
 {
        global $dbxlink;
-       if ($type1 == 0 or $type2 == 0)
-       {
-               showError ('Invalid arguments', __FUNCTION__);
-               die;
-       }
+       if ($type1 <= 0)
+               throw new InvalidArgException ('type1', $type1);
+       if ($type2 <= 0)
+               throw new InvalidArgException ('type2', $type2);
        $dbxlink->query ("DELETE FROM PortCompat WHERE type1 = ${type1} AND type2 = ${type2}");
        return TRUE;
 }
 
 function addPortOIFCompat ($type1 = 0, $type2 = 0)
 {
-       if ($type1 <= 0 or $type2 <= 0)
-       {
-               showError ('Invalid arguments', __FUNCTION__);
-               die;
-       }
+       if ($type1 <= 0)
+               throw new InvalidArgException ('type1', $type1);
+       if ($type2 <= 0)
+               throw new InvalidArgException ('type2', $type2);
        return useInsertBlade
        (
                'PortCompat',
@@ -2017,11 +2007,11 @@ function getAttrMap ()
 
 function commitUpdateAttribute ($attr_id = 0, $attr_name = '')
 {
-       if ($attr_id <= 0 or !strlen ($attr_name))
-       {
-               showError ('Invalid args', __FUNCTION__);
-               die;
-       }
+       if ($attr_id <= 0)
+               throw new InvalidArgException ('$attr_id', $attr_id);
+       if (!strlen ($attr_name))
+               throw new InvalidArgException ('$attr_name', $attr_name);
+
        global $dbxlink;
        $query =
                "update Attribute set name = '${attr_name}' " .
@@ -2033,10 +2023,7 @@ function commitUpdateAttribute ($attr_id = 0, $attr_name = '')
 function commitAddAttribute ($attr_name = '', $attr_type = '')
 {
        if (!strlen ($attr_name))
-       {
-               showError ('Invalid args', __FUNCTION__);
-               die;
-       }
+               throw new InvalidArgException ('$attr_name', $attr_name);
        switch ($attr_type)
        {
                case 'uint':
@@ -2045,8 +2032,7 @@ function commitAddAttribute ($attr_name = '', $attr_type = '')
                case 'dict':
                        break;
                default:
-                       showError ('Invalid args', __FUNCTION__);
-                       die;
+                       throw new InvalidArgException ('$attr_type', $attr_type, 'Attribute type not supported');
        }
        return useInsertBlade
        (
@@ -2058,21 +2044,18 @@ function commitAddAttribute ($attr_name = '', $attr_type = '')
 function commitDeleteAttribute ($attr_id = 0)
 {
        if ($attr_id <= 0)
-       {
-               showError ('Invalid args', __FUNCTION__);
-               die;
-       }
+               throw new InvalidArgException ('$attr_id', $attr_id);
        return useDeleteBlade ('Attribute', 'id', $attr_id);
 }
 
 // FIXME: don't store garbage in chapter_no for non-dictionary types.
 function commitSupplementAttrMap ($attr_id = 0, $objtype_id = 0, $chapter_no = 0)
 {
-       if ($attr_id <= 0 or $objtype_id <= 0)
-       {
-               showError ('Invalid args', __FUNCTION__);
-               die;
-       }
+       if ($attr_id <= 0)
+               throw new InvalidArgException ('$attr_id', $attr_id);
+       if ($objtype_id <= 0)
+               throw new InvalidArgException ('$objtype_id', $objtype_id);
+
        return useInsertBlade
        (
                'AttributeMap',
@@ -2087,11 +2070,10 @@ function commitSupplementAttrMap ($attr_id = 0, $objtype_id = 0, $chapter_no = 0
 
 function commitReduceAttrMap ($attr_id = 0, $objtype_id)
 {
-       if ($attr_id <= 0 or $objtype_id <= 0)
-       {
-               showError ('Invalid args', __FUNCTION__);
-               die;
-       }
+       if ($attr_id <= 0)
+               throw new InvalidArgException ('$attr_id', $attr_id);
+       if ($objtype_id <= 0)
+               throw new InvalidArgException ('$objtype_id', $objtype_id);
        global $dbxlink;
        $query =
                "delete from AttributeMap where attr_id=${attr_id} " .
@@ -2106,10 +2088,7 @@ function commitReduceAttrMap ($attr_id = 0, $objtype_id)
 function getAttrValues ($object_id)
 {
        if ($object_id <= 0)
-       {
-               showError ('Invalid argument', __FUNCTION__);
-               return NULL;
-       }
+               throw new InvalidArgException ('$objtype_id', $objtype_id);
        $ret = array();
        $query =
                "select A.id as attr_id, A.name as attr_name, A.type as attr_type, C.name as chapter_name, " .
@@ -2153,11 +2132,10 @@ function getAttrValues ($object_id)
 
 function commitResetAttrValue ($object_id = 0, $attr_id = 0)
 {
-       if ($object_id <= 0 or $attr_id <= 0)
-       {
-               showError ('Invalid arguments', __FUNCTION__);
-               die;
-       }
+       if ($object_id <= 0)
+               throw new InvalidArgException ('$objtype_id', $objtype_id);
+       if ($attr_id <= 0)
+               throw new InvalidArgException ('$attr_id', $attr_id);
        global $dbxlink;
        $query = "delete from AttributeValue where object_id = ${object_id} and attr_id = ${attr_id} limit 1";
        $result = $dbxlink->query ($query);
@@ -2167,11 +2145,10 @@ function commitResetAttrValue ($object_id = 0, $attr_id = 0)
 // FIXME: don't share common code with use commitResetAttrValue()
 function commitUpdateAttrValue ($object_id = 0, $attr_id = 0, $value = '')
 {
-       if ($object_id <= 0 or $attr_id <= 0)
-       {
-               showError ('Invalid arguments', __FUNCTION__);
-               die;
-       }
+       if ($object_id <= 0)
+               throw new InvalidArgException ('$objtype_id', $objtype_id);
+       if ($attr_id <= 0)
+               throw new InvalidArgException ('$attr_id', $attr_id);
        if (!strlen ($value))
                return commitResetAttrValue ($object_id, $attr_id);
        global $dbxlink;
@@ -2191,8 +2168,7 @@ function commitUpdateAttrValue ($object_id = 0, $attr_id = 0, $value = '')
                        $column = 'uint_value';
                        break;
                default:
-                       showError ("Unknown attribute type '${attr_type}' met", __FUNCTION__);
-                       die;
+                       throw new InvalidArgException ('$attr_type', $attr_type, 'Unknown attribute type found in object #'.$object_id.', attribute #'.$attr_id);
        }
        $query2 =
                "delete from AttributeValue where " .
@@ -2209,10 +2185,7 @@ function commitUpdateAttrValue ($object_id = 0, $attr_id = 0, $value = '')
 function commitUseupPort ($port_id = 0)
 {
        if ($port_id <= 0)
-       {
-               showError ("Invalid argument", __FUNCTION__);
-               die;
-       }
+               throw new InvalidArgException ('$port_id', $port_id);
        global $dbxlink;
        $query = "update Port set reservation_comment = NULL where id = ${port_id} limit 1";
        $result = $dbxlink->exec ($query);
@@ -2294,7 +2267,7 @@ function storeConfigVar ($varname = NULL, $varvalue = NULL)
        $result->closeCursor();
        if ($rc == 0 or $rc == 1)
                return TRUE;
-       showError ("Something went wrong for args '${varname}', '${varvalue}'", __FUNCTION__);
+       showWarning ("Something went wrong for args '${varname}', '${varvalue}'", __FUNCTION__);
        return FALSE;
 }
 
@@ -2480,10 +2453,7 @@ function commitUpdateLB ($object_id = 0, $pool_id = 0, $vs_id = 0, $vsconfig = '
                " where object_id = ${object_id} and rspool_id = ${pool_id} " .
                "and vs_id = ${vs_id} limit 1";
        $result = $dbxlink->exec ($query);
-       if ($result === NULL)
-               return FALSE;
-       else
-               return TRUE;
+       return TRUE;
 }
 
 function commitUpdateVS ($vsid = 0, $vip = '', $vport = 0, $proto = '', $name = '', $vsconfig = '', $rsconfig = '')
@@ -2504,10 +2474,7 @@ function commitUpdateVS ($vsid = 0, $vip = '', $vport = 0, $proto = '', $name =
                'rsconfig = ' . (!strlen ($rsconfig) ? 'NULL' : "'${rsconfig}'") .
                " where id = ${vsid} limit 1";
        $result = $dbxlink->exec ($query);
-       if ($result === NULL)
-               return FALSE;
-       else
-               return TRUE;
+       return TRUE;
 }
 
 function loadThumbCache ($rack_id = 0)
@@ -2597,9 +2564,7 @@ function commitUpdateRSPool ($pool_id = 0, $name = '', $vsconfig = '', $rsconfig
                'rsconfig = ' . (!strlen ($rsconfig) ? 'NULL' : "'${rsconfig}'") .
                " where id = ${pool_id} limit 1";
        $result = $dbxlink->exec ($query);
-       if ($result === NULL)
-               return FALSE;
-       elseif ($result != 1)
+       if ($result != 1)
                return FALSE;
        else
                return TRUE;
@@ -2674,9 +2639,7 @@ function commitSetInService ($rs_id = 0, $inservice = '')
        global $dbxlink;
        $query = "update IPv4RS set inservice = '${inservice}' where id = ${rs_id} limit 1";
        $result = $dbxlink->exec ($query);
-       if ($result === NULL)
-               return FALSE;
-       elseif ($result != 1)
+       if ($result != 1)
                return FALSE;
        else
                return TRUE;
@@ -2808,10 +2771,7 @@ function destroyTagsForEntity ($entity_realm, $entity_id)
        global $dbxlink;
        $query = "delete from TagStorage where entity_realm = '${entity_realm}' and entity_id = ${entity_id}";
        $result = $dbxlink->exec ($query);
-       if ($result === NULL)
-               return FALSE;
-       else
-               return TRUE;
+       return TRUE;
 }
 
 // Drop only one record. This operation doesn't involve retossing other tags, unlike when adding.
@@ -2822,10 +2782,7 @@ function deleteTagForEntity ($entity_realm, $entity_id, $tag_id)
        global $dbxlink;
        $query = "delete from TagStorage where entity_realm = '${entity_realm}' and entity_id = ${entity_id} and tag_id = ${tag_id}";
        $result = $dbxlink->exec ($query);
-       if ($result === NULL)
-               return FALSE;
-       else
-               return TRUE;
+       return TRUE;
 }
 
 // Push a record into TagStorage unconditionally.
@@ -3163,7 +3120,7 @@ function getFile ($file_id = 0)
        $query->execute();
        if (($row = $query->fetch (PDO::FETCH_ASSOC)) == NULL)
        {
-               showError ('Query succeeded, but returned no data', __FUNCTION__);
+               showWarning ('Query succeeded, but returned no data', __FUNCTION__);
                $ret = NULL;
        }
        else
index f8f0d3df7113a0528e5f880b6421d5de74e77573..4115096db7398732400043a1a358369b02ec4c46 100644 (file)
@@ -1,5 +1,15 @@
 <?php
 
+class NotAuthorizedException extends RuntimeException {
+
+}
+
+class CodeCompilationError extends RuntimeException {
+/*
+ * This class probably needs references to code exerpt where the error occured
+ */
+}
+
 class EntityNotFoundException extends Exception {
        private $entity;
        private $id;
@@ -52,9 +62,39 @@ class InvalidArgException extends Exception
 {
        private $name;
        private $value;
-       function __construct ($name, $value)
+       private $reason;
+       function __construct ($name, $value, $reason=NULL)
+       {
+               $message = "Argument '${name}' of value '".var_export($value,true)."' is invalid.";
+               if (!is_null($reason)) {
+                       $message .= ' ('.$reason.')';
+               }
+               parent::__construct ($message);
+               $this->name = $name;
+               $this->value = $value;
+       }
+       function getName()
+       {
+               return $this->name;
+       }
+       function getValue()
+       {
+               return $this->value;
+       }
+}
+
+class InvalidRequestArgException extends Exception
+{
+       private $name;
+       private $value;
+       private $reason;
+       function __construct ($name, $value, $reason=NULL)
        {
-               parent::__construct ("Argument '${name}' of value '".var_export(${value},true)."' is invalid");
+               $message = "Request parameter '${name}' of value '".var_export($value,true)."' is invalid.";
+               if (!is_null($reason)) {
+                       $message .= ' ('.$reason.')';
+               }
+               parent::__construct ($message);
                $this->name = $name;
                $this->value = $value;
        }
@@ -68,6 +108,8 @@ class InvalidArgException extends Exception
        }
 }
 
+
+
 function dumpArray($arr)
 {
        echo '<table class="exceptionParametersDump">';
@@ -84,7 +126,7 @@ function stringTrace($trace)
        foreach($trace as $line) {
                $ret .= $line['file'].':'.$line['line'].' '.$line['function'].'(';
                $f = true;
-               foreach ($line['args'] as $arg) {
+               if (isset($line['args']) and is_array($line['args'])) foreach ($line['args'] as $arg) {
                        if (!$f) $ret .= ', ';
                        if (is_string($arg))
                                $printarg = "'".$arg."'";
@@ -117,6 +159,22 @@ function print404($e)
 
 }
 
+function printNotAuthorizedException($e)
+{
+       header("HTTP/1.1 401 Unauthorized");
+       echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'."\n";
+       echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'."\n";
+       echo "<head><title> Unauthorized </title>\n";
+       echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+       echo "<link rel=stylesheet type='text/css' href=pi.css />\n";
+#      echo "<link rel=icon href='" . getFaviconURL() . "' type='image/x-icon' />";
+       echo '</head> <body>';
+       echo '<h2>'.$e->getMessage().'</h2>';
+       echo '</body></html>';
+}
+
+
+
 function printPDOException($e)
 {
        header("HTTP/1.1 500 Internal Server Error");
@@ -177,6 +235,8 @@ function printException($e)
 {
        if (get_class($e) == 'EntityNotFoundException')
                print404($e);
+       elseif (get_class($e) == 'NotAuthorizedException')
+               printNotAuthorizedException($e);
        elseif (get_class($e) == 'PDOException')
                printPDOException($e);
        else
index 0b63cdd9588baf710061c05d4a2d4dbab08471cc..7f9387eb9050e658adc15a6680fff2308a21d5da 100644 (file)
@@ -118,78 +118,45 @@ $wildcardbylen = array
 
 // This function assures that specified argument was passed
 // and is a number greater than zero.
-function assertUIntArg ($argname, $caller = 'N/A', $allow_zero = FALSE)
+function assertUIntArg ($argname, $allow_zero = FALSE)
 {
        if (!isset ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is missing (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is missing');
        if (!is_numeric ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is not a number (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is not a number');
        if ($_REQUEST[$argname] < 0)
-       {
-               showError ("Parameter '${argname}' is less than zero (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is less than zero');
        if (!$allow_zero and $_REQUEST[$argname] === 0)
-       {
-               showError ("Parameter '${argname}' is equal to zero (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is zero');
 }
 
 // This function assures that specified argument was passed
 // and is a non-empty string.
-function assertStringArg ($argname, $caller = 'N/A', $ok_if_empty = FALSE)
+function assertStringArg ($argname, $ok_if_empty = FALSE)
 {
        if (!isset ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is missing (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is missing');
        if (!is_string ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is not a string (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is not a string');
        if (!$ok_if_empty and !strlen ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is an empty string (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is an empty string');
 }
 
-function assertBoolArg ($argname, $caller = 'N/A', $ok_if_empty = FALSE)
+function assertBoolArg ($argname, $ok_if_empty = FALSE)
 {
        if (!isset ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is missing (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is missing');
        if (!is_string ($_REQUEST[$argname]) or $_REQUEST[$argname] != 'on')
-       {
-               showError ("Parameter '${argname}' is not a string (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is not a string');
        if (!$ok_if_empty and !strlen ($_REQUEST[$argname]))
-       {
-               showError ("Parameter '${argname}' is an empty string (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is an empty string');
 }
 
-function assertIPv4Arg ($argname, $caller = 'N/A', $ok_if_empty = FALSE)
+function assertIPv4Arg ($argname, $ok_if_empty = FALSE)
 {
-       assertStringArg ($argname, $caller, $ok_if_empty);
+       assertStringArg ($argname, $ok_if_empty);
        if (strlen ($_REQUEST[$argname]) and long2ip (ip2long ($_REQUEST[$argname])) !== $_REQUEST[$argname])
-       {
-               showError ("IPv4 address validation failed for value '" . $_REQUEST[$argname] . "' (calling function is [${caller}]).", __FUNCTION__);
-               die();
-       }
+               throw new InvalidRequestArgException('$argname', $_REQUEST[$argname], 'parameter is not a valid ipv4 address');
 }
 
 // Objects of some types should be explicitly shown as
@@ -291,7 +258,7 @@ function markAllSpans (&$rackData = NULL)
 {
        if ($rackData == NULL)
        {
-               showError ('Invalid rackData', __FUNCTION__);
+               showWarning ('Invalid rackData', __FUNCTION__);
                return;
        }
        for ($i = $rackData['height']; $i > 0; $i--)
@@ -575,7 +542,7 @@ function getPrevIDforRack ($row_id = 0, $rack_id = 0)
 {
        if ($row_id <= 0 or $rack_id <= 0)
        {
-               showError ('Invalid arguments passed', __FUNCTION__);
+               showWarning ('Invalid arguments passed', __FUNCTION__);
                return NULL;
        }
        $rackList = listCells ('rack', $row_id);
@@ -589,7 +556,7 @@ function getNextIDforRack ($row_id = 0, $rack_id = 0)
 {
        if ($row_id <= 0 or $rack_id <= 0)
        {
-               showError ('Invalid arguments passed', __FUNCTION__);
+               showWarning ('Invalid arguments passed', __FUNCTION__);
                return NULL;
        }
        $rackList = listCells ('rack', $row_id);
@@ -734,7 +701,7 @@ function getRSUforRack ($data = NULL)
 {
        if ($data == NULL)
        {
-               showError ('Invalid argument', __FUNCTION__);
+               showWarning ('Invalid argument', __FUNCTION__);
                return NULL;
        }
        $counter = array ('A' => 0, 'U' => 0, 'T' => 0, 'W' => 0, 'F' => 0);
@@ -749,7 +716,7 @@ function getRSUforRackRow ($rowData = NULL)
 {
        if ($rowData === NULL)
        {
-               showError ('Invalid argument', __FUNCTION__);
+               showWarning ('Invalid argument', __FUNCTION__);
                return NULL;
        }
        if (!count ($rowData))
@@ -1157,7 +1124,7 @@ function fixContext ($target = NULL)
        {
                // Each page listed in the map above requires one uint argument.
                $target_realm = $etype_by_pageno[$pageno];
-               assertUIntArg ($page[$pageno]['bypass'], __FUNCTION__);
+               assertUIntArg ($page[$pageno]['bypass']);
                $target_id = $_REQUEST[$page[$pageno]['bypass']];
                $target = spotEntity ($target_realm, $target_id);
                $target_given_tags = $target['etags'];
@@ -1267,7 +1234,7 @@ function getCellFilter ()
                $ret['urlextra'] .= '&andor=' . $ret['andor'];
                break;
        default:
-               showError ('Invalid and/or switch value in submitted form', __FUNCTION__);
+               showWarning ('Invalid and/or switch value in submitted form', __FUNCTION__);
                return NULL;
        }
        $andor1 = '';
@@ -1426,14 +1393,14 @@ function buildLVSConfig ($object_id = 0)
 {
        if ($object_id <= 0)
        {
-               showError ('Invalid argument', __FUNCTION__);
+               showWarning ('Invalid argument', __FUNCTION__);
                return;
        }
        $oInfo = spotEntity ('object', $object_id);
        $lbconfig = getSLBConfig ($object_id);
        if ($lbconfig === NULL)
        {
-               showError ('getSLBConfig() failed', __FUNCTION__);
+               showWarning ('getSLBConfig() failed', __FUNCTION__);
                return;
        }
        $newconfig = "#\n#\n# This configuration has been generated automatically by RackTables\n";
@@ -1632,8 +1599,7 @@ function iptree_embed (&$node, $pfx)
        }
        if ($node['mask'] == $pfx['mask'])
        {
-               showError ('Internal error, the recurring loop lost control', __FUNCTION__);
-               die;
+               throw new RuntimeException('Internal error, the recurring loop lost control');
        }
 
        // split?
@@ -1658,8 +1624,7 @@ function iptree_embed (&$node, $pfx)
                $self ($node['right'], $pfx);
        else
        {
-               showError ('Internal error, cannot decide between left and right', __FUNCTION__);
-               die;
+               throw new RuntimeException ('Internal error, cannot decide between left and right');
        }
 }
 
index 6bec5001da1a8c37942c509260d8184ad52ab42f..3ec71405c2e1409f26a362ca72b2af7275abef87 100644 (file)
@@ -69,22 +69,13 @@ function getSwitchVLANs ($object_id = 0)
 {
        global $remote_username;
        if ($object_id <= 0)
-       {
-               showError ('Invalid object_id', __FUNCTION__);
-               return;
-       }
+               throw new InvalidArgException('$object_id', $object_id);
        $objectInfo = spotEntity ('object', $object_id);
        $endpoints = findAllEndpoints ($object_id, $objectInfo['name']);
        if (count ($endpoints) == 0)
-       {
-               showError ('Can\'t find any mean to reach current object. Please either set FQDN attribute or assign an IP address to the object.', __FUNCTION__);
-               return NULL;
-       }
+               throw new RuntimeException('Can\'t find any mean to reach current object. Please either set FQDN attribute or assign an IP address to the object.');
        if (count ($endpoints) > 1)
-       {
-               showError ('More than one IP address is assigned to this object, please configure FQDN attribute.', __FUNCTION__);
-               return NULL;
-       }
+               throw new RuntimeException('More than one IP address is assigned to this object, please configure FQDN attribute.');
        $hwtype = $swtype = 'unknown';
        foreach (getAttrValues ($object_id) as $record)
        {
@@ -103,27 +94,15 @@ function getSwitchVLANs ($object_id = 0)
        );
        $data = queryGateway ('switchvlans', $commands);
        if ($data == NULL)
-       {
-               showError ('Failed to get any response from queryGateway() or the gateway died', __FUNCTION__);
-               return NULL;
-       }
+               throw new RuntimeException('Failed to get any response from queryGateway() or the gateway died');
        if (strpos ($data[0], 'OK!') !== 0)
-       {
-               showError ("Gateway failure: ${data[0]}.", __FUNCTION__);
-               return NULL;
-       }
+               throw new RuntimeException("Gateway failure: ${data[0]}.");
        if (count ($data) != count ($commands))
-       {
-               showError ("Gateway failure: malformed reply.", __FUNCTION__);
-               return NULL;
-       }
+               throw new RuntimeException("Gateway failure: malformed reply.");
        // Now we have VLAN list in $data[1] and port list in $data[2]. Let's sort this out.
        $tmp = array_unique (explode (';', substr ($data[1], strlen ('OK!'))));
        if (count ($tmp) == 0)
-       {
-               showError ("Gateway succeeded, but returned no VLAN records.", __FUNCTION__);
-               return NULL;
-       }
+               throw new RuntimeException("Gateway succeeded, but returned no VLAN records.");
        $vlanlist = array();
        foreach ($tmp as $record)
        {
@@ -138,10 +117,7 @@ function getSwitchVLANs ($object_id = 0)
                $portlist[] = array ('portname' => $portname, 'status' => $status, 'vlanid' => $vlanid);
        }
        if (count ($portlist) == 0)
-       {
-               showError ("Gateway succeeded, but returned no port records.", __FUNCTION__);
-               return NULL;
-       }
+               throw new RuntimeException("Gateway succeeded, but returned no port records.");
        $maclist = array();
        foreach (explode (';', substr ($data[3], strlen ('OK!'))) as $pair)
        {
index 38e1d68399f4846e6baca30cadc142b2a1200bc9..580592d8031823776f6e1ae5516e1892173df57b 100644 (file)
@@ -35,18 +35,36 @@ function showError ($info = '', $location = 'N/A')
        echo "Go back or try starting from <a href='".makeHref()."'>index page</a>.<br></div>\n";
 }
 
+/*
+ * This is almost a clone of showError(). This is added to get rid of 
+ * cases when script dies after showError() is shown.
+ */
+
+function showWarning ($info = '', $location = 'N/A')
+{
+       if (preg_match ('/\.php$/', $location))
+               $location = basename ($location);
+       elseif ($location != 'N/A')
+               $location = $location . '()';
+       echo "<div class=msg_error>Warning event at [${location}]. ";
+       if (!strlen ($info))
+               echo 'No additional information is available.';
+       else
+               echo "Additional information:<br><p>\n<pre>\n${info}\n</pre></p>";
+}
+
+
+
 if (file_exists ('inc/secret.php'))
        require_once 'inc/secret.php';
 else
 {
-       showError
+       throw new RuntimeException
        (
                "Database connection parameters are read from inc/secret.php file, " .
                "which cannot be found.\nYou probably need to complete the installation " .
-               "procedure by following <a href='install.php'>this link</a>.",
-               __FILE__
+               "procedure by following <a href='install.php'>this link</a>."
        );
-       exit (1);
 }
 
 // Now try to connect...
@@ -56,8 +74,7 @@ try
 }
 catch (PDOException $e)
 {
-       showError ("Database connection failed:\n\n" . $e->getMessage(), __FILE__);
-       exit (1);
+       throw new RuntimeException ("Database connection failed:\n\n" . $e->getMessage());
 }
 $dbxlink->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $dbxlink->exec ("set names 'utf8'");
@@ -69,8 +86,7 @@ if (get_magic_quotes_gpc())
 
 if (!set_magic_quotes_runtime (0))
 {
-       showError ('Failed to turn magic quotes off', __FILE__);
-       exit (1);
+       throw new RuntimeException('Failed to turn magic quotes off');
 }
 
 // Escape any globals before we ever try to use them, but keep a copy of originals.
@@ -101,14 +117,12 @@ if ($dbver != CODE_VERSION)
 
 if (!mb_internal_encoding ('UTF-8') or !mb_regex_encoding ('UTF-8'))
 {
-       showError ('Failed setting multibyte string encoding to UTF-8', __FILE__);
-       exit (1);
+       throw new RuntimeException('Failed setting multibyte string encoding to UTF-8');
 }
 $configCache = loadConfigCache();
 if (!count ($configCache))
 {
-       showError ('Failed to load configuration from the database.', __FILE__);
-       exit (1);
+       throw new RuntimeException('Failed to load configuration from the database.');
 }
 
 require_once 'inc/code.php'; // for getRackCode()
@@ -133,8 +147,7 @@ else
 if ($rackCode['result'] != 'ACK')
 {
        // FIXME: display a message with an option to reset RackCode text
-       showError ('Could not load the RackCode due to error: ' . $rackCode['load'], __FILE__);
-       exit (1);
+       throw new RuntimeException('Could not load the RackCode due to error: ' . $rackCode['load']);
 }
 $rackCode = $rackCode['load'];
 // Only call buildPredicateTable() once and save the result, because it will remain
index 643913f0e10e8ef80ecbf3e1d6ed53357cd89606..02e11f3f8b942d15ce57f9131a735c12b952fed1 100644 (file)
@@ -372,11 +372,7 @@ function renderRackspaceRowEditor ()
 
 function renderRow ($row_id)
 {
-       if (($rowInfo = getRackRowInfo ($row_id)) == NULL)
-       {
-               showError ('getRackRowInfo() failed', __FUNCTION__);
-               return;
-       }
+       $rowInfo = getRackRowInfo ($row_id);
        $cellfilter = getCellFilter();
        $rackList = filterCellList (listCells ('rack', $row_id), $cellfilter['expression']);
        // Main layout starts.
@@ -549,11 +545,6 @@ function renderEditObjectForm ($object_id)
 {
        global $pageno;
        $object = spotEntity ('object', $object_id);
-       if ($object == NULL)
-       {
-               showError ('Error retrieving data', __FUNCTION__);
-               return;
-       }
        startPortlet ();
        printOpFormIntro ('update');
 
@@ -785,11 +776,6 @@ function renderRackObject ($object_id)
        $info = spotEntity ('object', $object_id);
        // FIXME: employ amplifyCell() instead of calling loader functions directly
        amplifyCell ($info);
-       if ($info == NULL)
-       {
-               showError ('Error loading data', __FUNCTION__);
-               return;
-       }
        // Main layout starts.
        echo "<table border=0 class=objectview cellspacing=0 cellpadding=0>";
        echo "<tr><td colspan=2 align=center><h1>${info['dname']}</h1></td></tr>\n";
@@ -855,7 +841,7 @@ function renderRackObject ($object_id)
                $hl_port_id = 0;
                if (isset ($_REQUEST['hl_port_id']))
                {
-                       assertUIntArg ('hl_port_id', __FUNCTION__);
+                       assertUIntArg ('hl_port_id');
                        $hl_port_id = $_REQUEST['hl_port_id'];
                }
                echo "<table cellspacing=0 cellpadding='5' align='center' class='widetable'>";
@@ -902,7 +888,7 @@ function renderRackObject ($object_id)
                $hl_ipv4_addr = '';
                if (isset ($_REQUEST['hl_ipv4_addr']))
                {
-                       assertIPv4Arg ('hl_ipv4_addr', __FUNCTION__);
+                       assertIPv4Arg ('hl_ipv4_addr');
                        $hl_ipv4_addr = $_REQUEST['hl_ipv4_addr'];
                }
                foreach ($alloclist as $dottedquad => $alloc)
@@ -1610,11 +1596,6 @@ function renderRackSpaceForObject ($object_id)
 {
        $is_update = isset ($_REQUEST['rackmulti'][0]);
        $info = spotEntity ('object', $object_id);
-       if ($info == NULL)
-       {
-               showError ('Error loading data', __FUNCTION__);
-               return;
-       }
        // Always process occupied racks plus racks chosen by user. First get racks with
        // already allocated rackspace...
        if (NULL === ($workingRacksData = getResidentRacksData ($object_id)))
@@ -1626,11 +1607,7 @@ function renderRackSpaceForObject ($object_id)
                {
                        if (!isset ($workingRacksData[$cand_id]))
                        {
-                               if (NULL == ($rackData = spotEntity ('rack', $cand_id)))
-                               {
-                                       showError ('Rack not found', __FUNCTION__);
-                                       return NULL;
-                               }
+                               $rackData = spotEntity ('rack', $cand_id);
                                amplifyCell ($rackData);
                                $workingRacksData[$cand_id] = $rackData;
                        }
@@ -1774,11 +1751,6 @@ function renderDepot ()
        echo "<tr><td class=pcleft>";
 
        startPortlet ('Objects (' . count ($objects) . ')');
-       if ($objects === NULL)
-       {
-               showError ('Fatal error retrieving object list', __FUNCTION__);
-               return;
-       }
        echo '<br><br><table border=0 cellpadding=5 cellspacing=0 align=center class=cooltable>';
        echo '<tr><th>Common name</th><th>Visible label</th><th>Asset tag</th><th>Barcode</th><th>Row/Rack</th></tr>';
        $order = 'odd';
@@ -1837,8 +1809,7 @@ function renderHistory ($object_type, $object_id)
                        $extra = 8;
                        break;
                default:
-                       showError ("Uknown object type '${object_type}'", __FUNCTION__);
-                       return;
+                       throw new RealmNotFoundException($object_type);
        }
        global $dbxlink;
        $result = $dbxlink->query ($query);
@@ -2773,13 +2744,12 @@ function renderSearchResults ()
        $terms = trim ($_REQUEST['q']);
        if (!strlen ($terms))
        {
-               showError ('Search string cannot be empty.', __FUNCTION__);
+               throw new InvalidRequestArgException('q', $_REQUEST['q'], 'Search string cannot be empty.');
                return;
        }
        if (!permitted ('depot', 'default'))
        {
-               showError ('You are not authorized for viewing information about objects.', __FUNCTION__);
-               return;
+               throw new NotAuthorizedException('You are not authorized for viewing information about objects.');
        }
        $nhits = 0;
        if (preg_match (RE_IP4_ADDR, $terms))
@@ -3242,11 +3212,7 @@ function renderConfigMainpage ()
 
 function renderRackPage ($rack_id)
 {
-       if (NULL == ($rackData = spotEntity ('rack', $rack_id)))
-       {
-               showError ('Rack not found', __FUNCTION__);
-               return;
-       }
+       $rackData = spotEntity ('rack', $rack_id);
        amplifyCell ($rackData);
        echo "<table border=0 class=objectview cellspacing=0 cellpadding=0><tr>";
 
@@ -3718,7 +3684,7 @@ function renderReports ($what)
                                echo "</td></tr>\n";
                                break;
                        default:
-                               showError ('Internal data error', __FUNCTION__);
+                               throw new RuntimeException ('Internal data error');
                }
                echo "<tr><td colspan=2><hr></td></tr>\n";
        }
@@ -3835,11 +3801,6 @@ function renderUIConfigEditForm ()
 function renderVLANMembership ($object_id)
 {
        $data = getSwitchVLANs ($object_id);
-       if ($data === NULL)
-       {
-               showError ('getSwitchVLANs() returned NULL', __FUNCTION__);
-               return;
-       }
        list ($vlanlist, $portlist, $maclist) = $data;
 
        echo '<table border=0 width="100%"><tr><td colspan=3>';
@@ -4289,11 +4250,6 @@ function renderRSPool ($pool_id)
 {
        global $nextorder;
        $poolInfo = spotEntity ('ipv4rspool', $pool_id);
-       if ($poolInfo == NULL)
-       {
-               showError ('Could not load data!', __FUNCTION__);
-               return;
-       }
        amplifyCell ($poolInfo);
 
        echo "<table border=0 class=objectview cellspacing=0 cellpadding=0>";
@@ -5285,11 +5241,6 @@ function renderFile ($file_id)
 {
        global $nextorder, $aac;
        $file = spotEntity ('file', $file_id);
-       if ($file == NULL)
-       {
-               showError ('Error loading data', __FUNCTION__);
-               return;
-       }
        echo "<table border=0 class=objectview cellspacing=0 cellpadding=0>";
        echo "<tr><td colspan=2 align=center><h1>" . htmlspecialchars ($file['name']) . "</h1></td></tr>\n";
        echo "<tr><td class=pcleft>";
@@ -5384,10 +5335,6 @@ function renderFileProperties ($file_id)
 {
        $file = spotEntity ('file', $file_id);
        if ($file === NULL)
-       {
-               showError ('Error loading data', __FUNCTION__);
-               return;
-       }
        echo '<table border=0 align=center>';
        printOpFormIntro ('updateFile');
        echo "<tr><th class=tdright>MIME-type:</th><td class=tdleft><input tabindex=101 type=text name=file_type value='";
@@ -5762,8 +5709,7 @@ function renderCell ($cell)
                echo "</td></tr></table>";
                break;
        default:
-               showError ('odd data', __FUNCTION__);
-               break;
+               throw new RealmNotFoundException($cell['realm']);
        }
 }
 
@@ -5961,7 +5907,7 @@ function dynamic_title_decoder ($path_position)
                        'params' => array()
                );
        case 'chapter':
-               assertUIntArg ('chapter_no', __FUNCTION__);
+               assertUIntArg ('chapter_no');
                $chapters = getChapterList();
                $chapter_no = $_REQUEST['chapter_no'];
                $chapter_name = isset ($chapters[$chapter_no]) ? $chapters[$chapter_no]['name'] : 'N/A';
@@ -5971,7 +5917,7 @@ function dynamic_title_decoder ($path_position)
                        'params' => array ('chapter_no' => $chapter_no)
                );
        case 'user':
-               assertUIntArg ('user_id', __FUNCTION__);
+               assertUIntArg ('user_id');
                $userinfo = spotEntity ('user', $_REQUEST['user_id']);
                return array
                (
@@ -5979,7 +5925,7 @@ function dynamic_title_decoder ($path_position)
                        'params' => array ('user_id' => $_REQUEST['user_id'])
                );
        case 'ipv4rspool':
-               assertUIntArg ('pool_id', __FUNCTION__);
+               assertUIntArg ('pool_id');
                $poolInfo = spotEntity ('ipv4rspool', $_REQUEST['pool_id']);
                return array
                (
@@ -5987,7 +5933,7 @@ function dynamic_title_decoder ($path_position)
                        'params' => array ('pool_id' => $_REQUEST['pool_id'])
                );
        case 'ipv4vs':
-               assertUIntArg ('vs_id', __FUNCTION__);
+               assertUIntArg ('vs_id');
                $tmp = spotEntity ('ipv4vs', $_REQUEST['vs_id']);
                return array
                (
@@ -5995,7 +5941,7 @@ function dynamic_title_decoder ($path_position)
                        'params' => array ('vs_id' => $_REQUEST['vs_id'])
                );
        case 'object':
-               assertUIntArg ('object_id', __FUNCTION__);
+               assertUIntArg ('object_id');
                $object = spotEntity ('object', $_REQUEST['object_id']);
                if ($object == NULL)
                        return array
@@ -6009,7 +5955,7 @@ function dynamic_title_decoder ($path_position)
                        'params' => array ('object_id' => $_REQUEST['object_id'])
                );
        case 'rack':
-               assertUIntArg ('rack_id', __FUNCTION__);
+               assertUIntArg ('rack_id');
                $rack = spotEntity ('rack', $_REQUEST['rack_id']);
                return array
                (
@@ -6030,7 +5976,7 @@ function dynamic_title_decoder ($path_position)
                                'params' => array()
                        );
        case 'file':
-               assertUIntArg ('file_id', __FUNCTION__);
+               assertUIntArg ('file_id');
                $file = spotEntity ('file', $_REQUEST['file_id']);
                if ($file == NULL)
                        return array
@@ -6044,7 +5990,7 @@ function dynamic_title_decoder ($path_position)
                        'params' => array ('file_id' => $_REQUEST['file_id'])
                );
        case 'ipaddress':
-               assertIPv4Arg ('ip', __FUNCTION__);
+               assertIPv4Arg ('ip');
                $address = getIPv4Address ($_REQUEST['ip']);
                return array
                (
@@ -6056,7 +6002,7 @@ function dynamic_title_decoder ($path_position)
                switch ($pageno)
                {
                case 'ipv4net':
-                       assertUIntArg ('id', __FUNCTION__);
+                       assertUIntArg ('id');
                        $range = spotEntity ('ipv4net', $_REQUEST['id']);
                        return array
                        (
@@ -6064,7 +6010,7 @@ function dynamic_title_decoder ($path_position)
                                'params' => array ('id' => $_REQUEST['id'])
                        );
                case 'ipaddress':
-                       assertIPv4Arg ('ip', __FUNCTION__);
+                       assertIPv4Arg ('ip');
                        $range = spotEntity ('ipv4net', getIPv4AddressNetworkId ($_REQUEST['ip']));
                        return array
                        (
@@ -6087,26 +6033,16 @@ function dynamic_title_decoder ($path_position)
                switch ($pageno)
                {
                case 'rack':
-                       assertUIntArg ('rack_id', __FUNCTION__);
+                       assertUIntArg ('rack_id');
                        $rack = spotEntity ('rack', $_REQUEST['rack_id']);
-                       if ($rack == NULL)
-                       {
-                               showError ('Rack not found', __FUNCTION__);
-                               return NULL;
-                       }
                        return array
                        (
                                'name' => $rack['row_name'],
                                'params' => array ('row_id' => $rack['row_id'])
                        );
                case 'row':
-                       assertUIntArg ('row_id', __FUNCTION__);
+                       assertUIntArg ('row_id');
                        $rowInfo = getRackRowInfo ($_REQUEST['row_id']);
-                       if ($rowInfo == NULL)
-                       {
-                               showError ('getRackRowInfo() failed', __FUNCTION__);
-                               return NULL;
-                       }
                        return array
                        (
                                'name' => $rowInfo['name'],
index 51a0a63d2b884e0b4142eac9bde963e64171c517..f8bd6decc848430ffe18c67dafc445669ee1f57a 100644 (file)
@@ -52,12 +52,12 @@ $msgcode['addPortForwarding']['OK'] = 2;
 $msgcode['addPortForwarding']['ERR'] = 100;
 function addPortForwarding ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertIPv4Arg ('localip', __FUNCTION__);
-       assertIPv4Arg ('remoteip', __FUNCTION__);
-       assertUIntArg ('localport', __FUNCTION__);
-       assertStringArg ('proto', __FUNCTION__);
-       assertStringArg ('description', __FUNCTION__, TRUE);
+       assertUIntArg ('object_id');
+       assertIPv4Arg ('localip');
+       assertIPv4Arg ('remoteip');
+       assertUIntArg ('localport');
+       assertStringArg ('proto');
+       assertStringArg ('description', TRUE);
        $remoteport = isset ($_REQUEST['remoteport']) ? $_REQUEST['remoteport'] : '';
        if (!strlen ($remoteport))
                $remoteport = $_REQUEST['localport'];
@@ -83,12 +83,12 @@ $msgcode['delPortForwarding']['OK'] = 3;
 $msgcode['delPortForwarding']['ERR'] = 100;
 function delPortForwarding ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertIPv4Arg ('localip', __FUNCTION__);
-       assertIPv4Arg ('remoteip', __FUNCTION__);
-       assertUIntArg ('localport', __FUNCTION__);
-       assertUIntArg ('remoteport', __FUNCTION__);
-       assertStringArg ('proto', __FUNCTION__);
+       assertUIntArg ('object_id');
+       assertIPv4Arg ('localip');
+       assertIPv4Arg ('remoteip');
+       assertUIntArg ('localport');
+       assertUIntArg ('remoteport');
+       assertStringArg ('proto');
 
        $error = deletePortForwarding
        (
@@ -109,13 +109,13 @@ $msgcode['updPortForwarding']['OK'] = 4;
 $msgcode['updPortForwarding']['ERR'] = 100;
 function updPortForwarding ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertIPv4Arg ('localip', __FUNCTION__);
-       assertIPv4Arg ('remoteip', __FUNCTION__);
-       assertUIntArg ('localport', __FUNCTION__);
-       assertUIntArg ('remoteport', __FUNCTION__);
-       assertStringArg ('proto', __FUNCTION__);
-       assertStringArg ('description', __FUNCTION__);
+       assertUIntArg ('object_id');
+       assertIPv4Arg ('localip');
+       assertIPv4Arg ('remoteip');
+       assertUIntArg ('localport');
+       assertUIntArg ('remoteport');
+       assertStringArg ('proto');
+       assertStringArg ('description');
 
        $error = updatePortForwarding
        (
@@ -138,8 +138,8 @@ $msgcode['addPortForObject']['ERR1'] = 101;
 $msgcode['addPortForObject']['ERR2'] = 100;
 function addPortForObject ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertStringArg ('port_name', __FUNCTION__, TRUE);
+       assertUIntArg ('object_id');
+       assertStringArg ('port_name', TRUE);
        if (!strlen ($_REQUEST['port_name']))
                return buildRedirectURL (__FUNCTION__, 'ERR1');
        $error = commitAddPort ($_REQUEST['object_id'], $_REQUEST['port_name'], $_REQUEST['port_type_id'], $_REQUEST['port_label'], $_REQUEST['port_l2address']);
@@ -154,11 +154,11 @@ $msgcode['editPortForObject']['ERR1'] = 101;
 $msgcode['editPortForObject']['ERR2'] = 100;
 function editPortForObject ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertUIntArg ('port_id', __FUNCTION__);
-       assertUIntArg ('port_type_id', __FUNCTION__);
+       assertUIntArg ('object_id');
+       assertUIntArg ('port_id');
+       assertUIntArg ('port_type_id');
        // tolerate empty value now to produce custom informative message later
-       assertStringArg ('name', __FUNCTION__, TRUE);
+       assertStringArg ('name', TRUE);
        if (!strlen ($_REQUEST['name']))
                return buildRedirectURL (__FUNCTION__, 'ERR1');
 
@@ -177,7 +177,7 @@ $msgcode['delPortFromObject']['OK'] = 7;
 $msgcode['delPortFromObject']['ERR'] = 100;
 function delPortFromObject ()
 {
-       assertUIntArg ('port_id', __FUNCTION__);
+       assertUIntArg ('port_id');
        $error = delObjectPort ($_REQUEST['port_id']);
 
        if ($error != '')
@@ -190,8 +190,8 @@ $msgcode['linkPortForObject']['OK'] = 8;
 $msgcode['linkPortForObject']['ERR'] = 100;
 function linkPortForObject ()
 {
-       assertUIntArg ('port_id', __FUNCTION__);
-       assertUIntArg ('remote_port_id', __FUNCTION__);
+       assertUIntArg ('port_id');
+       assertUIntArg ('remote_port_id');
 
        // FIXME: ensure, that at least one of these ports belongs to the current object
        $error = linkPorts ($_REQUEST['port_id'], $_REQUEST['remote_port_id']);
@@ -217,8 +217,8 @@ $msgcode['unlinkPortForObject']['OK'] = 9;
 $msgcode['unlinkPortForObject']['ERR'] = 100;
 function unlinkPortForObject ()
 {
-       assertUIntArg ('port_id', __FUNCTION__);
-       assertUIntArg ('remote_port_id', __FUNCTION__);
+       assertUIntArg ('port_id');
+       assertUIntArg ('remote_port_id');
 
        $local_port_info = getPortInfo ($_REQUEST['port_id']);
        $remote_port_info = getPortInfo ($_REQUEST['remote_port_id']);
@@ -243,10 +243,10 @@ $msgcode['addMultiPorts']['OK'] = 10;
 $msgcode['addMultiPorts']['ERR'] = 123;
 function addMultiPorts ()
 {
-       assertStringArg ('format', __FUNCTION__);
-       assertStringArg ('input', __FUNCTION__);
-       assertUIntArg ('port_type', __FUNCTION__);
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertStringArg ('format');
+       assertStringArg ('input');
+       assertUIntArg ('port_type');
+       assertUIntArg ('object_id');
        $format = $_REQUEST['format'];
        $port_type = $_REQUEST['port_type'];
        $object_id = $_REQUEST['object_id'];
@@ -356,10 +356,10 @@ $msgcode['updIPv4Allocation']['OK'] = 12;
 $msgcode['updIPv4Allocation']['ERR'] = 100;
 function updIPv4Allocation ()
 {
-       assertIPv4Arg ('ip', __FUNCTION__);
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertStringArg ('bond_name', __FUNCTION__, TRUE);
-       assertStringArg ('bond_type', __FUNCTION__);
+       assertIPv4Arg ('ip');
+       assertUIntArg ('object_id');
+       assertStringArg ('bond_name', TRUE);
+       assertStringArg ('bond_type');
 
        $error = updateBond ($_REQUEST['ip'], $_REQUEST['object_id'], $_REQUEST['bond_name'], $_REQUEST['bond_type']);
        if ($error != '')
@@ -372,8 +372,8 @@ $msgcode['delIPv4Allocation']['OK'] = 14;
 $msgcode['delIPv4Allocation']['ERR'] = 100;
 function delIPv4Allocation ()
 {
-       assertIPv4Arg ('ip', __FUNCTION__);
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertIPv4Arg ('ip');
+       assertUIntArg ('object_id');
 
        $error = unbindIpFromObject ($_REQUEST['ip'], $_REQUEST['object_id']);
        if ($error != '')
@@ -387,10 +387,10 @@ $msgcode['addIPv4Allocation']['ERR1'] = 170;
 $msgcode['addIPv4Allocation']['ERR2'] = 100;
 function addIPv4Allocation ()
 {
-       assertIPv4Arg ('ip', __FUNCTION__);
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertStringArg ('bond_name', __FUNCTION__, TRUE);
-       assertStringArg ('bond_type', __FUNCTION__);
+       assertIPv4Arg ('ip');
+       assertUIntArg ('object_id');
+       assertStringArg ('bond_name', TRUE);
+       assertStringArg ('bond_type');
 
        // Strip masklen.
        $ip = ereg_replace ('/[[:digit:]]+$', '', $_REQUEST['ip']);
@@ -421,8 +421,8 @@ $msgcode['addIPv4Prefix']['ERR3'] = 175;
 $msgcode['addIPv4Prefix']['ERR4'] = 176;
 function addIPv4Prefix ()
 {
-       assertStringArg ('range', __FUNCTION__);
-       assertStringArg ('name', __FUNCTION__, TRUE);
+       assertStringArg ('range');
+       assertStringArg ('name', TRUE);
 
        $is_bcast = isset ($_REQUEST['is_bcast']) ? $_REQUEST['is_bcast'] : 'off';
        $taglist = isset ($_REQUEST['taglist']) ? $_REQUEST['taglist'] : array();
@@ -438,7 +438,7 @@ $msgcode['delIPv4Prefix']['OK'] = 24;
 $msgcode['delIPv4Prefix']['ERR'] = 100;
 function delIPv4Prefix ()
 {
-       assertUIntArg ('id', __FUNCTION__);
+       assertUIntArg ('id');
        $error = destroyIPv4Prefix ($_REQUEST['id']);
        if ($error != '')
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
@@ -450,9 +450,9 @@ $msgcode['updIPv4Prefix']['OK'] = 25;
 $msgcode['updIPv4Prefix']['ERR'] = 100;
 function updIPv4Prefix ()
 {
-       assertUIntArg ('id', __FUNCTION__);
-       assertStringArg ('name', __FUNCTION__, TRUE);
-       assertStringArg ('comment', __FUNCTION__, TRUE);
+       assertUIntArg ('id');
+       assertStringArg ('name', TRUE);
+       assertStringArg ('comment', TRUE);
        global $sic;
        if (strlen ($error = updateIPv4Network_real ($sic['id'], $sic['name'], $sic['comment'])))
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
@@ -464,8 +464,8 @@ $msgcode['editAddress']['OK'] = 27;
 $msgcode['editAddress']['ERR'] = 100;
 function editAddress ()
 {
-       assertIPv4Arg ('ip', __FUNCTION__);
-       assertStringArg ('name', __FUNCTION__, TRUE);
+       assertIPv4Arg ('ip');
+       assertStringArg ('name', TRUE);
 
        if (isset ($_REQUEST['reserved']))
                $reserved = $_REQUEST['reserved'];
@@ -482,9 +482,9 @@ $msgcode['createUser']['OK'] = 40;
 $msgcode['createUser']['ERR'] = 102;
 function createUser ()
 {
-       assertStringArg ('username', __FUNCTION__);
-       assertStringArg ('realname', __FUNCTION__, TRUE);
-       assertStringArg ('password', __FUNCTION__);
+       assertStringArg ('username');
+       assertStringArg ('realname', TRUE);
+       assertStringArg ('password');
        $username = $_REQUEST['username'];
        $password = sha1 ($_REQUEST['password']);
        $result = commitCreateUserAccount ($username, $_REQUEST['realname'], $password);
@@ -500,10 +500,10 @@ $msgcode['updateUser']['ERR1'] = 103;
 $msgcode['updateUser']['ERR1'] = 104;
 function updateUser ()
 {
-       assertUIntArg ('user_id', __FUNCTION__);
-       assertStringArg ('username', __FUNCTION__);
-       assertStringArg ('realname', __FUNCTION__, TRUE);
-       assertStringArg ('password', __FUNCTION__);
+       assertUIntArg ('user_id');
+       assertStringArg ('username');
+       assertStringArg ('realname', TRUE);
+       assertStringArg ('password');
        $username = $_REQUEST['username'];
        $new_password = $_REQUEST['password'];
        if (NULL == ($userinfo = spotEntity ('user', $_REQUEST['user_id'])))
@@ -522,9 +522,9 @@ $msgcode['updateDictionary']['OK'] = 51;
 $msgcode['updateDictionary']['ERR'] = 109;
 function updateDictionary ()
 {
-       assertUIntArg ('chapter_no', __FUNCTION__);
-       assertUIntArg ('dict_key', __FUNCTION__);
-       assertStringArg ('dict_value', __FUNCTION__);
+       assertUIntArg ('chapter_no');
+       assertUIntArg ('dict_key');
+       assertStringArg ('dict_value');
        if (commitUpdateDictionary ($_REQUEST['chapter_no'], $_REQUEST['dict_key'], $_REQUEST['dict_value']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -535,8 +535,8 @@ $msgcode['supplementDictionary']['OK'] = 52;
 $msgcode['supplementDictionary']['ERR'] = 110;
 function supplementDictionary ()
 {
-       assertUIntArg ('chapter_no', __FUNCTION__);
-       assertStringArg ('dict_value', __FUNCTION__);
+       assertUIntArg ('chapter_no');
+       assertStringArg ('dict_value');
        if (commitSupplementDictionary ($_REQUEST['chapter_no'], $_REQUEST['dict_value']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -547,8 +547,8 @@ $msgcode['reduceDictionary']['OK'] = 50;
 $msgcode['reduceDictionary']['ERR'] = 111;
 function reduceDictionary ()
 {
-       assertUIntArg ('chapter_no', __FUNCTION__);
-       assertUIntArg ('dict_key', __FUNCTION__);
+       assertUIntArg ('chapter_no');
+       assertUIntArg ('dict_key');
        if (commitReduceDictionary ($_REQUEST['chapter_no'], $_REQUEST['dict_key']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -559,7 +559,7 @@ $msgcode['addChapter']['OK'] = 55;
 $msgcode['addChapter']['ERR'] = 112;
 function addChapter ()
 {
-       assertStringArg ('chapter_name', __FUNCTION__);
+       assertStringArg ('chapter_name');
        if (commitAddChapter ($_REQUEST['chapter_name']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -570,8 +570,8 @@ $msgcode['updateChapter']['OK'] = 54;
 $msgcode['updateChapter']['ERR'] = 113;
 function updateChapter ()
 {
-       assertUIntArg ('chapter_no', __FUNCTION__);
-       assertStringArg ('chapter_name', __FUNCTION__);
+       assertUIntArg ('chapter_no');
+       assertStringArg ('chapter_name');
        if (commitUpdateChapter ($_REQUEST['chapter_no'], $_REQUEST['chapter_name']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -582,7 +582,7 @@ $msgcode['delChapter']['OK'] = 53;
 $msgcode['delChapter']['ERR'] = 114;
 function delChapter ()
 {
-       assertUIntArg ('chapter_no', __FUNCTION__);
+       assertUIntArg ('chapter_no');
        if (commitDeleteChapter ($_REQUEST['chapter_no']))
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -593,8 +593,8 @@ $msgcode['changeAttribute']['OK'] = 46;
 $msgcode['changeAttribute']['ERR'] = 115;
 function changeAttribute ()
 {
-       assertUIntArg ('attr_id', __FUNCTION__);
-       assertStringArg ('attr_name', __FUNCTION__);
+       assertUIntArg ('attr_id');
+       assertStringArg ('attr_name');
        if (commitUpdateAttribute ($_REQUEST['attr_id'], $_REQUEST['attr_name']))
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -605,8 +605,8 @@ $msgcode['createAttribute']['OK'] = 45;
 $msgcode['createAttribute']['ERR'] = 116;
 function createAttribute ()
 {
-       assertStringArg ('attr_name', __FUNCTION__);
-       assertStringArg ('attr_type', __FUNCTION__);
+       assertStringArg ('attr_name');
+       assertStringArg ('attr_type');
        if (commitAddAttribute ($_REQUEST['attr_name'], $_REQUEST['attr_type']))
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['attr_name']));
        else
@@ -617,7 +617,7 @@ $msgcode['deleteAttribute']['OK'] = 47;
 $msgcode['deleteAttribute']['ERR'] = 117;
 function deleteAttribute ()
 {
-       assertUIntArg ('attr_id', __FUNCTION__);
+       assertUIntArg ('attr_id');
        if (commitDeleteAttribute ($_REQUEST['attr_id']))
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -629,14 +629,14 @@ $msgcode['supplementAttrMap']['ERR1'] = 154;
 $msgcode['supplementAttrMap']['ERR2'] = 118;
 function supplementAttrMap ()
 {
-       assertUIntArg ('attr_id', __FUNCTION__);
-       assertUIntArg ('objtype_id', __FUNCTION__);
+       assertUIntArg ('attr_id');
+       assertUIntArg ('objtype_id');
        $attrMap = getAttrMap();
        if ($attrMap[$_REQUEST['attr_id']]['type'] != 'dict')
                $chapter_id = 'NULL';
        else
        {
-               assertUIntArg ('chapter_no', __FUNCTION__); // FIXME: this doesn't fail on 0 (ticket:272)
+               assertUIntArg ('chapter_no'); // FIXME: this doesn't fail on 0 (ticket:272)
                if (0 == ($chapter_id = $_REQUEST['chapter_no']))
                        return buildRedirectURL (__FUNCTION__, 'ERR1', array ('chapter not selected'));
        }
@@ -650,8 +650,8 @@ $msgcode['reduceAttrMap']['OK'] = 49;
 $msgcode['reduceAttrMap']['ERR'] = 119;
 function reduceAttrMap ()
 {
-       assertUIntArg ('attr_id', __FUNCTION__);
-       assertUIntArg ('objtype_id', __FUNCTION__);
+       assertUIntArg ('attr_id');
+       assertUIntArg ('objtype_id');
        if (commitReduceAttrMap ($_REQUEST['attr_id'], $_REQUEST['objtype_id']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -662,8 +662,8 @@ $msgcode['clearSticker']['OK'] = 15;
 $msgcode['clearSticker']['ERR'] = 120;
 function clearSticker ()
 {
-       assertUIntArg ('attr_id', __FUNCTION__);
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('attr_id');
+       assertUIntArg ('object_id');
        if (commitResetAttrValue ($_REQUEST['object_id'], $_REQUEST['attr_id']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -673,7 +673,7 @@ function clearSticker ()
 $msgcode['updateObjectAllocation']['OK'] = 63;
 function updateObjectAllocation ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
 
        if (!isset ($_REQUEST['got_atoms']))
        {
@@ -692,11 +692,6 @@ function updateObjectAllocation ()
                if (!isset ($workingRacksData[$cand_id]))
                {
                        $rackData = spotEntity ('rack', $cand_id);
-                       if ($rackData == NULL)
-                       {
-                               showError ('rack not found', __FUNCTION__);
-                               return;
-                       }
                        amplifyCell ($rackData);
                        $workingRacksData[$cand_id] = $rackData;
                }
@@ -747,13 +742,13 @@ $msgcode['updateObject']['OK'] = 16;
 $msgcode['updateObject']['ERR'] = 121;
 function updateObject ()
 {
-       assertUIntArg ('num_attrs', __FUNCTION__, TRUE);
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertUIntArg ('object_type_id', __FUNCTION__);
-       assertStringArg ('object_name', __FUNCTION__, TRUE);
-       assertStringArg ('object_label', __FUNCTION__, TRUE);
-       assertStringArg ('object_barcode', __FUNCTION__, TRUE);
-       assertStringArg ('object_asset_no', __FUNCTION__, TRUE);
+       assertUIntArg ('num_attrs', TRUE);
+       assertUIntArg ('object_id');
+       assertUIntArg ('object_type_id');
+       assertStringArg ('object_name', TRUE);
+       assertStringArg ('object_label', TRUE);
+       assertStringArg ('object_barcode', TRUE);
+       assertStringArg ('object_asset_no', TRUE);
        if (isset ($_REQUEST['object_has_problems']) and $_REQUEST['object_has_problems'] == 'on')
                $has_problems = 'yes';
        else
@@ -777,7 +772,7 @@ function updateObject ()
        $num_attrs = isset ($_REQUEST['num_attrs']) ? $_REQUEST['num_attrs'] : 0;
        for ($i = 0; $i < $num_attrs; $i++)
        {
-               assertUIntArg ("${i}_attr_id", __FUNCTION__);
+               assertUIntArg ("${i}_attr_id");
                $attr_id = $_REQUEST["${i}_attr_id"];
 
                // Field is empty, delete attribute and move on.
@@ -789,7 +784,7 @@ function updateObject ()
 
                // The value could be uint/float, but we don't know ATM. Let SQL
                // server check this and complain.
-               assertStringArg ("${i}_value", __FUNCTION__);
+               assertStringArg ("${i}_value");
                $value = $_REQUEST["${i}_value"];
                switch ($oldvalues[$attr_id]['type'])
                {
@@ -802,8 +797,7 @@ function updateObject ()
                                $oldvalue = $oldvalues[$attr_id]['key'];
                                break;
                        default:
-                               showError ('Internal structure error', __FUNCTION__);
-                               die;
+                               throw new RuntimeException('Internal structure error');
                }
                if ($value === $oldvalue) // ('' == 0), but ('' !== 0)
                        continue;
@@ -834,11 +828,11 @@ function addMultipleObjects()
                        $log = mergeLogs ($log, oneLiner (184, array ($i + 1)));
                        break;
                }
-               assertUIntArg ("${i}_object_type_id", __FUNCTION__, TRUE);
-               assertStringArg ("${i}_object_name", __FUNCTION__, TRUE);
-               assertStringArg ("${i}_object_label", __FUNCTION__, TRUE);
-               assertStringArg ("${i}_object_asset_no", __FUNCTION__, TRUE);
-               assertStringArg ("${i}_object_barcode", __FUNCTION__, TRUE);
+               assertUIntArg ("${i}_object_type_id", TRUE);
+               assertStringArg ("${i}_object_name", TRUE);
+               assertStringArg ("${i}_object_label", TRUE);
+               assertStringArg ("${i}_object_asset_no", TRUE);
+               assertStringArg ("${i}_object_barcode", TRUE);
                $name = $_REQUEST["${i}_object_name"];
 
                // It's better to skip silently, than to print a notice.
@@ -868,8 +862,8 @@ function addLotOfObjects()
 {
        $log = emptyLog();
        $taglist = isset ($_REQUEST['taglist']) ? $_REQUEST['taglist'] : array();
-       assertUIntArg ('global_type_id', __FUNCTION__, TRUE);
-       assertStringArg ('namelist', __FUNCTION__, TRUE);
+       assertUIntArg ('global_type_id', TRUE);
+       assertStringArg ('namelist', TRUE);
        $global_type_id = $_REQUEST['global_type_id'];
        if ($global_type_id == 0 or !strlen ($_REQUEST['namelist']))
                $log = mergeLogs ($log, oneLiner (186));
@@ -900,7 +894,7 @@ $msgcode['deleteObject']['OK'] = 76;
 $msgcode['deleteObject']['ERR'] = 100;
 function deleteObject ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
        if (NULL === ($oinfo = spotEntity ('object', $_REQUEST['object_id'])))
                return buildRedirectURL (__FUNCTION__, 'ERR', array ('object not found'));
 
@@ -919,7 +913,7 @@ $msgcode['useupPort']['OK'] = 11;
 $msgcode['useupPort']['ERR'] = 124;
 function useupPort ()
 {
-       assertUIntArg ('port_id', __FUNCTION__);
+       assertUIntArg ('port_id');
        if (commitUseupPort ($_REQUEST['port_id']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK');
        else
@@ -930,12 +924,12 @@ $msgcode['updateUI']['OK'] = 56;
 $msgcode['updateUI']['ERR'] = 125;
 function updateUI ()
 {
-       assertUIntArg ('num_vars', __FUNCTION__);
+       assertUIntArg ('num_vars');
 
        for ($i = 0; $i < $_REQUEST['num_vars']; $i++)
        {
-               assertStringArg ("${i}_varname", __FUNCTION__);
-               assertStringArg ("${i}_varvalue", __FUNCTION__, TRUE);
+               assertStringArg ("${i}_varname");
+               assertStringArg ("${i}_varvalue", TRUE);
                $varname = $_REQUEST["${i}_varname"];
                $varvalue = $_REQUEST["${i}_varvalue"];
 
@@ -1012,10 +1006,10 @@ $msgcode['addRealServer']['ERR'] = 126;
 // Add single record.
 function addRealServer ()
 {
-       assertUIntArg ('pool_id', __FUNCTION__);
-       assertIPv4Arg ('remoteip', __FUNCTION__);
-       assertStringArg ('rsport', __FUNCTION__, TRUE);
-       assertStringArg ('rsconfig', __FUNCTION__, TRUE);
+       assertUIntArg ('pool_id');
+       assertIPv4Arg ('remoteip');
+       assertStringArg ('rsport', TRUE);
+       assertStringArg ('rsconfig', TRUE);
        if (!addRStoRSPool (
                $_REQUEST['pool_id'],
                $_REQUEST['remoteip'],
@@ -1034,9 +1028,9 @@ $msgcode['addRealServers']['ERR2'] = 127;
 // Parse textarea submitted and try adding a real server for each line.
 function addRealServers ()
 {
-       assertUIntArg ('pool_id', __FUNCTION__);
-       assertStringArg ('format', __FUNCTION__);
-       assertStringArg ('rawtext', __FUNCTION__);
+       assertUIntArg ('pool_id');
+       assertStringArg ('format');
+       assertStringArg ('rawtext');
        $rawtext = str_replace ('\r', '', $_REQUEST['rawtext']);
        $ngood = $nbad = 0;
        $rsconfig = '';
@@ -1096,14 +1090,14 @@ $msgcode['addVService']['ERR1'] = 132;
 $msgcode['addVService']['ERR2'] = 100;
 function addVService ()
 {
-       assertIPv4Arg ('vip', __FUNCTION__);
-       assertUIntArg ('vport', __FUNCTION__);
-       assertStringArg ('proto', __FUNCTION__);
+       assertIPv4Arg ('vip');
+       assertUIntArg ('vport');
+       assertStringArg ('proto');
        if ($_REQUEST['proto'] != 'TCP' and $_REQUEST['proto'] != 'UDP')
                return buildRedirectURL (__FUNCTION__, 'ERR1');
-       assertStringArg ('name', __FUNCTION__, TRUE);
-       assertStringArg ('vsconfig', __FUNCTION__, TRUE);
-       assertStringArg ('rsconfig', __FUNCTION__, TRUE);
+       assertStringArg ('name', TRUE);
+       assertStringArg ('vsconfig', TRUE);
+       assertStringArg ('rsconfig', TRUE);
        $error = commitCreateVS
        (
                $_REQUEST['vip'],
@@ -1124,7 +1118,7 @@ $msgcode['deleteRealServer']['OK'] = 35;
 $msgcode['deleteRealServer']['ERR'] = 128;
 function deleteRealServer ()
 {
-       assertUIntArg ('id', __FUNCTION__);
+       assertUIntArg ('id');
        if (!commitDeleteRS ($_REQUEST['id']))
                return buildRedirectURL (__FUNCTION__, 'ERR');
        else
@@ -1135,9 +1129,9 @@ $msgcode['deleteLoadBalancer']['OK'] = 19;
 $msgcode['deleteLoadBalancer']['ERR'] = 129;
 function deleteLoadBalancer ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertUIntArg ('pool_id', __FUNCTION__);
-       assertUIntArg ('vs_id', __FUNCTION__);
+       assertUIntArg ('object_id');
+       assertUIntArg ('pool_id');
+       assertUIntArg ('vs_id');
        if (!commitDeleteLB (
                $_REQUEST['object_id'],
                $_REQUEST['pool_id'],
@@ -1152,7 +1146,7 @@ $msgcode['deleteVService']['OK'] = 29;
 $msgcode['deleteVService']['ERR'] = 130;
 function deleteVService ()
 {
-       assertUIntArg ('vs_id', __FUNCTION__);
+       assertUIntArg ('vs_id');
        if (!commitDeleteVS ($_REQUEST['vs_id']))
                return buildRedirectURL (__FUNCTION__, 'ERR');
        else
@@ -1163,10 +1157,10 @@ $msgcode['updateRealServer']['OK'] = 36;
 $msgcode['updateRealServer']['ERR'] = 133;
 function updateRealServer ()
 {
-       assertUIntArg ('rs_id', __FUNCTION__);
-       assertIPv4Arg ('rsip', __FUNCTION__);
-       assertStringArg ('rsport', __FUNCTION__, TRUE);
-       assertStringArg ('rsconfig', __FUNCTION__, TRUE);
+       assertUIntArg ('rs_id');
+       assertIPv4Arg ('rsip');
+       assertStringArg ('rsport', TRUE);
+       assertStringArg ('rsconfig', TRUE);
        if (!commitUpdateRS (
                $_REQUEST['rs_id'],
                $_REQUEST['rsip'],
@@ -1182,11 +1176,11 @@ $msgcode['updateLoadBalancer']['OK'] = 20;
 $msgcode['updateLoadBalancer']['ERR'] = 134;
 function updateLoadBalancer ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertUIntArg ('pool_id', __FUNCTION__);
-       assertUIntArg ('vs_id', __FUNCTION__);
-       assertStringArg ('vsconfig', __FUNCTION__, TRUE);
-       assertStringArg ('rsconfig', __FUNCTION__, TRUE);
+       assertUIntArg ('object_id');
+       assertUIntArg ('pool_id');
+       assertUIntArg ('vs_id');
+       assertStringArg ('vsconfig', TRUE);
+       assertStringArg ('rsconfig', TRUE);
        if (!commitUpdateLB (
                $_REQUEST['object_id'],
                $_REQUEST['pool_id'],
@@ -1203,13 +1197,13 @@ $msgcode['updateVService']['OK'] = 30;
 $msgcode['updateVService']['ERR'] = 135;
 function updateVService ()
 {
-       assertUIntArg ('vs_id', __FUNCTION__);
-       assertIPv4Arg ('vip', __FUNCTION__);
-       assertUIntArg ('vport', __FUNCTION__);
-       assertStringArg ('proto', __FUNCTION__);
-       assertStringArg ('name', __FUNCTION__, TRUE);
-       assertStringArg ('vsconfig', __FUNCTION__, TRUE);
-       assertStringArg ('rsconfig', __FUNCTION__, TRUE);
+       assertUIntArg ('vs_id');
+       assertIPv4Arg ('vip');
+       assertUIntArg ('vport');
+       assertStringArg ('proto');
+       assertStringArg ('name', TRUE);
+       assertStringArg ('vsconfig', TRUE);
+       assertStringArg ('rsconfig', TRUE);
        if (!commitUpdateVS (
                $_REQUEST['vs_id'],
                $_REQUEST['vip'],
@@ -1228,11 +1222,11 @@ $msgcode['addLoadBalancer']['OK'] = 18;
 $msgcode['addLoadBalancer']['ERR'] = 137;
 function addLoadBalancer ()
 {
-       assertUIntArg ('pool_id', __FUNCTION__);
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertUIntArg ('vs_id', __FUNCTION__);
-       assertStringArg ('vsconfig', __FUNCTION__, TRUE);
-       assertStringArg ('rsconfig', __FUNCTION__, TRUE);
+       assertUIntArg ('pool_id');
+       assertUIntArg ('object_id');
+       assertUIntArg ('vs_id');
+       assertStringArg ('vsconfig', TRUE);
+       assertStringArg ('rsconfig', TRUE);
        if (!addLBtoRSPool (
                $_REQUEST['pool_id'],
                $_REQUEST['object_id'],
@@ -1249,9 +1243,9 @@ $msgcode['addRSPool']['OK'] = 31;
 $msgcode['addRSPool']['ERR'] = 100;
 function addRSPool ()
 {
-       assertStringArg ('name', __FUNCTION__, TRUE);
-       assertStringArg ('vsconfig', __FUNCTION__, TRUE);
-       assertStringArg ('rsconfig', __FUNCTION__, TRUE);
+       assertStringArg ('name', TRUE);
+       assertStringArg ('vsconfig', TRUE);
+       assertStringArg ('rsconfig', TRUE);
        $error = commitCreateRSPool
        (
                $_REQUEST['name'],
@@ -1269,7 +1263,7 @@ $msgcode['deleteRSPool']['OK'] = 32;
 $msgcode['deleteRSPool']['ERR'] = 138;
 function deleteRSPool ()
 {
-       assertUIntArg ('pool_id', __FUNCTION__);
+       assertUIntArg ('pool_id');
        if (!commitDeleteRSPool ($_REQUEST['pool_id']))
                return buildRedirectURL (__FUNCTION__, 'ERR');
        else
@@ -1280,10 +1274,10 @@ $msgcode['updateRSPool']['OK'] = 33;
 $msgcode['updateRSPool']['ERR'] = 139;
 function updateRSPool ()
 {
-       assertUIntArg ('pool_id', __FUNCTION__);
-       assertStringArg ('name', __FUNCTION__, TRUE);
-       assertStringArg ('vsconfig', __FUNCTION__, TRUE);
-       assertStringArg ('rsconfig', __FUNCTION__, TRUE);
+       assertUIntArg ('pool_id');
+       assertStringArg ('name', TRUE);
+       assertStringArg ('vsconfig', TRUE);
+       assertStringArg ('rsconfig', TRUE);
        if (!commitUpdateRSPool ($_REQUEST['pool_id'], $_REQUEST['name'], $_REQUEST['vsconfig'], $_REQUEST['rsconfig']))
                return buildRedirectURL (__FUNCTION__, 'ERR');
        else
@@ -1294,7 +1288,7 @@ $msgcode['updateRSInService']['OK'] = 38;
 $msgcode['updateRSInService']['ERR'] = 140;
 function updateRSInService ()
 {
-       assertUIntArg ('rscount', __FUNCTION__);
+       assertUIntArg ('rscount');
        $pool_id = $_REQUEST['pool_id'];
        $orig = spotEntity ('ipv4rspool', $pool_id);
        amplifyCell ($orig);
@@ -1326,16 +1320,16 @@ $msgcode['importPTRData']['ERR'] = 141;
 // are operating on.
 function importPTRData ()
 {
-       assertUIntArg ('addrcount', __FUNCTION__);
+       assertUIntArg ('addrcount');
        $nbad = $ngood = 0;
        for ($i = 0; $i < $_REQUEST['addrcount']; $i++)
        {
                $inputname = "import_${i}";
                if (!isset ($_REQUEST[$inputname]) or $_REQUEST[$inputname] != 'on')
                        continue;
-               assertIPv4Arg ("addr_${i}", __FUNCTION__);
-               assertStringArg ("descr_${i}", __FUNCTION__, TRUE);
-               assertStringArg ("rsvd_${i}", __FUNCTION__);
+               assertIPv4Arg ("addr_${i}");
+               assertStringArg ("descr_${i}", TRUE);
+               assertStringArg ("rsvd_${i}");
                // Non-existent addresses will not have this argument set in request.
                $rsvd = 'no';
                if ($_REQUEST["rsvd_${i}"] == 'yes')
@@ -1356,7 +1350,7 @@ $msgcode['generateAutoPorts']['ERR'] = 142;
 function generateAutoPorts ()
 {
        global $pageno;
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
        $info = spotEntity ('object', $_REQUEST['object_id']);
        // Navigate away in case of success, stay at the place otherwise.
        if (executeAutoPorts ($_REQUEST['object_id'], $info['objtype_id']))
@@ -1376,7 +1370,7 @@ function saveEntityTags ()
                return buildRedirectURL (__FUNCTION__, 'ERR2', array (__FUNCTION__));
        $realm = $etype_by_pageno[$pageno];
        $bypass = $page[$pageno]['bypass'];
-       assertUIntArg ($bypass, __FUNCTION__);
+       assertUIntArg ($bypass);
        $entity_id = $_REQUEST[$bypass];
        $taglist = isset ($_REQUEST['taglist']) ? $_REQUEST['taglist'] : array();
        // Build a chain from the submitted data, minimize it,
@@ -1402,7 +1396,7 @@ $msgcode['destroyTag']['ERR1'] = 183;
 $msgcode['destroyTag']['ERR2'] = 144;
 function destroyTag ()
 {
-       assertUIntArg ('tag_id', __FUNCTION__);
+       assertUIntArg ('tag_id');
        global $taglist;
        if (!isset ($taglist[$_REQUEST['tag_id']]))
                return buildRedirectURL (__FUNCTION__, 'ERR1', array ($_REQUEST['tag_id']));
@@ -1417,8 +1411,8 @@ $msgcode['createTag']['ERR1'] = 145;
 $msgcode['createTag']['ERR3'] = 147;
 function createTag ()
 {
-       assertStringArg ('tag_name', __FUNCTION__);
-       assertUIntArg ('parent_id', __FUNCTION__, TRUE);
+       assertStringArg ('tag_name');
+       assertUIntArg ('parent_id', TRUE);
        $tagname = trim ($_REQUEST['tag_name']);
        if (!validTagName ($tagname))
                return buildRedirectURL (__FUNCTION__, 'ERR1', array ($tagname));
@@ -1435,9 +1429,9 @@ $msgcode['updateTag']['ERR1'] = 145;
 $msgcode['updateTag']['ERR2'] = 148;
 function updateTag ()
 {
-       assertUIntArg ('tag_id', __FUNCTION__);
-       assertUIntArg ('parent_id', __FUNCTION__, TRUE);
-       assertStringArg ('tag_name', __FUNCTION__);
+       assertUIntArg ('tag_id');
+       assertUIntArg ('parent_id', TRUE);
+       assertStringArg ('tag_name');
        $tagname = trim ($_REQUEST['tag_name']);
        if (!validTagName ($tagname))
                return buildRedirectURL (__FUNCTION__, 'ERR1', array ($tagname));
@@ -1454,9 +1448,9 @@ $msgcode['rollTags']['OK'] = 67;
 $msgcode['rollTags']['ERR'] = 149;
 function rollTags ()
 {
-       assertUIntArg ('row_id', __FUNCTION__);
-       assertStringArg ('sum', __FUNCTION__, TRUE);
-       assertUIntArg ('realsum', __FUNCTION__);
+       assertUIntArg ('row_id');
+       assertStringArg ('sum', TRUE);
+       assertUIntArg ('realsum');
        if ($_REQUEST['sum'] != $_REQUEST['realsum'])
                return buildRedirectURL (__FUNCTION__, 'ERR');
        // Even if the user requested an empty tag list, don't bail out, but process existing
@@ -1489,9 +1483,9 @@ function changeMyPassword ()
        global $remote_username, $user_auth_src;
        if ($user_auth_src != 'database')
                return buildRedirectURL (__FUNCTION__, 'ERR1');
-       assertStringArg ('oldpassword', __FUNCTION__);
-       assertStringArg ('newpassword1', __FUNCTION__);
-       assertStringArg ('newpassword2', __FUNCTION__);
+       assertStringArg ('oldpassword');
+       assertStringArg ('newpassword1');
+       assertStringArg ('newpassword2');
        $remote_userid = getUserIDByUsername ($remote_username);
        $userinfo = spotEntity ('user', $remote_userid);
        if ($userinfo['user_password_hash'] != sha1 ($_REQUEST['oldpassword']))
@@ -1528,7 +1522,7 @@ $msgcode['setPortVLAN']['ERR1'] = 156;
 // on the base chain plus necessary context added.
 function setPortVLAN ()
 {
-       assertUIntArg ('portcount', __FUNCTION__);
+       assertUIntArg ('portcount');
        $data = getSwitchVLANs ($_REQUEST['object_id']);
        if ($data === NULL)
                return buildRedirectURL (__FUNCTION__, 'ERR1');
@@ -1582,7 +1576,7 @@ function setPortVLAN ()
 
 function submitSLBConfig ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
        $newconfig = buildLVSConfig ($_REQUEST['object_id']);
        $msglog = gwSendFileToObject ($_REQUEST['object_id'], 'slbconfig', html_entity_decode ($newconfig, ENT_QUOTES, 'UTF-8'));
        return buildWideRedirectURL ($msglog);
@@ -1592,7 +1586,7 @@ $msgcode['addRow']['OK'] = 74;
 $msgcode['addRow']['ERR'] = 100;
 function addRow ()
 {
-       assertStringArg ('name', __FUNCTION__);
+       assertStringArg ('name');
 
        if (commitAddRow ($_REQUEST['name']) === TRUE)
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
@@ -1604,8 +1598,8 @@ $msgcode['updateRow']['OK'] = 75;
 $msgcode['updateRow']['ERR'] = 100;
 function updateRow ()
 {
-       assertUIntArg ('row_id', __FUNCTION__);
-       assertStringArg ('name', __FUNCTION__);
+       assertUIntArg ('row_id');
+       assertStringArg ('name');
 
        if (TRUE === commitUpdateRow ($_REQUEST['row_id'], $_REQUEST['name']))
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
@@ -1617,7 +1611,7 @@ $msgcode['deleteRow']['OK'] = 77;
 $msgcode['deleteRow']['ERR'] = 100;
 function deleteRow ()
 {
-       assertUIntArg ('row_id', __FUNCTION__);
+       assertUIntArg ('row_id');
        $rowinfo = getRackRowInfo ($_REQUEST['row_id']);
 
        if (TRUE === commitDeleteRow ($_REQUEST['row_id']))
@@ -1631,13 +1625,13 @@ $msgcode['addRack']['ERR1'] = 171;
 $msgcode['addRack']['ERR2'] = 172;
 function addRack ()
 {
-       assertUIntArg ('row_id', __FUNCTION__);
+       assertUIntArg ('row_id');
        $taglist = isset ($_REQUEST['taglist']) ? $_REQUEST['taglist'] : array();
        if (isset ($_REQUEST['got_data']))
        {
-               assertStringArg ('rack_name', __FUNCTION__);
-               assertUIntArg ('rack_height1', __FUNCTION__);
-               assertStringArg ('rack_comment', __FUNCTION__, TRUE);
+               assertStringArg ('rack_name');
+               assertUIntArg ('rack_height1');
+               assertStringArg ('rack_comment', TRUE);
 
                if (commitAddRack ($_REQUEST['rack_name'], $_REQUEST['rack_height1'], $_REQUEST['row_id'], $_REQUEST['rack_comment'], $taglist) === TRUE)
                        return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['rack_name']));
@@ -1646,8 +1640,8 @@ function addRack ()
        }
        elseif (isset ($_REQUEST['got_mdata']))
        {
-               assertUIntArg ('rack_height2', __FUNCTION__);
-               assertStringArg ('rack_names', __FUNCTION__, TRUE);
+               assertUIntArg ('rack_height2');
+               assertStringArg ('rack_names', TRUE);
                $log = emptyLog();
                // copy-and-paste from renderAddMultipleObjectsForm()
                $names1 = explode ('\n', $_REQUEST['rack_names']);
@@ -1678,7 +1672,7 @@ $msgcode['deleteRack']['ERR'] = 100;
 $msgcode['deleteRack']['ERR1'] = 206;
 function deleteRack ()
 {
-       assertUIntArg ('rack_id', __FUNCTION__);
+       assertUIntArg ('rack_id');
        if (NULL == ($rackData = spotEntity ('rack', $_REQUEST['rack_id'])))
                return buildRedirectURL (__FUNCTION__, 'ERR', array ('Rack not found'), 'rackspace', 'default');
        amplifyCell ($rackData);
@@ -1693,11 +1687,11 @@ $msgcode['updateRack']['OK'] = 68;
 $msgcode['updateRack']['ERR'] = 177;
 function updateRack ()
 {
-       assertUIntArg ('rack_id', __FUNCTION__);
-       assertUIntArg ('rack_row_id', __FUNCTION__);
-       assertUIntArg ('rack_height', __FUNCTION__);
-       assertStringArg ('rack_name', __FUNCTION__);
-       assertStringArg ('rack_comment', __FUNCTION__, TRUE);
+       assertUIntArg ('rack_id');
+       assertUIntArg ('rack_row_id');
+       assertUIntArg ('rack_height');
+       assertStringArg ('rack_name');
+       assertStringArg ('rack_comment', TRUE);
 
        resetThumbCache ($_REQUEST['rack_id']);
        if (TRUE === commitUpdateRack ($_REQUEST['rack_id'], $_REQUEST['rack_name'], $_REQUEST['rack_height'], $_REQUEST['rack_row_id'], $_REQUEST['rack_comment']))
@@ -1709,7 +1703,7 @@ function updateRack ()
 $msgcode['updateRackDesign']['ERR'] = 100;
 function updateRackDesign ()
 {
-       assertUIntArg ('rack_id', __FUNCTION__);
+       assertUIntArg ('rack_id');
        if (NULL == ($rackData = spotEntity ('rack', $_REQUEST['rack_id'])))
                return buildRedirectURL (__FUNCTION__, 'ERR', array ('Rack not found'), 'rackspace', 'default');
        amplifyCell ($rackData);
@@ -1722,7 +1716,7 @@ function updateRackDesign ()
 $msgcode['updateRackProblems']['ERR'] = 100;
 function updateRackProblems ()
 {
-       assertUIntArg ('rack_id', __FUNCTION__);
+       assertUIntArg ('rack_id');
        if (NULL == ($rackData = spotEntity ('rack', $_REQUEST['rack_id'])))
                return buildRedirectURL (__FUNCTION__, 'ERR', array ('Rack not found'), 'rackspace', 'default');
        amplifyCell ($rackData);
@@ -1734,8 +1728,8 @@ function updateRackProblems ()
 
 function querySNMPData ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
-       assertStringArg ('community', __FUNCTION__);
+       assertUIntArg ('object_id');
+       assertStringArg ('community');
        return doSNMPmining ($_REQUEST['object_id'], $_REQUEST['community']);
 }
 
@@ -1744,7 +1738,7 @@ $msgcode['addFileWithoutLink']['ERR'] = 100;
 // File-related functions
 function addFileWithoutLink ()
 {
-       assertStringArg ('comment', __FUNCTION__, TRUE);
+       assertStringArg ('comment', TRUE);
 
        // Make sure the file can be uploaded
        if (get_cfg_var('file_uploads') != 1)
@@ -1774,9 +1768,9 @@ function addFileToEntity ()
                return buildRedirectURL (__FUNCTION__, 'ERR1', array (__FUNCTION__));
        $realm = $etype_by_pageno[$pageno];
        $bypass = $page[$pageno]['bypass'];
-       assertUIntArg ($bypass, __FUNCTION__);
+       assertUIntArg ($bypass);
        $entity_id = $_REQUEST[$bypass];
-       assertStringArg ('comment', __FUNCTION__, TRUE);
+       assertStringArg ('comment', TRUE);
 
        // Make sure the file can be uploaded
        if (get_cfg_var('file_uploads') != 1)
@@ -1801,11 +1795,11 @@ $msgcode['linkFileToEntity']['ERR1'] = 178;
 $msgcode['linkFileToEntity']['ERR2'] = 100;
 function linkFileToEntity ()
 {
-       assertUIntArg ('file_id', __FUNCTION__);
+       assertUIntArg ('file_id');
        global $page, $pageno, $etype_by_pageno;
        $entity_type = $etype_by_pageno[$pageno];
        $bypass_name = $page[$pageno]['bypass'];
-       assertUIntArg ($bypass_name, __FUNCTION__);
+       assertUIntArg ($bypass_name);
 
        $fi = spotEntity ('file', $_REQUEST['file_id']);
        if ($fi === NULL)
@@ -1824,7 +1818,7 @@ $msgcode['replaceFile']['ERR3'] = 182;
 function replaceFile ()
 {
        global $sic;
-       assertUIntArg ('file_id', __FUNCTION__);
+       assertUIntArg ('file_id');
 
        // Make sure the file can be uploaded
        if (get_cfg_var('file_uploads') != 1)
@@ -1845,10 +1839,10 @@ $msgcode['updateFile']['OK'] = 70;
 $msgcode['updateFile']['ERR'] = 100;
 function updateFile ()
 {
-       assertUIntArg ('file_id', __FUNCTION__);
-       assertStringArg ('file_name', __FUNCTION__);
-       assertStringArg ('file_type', __FUNCTION__);
-       assertStringArg ('file_comment', __FUNCTION__, TRUE);
+       assertUIntArg ('file_id');
+       assertStringArg ('file_name');
+       assertStringArg ('file_type');
+       assertStringArg ('file_comment', TRUE);
        // prepared statement params below
        global $sic;
        $error = commitUpdateFile ($sic['file_id'], $sic['file_name'], $sic['file_type'], $sic['file_comment']);
@@ -1862,7 +1856,7 @@ $msgcode['unlinkFile']['OK'] = 72;
 $msgcode['unlinkFile']['ERR'] = 182;
 function unlinkFile ()
 {
-       assertUIntArg ('link_id', __FUNCTION__);
+       assertUIntArg ('link_id');
        $error = commitUnlinkFile ($_REQUEST['link_id']);
 
        if ($error != '')
@@ -1875,7 +1869,7 @@ $msgcode['deleteFile']['OK'] = 73;
 $msgcode['deleteFile']['ERR'] = 100;
 function deleteFile ()
 {
-       assertUIntArg ('file_id', __FUNCTION__);
+       assertUIntArg ('file_id');
        $shortInfo = spotEntity ('file', $_REQUEST['file_id']);
        $error = commitDeleteFile ($_REQUEST['file_id']);
 
@@ -1890,9 +1884,9 @@ $msgcode['updateFileText']['ERR1'] = 179;
 $msgcode['updateFileText']['ERR2'] = 180;
 function updateFileText ()
 {
-       assertUIntArg ('file_id', __FUNCTION__);
-       assertStringArg ('mtime_copy', __FUNCTION__);
-       assertStringArg ('file_text', __FUNCTION__, TRUE); // it's Ok to save empty
+       assertUIntArg ('file_id');
+       assertStringArg ('mtime_copy');
+       assertStringArg ('file_text', TRUE); // it's Ok to save empty
        $shortInfo = spotEntity ('file', $_REQUEST['file_id']);
        if ($shortInfo['mtime'] != $_REQUEST['mtime_copy'])
                return buildRedirectURL (__FUNCTION__, 'ERR1');
@@ -1907,8 +1901,8 @@ $msgcode['addPortInterfaceCompat']['OK'] = 48;
 $msgcode['addPortInterfaceCompat']['ERR'] = 110;
 function addPortInterfaceCompat ()
 {
-       assertUIntArg ('iif_id', __FUNCTION__);
-       assertUIntArg ('oif_id', __FUNCTION__);
+       assertUIntArg ('iif_id');
+       assertUIntArg ('oif_id');
        if (commitSupplementPIC ($_REQUEST['iif_id'], $_REQUEST['oif_id']))
                return buildRedirectURL (__FUNCTION__, 'OK');
        return buildRedirectURL (__FUNCTION__, 'ERR');
@@ -1918,8 +1912,8 @@ $msgcode['delPortInterfaceCompat']['OK'] = 49;
 $msgcode['delPortInterfaceCompat']['ERR'] = 111;
 function delPortInterfaceCompat ()
 {
-       assertUIntArg ('iif_id', __FUNCTION__);
-       assertUIntArg ('oif_id', __FUNCTION__);
+       assertUIntArg ('iif_id');
+       assertUIntArg ('oif_id');
        if (commitReducePIC ($_REQUEST['iif_id'], $_REQUEST['oif_id']))
                return buildRedirectURL (__FUNCTION__, 'OK');
        return buildRedirectURL (__FUNCTION__, 'ERR');
@@ -1950,8 +1944,8 @@ $msgcode['addPortInterfaceCompatPack']['OK'] = 44;
 $msgcode['addPortInterfaceCompatPack']['ERR'] = 123;
 function addPortInterfaceCompatPack ()
 {
-       assertStringArg ('standard', __FUNCTION__);
-       assertUIntArg ('iif_id', __FUNCTION__);
+       assertStringArg ('standard');
+       assertUIntArg ('iif_id');
        global $ifcompatpack;
        if (!array_key_exists ($_REQUEST['standard'], $ifcompatpack) or !array_key_exists ($_REQUEST['iif_id'], getPortIIFOptions()))
                return buildRedirectURL (__FUNCTION__, 'ERR');
@@ -1968,8 +1962,8 @@ $msgcode['delPortInterfaceCompatPack']['OK'] = 44;
 $msgcode['delPortInterfaceCompatPack']['ERR'] = 123;
 function delPortInterfaceCompatPack ()
 {
-       assertStringArg ('standard', __FUNCTION__);
-       assertUIntArg ('iif_id', __FUNCTION__);
+       assertStringArg ('standard');
+       assertUIntArg ('iif_id');
        global $ifcompatpack;
        if (!array_key_exists ($_REQUEST['standard'], $ifcompatpack) or !array_key_exists ($_REQUEST['iif_id'], getPortIIFOptions()))
                return buildRedirectURL (__FUNCTION__, 'ERR');
index 1141f4766b39cd735afa179616509da53d4d985e..d1b25dddf543b2f89809e4925937336970b5b44e 100644 (file)
@@ -85,7 +85,7 @@ function trigger_livevlans ()
 function trigger_snmpportfinder ()
 {
 
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
        $object = spotEntity ('object', $_REQUEST['object_id']);
        switch ($object['objtype_id'])
        {
@@ -111,13 +111,13 @@ function trigger_snmpportfinder ()
 
 function trigger_isloadbalancer ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
        return considerConfiguredConstraint (spotEntity ('object', $_REQUEST['object_id']), 'IPV4LB_LISTSRC') ? 'std' : '';
 }
 
 function trigger_ipv4 ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
        if (count (getObjectIPv4Allocations ($_REQUEST['object_id'])))
                return 'std';
        // Only hide the tab, if there are no addresses allocated.
@@ -126,13 +126,13 @@ function trigger_ipv4 ()
 
 function trigger_natv4 ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
        return considerConfiguredConstraint (spotEntity ('object', $_REQUEST['object_id']), 'IPV4NAT_LISTSRC') ? 'std' : '';
 }
 
 function trigger_poolrscount ()
 {
-       assertUIntArg ('pool_id', __FUNCTION__);
+       assertUIntArg ('pool_id');
        $poolInfo = spotEntity ('ipv4rspool', $_REQUEST['pool_id']);
        amplifyCell ($poolInfo);
        return count ($poolInfo['rslist']) ? 'std' : '';
@@ -140,7 +140,7 @@ function trigger_poolrscount ()
 
 function trigger_autoports ()
 {
-       assertUIntArg ('object_id', __FUNCTION__);
+       assertUIntArg ('object_id');
        $object = spotEntity ('object', $_REQUEST['object_id']);
        amplifyCell ($object);
        if (count ($object['ports']))
@@ -168,7 +168,7 @@ function trigger_localreports ()
 
 function trigger_file_editText ()
 {
-       assertUIntArg ('file_id', __FUNCTION__);
+       assertUIntArg ('file_id');
        $fileInfo = spotEntity ('file', $_REQUEST['file_id']);
        return ($fileInfo['type'] == 'text/plain') ? 'std' : '';
 }
index 217372442977887f8a44d290fc5249b136569778..454e4102dbb3b82f38a438fbe61d5a6ef063d463 100644 (file)
--- a/index.php
+++ b/index.php
@@ -75,8 +75,7 @@ if (isset ($tabhandler[$pageno][$tabno]))
                                assertStringArg ($page[$pageno]['bypass'], 'index');
                                break;
                        default:
-                               showError ('Dispatching error for bypass parameter', __FILE__);
-                               break;
+                               throw new RuntimeException ('Dispatching error for bypass parameter');
                }
                showMessageOrError();
                $tabhandler[$pageno][$tabno] ($_REQUEST[$page[$pageno]['bypass']]);
@@ -93,7 +92,7 @@ elseif (isset ($page[$pageno]['handler']))
        $page[$pageno]['handler'] ($tabno);
 }
 else
-       showError ("Failed to find handler for page '${pageno}', tab '${tabno}'", __FILE__);
+       throw new RuntimeException ("Failed to find handler for page '${pageno}', tab '${tabno}'");
 ?>
        </td>
        </tr>
index a4b619eaa9043bc4e6a1db8129e781dc4da6e5f6..4102c879974466bf094ab8dc2c768cd3f32be039 100644 (file)
--- a/popup.php
+++ b/popup.php
@@ -1,4 +1,7 @@
 <?php
+ob_start();
+try {
+
        require 'inc/interface.php';
        require 'inc/init.php';
 
@@ -60,7 +63,7 @@ function findSparePorts ($port_id, $only_racks = array())
        echo "<link rel=stylesheet type='text/css' href=pi.css />\n";
        echo "<link rel=icon href='" . getFaviconURL() . "' type='image/x-icon' />";
        echo '</head><body style="height: 100%;">';
-       assertStringArg ('helper', __FILE__);
+       assertStringArg ('helper');
        switch ($_REQUEST['helper'])
        {
                case 'portlist':
@@ -70,9 +73,9 @@ function findSparePorts ($port_id, $only_racks = array())
                        fixContext();
                        if (!permitted())
                                renderAccessDenied();
-                       assertUIntArg ('port', __FILE__);
-                       assertUIntArg ('object_id', __FILE__);
-                       assertStringArg ('in_rack', __FILE__);
+                       assertUIntArg ('port');
+                       assertUIntArg ('object_id');
+                       assertStringArg ('in_rack');
                        $localchoice = $_REQUEST['in_rack'] == 'y';
                        echo '<div style="background-color: #f0f0f0; border: 1px solid #3c78b5; padding: 10px; height: 100%; text-align: center; margin: 5px;"><h2>';
                        echo $localchoice ? 'Nearest spare ports:' : 'All spare ports:';
@@ -123,9 +126,17 @@ function findSparePorts ($port_id, $only_racks = array())
                        echo '</form></div>';
                        break;
                default:
-                       showError ('Invalid parameter or internal error', __FILE__);
-                       break;
+                       throw new RuntimeException ('Invalid parameter or internal error');
        }
 ?>
 </body>
 </html>
+<?php
+ob_end_flush();
+}
+catch (Exception $e)
+{
+        ob_end_clean();
+        printException($e);
+}
+?>
index b2e8a7faafb579a023450ffdd71677491e16c4b0..4077ef3de1f90111e23c67d4e9db573861b75d0c 100644 (file)
@@ -4,20 +4,18 @@ try {
 // Include init after ophandlers, not before, so local.php can redefine things later.
 require 'inc/ophandlers.php';
 require 'inc/init.php';
-assertStringArg ('op', __FILE__);
+assertStringArg ('op');
 $op = $_REQUEST['op'];
 
 // FIXME: find a better way to handle this error
 if ($op == 'addFile' && !isset($_FILES['file']['error'])) {
-       showError ("File upload error, it's size probably exceeds upload_max_filesize directive in php.ini");
-       die;
+       throw new RuntimeException("File upload error, it's size probably exceeds upload_max_filesize directive in php.ini");
 }
 fixContext();
 
 if (!isset ($ophandler[$pageno][$tabno][$op]))
 {
-       showError ("Invalid request in operation broker: page '${pageno}', tab '${tabno}', op '${op}'", __FILE__);
-       die();
+       throw new RuntimeException("Invalid request in operation broker: page '${pageno}', tab '${tabno}', op '${op}'");
 }
 
 // This is the only exception at the moment, so its handling is hardcoded.
@@ -32,7 +30,7 @@ else
        $location = $ophandler[$pageno][$tabno][$op]();
        if (!strlen ($location))
        {
-               showError ('Operation handler failed to return its status', __FILE__);
+               throw new RuntimeException('Operation handler failed to return its status');
        }
 }
 header ("Location: " . $location);
index 3c8ace52c6ff9f0d35ad5e3ce25b64865f3b36f4..035c325814840c368c64b2dbf7ee3ef9f673c6e9 100644 (file)
@@ -5,11 +5,11 @@ ob_start();
 try {
 require 'inc/init.php';
 
-assertStringArg ('img', __FILE__);
+assertStringArg ('img');
 switch ($_REQUEST['img'])
 {
        case 'minirack': // rack security context
-               assertUIntArg ('rack_id', __FILE__);
+               assertUIntArg ('rack_id');
                $pageno = 'rack';
                $tabno = 'default';
                fixContext();
@@ -19,11 +19,11 @@ switch ($_REQUEST['img'])
                        renderRackThumb ($_REQUEST['rack_id']);
                break;
        case 'progressbar': // no security context
-               assertUIntArg ('done', __FILE__, TRUE);
+               assertUIntArg ('done', TRUE);
                renderProgressBarImage ($_REQUEST['done']);
                break;
        case 'preview': // file security context
-               assertUIntArg ('file_id', __FILE__);
+               assertUIntArg ('file_id');
                $pageno = 'file';
                $tabno = 'download';
                fixContext();