- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_main.php
- Класс: CVoxImplantMain
- Вызов: CVoxImplantMain::GetTelephonyStatistic
static function GetTelephonyStatistic()
{
$arMonthlyStat = COption::GetOptionString("voximplant", "telephony_statistic", "");
if ($arMonthlyStat)
{
$arMonthlyStat = unserialize($arMonthlyStat, ['allowed_classes' => false]);
}
if(!$arMonthlyStat)
{
$arMonthlyStat = array();
}
$lastUncountedMonth = COption::GetOptionString("voximplant", "telephony_statistic_last_month", ""); //last month which wasn't counted
if ($lastUncountedMonth)
{
$lastUncountedMonth = unserialize($lastUncountedMonth, ['allowed_classes' => false]);
}
else
{
$lastUncountedMonth = Array();
}
$curLastMonth = array();
$curLastMonth["MM"] = date("m");
$curLastMonth["YYYY"] = date("Y");
if (date("m") != $lastUncountedMonth["MM"] || date("Y") != $lastUncountedMonth["YYYY"]) //current month is not last month which wasn't counted
{
$firstDayCurMonth = ConvertTimeStamp(MakeTimeStamp("01.".date("m").".".date("Y"), "DD.MM.YYYY"));
if (!empty($lastUncountedMonth))
{
$firstUncountedDay = ConvertTimeStamp(MakeTimeStamp("01.".$lastUncountedMonth["MM"].".".$lastUncountedMonth["YYYY"], "DD.MM.YYYY"));
$arFilter = array(
array(
'LOGIC' => 'AND',
'>CALL_START_DATE' => $firstUncountedDay,
' $firstDayCurMonth
)
);
}
else
{
$arFilter = array(
array(
'LOGIC' => 'AND',
'>CALL_START_DATE' => ConvertTimeStamp(MakeTimeStamp("04.02.2014", "DD.MM.YYYY")), // correct start date for counting statistics
' $firstDayCurMonth
)
);
}
$arFilter['CALL_CATEGORY'] = 'external';
$parameters = array(
'order' => array('CALL_START_DATE'=>'DESC'),
'filter' => $arFilter,
'select' => array('COST', 'COST_CURRENCY', 'CALL_DURATION', 'CALL_START_DATE'),
);
$dbStat = VIStatisticTable::getList($parameters);
$curPortalCurrency = "";
while($arData = $dbStat->fetch())
{
$arData["COST_CURRENCY"] = ($arData["COST_CURRENCY"] == "RUR" ? "RUB" : $arData["COST_CURRENCY"]);
if (!$curPortalCurrency)
$curPortalCurrency = $arData["COST_CURRENCY"];
$arDateParse = ParseDateTime($arData["CALL_START_DATE"]);
$arMonthlyStat[$arDateParse["YYYY"]][$arDateParse["MM"]]["CALL_DURATION"] += $arData["CALL_DURATION"];
$arMonthlyStat[$arDateParse["YYYY"]][$arDateParse["MM"]]["COST"] += $arData["COST"];
// $arMonthlyStat[$arDateParse["YYYY"]][$arDateParse["MM"]]["COST"] = number_format($arMonthlyStat[$arDateParse["YYYY"]][$arDateParse["MM"]]["COST"], 4);
$arMonthlyStat[$arDateParse["YYYY"]][$arDateParse["MM"]]["COST_CURRENCY"] = $curPortalCurrency;
}
if (!empty($arMonthlyStat))
{
krsort ($arMonthlyStat);
foreach($arMonthlyStat as $year => $arYear)
{
krsort ($arYear);
$arMonthlyStat[$year] = $arYear;
}
COption::SetOptionString("voximplant", "telephony_statistic", serialize($arMonthlyStat));
COption::SetOptionString("voximplant", "telephony_statistic_last_month", serialize($curLastMonth));
}
}
return $arMonthlyStat;
}