As has been commented elsewhere, when you're programmatically inserting data the most reliable way of doing so is often to simulate form submission - that way, any validation rules are applied and other modules have a chance to intercept the submission to do what they need to with the data. This was achieved using the function
$form_state = array(); $form_state['values'] = array(); $form_state['values']['field1'] = $value1; $form_state['values']['field2'] = $value2; drupal_execute('your_form_id', $form_state);
drupal_execute has gone altogether from Drupal 7. Instead, you need simply replace any call to
drupal_execute with the new function
drupal_form_submit (see the documentation). Otherwise, everything (from the point of view of your syntax) remains the same. Don't forget to use
form_get_errors() to ensure that the form has validated.