Exemplo n.º 1
0
function LoadEventsBySteps($csvfile, $time_step, $next_line, &$step_processed, &$step_loaded, &$step_duplicate, $check_unique = "Y", $base_currency = "", &$next_pos)
{
    if ($fp = fopen($csvfile, "rb")) {
        if ($next_pos > 0) {
            fseek($fp, $next_pos);
        }
        $start = getmicrotime();
        $all_loaded = "";
        $next_line = intval($next_line);
        $read_lines = 0;
        $step_loaded = 0;
        $step_processed = 0;
        $step_duplicate = 0;
        while (!feof($fp)) {
            $arrCSV = fgetcsv($fp, 4096, ",");
            if (is_array($arrCSV) && count($arrCSV) > 0) {
                array_walk($arrCSV, "CleanUpResultCsv");
                $read_lines++;
                $step_processed++;
                $EVENT_ID = $arrCSV[0];
                $EVENT3 = $arrCSV[1];
                $DATE_ENTER = $arrCSV[2];
                $PARAMETER = $arrCSV[3];
                $MONEY = $arrCSV[4];
                $CURRENCY = $arrCSV[5];
                $CHARGEBACK = $arrCSV[6];
                $RES_MONEY = $MONEY;
                $EVENT_ID = intval($EVENT_ID);
                $CHARGEBACK = $CHARGEBACK == "Y" ? "Y" : "N";
                if ($EVENT_ID > 0) {
                    if (strlen($base_currency) <= 0) {
                        $base_currency = GetStatisticBaseCurrency();
                    }
                    if (strlen($base_currency) > 0) {
                        if ($CURRENCY != $base_currency && strlen(trim($CURRENCY)) > 0) {
                            if (CModule::IncludeModule("currency")) {
                                $stmp = MkDateTime(ConvertDateTime($DATE_ENTER, "D.M.Y H:I:S"), "d.m.Y H:i:s");
                                $valDate = date("Y-m-d", $stmp);
                                $rate = CCurrencyRates::GetConvertFactor($CURRENCY, $base_currency, $valDate);
                                if ($rate > 0) {
                                    $RES_MONEY = $MONEY * $rate;
                                }
                            }
                        }
                    }
                    $RES_MONEY = round($RES_MONEY, 2);
                    $add_event = "Y";
                    if ($check_unique == "Y") {
                        $arr = CStatEvent::DecodeGid($PARAMETER);
                        $arFilter = array("EVENT_ID" => $EVENT_ID, "EVENT3" => $EVENT3, "DATE" => $DATE_ENTER, "SESSION_ID" => $arr["SESSION_ID"], "GUEST_ID" => $arr["GUEST_ID"], "COUNTRY_ID" => $arr["COUNTRY_ID"], "ADV_ID" => $arr["ADV_ID"], "ADV_BACK" => $arr["ADV_BACK"], "SITE_ID" => $arr["SITE_ID"]);
                        $rsEvents = CStatEvent::GetListUniqueCheck($arFilter);
                        if ($arEvent = $rsEvents->Fetch()) {
                            $add_event = "N";
                            $step_duplicate++;
                        }
                    }
                    if ($add_event == "Y") {
                        CStatEvent::AddByID($EVENT_ID, $EVENT3, $DATE_ENTER, $PARAMETER, $RES_MONEY, "", $CHARGEBACK);
                        $step_loaded++;
                    }
                    $end = getmicrotime();
                    if (intval($time_step) > 0 && $end - $start > intval($time_step)) {
                        $all_loaded = "N";
                        break;
                    }
                }
            }
        }
        if ($all_loaded == "N") {
            $next_pos = ftell($fp);
        } else {
            $next_pos = 0;
        }
        @fclose($fp);
        if ($all_loaded != "N") {
            $all_loaded = "Y";
            @unlink($csvfile);
        }
        return $all_loaded;
    }
}