diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 69ebac2e4c3bc628aee969470974861ba22cbe7b..ef7156f478ef214c2a5c4103fba36f5c14136c5c 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -295,7 +295,10 @@ class remoting { return false; } - $insert_id = $app->db->insertID(); + if ( isset($params['_primary_id'] )) + $insert_id = $params['_primary_id']; + else + $insert_id = $app->db->insertID(); // set a few values for compatibility with tform actions, mostly used by plugins $this->id = $insert_id; diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php index a3c744fa83d50cc27367f8376c3453df050384a5..0f313de6bded35da1314350a971861a9609f276c 100644 --- a/interface/lib/classes/remoting_lib.inc.php +++ b/interface/lib/classes/remoting_lib.inc.php @@ -199,7 +199,14 @@ class remoting_lib extends tform_base { function getSQL($record, $action = 'INSERT', $primary_id = 0, $sql_ext_where = '', $dummy = '') { global $app; - + + // early usage. make sure _primary_id is sanitized if present. + if ( isset($record['_primary_id']) && is_numeric($record['_primary_id'])) { + $_primary_id = intval($record['_primary_id']); + if ($_primary_id > 0) + $this->primary_id_override = $_primary_id; + } + if(!is_array($this->formDef)) $app->error("Form definition not found."); $this->dataRecord = $record; diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index 923953adcdc4e3ab2b7b647711e577fb29437e80..c911aa5bc4fd9380cab9a144fb3b1e94c7b69040 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -104,6 +104,7 @@ class tform_base { var $module; var $primary_id; var $diffrec = array(); + var $primary_id_override = 0; /** * Loading of the table definition @@ -1253,12 +1254,18 @@ class tform_base { $this->action = $action; $this->primary_id = $primary_id; - - $record = $this->encode($record, $tab, true); $sql_insert_key = ''; $sql_insert_val = ''; $sql_update = ''; + $record = $this->encode($record, $tab, true); + + if(($this->primary_id_override > 0)) { + $sql_insert_key .= '`'.$this->formDef["db_table_idx"].'`, '; + $sql_insert_val .= $this->primary_id_override.", "; + $record['_primary_id'] = $this->primary_id_override; + } + if($api == true) $fields = &$this->formDef['fields']; else $fields = &$this->formDef['tabs'][$tab]['fields'];