123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <?php
- /**
- * @file
- * A contact field for use with contact.module
- *
- * - can be used as just a formatter for the user object
- */
- function contact_field_field_formatter_info() {
- $ret = array(
- 'user_contact_form_link' => array(
- 'label' => t('Contact form'),
- 'field types' => array('user_contact'),
- ),
- 'user_contact_mailto_link' => array(
- 'label' => t('mailto: link'),
- 'field types' => array('user_contact'),
- ),
- );
- // dsm(get_defined_vars(), __FUNCTION__);
- return $ret;
- }
- function contact_field_field_info() {
- $ret = array(
- 'user_contact' => array(
- 'label' => t('User contact'),
- 'description' => t('This field builds a contact link from the entity to which it is attached, as long as that entity has a uid field linking to a user account'),
- 'settings' => array(),
- 'instance settings' => array(),
- 'default_widget' => NULL,
- 'default_formatter' => 'user_contact_link',
- 'cardinality' => 1,
- ),
- );
- // dsm(get_defined_vars(), __FUNCTION__);
- return $ret;
- }
- /**
- * Implements hook_field_is_empty().
- */
- function contact_field_field_is_empty($item, $field) {
- return empty($item);
- }
- function contact_field_field_schema($field) {
- if ($field['type'] != 'user_contact') {
- return;
- }
- $ret = array(
- 'columns' => array(),
- 'indexes' => array(),
- );
- // dsm(get_defined_vars(), __FUNCTION__);
- return $ret;
- }
- function contact_field_field_widget_info() {
- $ret = array(
- 'contact_field_simple' => array(
- 'label' => t('No input necessary'),
- 'description' => t('Take the information from the underlying account'),
- 'field types' => array('user_contact'),
- 'behaviors' => array(
- 'multiple values' => FIELD_BEHAVIOR_CUSTOM, // No values input anyway
- 'default value' => FIELD_BEHAVIOR_DEFAULT,
- ),
- ),
- );
- // dsm(get_defined_vars(), __FUNCTION__);
- return $ret;
- }
- function contact_field_field_widget_form(&$form, &$form_state, $field,
- $instance, $langcode, $items, $delta, $element) {
- // dsm(get_defined_vars(), __FUNCTION__);
- $ret = array();
- if (isset($form['uid'])) {
- // This is not the widget settings form
- $uid = $form['uid']['#value'];
- $account = user_load($uid);
- $ret['mail'] = array(
- '#type' => 'value',
- '#title' => $instance['label'],
- '#disabled' => TRUE,
- '#value' => $account->mail,
- );
- }
- return $ret;
- }
- /**
- * Implements hook_field_formatter_view().
- */
- function contact_field_field_formatter_view($obj_type, $object, $field,
- $instance, $langcode, $items, $display) {
- $uid = $object->uid;
- $name = $object->name;
- $ret = array();
- switch ($display['type']) {
- case 'user_contact_form_link':
- foreach (array_keys($items) as $delta) {
- // Cannot use theme_username() in D7.7. See http://drupal.org/node/1238094
- $ret[$delta] = array('#markup' => l($name, "user/$uid/contact"));
- }
- break;
- case 'user_contact_mailto_link':
- $account = user_load($uid);
- $mail = $account->mail;
- foreach (array_keys($items) as $delta) {
- // Cannot use theme_username() in D7.7. See http://drupal.org/node/1238094
- $ret[$delta] = array('#markup' => l($name, "mailto:$mail"));
- }
- break;
- default:
- return;
- }
- $ret = array($instance['id'] => $ret);
- // dsm(get_defined_vars(), __FUNCTION__);
- return $ret;
- }
- /**
- * Force cardinality: there is no point in having multiple instances of this
- * field since it is single-valued per entity instance, instead of having
- * standalone storage.
- */
- function contact_field_form_field_ui_field_edit_form_alter(&$form, $form_state, $form_id) {
- dsm($form);
- if ($form['#field']['type'] == 'user_contact') {
- $override = array(
- '#access' => FALSE,
- '#value' => 1,
- );
- $form['field']['cardinality'] = $override + $form['field']['cardinality'];
- }
- }
|