DrupalBin
Submit Code
About
Recent Posts
admin settings not saving
1 hour 16 min
ago
Code
1 hour 59 min
ago
Code
2 hours 14 min
ago
css path
3 hours 59 min
ago
more
Tags
CCK
drupal
fapi
jquery
menu
module
Panels
php
simpletest
test
theme
views
more tags
User login
Log in using OpenID:
What is OpenID?
Username:
*
Password:
*
Create new account
Request new password
Log in using OpenID
Cancel OpenID login
Home
Fix for hook_nodeapi used for validation of CCK fields
View
Download
Fix
This fix will not be saved to the database until you submit.
Summary:
Tags:
Any tags you'd like to associate with your code, delimitered by commas (example: Views, CCK, Module, etc).
Source code:
*
<?php function sitehelper_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) { if($node->type == 'cinfo') { switch ($op) { case 'update': break; case 'view': break; case 'validate': $newgcd = trim($node->field_gcd_user_id[0][value]); if(!preg_match("/^[a-z]{6}_[0-9]{4}$/i", $newgcd)) { // VALIDATION GOES HERE form_set_error('field_gcd_user_id', 'Please enter a valid GCD User ID.'); } $newfed = trim($node->field_federal_id_number_0[0][value]); if(!preg_match("/^([0-9]{3}-?[0-9]{2}-?[0-9]{4}|[0-9]{2}-[0-9]{7})$/", $newfed)) { form_set_error('field_federal_id_number_0', 'Please enter a valid Federal ID number.'); } if($node->field_are_you_a_route_operator[0][value] == 'Yes') { $newmdr = trim($node->field_mdr_number[0][value]); if(!preg_match("/^[0-9]{7}-[0-9]{3}-MDR$/", $newmdr)) { form_set_error('field_mdr_number', 'If you are a Route Operator, you must enter a valid MDR Number.'); } } break; case 'delete': break; } } elseif($node->type == 'linfo') { switch ($op) { case 'insert': break; case 'update': break; case 'view': break; case 'validate': if(db_result(db_query("SELECT field_inactivel_value FROM {content_type_linfo} WHERE field_inactivel_value = '%s' AND nid = %d", inactive, $node->nid))) { form_set_error('field_inactivel', 'This location is inactive. Updates are unavailable.'); } else { if($node->field_inactivel[0][value] == 'inactive' && db_result(db_query("SELECT field_parentnid_value, field_inactive_value FROM {content_type_minfo} WHERE field_parentnid_value = %d AND field_inactive_value = '%s'", $node->nid, active))) { form_set_error('field_inactivel', 'All machines must be removed from this location before the location can be removed.'); } $newgcdl = trim($node->field_gcd_user_id[0][value]); if(!preg_match("/^[a-z]{6}_[0-9]{4}$/i", $newgcdl)) { // VALIDATION GOES HERE form_set_error('field_gcd_user_id', 'Please enter a valid GCD User ID.'); } $newfedl = trim($node->field_federal_id_number_0[0][value]); if(!preg_match("/^([0-9]{3}-?[0-9]{2}-?[0-9]{4}|[0-9]{2}-[0-9]{7})$/", $newfedl)) { form_set_error('field_federal_id_number_0', 'Please enter a valid Federal ID number for this location.'); } $newgoa = trim($node->field_goa[0][value]); if(!preg_match("/^[0-9]{7}-[0-9]{3}-GOA$/", $newgoa)) { form_set_error('field_goa', 'The location\'s GOA number is required.'); } } break; case 'delete': break; } } elseif($node->type == 'minfo') { switch ($op) { case 'view': break; case 'insert': break; case 'update': break; case 'validate': if(db_result(db_query("SELECT field_inactive_value FROM {content_type_minfo} WHERE field_inactive_value = '%s' AND nid = %d'", inactive, $node->nid))) { form_set_error('field_inactive', 'This machine is inactive. Updates are unavailable.'); } else { $newvgm = trim($node->field_vgm_id_number[0][value]); if(!preg_match("/^[0-9]{6}$/", $newvgm)) { form_set_error('field_vgm_id_number', 'Please enter a valid VGM ID number that is 6 digits long.'); } elseif(db_result(db_query("SELECT nid, field_vgm_id_number_value FROM {content_type_minfo} WHERE field_vgm_id_number_value = '%s' AND field_inactive_value = '%s' AND nid != %d", $newvgm, active, $node->nid))) { form_set_error('field_vgm_id_number', 'That VGM ID number is already in use. If you have a machine with this VGM ID number in another location, please remove it before enrolling it in this location.'); } foreach (array(1,2,3,4) as $matrixrow) { foreach (array(1,2) as $matrixcol) { $newmeter = trim($node->field_beginning_meter_readings[matrix][$matrixrow][$matrixcol]); if(!preg_match("/^[0-9]+$/", $newmeter)) { form_set_error('field_beginning_meter_readings', 'Please enter only numbers into meter readings, leaving off any decimals (If a meter reading is 525.25, enter it as 52525).'); break; } } } } break; case 'delete': break; } } }
Syntax highlighting mode:
ActionScript
ColdFusion
Diff
Drupal
Drupal 5
Drupal 6
HTML
Javascript
MySQL
PHP
Python
robots.txt
SQL
Text
Select the syntax highlighting mode to use.