123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- <?php
- $user_ip = zbs_UserDetectIp('debug');
- $user_login = zbs_UserGetLoginByIp($user_ip);
- $us_config = zbs_LoadConfig();
- //tariff changing options
- $us_currency = $us_config['currency'];
- $tc_enabled = $us_config['TC_ENABLED'];
- $tc_priceup = $us_config['TC_PRICEUP'];
- $tc_pricedown = $us_config['TC_PRICEDOWN'];
- $tc_pricesimilar = $us_config['TC_PRICESIMILAR'];
- $tc_credit = $us_config['TC_CREDIT'];
- $tc_cashtypeid = $us_config['TC_CASHTYPEID'];
- $user_data = zbs_UserGetStargazerData($user_login);
- $user_cash = $user_data['Cash'];
- $user_credit = $user_data['Credit'];
- $user_credit_expire = $user_data['CreditExpire'];
- $user_tariff = zbs_UserGetTariff($user_login);
- $user_tariffnm = $user_data['TariffChange'];
- /////////////// Loading tariff move matrix API
- /**
- * Returns user move-allowed tariffs in tariff-matrix mode
- *
- * @param string $user_tariff
- * @return bool/array
- */
- function zbs_MatrixGetAllowed($user_tariff) {
- $matrix = parse_ini_file('config/tariffmatrix.ini');
- $result = false;
- if (!empty($matrix)) {
- if (isset($matrix[$user_tariff])) {
- //extract tariff movement rules
- $result = explode(',', $matrix[$user_tariff]);
- } else {
- //no tariff match
- $result = false;
- }
- } else {
- //no matrix entries
- $result = false;
- }
- return ($result);
- }
- /**
- * Returns array of allowed to move matrix tariffs
- *
- * @return string
- */
- function zbs_MatrixGetAllowedFrom() {
- $matrix = parse_ini_file('config/tariffmatrix.ini');
- $result = array();
- if (!empty($matrix)) {
- foreach ($matrix as $io => $each) {
- $result[] = $io;
- }
- }
- return ($result);
- }
- //////////////// allowed tariffs permissions
- $tc_extended_matrix = $us_config['TC_EXTENDED_MATRIX'];
- if (!$tc_extended_matrix) {
- //old 2 opts style
- $tc_tariffsallowed = explode(',', $us_config['TC_TARIFFSALLOWED']);
- $tc_tariffenabledfrom = explode(',', $us_config['TC_TARIFFENABLEDFROM']);
- } else {
- //extended tariffs move matrix
- $tc_tariffsallowed = zbs_MatrixGetAllowed($user_tariff);
- $tc_tariffenabledfrom = zbs_MatrixGetAllowedFrom();
- }
- ////////////////////////////////
- /**
- * Returns selector of allowed tariffs to move, except current tariff
- *
- * @param string $tc_tariffsallowed
- * @param string $user_tariff
- * @return string
- */
- function zbs_TariffSelector($tc_tariffsallowed, $user_tariff) {
- global $us_config;
- if ($us_config['SHOW_SPEED']) {
- $rawSpeedMbits = (@$us_config['SHOW_SPEED_MB']) ? true : false;
- $speedOffset = (@$us_config['SHOW_SPEED_1000B']) ? 1000 : 1024;
- $allSpeeds = zbs_TariffGetAllSpeeds($rawSpeedMbits, $speedOffset);
- }
- $params = array();
- if (!empty($tc_tariffsallowed)) {
- foreach ($tc_tariffsallowed as $io => $eachtariff) {
- if ($eachtariff != $user_tariff) {
- if ($us_config['SHOW_SPEED']) {
- $tariffSpeed = @$allSpeeds[$eachtariff];
- $params[trim($eachtariff)] = __($eachtariff) . ' - ' . $tariffSpeed;
- } else {
- $params[trim($eachtariff)] = __($eachtariff);
- }
- }
- }
- }
- $result = la_Selector('newtariff', $params, '', '', false);
- return ($result);
- }
- /**
- * Returns array of tariff change prices for allowed tariffs
- *
- * @param array $tc_tariffsallowed
- * @param string $user_tariff
- * @param float $tc_priceup
- * @param float $tc_pricedown
- * @param float $tc_pricesimilar
- *
- * @return array
- */
- function zbs_TariffGetChangePrice($tc_tariffsallowed, $user_tariff, $tc_priceup, $tc_pricedown, $tc_pricesimilar) {
- $allprices = zbs_TariffGetAllPrices();
- $current_fee = $allprices[$user_tariff];
- $result = array();
- if (!empty($tc_tariffsallowed)) {
- foreach ($tc_tariffsallowed as $eachtariff) {
- if (isset($allprices[$eachtariff])) {
- //if higer then current fee
- if ($allprices[$eachtariff] > $current_fee) {
- $result[$eachtariff] = $tc_priceup;
- }
- //if lower then current
- if ($allprices[$eachtariff] < $current_fee) {
- $result[$eachtariff] = $tc_pricedown;
- }
- // if eq
- if ($allprices[$eachtariff] == $current_fee) {
- $result[$eachtariff] = $tc_pricesimilar;
- }
- } else {
- $result[$eachtariff] = 0;
- }
- }
- }
- return ($result);
- }
- /**
- * Returns table with tariff change pricing
- *
- * @param array $tc_tariffsallowed
- * @param string $us_currency
- * @param string $user_tariff
- * @param float $tc_priceup
- * @param float $tc_pricedown
- * @param float $tc_pricesimilar
- * @return string
- */
- function zbs_TariffGetShowPrices($tc_tariffsallowed, $us_currency, $user_tariff, $tc_priceup, $tc_pricedown, $tc_pricesimilar) {
- global $us_config;
- $allprices = zbs_TariffGetAllPrices();
- $rawSpeedMbits = (@$us_config['SHOW_SPEED_MB']) ? true : false;
- $allSpeeds = zbs_TariffGetAllSpeeds($rawSpeedMbits);
- $allcosts = zbs_TariffGetChangePrice($tc_tariffsallowed, $user_tariff, $tc_priceup, $tc_pricedown, $tc_pricesimilar);
- $cells = la_TableCell(__('Tariff'));
- if ($us_config['SHOW_SPEED']) {
- $cells .= la_TableCell(__('Tariff speed'));
- }
- $cells .= la_TableCell(__('Monthly fee'));
- $cells .= la_TableCell(__('Cost of change'));
- $rows = la_TableRow($cells, 'row1');
- if (!empty($tc_tariffsallowed)) {
- foreach ($tc_tariffsallowed as $eachtariff) {
- $cells = la_TableCell(__($eachtariff));
- if ($us_config['SHOW_SPEED']) {
- $cells .= la_TableCell(@$allSpeeds[$eachtariff]);
- }
- $cells .= la_TableCell(@$allprices[$eachtariff] . ' ' . $us_currency);
- $cells .= la_TableCell(@$allcosts[$eachtariff] . ' ' . $us_currency);
- $rows .= la_TableRow($cells, 'row2');
- }
- }
- $result = la_TableBody($rows, '100%', 0);
- return ($result);
- }
- /**
- * Returns complete tariff moving form
- *
- * @param string $login
- * @param array $tc_tariffsallowed
- * @param float $tc_priceup
- * @param float $tc_pricedown
- * @param float $tc_pricesimilar
- * @param string $us_currency
- * @return string
- */
- function zbs_TariffChangeForm($login, $tc_tariffsallowed, $tc_priceup, $tc_pricedown, $tc_pricesimilar, $us_currency) {
- global $us_config;
- $user_tariff = zbs_UserGetTariff($login);
- $alltariffs = zbs_TariffGetAllPrices();
- $form = '
- ' . __('Your current tariff is') . ': ' . __($user_tariff) . ' ' . __('with monthly fee') . ' ' . $alltariffs[$user_tariff] . ' ' . $us_currency . '<br>
- ' . __('The cost of switching to a lower rate monthly fee') . ': ' . $tc_pricedown . ' ' . $us_currency . '<br>
- ' . __('The cost of switching to a higher monthly fee tariff') . ': ' . $tc_priceup . ' ' . $us_currency . '<br>
- ' . __('The cost of the transition rate for the same monthly fee') . ': ' . $tc_pricesimilar . ' ' . $us_currency . '<br>
- ' . la_tag('br') . '
- ' . zbs_TariffGetShowPrices($tc_tariffsallowed, $us_currency, $user_tariff, $tc_priceup, $tc_pricedown, $tc_pricesimilar) . '
- ' . la_tag('br') . '
- ';
- $inputs = __('New tariff') . ' ' . zbs_TariffSelector($tc_tariffsallowed, $user_tariff) . la_delimiter();
- $inputs .= la_CheckInput('agree', __('I am sure that I am an adult and have read everything that is written above'), false, false);
- $inputs .= la_delimiter();
- $nmChangeFlag = true;
- if (isset($us_config['TC_RIGHTNOW'])) {
- if ($us_config['TC_RIGHTNOW']) {
- $nmChangeFlag = false;
- }
- }
- $sumbitLabel = ($nmChangeFlag) ? __('I want this tariff next month') : __('I want this tariff right now');
- $inputs .= la_tag('input', false, '', 'type="submit" style="word-wrap: break-word; white-space: normal;" value="' . $sumbitLabel . '"');
- $form .= la_Form('', 'POST', $inputs, '');
- return ($form);
- }
- //check is tariff changing is enabled?
- if ($tc_enabled) {
- //check is TC allowed for current user tariff plan
- if (in_array($user_tariff, $tc_tariffenabledfrom)) {
- //tariff change subroutines
- if (isset($_POST['newtariff'])) {
- $change_prices = zbs_TariffGetChangePrice($tc_tariffsallowed, $user_tariff, $tc_priceup, $tc_pricedown, $tc_pricesimilar);
- if (in_array($_POST['newtariff'], $tc_tariffsallowed)) {
- // agreement check
- if (isset($_POST['agree'])) {
- // and not enought money, set credit
- if ($user_cash < $change_prices[$_POST['newtariff']]) {
- //if TC_CREDIT option enabled
- if ($tc_credit) {
- $newcredit = $change_prices[$_POST['newtariff']] + $user_credit;
- billing_setcredit($user_login, $newcredit);
- // check for current credit expirity - added in 0.5.7
- // without this check this conflicts with SC_ module
- if (!$user_credit_expire) {
- //set credit expire date for month from this moment
- $timestamp = time();
- $monthOffset = $timestamp + 2678400; // 31 days in seconds
- $creditend = date("Y-m-d", $monthOffset);
- billing_setcreditexpire($user_login, $creditend);
- }
- }
- }
- //TC change fee anyway
- zbs_PaymentLog($user_login, '-' . $change_prices[$_POST['newtariff']], $tc_cashtypeid, "TCHANGE:" . $_POST['newtariff']);
- billing_addcash($user_login, '-' . $change_prices[$_POST['newtariff']]);
- //nm set tariff routine
- $nextMonthTc = true;
- if (isset($us_config['TC_RIGHTNOW'])) {
- if ($us_config['TC_RIGHTNOW']) {
- $nextMonthTc = false;
- }
- }
- if ($nextMonthTc) {
- billing_settariffnm($user_login, mysql_real_escape_string($_POST['newtariff']));
- log_register('CHANGE TariffNM (' . $user_login . ') ON `' . $_POST['newtariff'] . '`');
- } else {
- billing_settariff($user_login, mysql_real_escape_string($_POST['newtariff']));
- log_register('CHANGE Tariff (' . $user_login . ') ON `' . $_POST['newtariff'] . '`');
- }
- rcms_redirect("index.php");
- } else {
- // agreement check fail
- show_window(__('Sorry'), __('You must accept our policy'));
- }
- //die if tariff not allowed
- } else {
- die("oO");
- }
- } // end of tariff change subroutine (POST processing)
- if (empty($user_tariffnm)) {
- show_window(__('Tariff change'), zbs_TariffChangeForm($user_login, $tc_tariffsallowed, $tc_priceup, $tc_pricedown, $tc_pricesimilar, $us_currency));
- } else {
- show_window(__('Sorry'), __('You already have planned tariff change'));
- }
- } else {
- show_window(__('Sorry'), __('Your current tariff does not allow tariff change on your own'));
- }
- //end of TC enabled check
- // or not enabled at all?
- } else {
- show_window(__('Sorry'), __('Unfortunately self tariff change is disabled'));
- }
- ?>
|