Drupal 5: Adding validation to a node form to ensure its title is unique
Here’s a code snippet that ensures the submitted title is unique across all nodes.
<?php
function MYMODULE_form_alter($form_id, $form) {
if (substr($form_id, -10)=='_node_form') {
// add custom form validation function
$form['#validate'] = array_merge(array('_MYMODULE_helper_validate' => array()), $form['#validate']);
}
}
function _MYMODULE_helper_validate($form_id, $form_values, $form) {
// ensure title is unique
if (strlen($form_values['title'])) {
// check for unique title
$sql = "select distinct title from {node} where 1=1 ";
// don't want to include current title
if ($form_values['nid']) $sql .= "and nid != '" . db_escape_string($form_values['nid']) . "'";
$resource = db_query($sql);
$titles = array();
while($result = db_fetch_array($resource)) $titles[] = $result['title'];
if (in_array($form_values['title'],$titles))
form_set_error('title', $form['title']['#title'] . ' has already been submitted.');
}
}
?>