diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index 24577b3b26141965a69594962b515bcfedf5c417..85eabbc48050cf9c26b363a25c22b14527cf9967 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -333,7 +333,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 98fd5af9cdeb732926fde2c74cdda451828fa4ca..6e0146d25f37115512dfa0e85e1661f42468303e 100644 --- a/interface/lib/classes/remoting_lib.inc.php +++ b/interface/lib/classes/remoting_lib.inc.php @@ -200,7 +200,12 @@ class remoting_lib extends tform_base { global $app; - $this->primary_id_override = true; + // 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 = intval($record['_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 2e0fa2dad167ee6b78a0bdc8353999d37488bec5..a7f4746662477065029c57dfab7d556e1caf9d03 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -104,7 +104,7 @@ class tform_base { var $module; var $primary_id; var $diffrec = array(); - var $primary_id_override = false; + var $primary_id_override = 0; /** * Loading of the table definition @@ -1263,20 +1263,21 @@ 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']; - if($this->primary_id_override && isset($record['_primary_id'])) { - $sql_insert_key .= '`'.$this->formDef["db_table_idx"].'`, '; - $sql_insert_val .= intval($record['_primary_id']).", "; - } - // go trough all fields of the tab if(is_array($record)) { foreach($fields as $key => $field) {