/** * Set the value of this field to the next sequence for the form field. * @param I2CE_FormField $form_field */ public function FF_IG_setSequence($form_field) { $form_field_id = $form_field->getAttribute("DBEntry_form_field_id"); $update_query = "INSERT INTO field_sequence (form_field, sequence) SELECT " . $form_field_id . ", LAST_INSERT_ID( IFNULL( MAX(sequence), 0) +1 ) FROM (SELECT MAX(integer_value) AS sequence FROM last_entry WHERE form_field = " . $form_field_id . " UNION SELECT sequence FROM field_sequence WHERE form_field = " . $form_field_id . ") as next_sequence ON DUPLICATE KEY UPDATE sequence = values(sequence)"; $select_query = "SELECT LAST_INSERT_ID() AS sequence"; I2CE::raiseError($update_query); $res = $this->db->exec($update_query); if (!I2CE::pearError($res, "Error setting new field sequence:")) { $res = $this->db->getRow($select_query); if (!I2CE::pearError($res, "Error getting new field sequence:")) { $form_field->setValue($res->sequence); $form_field->setGenerate(false); } } }