Drupal 5: Adding custom validation to a CCK node type form

Here is a quick code snippet that enables you to add your own custom validation to a CCK node type form.

<?php
function MYMODULE_form_alter($form_id, &$form) {
  // create a list of node types that require custom validation
  $nodeTypes = array(
    'MYNODETYPE1',
    'MYNODETYPE2',
  );

  // check if the form id is a node form, and if it exists in the above array
  if (substr($form_id,-10)=='_node_form' && in_array(substr($form_id, 0, strlen($form_id)-10), $nodeTypes)) {
    $form['#validate'] = array_merge(array('_MYMODULE_node_form_validate' => array()), $form['#validate']);
  }
}

function _MYMODULE_node_form_validate($form_id, $form_values, $form)
{
  // DEBUG: use print_r($form_values) to see what has been submitted
  // TODO: check for errors here, and use form_set_error() as necessary

  // for example:
  if ($form_values['MYFIELD'][0]['value'] == 'SOMETHING NAUGHTY') {
    form_set_error('MYFIELD', 'MY CUSTOM ERROR MESSAGE');
  }

}
?>