Добрый день уважаемые посетители моего форума !
В этой теме рассмотрим наиболее важные и интересные доработки скрипта для удобства пользователей и разработчиков.

И начать эту тему я хочу с доработкой очень важной части скрипта, а именно как привести все суммы по выборкам из SQL к одной валюте.
Имеется ввиду например Вам нужен отчет по общей сумме инвестирования определенного пользователя в проект.
Казалось бы задача решается очень просто сделать выборку типа

PHP код:
$db->fetch1($db->select('Opers''SUM(oSum*'."IF(ocID=5, $btc, 1)".')''ouID=?d and oState=3 and oOper=?', array(_uid(), 'CASHOUT'))) 
В данном случае мы получаем сумму выведенных пользователем денег из проекта, где даже учитывается курс биткоина. Вроде как все правильно, но есть одно но, выборка не учитывает курс всех валют, например если в проекте более 50 различных альткоинов подключено, тогда запрос получится очень большим и не удобным.

Есть решение этого вопроса для этого сначала надо открыть файл _dbstru.php в корневой директории и добавить туда ниже "oSum decimal(13,6) default 0," это "oSum_USD decimal(13,2) default 0,".
затем надо найти "wBal decimal(13,6) default 0," и ниже добавить "wBal_USD decimal(13,2) default 0," и после этого зайти в конфигуратор _cfg и там нажать на update, в результате в sql мы добавили 2 поля и изменили структуру.

Далее открываем фал lib.php в папке balance

и в самом низу добавляем функцию

PHP код:
function opSUM_USD($sum$curr)
{
    global 
$_cfg$_currs;
    if (
$curr == $_currs[1]['cCurrID'])
        return 
$sum;    
    return 
_zr($sum $_cfg["Bal_Rate$curr"], 1);

и сохраняем. Эта функция переводит сумму отправляемую в нее в доллары по курсу, который установлен в системе

Далее ищем функцию "opChangeBalance" и дорабатываем ее перед TRY на строку выше вставляем
PHP код:
$z_usd1 opSUM_USD($sum$_currs[$cid]['cCurrID']); 
и ниже "'wBal=' => "wBal+$z1","
добавляем строку "'wBal_USD=' => "wBal_USD+$z_usd1","
На этом этапе мы доработали функцию opChangeBalance
Надо обратить внимание на то в этой функции еще обрабатывается значение uBal в таблице Users и по хорошему можно было бы добавить и туда баланс в долларах, но считаю это не нужным и никогда не применял этот параметрю

Далее ищем функцию "opOperCreateInfo" и там вносим следующие изменения
ниже "global $db, $_currs;" добавляем строку "$sum_USD = opSUM_USD($z1, $_currs[$cid]['cCurrID']);"
ниже "'sum' => $sum,"
добавляем строку "'sum_USD' => $sum_USD,"
В результате мы изменили функцию "opOperCreateInfo"
то же самое делаем в функции "opOperCreate"
то есть ниже "global $db, $_cfg, $_currs;"
вставляем строку "$sum_USD = opSUM_USD($sum, $_currs[$cid]['cCurrID']);"
и ниже "'oSum' => $sum,"
вставляем строку "'oSum_USD' => $sum_USD,"

В принципе это можно сказать вся доработка
Теперь можно делать выборку по этому полю и получать значения всех валют приведенных по курсу к доллару.

В заключении хочу сказать, что если кому кажутся эти доработки муторными и сложными, но если Вы их примените то потом поймете что польза от этого огромная и при выборках общей статистической информации или по по всему сайту или по отдельному пользователю будет намного проще и код будет гораздо короче.
Если в проекте нет альткоинов вообще и в Вашем проекте применяется только USD то эти доработки вообще не нужны.