Drupal własna walidacja

Załóżmy, że chcemy dodać własną walidację do formularza edycji użytkownika. Musimy w naszym module zaimplementować hook_form_alter. Tutaj za dodatkową walidację będzie odpowiadać funkcja custom_data_validate (nazwa może być dowolna).

function nazwamodulu_form_alter(&$form, $form_state, $form_id) 
{
	switch ($form_id) 
	{
		case 'user_profile_form':
			$form['#validate'][] = 'custom_data_validate';
		break;
	}
}
Teraz wystarczy napisać funkcję custom_data_validate z logiką walidacji. Na dole przykładowa walidacja jednego pola. Dodam, że walidacja innych pól zostaje bez zmian (np. pole wymagane).
function custom_data_validate($form, &$form_state) 
{
	$nr_karty = $form_state['values']['profile_nrkarty'];
	$uid = (int)arg(1);
	if($nr_karty!='')
	{
		$sql = 'SELECT uid FROM profile_values WHERE fid=6 AND value='.$nr_karty;
		$results = db_query($sql);
		$ident = intval(db_result($results));
		$txn_user = user_load($ident);
		if($txn_user->uid!=0 && $txn_user->uid!=$uid)
		{
			form_set_error('profile_nrkarty', 'Istnieje już użytkownik o podanym numerze karty.');
		}
	}
}