<?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;
}
}
}