Comments:
[log in] or [register] to leave a comment for this document.
Go to: all documents
22-Apr-2013 [219]
• This field shows a drop down in the format of profile_id:User userid
Source of the drop down name format:
/** * Implements hook_options_list(). */ function commerce_customer_options_list($field) { $options = array(); // Loop through all customer matches. foreach (commerce_customer_match_customer_profiles($field) as $profile_id => $data) { // Add them to the options list in optgroups by customer profile type. $name = check_plain(commerce_customer_profile_type_get_name($data['type'])); $options[$name][$profile_id] = t('@profile: User @user', array('@profile' => $profile_id, '@user' => $data['uid'])); } // Simplify the options list if only one optgroup exists. if (count($options) == 1) { $options = reset($options); } return $options; }
Trace:
commerce_customer.module around line 759, sets commerce_customer_profile_property_info_callback
/** * Implements hook_field_info(). */ function commerce_customer_field_info() { return array( 'commerce_customer_profile_reference' => array( 'label' => t('Customer profile reference'), 'description' => t('This field stores the ID of a related customer profile as an integer value.'), 'settings' => array('profile_type' => 'billing'), 'instance_settings' => array(), 'default_widget' => 'options_select', 'default_formatter' => 'commerce_customer_profile_reference_display', 'property_type' => 'commerce_customer_profile', 'property_callbacks' => array('commerce_customer_profile_property_info_callback'), ), ); }
which runs from commerce_customer.module line 949.
/** * Callback to alter the property info of the reference field. * * @see commerce_customer_field_info(). */ function commerce_customer_profile_property_info_callback(&$info, $entity_type, $field, $instance, $field_type) { $property = &$info[$entity_type]['bundles'][$instance['bundle']]['properties'][$field['field_name']]; $property['options list'] = 'entity_metadata_field_options_list'; }
which sets 'options list':
$property['options list'] = 'entity_metadata_field_options_list';
which is a system callback in contributions/entity/modules/callbacks.inc'
function entity_metadata_field_options_list($name, $info) { $field_property_info = $info; if (is_numeric($name) && isset($info['parent'])) { // The options list is to be returned for a single item of a multiple field. $field_property_info = $info['parent']->info(); $name = $field_property_info['name']; } if (($field = field_info_field($name)) && isset($field_property_info['parent'])) { // Retrieve the wrapped entity holding the field. $wrapper = $field_property_info['parent']; try { $entity = $wrapper->value(); } catch (EntityMetadataWrapperException $e) { // No data available. $entity = NULL; } $instance = $wrapper->getBundle() ? field_info_instance($wrapper->type(), $name, $wrapper->getBundle()) : NULL; return (array) module_invoke($field['module'], 'options_list', $field, $instance, $wrapper->type(), $entity); } }
which calls hook_options_list
, but only to the field's single module.
'commerce_customer_profile_reference' as a string is found in:
in commecre_customer.checkout_pane.inc see line 22 in commerce_customer_profile_pane_settings_form, identified as 'Checkout pane callback: returns the customer profile pane's settings form'.
11 references in commerce_customer.module.
see in particular:
line 756:
/** * Implements hook_field_info(). */ function commerce_customer_field_info() {
line 871:
/** * Implements hook_field_formatter_view(). */ function commerce_customer_field_formatter_view( $entity_type, $entity, $field, $instance, $langcode, $items, $display) {
see line 1165 ff:
/** * Callback to alter the property info of the reference field. * * @see commerce_customer_field_info(). */ function commerce_customer_profile_property_info_callback( &$info, $entity_type, $field, $instance, $field_type) {
and
/** * Fetches an array of all customer profiles matching the given parameters. * * This info is used in various places (allowed values, autocomplete results, * input validation...). Some of them only need the profile_ids, others * profile_id + titles, others yet profile_id + titles + rendered row (for * display in widgets). * * The array we return contains all the potentially needed information, * and lets calling functions use the parts they actually need. * * @param $field * The field description. * @param $ids * Optional product ids to lookup. * @param $limit * If non-zero, limit the size of the result set. * * @return * An array of valid profiles in the form: * array( * profile_id => array( * 'uid' => The user ID, * 'rendered' => The text to display in widgets (can be HTML) * ), * ... * ) */ function commerce_customer_match_customer_profiles($field, $ids = array(), $limit = 50) { $results = &drupal_static(__FUNCTION__, array()); // Create unique id for static cache. $cid = implode(':', array( $field['field_name'], implode('-', $ids), $limit, )); if (!isset($results[$cid])) { $matches = _commerce_customer_match_customer_profiles_standard($field, $ids, $limit); // Store the results. $results[$cid] = !empty($matches) ? $matches : array(); } return $results[$cid]; }
next display
|
|
(showing first display)
|