function money_conversion_dialog_ajax_callback in Money field 6
Menu callback to deal with our own ajax requests.
1 string reference to 'money_conversion_dialog_ajax_callback'
- money_conversion_dialog_menu in modules/
money_conversion_dialog/ money_conversion_dialog.module - Implementation of hook_menu().
File
- modules/
money_conversion_dialog/ money_conversion_dialog.module, line 33 - Provides a 'Click to convert!' addon for Money CCK fields.
Code
function money_conversion_dialog_ajax_callback($op, $arg = '') {
if ($op == 'currency-list') {
return drupal_json(array(
'currency-list' => currency_api_get_list(),
));
}
if ($op != 'convert') {
drupal_json(array(
'error' => t('Invalid operation: @operation', array(
'@operation' => $op,
)),
));
}
// Expected items:
// 0 => amount
// 1 => decimals
// 2 => currency_display_mode
// 3 => from_currency
// 4 => to_currency
// See theme_money_conversion_dialog().
$settings = explode('|', $arg);
// Validate amount, decimals and currency_display_mode.
$display_mode = str_replace(array(
':',
' ',
), array(
'|',
'+',
), $settings[2]);
$display_modes = money_get_display_modes();
if (!is_numeric($settings[0]) || !is_numeric($settings[1]) || !isset($display_modes[$display_mode])) {
return drupal_json(array(
'error' => t('Invalid money data in operation settings: @settings', array(
'@settings' => $arg,
)),
));
}
// Validate from_currency and to_currency.
$currency_symbols = currency_api_get_symbols();
if (!isset($currency_symbols[$settings[3]]) || !isset($currency_symbols[$settings[4]])) {
return drupal_json(array(
'error' => t('Invalid currencies in operation settings: @settings', array(
'@settings' => $arg,
)),
));
}
// Use the Currency API to perform the conversion.
$ret = currency_api_convert($settings[3], $settings[4], $settings[0]);
if ($ret['status'] == FALSE) {
return drupal_json(array(
'error' => t('Currency exchange error: ') . t($ret['message']),
));
}
// Format the amount.
$formatted_number = format_number($ret['value'], (int) $settings[1]);
// Build formatted result.
return drupal_json(array(
'money' => theme('money_field', $formatted_number, $settings[4], $display_mode),
'from' => $settings[3],
'to' => $settings[4],
));
}