/** * @action list * @param KalturaPartnerFilter $filter * @param KalturaFilterPager $pager * @return KalturaPartnerListResponse */ public function listAction(KalturaPartnerFilter $filter = null, KalturaFilterPager $pager = null) { if (is_null($filter)) { $filter = new KalturaPartnerFilter(); } if (is_null($pager)) { $pager = new KalturaFilterPager(); } $partnerFilter = new partnerFilter(); $filter->toObject($partnerFilter); $partnerFilter->set('_gt_id', 0); $c = new Criteria(); $partnerFilter->attachToCriteria($c); $totalCount = PartnerPeer::doCount($c); $pager->attachToCriteria($c); $list = PartnerPeer::doSelect($c); $newList = KalturaPartnerArray::fromPartnerArray($list); $response = new KalturaPartnerListResponse(); $response->totalCount = $totalCount; $response->objects = $newList; return $response; }
/** * Count partner's existing sub-publishers (count includes the partner itself). * * @action count * @param KalturaPartnerFilter $filter * @return int */ public function countAction(KalturaPartnerFilter $filter = null) { if (!$filter) { $filter = new KalturaPartnerFilter(); } $dbFilter = new partnerFilter(); $filter->toObject($dbFilter); $c = PartnerPeer::getDefaultCriteria(); $dbFilter->attachToCriteria($c); return PartnerPeer::doCount($c); }
/** * 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; }