r4088 genericAssertion(): merge ENUM validation from commitAddAttribute()
authorDenis Ovsienko <infrastation@yandex.ru>
Sun, 9 Jan 2011 12:20:28 +0000 (12:20 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sun, 9 Jan 2011 12:20:28 +0000 (12:20 +0000)
createAttribute(): sayonara
commitAddAttribute(): sayonara

inc/database.php
inc/functions.php
inc/navigation.php
inc/ophandlers.php

index b451079..d37ea2c 100644 (file)
@@ -2283,27 +2283,6 @@ function commitUpdateAttribute ($attr_id = 0, $attr_name = '')
        return usePreparedExecuteBlade ('UPDATE Attribute SET name=? WHERE id=?', array ($attr_name, $attr_id));
 }
 
-function commitAddAttribute ($attr_name = '', $attr_type = '')
-{
-       if (!strlen ($attr_name))
-               throw new InvalidArgException ('$attr_name', $attr_name);
-       switch ($attr_type)
-       {
-               case 'uint':
-               case 'float':
-               case 'string':
-               case 'dict':
-                       break;
-               default:
-                       throw new InvalidArgException ('$attr_type', $attr_type, 'Attribute type not supported');
-       }
-       return usePreparedInsertBlade
-       (
-               'Attribute',
-               array ('name' => $attr_name, 'type' => $attr_type)
-       );
-}
-
 function commitDeleteAttribute ($attr_id = 0)
 {
        return usePreparedDeleteBlade ('Attribute', array ('id' => $attr_id));
index 233f605..d666674 100644 (file)
@@ -241,6 +241,11 @@ function genericAssertion ($argname, $argtype)
                if (!validTagName ($sic[$argname]))
                        throw new InvalidRequestArgException ($argname, $sic[$argname], 'Invalid tag name');
                break;
+       case 'enum/attr_type':
+               assertStringArg ($argname);
+               if (!in_array ($sic[$argname], array ('uint', 'float', 'string', 'dict')))
+                       throw new InvalidRequestArgException ($argname, $sic[$argname], 'Unknown value');
+               break;
        default:
                throw new InvalidArgException ('argtype', $argtype); // comes not from user's input
        }
index 197b937..955197d 100644 (file)
@@ -450,11 +450,20 @@ $tab['attrs']['editmap'] = 'Edit map';
 $tabhandler['attrs']['default'] = 'renderAttributes';
 $tabhandler['attrs']['editattrs'] = 'renderEditAttributesForm';
 $tabhandler['attrs']['editmap'] = 'renderEditAttrMapForm';
-$ophandler['attrs']['editattrs']['add'] = 'createAttribute';
 $ophandler['attrs']['editattrs']['upd'] = 'changeAttribute';
 $ophandler['attrs']['editattrs']['del'] = 'deleteAttribute';
 $ophandler['attrs']['editmap']['add'] = 'supplementAttrMap';
 $ophandler['attrs']['editmap']['del'] = 'reduceAttrMap';
+$ophandler['attrs']['editattrs']['add'] = array
+(
+       'table' => 'Attribute',
+       'action' => 'INSERT',
+       'arglist' => array
+       (
+               array ('url_argname' => 'attr_type', 'table_colname' => 'type', 'assertion' => 'enum/attr_type'),
+               array ('url_argname' => 'attr_name', 'table_colname' => 'name', 'assertion' => 'string'),
+       ),
+);
 
 $page['dict']['title'] = 'Dictionary';
 $page['dict']['parent'] = 'config';
index 9a4503b..bcad0d7 100644 (file)
@@ -718,18 +718,6 @@ function changeAttribute ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
-$msgcode['createAttribute']['OK'] = 45;
-$msgcode['createAttribute']['ERR'] = 116;
-function createAttribute ()
-{
-       assertStringArg ('attr_name');
-       assertStringArg ('attr_type');
-       if (commitAddAttribute ($_REQUEST['attr_name'], $_REQUEST['attr_type']))
-               return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['attr_name']));
-       else
-               return buildRedirectURL (__FUNCTION__, 'ERR');
-}
-
 $msgcode['deleteAttribute']['OK'] = 47;
 $msgcode['deleteAttribute']['ERR'] = 117;
 function deleteAttribute ()