webmcp
view framework/env/param/update.lua @ 2:72860d232f32
Version 1.0.2
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
| author | jbe/bsw | 
|---|---|
| date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) | 
| parents | 9fdfb27f8e67 | 
| children | 
 line source
     1 --[[--
     2 param.update(
     3   record,               -- database record to be updated
     4   key_and_field_name1,  -- name of CGI parameter and record field
     5   key_and_field_name2,  -- another name of a CGI parameter and record field
     6   {
     7     key3,               -- name of CGI parameter
     8     field_name3         -- name of record field
     9   }
    10 )
    12 This function can update several fields of a database record using GET/POST request parameters (or internal/exchanged parameters). The type of each parameter is automatically determined by the class of the record (_class:get_colums()[field].type).
    13 --]]--
    15 function param.update(record, mapping_info, ...)
    16   if not mapping_info then
    17     return
    18   end
    19   assert(record, "No record given for param.update(...).")
    20   assert(record._class, "Record passed to param.update(...) has no _class attribute.")
    21   local key, field_name
    22   if type(mapping_info) == "string" then
    23     key        = mapping_info
    24     field_name = mapping_info
    25   else
    26     key        = mapping_info[1]
    27     field_name = mapping_info[2]
    28   end
    29   assert(key, "No key given in parameter of param.update(...).")
    30   assert(field_name, "No field name given in parameter of param.update(...).")
    31   local column_info = record._class:get_columns()[field_name]
    32   if not column_info then
    33     error('Type of column "' .. field_name .. '" is unknown.')
    34   end
    35   local new_value = param.get(key, column_info.type)
    36   if new_value ~= record[field_name] then
    37     record[field_name] = new_value
    38   end
    39   return param.update(record, ...)  -- recursivly process following arguments
    40 end
