<?php
class currency_widgetControllerWcu extends controllerWcu {
public function getCurrencyRate() {
$res = new responseWcu();
$amount = reqWcu::getVar('amount');
$fromCurrency = reqWcu::getVar('currency_from');
$toCurrency = reqWcu::getVar('currency_to');
$currencyModel = frameWcu::_()->getModule('currency')->getModel();
$currencies = $currencyModel->getCurrencies();
$defaultCurrency = frameWcu::_()->getModule('currency')->getDefaultCurrency();
if(!empty($currencies) && isset($currencies[$toCurrency]) && isset($currencies[$fromCurrency])) {
$rateFrom = isset($currencies[$fromCurrency]['rate']) && is_numeric($currencies[$fromCurrency]['rate'])
? $currencies[$fromCurrency]['rate']
: $currencyModel->getCurrencyRate($defaultCurrency, $fromCurrency);
$rateTo = isset($currencies[$toCurrency]['rate']) && is_numeric($currencies[$toCurrency]['rate'])
? $currencies[$toCurrency]['rate']
: $currencyModel->getCurrencyRate($defaultCurrency, $toCurrency);
$res->addMessage(__('Done', WCU_LANG_CODE));
$res->addData('result', round($amount * $rateTo / $rateFrom, 7));
} else {
$res->pushError(sprintf(__('no data for %s', WCU_LANG_CODE), $toCurrency));
}
return $res->ajaxExec();
}
public function getCurrencyRatesList() {
$res = new responseWcu();
$exclude = reqWcu::getVar('exclude');
$exclude = !empty($exclude) ? array_filter(array_map('trim', explode(',', $exclude))) : array();
$current = reqWcu::getVar('current');
$currencyModel = frameWcu::_()->getModule('currency')->getModel();
$currencies = $currencyModel->getCurrencies();
$defaultCurrency = frameWcu::_()->getModule('currency')->getDefaultCurrency();
$cryptoCurrencyList = frameWcu::_()->getModule('currency')->getCryptoCurrencyList();
$rates = array();
$proModule = frameWcu::_()->getModule('options_pro');
$rounding = false;
if($proModule){
$options = $proModule->getModel()->getOptionsPro();
if (isset($options['currency_rates']) && isset($options['currency_rates']['design_tab'])) {
$ratesSettings = $options['currency_rates']['design_tab'];
if (isset($ratesSettings['cr_rounding']) && $ratesSettings['cr_rounding'] == '1') {
$decimal = isset($ratesSettings['cr_decimal']) ? (int) $ratesSettings['cr_decimal'] : 0;
$rounding = true;
}
}
}
if(!empty($currencies) && isset($currencies[$current])) {
foreach($currencies as $c) {
if(in_array($c['name'], $exclude)) continue;
$currencyRate = isset($currencies[$c['name']]['rate']) && is_numeric($currencies[$c['name']]['rate'])
? $currencies[$c['name']]['rate']
: $currencyModel->getCurrencyRate($defaultCurrency, $c['name']);
$currentCurrencyRate = isset($currencies[$current]['rate']) && is_numeric($currencies[$current]['rate'])
? $currencies[$current]['rate']
: $currencyModel->getCurrencyRate($defaultCurrency, $currencies[$current]['name']);
$rate = $currencyRate / $currentCurrencyRate;
// $pos = strrpos($rate, '.');
// $rates[$c['name']] = substr($rate, 0, $pos + 1 + 4);
$rates[ $c['name'] ] = $rounding ? round( $rate, $decimal ) : ( ctype_digit( (string) $rate ) ? number_format( $rate, 2 ) : $rate );
}
}
$res->addMessage(__('Done', WCU_LANG_CODE));
$res->addData('rates', $rates);
return $res->ajaxExec();
}
public function getPermissions() {
return array(
WCU_USERLEVELS => array(
WCU_ADMIN => array()
),
);
}
}