array('label' => 'Full Name'),
);
} // function cck_fullname_field_info()
/**
* Implementation of hook_field_settings().
*/
function cck_fullname_field_settings($op, $field) {
switch ($op) {
case 'form':
$form = array();
//borrowed from namefield module
//-------allow content type creator to determine which fields are required--------
$required_default = array();
if (is_array($field['required_parts'])) {
foreach ($field['required_parts'] as $part => $required) {
if ($required) { $required_default[] = $part; }
} // foreach possibly-required part
} else {
$required_default = array('legal_first', 'legal_last');
} // if we can make up our own defaults
$form['required'] = array(
'#type' => 'fieldset',
'#weight' => 3,
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#title' => t("Required Parts"),
);
$form['required']['required_parts'] = array(
'#type' => 'checkboxes',
'#title' => t("Required Parts"),// CHANGES*** 98-116 copy/paste
'#description' => t("Choose which fields are required. Applies only to fields made 'available' above.
(Ex. 1) If Required (above), then the fields checked here will be a part of that requirement. Unchecked fields will be optional if available above.
(Ex. 2) If Optional (above), then all fields made available are optional UNTIL one field is filled in, then those checked here become required. Unchecked fields here would still be optional. This will prevent the entering of partial or incomplete names."),
'#default_value' => $required_default,
'#options' => array(
'legal_prefix' => t("Prefix"),
'legal_first' => t("First"),
'legal_middle' => t("Middle"),
'legal_last' => t("Last"),
'legal_suffix' => t("Suffix"), // CHANGES*** removed all "preferred" options
),
);
//----------allow content type creator to determine which fields to use-----------
$legal_default = array();
if (is_array($field['legalname'])) {
foreach ($field['legalname'] as $part => $legal) {
if ($legal) { $legal_default[] = $part; }
} // foreach possibly-legal part
} else {
$legal_default = array('legal_first', 'legal_middle', 'legal_last');
} // if we can make up our own default
$form['legal_name'] = array(
'#type' => 'fieldset',
'#weight' => 2,
'#collapsible' => TRUE,
'#collapsed' => TRUE, // CHANGES*** 135-151
'#title' => t('Name'),
);
$form['legal_name']['use_legalname'] = array(
'#type' => 'radios',
'#title' => t('Require name?'),
'#description' => t("Choose if name is required or otional."),
'#required' => TRUE,
'#default_value' => isset($field['use_legalname']) ? $field['use_legalname'] : 'legal_require',
'#options' => array(
'legal_require' => t("Required"),
'legal_optional' => t("Optional"),
),
);
$form['legal_name']['legalname'] = array(
'#type' => 'checkboxes',
'#title' => t(''), // CHANGES***
'#description' => t("Check which fields are made available for this fullname set (not necessarily required)."),
'#required' => TRUE,
'#default_value' => $legal_default,
'#options' => array(
'legal_prefix' => t("Prefix"),
'legal_first' => t("First"),
'legal_middle' => t("Middle"),
'legal_last' => t("Last"),
'legal_suffix' => t("Suffix"),
),
);
// CHANGES** removed 208-226, pref form-note & mid-initial
//-------------specify maximum lengths for each field------------------------
$form['max_lengths_legal'] = array(
'#type' => 'fieldset',
'#weight' => 4,
'#title' => t('Maximum field lengths'), // CHANGES**
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$form['max_lengths_legal']['max_length_prefix_legal'] = array(
'#type' => 'textfield',
'#title' => t('Prefix maximum length'),
'#size' => 1,
'#default_value' => isset($field['max_length_prefix_legal']) ? $field['max_length_prefix_legal'] : '',
'#required' => FALSE,
'#description' => t('The maximum length of the field in characters. Leave blank for an unlimited size.'),
);
$form['max_lengths_legal']['max_length_first_legal'] = array(
'#type' => 'textfield',
'#title' => t('First name maximum length'),
'#size' => 6,
'#default_value' => isset($field['max_length_first_legal']) ? $field['max_length_first_legal'] : '',
'#required' => FALSE,
'#description' => t('The maximum length of the field in characters. Leave blank for an unlimited size.'),
);
$form['max_lengths_legal']['max_length_middle_legal'] = array(
'#type' => 'textfield',
'#title' => t('Middle name maximum length'),
'#size' => 6,
'#required' => FALSE,
'#description' => t('The maximum length of the field in characters (unless Middle Initial is used instead). Leave blank for an unlimited size.'),
);
if ($field['middle_initial'] == 1) {
$form['max_lengths_legal']['max_length_middle_legal']['#default_value'] = 1;
}
else {
$form['max_lengths_legal']['max_length_middle_legal']['#default_value'] = isset($field['max_length_middle_legal']) ? $field['max_length_middle_legal'] : '';
}
$form['max_lengths_legal']['max_length_last_legal'] = array(
'#type' => 'textfield',
'#title' => t('Last name maximum length'),
'#size' => 6,
'#default_value' => isset($field['max_length_last_legal']) ? $field['max_length_last_legal'] : '',
'#required' => FALSE,
'#description' => t('The maximum length of the field in characters. Leave blank for an unlimited size.'),
);
$form['max_lengths_legal']['max_length_suffix_legal'] = array(
'#type' => 'textfield',
'#title' => t('Suffix maximum length'),
'#size' => 1,
'#default_value' => isset($field['max_length_suffix_legal']) ? $field['max_length_suffix_legal'] : '',
'#required' => FALSE,
'#description' => t('The maximum length of the field in characters. Leave blank for an unlimited size.'),
);
return $form;
case 'save':
return array(
'required_parts',
'use_legalname',
'legalname',
'middle_initial',
'max_length_prefix_legal',
'max_length_first_legal',
'max_length_middle_legal',
'max_length_last_legal',
'max_length_suffix_legal', // CHANGES*** removed all "preferred" options
);
// CHANGES*** per d.o/node/252573#comment-1451844 for D6 attempt
case 'database columns':
$columns = array(
'last' => array('type' => 'varchar', 'not null' => FALSE, 'default' => "", 'sortable' => TRUE),
'first' => array('type' => 'varchar', 'not null' => FALSE, 'default' => "", 'sortable' => TRUE),
'middle' => array('type' => 'varchar', 'not null' => FALSE, 'default' => "", 'sortable' => TRUE),
'prefix' => array('type' => 'varchar', 'not null' => FALSE, 'default' => "", 'sortable' => TRUE),
'suffix' => array('type' => 'varchar', 'not null' => FALSE, 'default' => "", 'sortable' => TRUE), // CHANGES*** removed all "preferred" options
);
//adjust field lengths based on settings for legal names
if ($field['max_lengths_legal']['max_length_prefix_legal'] == 0 || $field['max_lengths_legal']['max_length_prefix_legal'] > 255) {
$columns['prefix']['type'] = 'text'; // CHANGES*** per d.o/node/252573#comment-1451844
}
else {
$columns['prefix']['length'] = $field['max_lengths_legal']['max_length_prefix_legal'];
}
if ($field['max_lengths_legal']['max_length_first_legal'] == 0 || $field['max_lengths_legal']['max_length_first_legal'] > 255) {
$columns['first']['type'] = 'text'; // CHANGES*** per d.o/node/252573#comment-1451844
}
else {
$columns['first']['length'] = $field['max_lengths_legal']['max_length_first_legal'];
}
if (($field['max_lengths_legal']['max_length_middle_legal'] == 0 || $field['max_lengths_legal']['max_length_middle_legal'] > 255) && ($field['middle_initial'] != 1)) {
$columns['middle']['type'] = 'text'; // CHANGES*** per d.o/node/252573#comment-1451844
}
elseif ($field['middle_initial'] == 1) {
$columns['middle']['length'] = 1;
}
else {
$columns['middle']['length'] = $field['max_lengths_legal']['max_length_middle_legal'];
}
if ($field['max_lengths_legal']['max_length_last_legal'] == 0 || $field['max_lengths_legal']['max_length_last_legal'] > 255) {
$columns['last']['type'] = 'text'; // CHANGES*** per d.o/node/252573#comment-1451844
}
else {
$columns['last']['length'] = $field['max_lengths_legal']['max_length_last_legal'];
}
if ($field['max_lengths_legal']['max_length_suffix_legal'] == 0 || $field['max_lengths_legal']['max_length_suffix_legal'] > 255) {
$columns['suffix']['type'] = 'text'; // CHANGES*** per d.o/node/252573#comment-1451844
}
else {
$columns['suffix']['length'] = $field['max_lengths_legal']['max_length_suffix_legal'];
} // CHANGES*** removed all "preferred" options
return $columns;
case 'filters':
return array(
'default' => array(
'operator' => 'views_handler_operator_like',
'handler' => 'views_handler_filter_like',
),
);
case 'callbacks'://pairs up with cck_fullname_field::view
return array(
'view' => CONTENT_CALLBACK_CUSTOM,
);
}
} // function cck_fullname_field_settings()
/**
* Implementation of hook_field().
*/
function cck_fullname_field($op, &$node, $field, &$items, $teaser, $page) {
switch ($op) {
case 'submit':
$info = content_database_info($field['field_name']);
break;
case 'validate':
//validate field lengths
if ($field['max_lengths_legal']['max_length_prefix_legal'] > 0) {
foreach ($items as $delta => $data) {
$error_field_prefix = $field['field_name']. '][' .$delta. '][prefix';
if (strlen($data['prefix']) > $field['max_lengths_legal']['max_length_prefix_legal']) {
form_set_error($error_field_prefix, t('%label\'s Prefix field is longer than %max characters.', array('%label' => $field['widget']['label'], '%max' => $field['max_lengths_legal']['max_length_prefix_legal']))); // CHANGES***
}
}
}
if ($field['max_lengths_legal']['max_length_first_legal'] > 0) {
foreach ($items as $delta => $data) {
$error_field_first = $field['field_name']. '][' .$delta. '][first';
if (strlen($data['first']) > $field['max_lengths_legal']['max_length_first_legal']) {
form_set_error($error_field_first, t('%label\'s First name field is longer than %max characters.', array('%label' => $field['widget']['label'], '%max' => $field['max_lengths_legal']['max_length_first_legal']))); // CHANGES***
}
}
}
if ($field['max_lengths_legal']['max_length_middle_legal'] > 0) {
foreach ($items as $delta => $data) {
$error_field_middle = $field['field_name']. '][' .$delta. '][middle';
if (strlen($data['middle']) > $field['max_lengths_legal']['max_length_middle_legal']) {
form_set_error($error_field_middle, t('%label\'s Middle name field is longer than %max characters.', array('%label' => $field['widget']['label'], '%max' => $field['max_lengths_legal']['max_length_middle_legal']))); // CHANGES***
}
}
}
if ($field['max_lengths_legal']['max_length_last_legal'] > 0) {
foreach ($items as $delta => $data) {
$error_field_last = $field['field_name']. '][' .$delta. '][last';
if (strlen($data['last']) > $field['max_lengths_legal']['max_length_last_legal']) {
form_set_error($error_field_last, t('%label\'s Last name field is longer than %max characters.', array('%label' => $field['widget']['label'], '%max' => $field['max_lengths_legal']['max_length_last_legal']))); // CHANGES***
}
}
}
if ($field['max_lengths_legal']['max_length_suffix_legal'] > 0) {
foreach ($items as $delta => $data) {
$error_field_suffix = $field['field_name']. '][' .$delta. '][suffix';
if (strlen($data['suffix']) > $field['max_lengths_legal']['max_length_suffix_legal']) {
form_set_error($error_field_suffix, t('%label\'s Suffix field is longer than %max characters.', array('%label' => $field['widget']['label'], '%max' => $field['max_lengths_legal']['max_length_suffix_legal']))); // CHANGES***
}
}
} // CHANGES*** removed all "preferred" options
//validate required-ness of fields
foreach ($items as $delta => $data) {
if (is_numeric($delta)) {
//deal with legal name fields
if (($field['use_legalname'] == 'legal_require') || ($field['use_legalname'] == 'legal_optional')) {
$legal_empty = (empty($data['prefix']) && empty($data['first']) && empty($data['middle']) && empty($data['last']) && empty($data['suffix']));
if (!$legal_empty) {
if (empty($data['prefix']) && $field['required_parts']['legal_prefix'] === 'legal_prefix' && !empty($field['legalname']['legal_prefix'])) {
$error_field_prefix = $field['field_name']. '][' .$delta. '][prefix';
form_set_error($error_field_prefix, t('Prefix field is required.'));
}
if (empty($data['first']) && $field['required_parts']['legal_first'] === 'legal_first' && !empty($field['legalname']['legal_first'])) {
$error_field_first = $field['field_name']. '][' .$delta. '][first';
form_set_error($error_field_first, t('First name field is required.'));
}
if (empty($data['middle']) && $field['required_parts']['legal_middle'] === 'legal_middle' && !empty($field['legalname']['legal_middle'])) {
$error_field_middle = $field['field_name']. '][' .$delta. '][middle';
form_set_error($error_field_middle, t('Middle name field is required.'));
}
if (empty($data['last']) && $field['required_parts']['legal_last'] === 'legal_last' && !empty($field['legalname']['legal_last'])) {
$error_field_last = $field['field_name']. '][' .$delta. '][last';
form_set_error($error_field_last, t('Last name field is required.'));
}
if (empty($data['suffix']) && $field['required_parts']['legal_suffix'] === 'legal_suffix' && !empty($field['legalname']['legal_suffix'])) {
$error_field_suffix = $field['field_name']. '][' .$delta. '][suffix';
form_set_error($error_field_suffix, t('Suffix field is required.'));
}
}
elseif ($field['use_legalname'] == 'legal_require') {
form_set_error($field['field_name']. '][' .$delta. ']', t('Fullname is required.'));// CHANGES***
}
}
}
}
break;
case 'view':
$context = $teaser ? 'teaser' : 'full';
$formatter = isset($field['display_settings'][$context]['format']) ? $field['display_settings'][$context]['format'] : 'default';
foreach ($items as $delta => $item) {
$items[$delta]['view'] = content_format($field, $item, $formatter, $node);
}
return theme('field', $node, $field, $items, $teaser, $page);
}
} // function cck_fullname_field()
/**
* Implementation of hook_field_formatter_info().
*/
function cck_fullname_field_formatter_info() {
return array(
'default' => array(
'label' => t('Default, prefix first middle last suffix'),
'field types' => array('cck_fullname'),
),
'last_name_only' => array(
'label' => t('Last name only'),
'field types' => array('cck_fullname'),
),
'first_name_only' => array(
'label' => t('First name only'),
'field types' => array('cck_fullname'),
),
'last_name_first' => array(
'label' => t('Last, first middle'),
'field types' => array('cck_fullname'),
),
);
} // function cck_fullname_field_formatter_info()
/**
* Implemetation of hook_field_formatter().
*/
function cck_fullname_field_formatter($field, $item, $formatter, $node) {
$output = '';
if (!key_exists('prefix', $item)) {
return '';
}
switch ($formatter) {
case 'default':
//check and clean the values for output
if (!empty($item['prefix'])) {
$cck_legalname['prefix'] = strip_tags($item['prefix']);
}
if (!empty($item['first'])) {
$cck_legalname['first'] = strip_tags($item['first']);
}
if (!empty($item['middle'])) {
$cck_legalname['middle'] = strip_tags($item['middle']);
}
if (!empty($item['last'])) {
$cck_legalname['last'] = strip_tags($item['last']);
}
if (!empty($item['suffix'])) {
$cck_legalname['suffix'] = strip_tags($item['suffix']);
}
if (!empty($cck_legalname)) {
$output .= t('Name: '). theme('cck_fullname', $cck_legalname, $field);// CHANGES***
} // CHANGES*** removed all "preferred" options
return $output;
case 'last_name_only'://output legal last name
//check and clean the values for output
if (isset($item['last'])) {
$cck_fullname['last'] = strip_tags($item['last']);
}
$output .= theme('cck_fullname', $cck_fullname, $field);
return $output;
case 'first_name_only'://output legal first name// CHANGES***
//check and clean the values for output
if (isset($item['first'])) {
$cck_fullname['first'] = strip_tags($item['first']);
}
$output .= theme('cck_fullname', $cck_fullname, $field);
return $output;
case 'last_name_first':
//check and clean the values for output
if (!empty($item['prefix'])) {
$cck_legalname['prefix'] = strip_tags($item['prefix']);
}
if (!empty($item['first'])) {
$cck_legalname['first'] = strip_tags($item['first']);
}
if (!empty($item['middle'])) {
$cck_legalname['middle'] = strip_tags($item['middle']);
}
if (!empty($item['last'])) {
$cck_legalname['last'] = strip_tags($item['last']);
}
if (!empty($item['suffix'])) {
$cck_legalname['suffix'] = strip_tags($item['suffix']);
}
if (!empty($cck_legalname)) {// CHANGES***
$output .= t('Name: '). theme('cck_fullname', $cck_legalname, $field, TRUE);
} // CHANGES*** removed all "preferred" options
return $output;
}
} // function cck_fullname_field_formatter()
/**
* Theme for address display as called from cck_fullname_field_formatter().
*/
function theme_cck_fullname($cck_fullname, $field, $last_first = FALSE) {
$output = '';
//create the output
if ($last_first) {
if (isset($cck_fullname['last'])) {
$output .= $cck_fullname['last'];
if (strlen($cck_fullname['last']) == 1) $output .= '., ';
else $output .= ', ';
}
if (isset($cck_fullname['prefix'])) {
$output .= $cck_fullname['prefix'];
if (strlen($cck_fullname['prefix']) < 4) $output .= '. ';
else $output .= ' ';
}
if (isset($cck_fullname['first'])) {
$output .= $cck_fullname['first'];
if (strlen($cck_fullname['first']) == 1) $output .= '. ';
else $output .= ' ';
}
if (isset($cck_fullname['middle'])) {
$output .= $cck_fullname['middle'];
if ($field['middle_initial'] == 1) $output .= '. ';
else $output .= ', ';
}
if (isset($cck_fullname['suffix'])) {
$output .= $cck_fullname['suffix'];
if (strlen($cck_fullname['suffix']) < 4) $output .= '.';
}
$output .= '
';
}
else {
if (isset($cck_fullname['prefix'])) {
$output .= $cck_fullname['prefix'];
if (strlen($cck_fullname['prefix']) < 4) $output .= '. ';
else $output .= ' ';
}
if (isset($cck_fullname['first'])) {
$output .= $cck_fullname['first'];
if (strlen($cck_fullname['first']) == 1) $output .= '. ';
else $output .= ' ';
}
if (isset($cck_fullname['middle'])) {
$output .= $cck_fullname['middle'];
if ($field['middle_initial'] == 1) $output .= '. ';
else $output .= ' ';
}
if (isset($cck_fullname['last'])) {
$output .= $cck_fullname['last'];
if (strlen($cck_fullname['last']) == 1) $output .= '. ';
else $output .= ' ';
}
if (isset($cck_fullname['suffix'])) {
$output .= $cck_fullname['suffix'];
if (strlen($cck_fullname['suffix']) < 4) $output .= '.';
}
$output .= '
';
}
return $output;
} // function theme_cck_fullname()
/**
* Implementation of hook_widget_info().
*/
function cck_fullname_widget_info() {
return array(
'cck_fullname' => array(
'label' => 'Full Name',
'field types' => array('cck_fullname'),
),
);
} // function cck_fullname_widget_info()
/**
* Implementation of hook_widget_settings().
*/
function cck_fullname_widget_settings($op, $widget) {
switch ($op) {
case 'callbacks':
return array(
'default value' => CONTENT_CALLBACK_CUSTOM,
);
}
} // function cck_fullname_widget_settings()
/**
* Implementation of hook_widget().
*/
function cck_fullname_widget($op, &$node, $field, &$items) {
switch ($op) {
case 'form':
$form = array();
$form[$field['field_name']] = array('#tree' => TRUE);
$form[$field['field_name']]['#theme'] = 'cck_fullname_display';
$form[$field['field_name']]['use_legalname'] = array(
'#type' => 'value',
'#value' => $field['use_legalname'],
); // CHANGES*** removed all "preferred" options
$form[$field['field_name']]['required_parts'] = array(
'#type' => 'value',
'#value' => $field['required_parts'],
);
$form[$field['field_name']]['legalname'] = array(
'#type' => 'value',
'#value' => $field['legalname'],
); // CHANGES*** removed all "preferred" options
$form[$field['field_name']]['#type'] = 'fieldset';
$form[$field['field_name']]['#attributes'] = array('class' => 'cck-fullname-fieldset');
$form[$field['field_name']]['#title'] = ucfirst(t($field['widget']['label']));
$form[$field['field_name']]['#description'] = $field['widget']['description'];
$form[$field['field_name']]['#weight'] = $field['widget']['weight'];
if ($field['multiple']) {
$delta = 0;
foreach ($items as $data) {
if (isset($field['legalname']['legal_prefix'])) {
$form[$field['field_name']][$delta]['prefix'] = array(
'#type' => 'textfield',
'#default_value' => isset($data['prefix']) ? $data['prefix'] : '',
'#size' => $field['max_length_prefix_legal'] ? $field['max_length_prefix_legal'] : NULL,
'#maxlength' => $field['max_length_prefix_legal'] ? $field['max_length_prefix_legal'] : NULL,
'#prefix' => '