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; } }