/** * report getTotal action allows to get a graph data for a specific report. * * @action getTotal * @param KalturaReportType $reportType * @param KalturaReportInputFilter $reportInputFilter * @param string $objectIds - one ID or more (separated by ',') of specific objects to query * @return KalturaReportTotal */ function getTotalAction($reportType, KalturaReportInputFilter $reportInputFilter, $objectIds = null) { $reportTotal = new KalturaReportTotal(); list($header, $data) = myReportsMgr::getTotal($this->getPartnerId(), $reportType, $reportInputFilter->toReportsInputFilter(), $objectIds); $reportTotal->fromReportTotal($header, $data); return $reportTotal; }
/** * report getTotal action allows to get a graph data for a specific report. * * @action getTotal * @param KalturaReportType $reportType * @param KalturaReportInputFilter $reportInputFilter * @param string $objectIds - one ID or more (separated by ',') of specific objects to query * @return KalturaReportTotal */ public function getTotalAction($reportType, KalturaReportInputFilter $reportInputFilter, $objectIds = null) { if ($reportType == KalturaReportType::PARTNER_USAGE || $reportType == KalturaReportType::VAR_USAGE) { $objectIds = $this->validateObjectsAreAllowedPartners($objectIds); } $reportTotal = new KalturaReportTotal(); list($header, $data) = myReportsMgr::getTotal($this->getPartnerId(), $reportType, $reportInputFilter->toReportsInputFilter(), $objectIds); $reportTotal->fromReportTotal($header, $data); return $reportTotal; }
private static function collectPartnerMonthlyStatisticsFromDWH($partner, $report_date) { $totalTranscoding = 0; $totalBandwith = 0; $totalStorage = 0; $fromDate = dateUtils::firstDayOfMonth($report_date); $reportFilter = new reportsInputFilter(); $reportFilter->from_day = str_replace('-', '', $fromDate); $reportFilter->to_day = str_replace('-', '', $report_date); list($header, $data) = myReportsMgr::getTotal($partner->getId(), myReportsMgr::REPORT_TYPE_PARTNER_USAGE, $reportFilter, $partner->getId()); $bandwidth_consumption = array_search('bandwidth_consumption', $header); $deleted_storage = array_search('deleted_storage', $header); $added_storage = array_search('added_storage', $header); $transcoding_consumption = array_search('transcoding_consumption', $header); $totalBandwith = $data[$bandwidth_consumption] * 1024; //KB $totalTranscoding = $data[$transcoding_consumption] * 1024; //KB $totalStorage = $data[$added_storage] * 1024 - $data[$deleted_storage] * 1024; //KB return array($totalStorage, $totalBandwith, $totalTranscoding); }
/** * Function which calulates partner usage of a group of a VAR's sub-publishers * * @action getPartnerUsage * @param KalturaPartnerFilter $partnerFilter * @param KalturaReportInputFilter $usageFilter * @param KalturaFilterPager $pager * @return KalturaPartnerUsageListResponse * @throws KalturaVarConsoleErrors::MAX_SUB_PUBLISHERS_EXCEEDED */ public function getPartnerUsageAction(KalturaPartnerFilter $partnerFilter = null, KalturaReportInputFilter $usageFilter = null, KalturaFilterPager $pager = null) { if (is_null($partnerFilter)) { $partnerFilter = new KalturaPartnerFilter(); } if (is_null($usageFilter)) { $usageFilter = new KalturaReportInputFilter(); $usageFilter->fromDate = time() - 60 * 60 * 24 * 30; // last 30 days $usageFilter->toDate = time(); } else { //The first time the filter is sent, it it sent with 0 as fromDate if (!$usageFilter->fromDate) { $usageFilter->fromDate = time() - 60 * 60 * 24 * 30; } if (!$usageFilter->interval) { $usageFilter->interval = KalturaReportInterval::MONTHS; } } if (is_null($pager)) { $pager = new KalturaFilterPager(); } //Create a propel filter for the partner $partnerFilterDb = new partnerFilter(); $partnerFilter->toObject($partnerFilterDb); //add filter to criteria $c = PartnerPeer::getDefaultCriteria(); $partnerFilterDb->attachToCriteria($c); $partnersCount = PartnerPeer::doCount($c); if ($partnersCount > self::MAX_SUB_PUBLISHERS) { throw new KalturaAPIException(KalturaVarConsoleErrors::MAX_SUB_PUBLISHERS_EXCEEDED); } $partners = PartnerPeer::doSelect($c); $partnerIds = array(); foreach ($partners as &$partner) { $partnerIds[] = $partner->getId(); } // add pager to criteria $pager->attachToCriteria($c); $c->addAscendingOrderByColumn(PartnerPeer::ID); // select partners $items = array(); $inputFilter = new reportsInputFilter(); $inputFilter->from_date = $usageFilter->fromDate; $inputFilter->to_date = $usageFilter->toDate; $inputFilter->from_day = date("Ymd", $usageFilter->fromDate); $inputFilter->to_day = date("Ymd", $usageFilter->toDate); $inputFilter->timeZoneOffset = $usageFilter->timeZoneOffset; $inputFilter->interval = $usageFilter->interval; if (!count($partnerIds)) { $total = new KalturaVarPartnerUsageTotalItem(); // no partners fit the filter - don't fetch data $totalCount = 0; // the items are set to an empty KalturaSystemPartnerUsageArray } else { $totalCount = 0; $orderBy = ($inputFilter->interval == reportInterval::MONTHS ? "+month_id" : "+date_id") . ",+partner_id"; list($reportHeader, $reportData, $totalCount) = myReportsMgr::getTable(null, myReportsMgr::REPORT_TYPE_VAR_USAGE, $inputFilter, $pager->pageSize, $pager->pageIndex, $orderBy, implode(",", $partnerIds)); foreach ($reportData as $line) { $item = new KalturaVarPartnerUsageItem(); $item->fromString($reportHeader, $line); if ($item) { $items[] = $item; } } list($reportHeader, $reportData) = myReportsMgr::getTotal(null, myReportsMgr::REPORT_TYPE_PARTNER_USAGE, $inputFilter, implode(",", $partnerIds)); $total = new KalturaVarPartnerUsageTotalItem(); $total->fromString($reportHeader, $reportData); list($peakStoragereportHeader, $peakStoragereportData) = myReportsMgr::getTotal(null, myReportsMgr::REPORT_TYPE_PEAK_STORAGE, $inputFilter, implode(",", $partnerIds)); if ($peakStoragereportData[0]) { $total->peakStorage = ceil(@$peakStoragereportData[0]); } } $response = new KalturaPartnerUsageListResponse(); //Sort according to dateId and partnerId uasort($items, array($this, 'sortByDate')); $response->total = $total; $response->totalCount = $totalCount; $response->objects = $items; return $response; }