r2680 - findAutoTagWarnings(): treat page, tag, op, fromvlan and tovlan correctly
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 4 May 2009 18:23:12 +0000 (18:23 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 4 May 2009 18:23:12 +0000 (18:23 +0000)
 - renderDepot(): fixed error message text
 - scanRealmByText(): new function, API prototype

inc/code.php
inc/functions.php
inc/interface.php

index 06d025c..a5a0edf 100644 (file)
@@ -1110,9 +1110,9 @@ function findAutoTagWarnings ($expr)
                                                'class' => 'warning',
                                                'text' => "Local user account '${recid}' does not exist."
                                        ));
-                               case (mb_ereg_match ('^\$page_[[:alpha:]]+$', $expr['load'])):
-                               case (mb_ereg_match ('^\$tab_[[:alpha:]]+$', $expr['load'])):
-                               case (mb_ereg_match ('^\$op_[[:alpha:]]+$', $expr['load'])):
+                               case (mb_ereg_match ('^\$page_[[:alnum:]]+$', $expr['load'])):
+                               case (mb_ereg_match ('^\$tab_[[:alnum:]]+$', $expr['load'])):
+                               case (mb_ereg_match ('^\$op_[[:alnum:]]+$', $expr['load'])):
                                case (mb_ereg_match ('^\$any_op$', $expr['load'])):
                                case (mb_ereg_match ('^\$any_rack$', $expr['load'])):
                                case (mb_ereg_match ('^\$any_object$', $expr['load'])):
@@ -1126,6 +1126,8 @@ function findAutoTagWarnings ($expr)
                                case (mb_ereg_match ('^\$typeid_[[:digit:]]+$', $expr['load'])): // FIXME: check value validity
                                case (mb_ereg_match ('^\$cn_.+$', $expr['load'])): // FIXME: check name validity and asset existence
                                case (mb_ereg_match ('^\$lgcn_.+$', $expr['load'])): // FIXME: check name validity
+                               case (mb_ereg_match ('^\$fromvlan_[[:digit:]]+$', $expr['load'])):
+                               case (mb_ereg_match ('^\$tovlan_[[:digit:]]+$', $expr['load'])):
                                case (mb_ereg_match ('^\$unmounted$', $expr['load'])):
                                        return array();
                                default:
index 0a4a57c..a0e0d50 100644 (file)
@@ -2103,4 +2103,34 @@ function considerConfiguredConstraint ($entity_realm, $entity_id, $varname)
        return judgeEntity ($entity_realm, $entity_id, $parseCache[$varname]['load']);
 }
 
+// Return list of records in the given realm, which conform to
+// the given RackCode expression. If the realm is unknown or text
+// doesn't validate as a RackCode expression, return NULL.
+// Otherwise (successful scan) return a list of all matched
+// records, even if the list is empty (array() !== NULL). If the
+// text is an empty string, return all found records in the given
+// realm.
+function scanRealmByText ($realm = NULL, $ftext = '')
+{
+       switch ($realm)
+       {
+       case 'object':
+       case 'user':
+       case 'ipv4net':
+       case 'file':
+               if (!strlen ($ftext = trim ($ftext)))
+                       $fexpr = array();
+               else
+               {
+                       $fparse = spotPayload ($ftext, 'SYNT_EXPR');
+                       if ($fparse['result'] != 'ACK')
+                               return NULL;
+                       $fexpr = $fparse['load'];
+               }
+               return filterCellList (listCells ($realm), $fexpr);
+       default:
+               return NULL;
+       }
+
+}
 ?>
index 3f474d6..f324eb3 100644 (file)
@@ -1812,7 +1812,7 @@ function renderDepot ()
        startPortlet ('Objects (' . count ($objects) . ')');
        if ($objects === NULL)
        {
-               showError ('getObjectList() failed', __FUNCTION__);
+               showError ('Fatal error retrieving object list', __FUNCTION__);
                return;
        }
        echo '<br><br><table border=0 cellpadding=5 cellspacing=0 align=center class=cooltable>';