public function load($idString, $app = null) { //parse $idString $this->Id = $idString; $idArray = explode('/', $idString); $affiliateId = $idArray[0]; $invoiceId = $idArray[1]; $dateString = $idArray[2]; $index = $idArray[3]; $date = DateTime::createFromFormat(Infusionsoft_Service::apiDateFormat, $dateString); $dateString = $date->format(Infusionsoft_Service::apiDateFormat); $date->modify('+1 second'); $dateAndOneSecondString = $date->format('Ymd\\TH:i:s'); //This is the base method that returns a data array $clawbacks = Infusionsoft_APIAffiliateService::affClawbacks($affiliateId, $dateString, $dateAndOneSecondString, $app); $clawbacksInvoice = array(); //commissions with matching invoice Id foreach ($clawbacks as $clawback) { if ($clawback->InvoiceId == $invoiceId) { $clawbacksInvoice[] = $clawback; } } if ($index >= 0 && $index < count($clawbacksInvoice)) { $this->data = $clawbacksInvoice[$index]->toArray(); } else { throw new Infusionsoft_Exception("Invalid commission Id"); } }
public static function queryWithOrderBy($object, $queryData, $orderByField, $ascending = true, $limit = 1000, $month = 0, $returnFields = false, Infusionsoft_App $app = null) { //Set a hard date for earliest_month_to_query so that we don't get into infinite loops trying to find commissions in the 1700's (this happens when you sync an empty application) if ($month == 0) { $firstOrder = Infusionsoft_DataService::queryWithOrderBy(new Infusionsoft_Job(), array('Id' => '%'), 'Id', true, 1); if (!empty($firstOrder)) { self::$earliest_month_to_query = $firstOrder[0]->DateCreated; } } if (empty(self::$earliest_month_to_query)) { self::$earliest_month_to_query = '2013-01-01'; } //Calculate beginning of this month $startDate = date('Y-m-01 00:00:00', strtotime(" - {$month} months")); $startDate = date(Infusionsoft_Service::apiDateFormat, strtotime($startDate)); $endDate = date('Y-m-t 23:59:59', strtotime($startDate)); $endDate = date(Infusionsoft_Service::apiDateFormat, strtotime($endDate)); //get an array of all affiliates $affiliates = self::$affiliates_cache; if (empty($affiliates)) { $page = 0; do { $affiliatesPage = Infusionsoft_DataService::query(new Infusionsoft_Affiliate(), array('Id' => '%'), 1000, $page, array('Id'), $app); $page += 1; $affiliates = array_merge($affiliates, $affiliatesPage); } while (sizeof($affiliatesPage) >= 1000); } //Now get all of the commissions from each one $objects = array(); while (count($objects) < $limit && $startDate >= self::$earliest_month_to_query) { foreach ($affiliates as $affiliate) { if (get_class($object) == 'Infusionsoft_Commission') { $objects = array_merge($objects, Infusionsoft_APIAffiliateService::affCommissions($affiliate->Id, $startDate, $endDate, $app)); } elseif (get_class($object) == 'Infusionsoft_Clawback') { $objects = array_merge($objects, Infusionsoft_APIAffiliateService::affClawbacks($affiliate->Id, $startDate, $endDate, $app)); } } $startDate = date('Y-m-d', strtotime($startDate . '- 1 month')); $endDate = date('Y-m-t 23:59:59', strtotime($startDate)); $startDate = date(Infusionsoft_Service::apiDateFormat, strtotime($startDate)); $endDate = date(Infusionsoft_Service::apiDateFormat, strtotime($endDate)); } self::$orderByField = $orderByField; usort($objects, array('Infusionsoft_AffiliateDataService', 'sortCommissions')); return $objects; }
<form> affiliateId: <input type="text" name="affiliateId" value="<?php if (isset($_REQUEST['affiliateId'])) { echo htmlspecialchars($_REQUEST['affiliateId']); } ?> "><br/> filterStartDate: <input type="text" name="filterStartDate" value="<?php if (isset($_REQUEST['filterStartDate'])) { echo htmlspecialchars($_REQUEST['filterStartDate']); } ?> "><br/> filterEndDate: <input type="text" name="filterEndDate" value="<?php if (isset($_REQUEST['filterEndDate'])) { echo htmlspecialchars($_REQUEST['filterEndDate']); } ?> "><br/> <input type="submit"> <input type="hidden" name="go"> </form> <?php include '../infusionsoft.php'; include 'testUtils.php'; if (isset($_REQUEST['go'])) { $out = Infusionsoft_APIAffiliateService::affClawbacks($_REQUEST['affiliateId'], $_REQUEST['filterStartDate'], $_REQUEST['filterEndDate']); var_dump($out); }