/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Base#getTransactionList($merchantId, $dStartDate, $dEndDate) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $transactionNumber = rand(1, 200); $twoMonthsAgoDate = new Zend_Date(); $twoMonthsAgoDate->subMonth(2); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); for ($i = 0; $i < $transactionNumber; $i++) { $dateIndex = rand(0, count($dateArray) - 1); $merchantIndex = rand(0, count($merchantList) - 1); $transaction = array(); $transaction['unique_id'] = md5(mt_rand() . $dateArray[$dateIndex]->toString("yyyy-MM-dd HH:mm:ss")); $transaction['custom_id'] = "my_custom_id"; $transaction['merchantId'] = $merchantList[$merchantIndex]; $transaction['date'] = $dateArray[$dateIndex]->toString("yyyy-MM-dd HH:mm:ss"); $transactionAmount = rand(1, 1000); $transaction['amount'] = $transactionAmount; $transaction['commission'] = $transactionAmount / 10; //$transaction['link'] = $this->_linkList[rand(0, count($this->_linkList)-1)]; //$transaction['website'] = $this->_websiteList[rand(0, count($this->_websiteList)-1)]; //$transaction['page'] = $this->_pageList[rand(0, count($this->_pageList)-1)]; $transactionStatusChances = rand(1, 100); if ($dateArray[$dateIndex]->compare($twoMonthsAgoDate) >= 0) { if ($transactionStatusChances < 60) { $transaction['status'] = Oara_Utilities::STATUS_CONFIRMED; } else { if ($transactionStatusChances < 70) { $transaction['status'] = Oara_Utilities::STATUS_DECLINED; } else { $transaction['status'] = Oara_Utilities::STATUS_PENDING; } } } else { if ($transactionStatusChances < 80) { $transaction['status'] = Oara_Utilities::STATUS_CONFIRMED; } else { $transaction['status'] = Oara_Utilities::STATUS_DECLINED; } } $totalTransactions[] = $transaction; } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Interface#getTransactionList($aMerchantIds, $dStartDate, $dEndDate, $sTransactionStatus) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $valuesFormExport = array(); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($j = 0; $j < $dateArraySize; $j++) { $valuesFormExport = array(); $valuesFormExport[] = new Oara_Curl_Parameter('date1', $dateArray[$j]->toString("yyyy-MM-dd")); $valuesFormExport[] = new Oara_Curl_Parameter('date2', $dateArray[$j]->toString("yyyy-MM-dd")); $valuesFormExport[] = new Oara_Curl_Parameter('prerange', '0'); $urls = array(); $urls[] = new Oara_Curl_Request('https://affiliate.btguard.com/reports?', $valuesFormExport); $exportReport = $this->_client->get($urls); $dom = new Zend_Dom_Query($exportReport[0]); $results = $dom->query('.title table[cellspacing="12"]'); if (count($results) > 0) { $exportData = self::htmlToCsv(self::DOMinnerHTML($results->current())); for ($z = 1; $z < count($exportData); $z++) { $transactionLineArray = str_getcsv($exportData[$z], ";"); $numberTransactions = (int) $transactionLineArray[2]; if ($numberTransactions != 0) { $commission = preg_replace("/[^0-9\\.,]/", "", $transactionLineArray[3]); $commission = (double) $commission / $numberTransactions; for ($y = 0; $y < $numberTransactions; $y++) { $transaction = array(); $transaction['merchantId'] = "1"; $transaction['date'] = $dateArray[$j]->toString("yyyy-MM-dd HH:mm:ss"); $transaction['status'] = Oara_Utilities::STATUS_CONFIRMED; $transaction['amount'] = $commission; $transaction['commission'] = $commission; $totalTransactions[] = $transaction; } } } } } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Interface#getTransactionList($aMerchantIds, $dStartDate, $dEndDate, $sTransactionStatus) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($j = 0; $j < $dateArraySize; $j++) { $date = $dateArray[$j]; $url = "https://partner-int-api.groupon.com/reporting/v2/order.csv?clientId={$this->_credentials['apiPassword']}&group=order&date={$date->toString("yyyy-MM-dd")}"; $rch = curl_init(); $options = $this->_options; curl_setopt($rch, CURLOPT_URL, $url); curl_setopt_array($rch, $options); $result = curl_exec($rch); curl_close($rch); $exportData = str_getcsv($result, "\n"); $num = count($exportData); for ($i = 1; $i < $num; $i++) { $transactionExportArray = str_getcsv($exportData[$i], ","); $transaction = array(); $transaction['merchantId'] = "1"; $transaction['date'] = $date->toString("yyyy-MM-dd HH:mm:ss"); $transaction['unique_id'] = $transactionExportArray[0]; $transaction['currency'] = $transactionExportArray[4]; if ($transactionExportArray[1] != null) { $transaction['custom_id'] = $transactionExportArray[1]; } if ($transactionExportArray[5] == 'VALID' || $transactionExportArray[5] == 'REFUNDED') { $transaction['status'] = Oara_Utilities::STATUS_CONFIRMED; } else { if ($transactionExportArray[5] == 'INVALID') { $transaction['status'] = Oara_Utilities::STATUS_DECLINED; } else { throw new Exception("Status {$transactionExportArray[5]} unknown"); } } if (preg_match("/[-+]?[0-9]*\\.?[0-9]+/", $transactionExportArray[8], $match)) { $transaction['amount'] = (double) $match[0]; } if (preg_match("/[-+]?[0-9]*\\.?[0-9]+/", $transactionExportArray[12], $match)) { $transaction['commission'] = (double) $match[0]; } $totalTransactions[] = $transaction; } } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId,$dStartDate,$dEndDate) */ public function getOverviewList($transactionList = array(), $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $totalOverview = array(); //At first, we need to be sure that there are some data. $transactionList = self::transactionMapPerDay($transactionList); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = count($dateArray); $auxStartDate = clone $dStartDate; $auxStartDate->setHour("00"); $auxStartDate->setMinute("00"); $auxStartDate->setSecond("00"); $auxEndDate = clone $dEndDate; $auxEndDate->setHour("23"); $auxEndDate->setMinute("59"); $auxEndDate->setSecond("59"); $groupMap = array(); foreach ($this->_campaignMap as $campaignKey => $campaignValue) { $overviewList = $this->_soapClient->getProgramReport($auxStartDate->getIso(), $auxEndDate->getIso(), $campaignKey, $this->_exportOverviewParameters['username'], $this->_exportOverviewParameters['password']); $exist = false; $j = 0; while ($j < count($overviewList) && !$exist) { if (in_array($overviewList[$j]->programID, $merchantList)) { $exist = true; } $j++; } if ($exist) { for ($i = 0; $i < $dateArraySize; $i++) { $auxStartDayDate = clone $dateArray[$i]; $auxStartDayDate->setHour("00"); $auxStartDayDate->setMinute("00"); $auxStartDayDate->setSecond("00"); $auxEndDayDate = clone $dateArray[$i]; $auxEndDayDate->setHour("23"); $auxEndDayDate->setMinute("59"); $auxEndDayDate->setSecond("59"); $overviewList = $this->_soapClient->getProgramReport($auxStartDayDate->getIso(), $auxEndDayDate->getIso(), $campaignKey, $this->_exportOverviewParameters['username'], $this->_exportOverviewParameters['password']); for ($j = 0; $j < count($overviewList); $j++) { if (in_array($overviewList[$j]->programID, $merchantList)) { $overviewArray = array(); $overviewArray['merchantId'] = $overviewList[$j]->programID; $overviewArray['date'] = $auxStartDayDate->toString("yyyy-MM-dd HH:mm:ss"); $overviewArray['click_number'] = $overviewList[$j]->clickTotals; $overviewArray['impression_number'] = $overviewList[$j]->viewTotals; $transactionDateArray = self::getDayFromArray($overviewArray['merchantId'], $campaignKey, $transactionList, $auxStartDayDate); $overviewArray['transaction_number'] = 0; $overviewArray['transaction_confirmed_value'] = 0; $overviewArray['transaction_confirmed_commission'] = 0; $overviewArray['transaction_pending_value'] = 0; $overviewArray['transaction_pending_commission'] = 0; $overviewArray['transaction_declined_value'] = 0; $overviewArray['transaction_declined_commission'] = 0; foreach ($transactionDateArray as $transaction) { if (!isset($transaction['amount'])) { $transaction['amount'] = 0; } if (!isset($transaction['commission'])) { $transaction['commission'] = 0; } $overviewArray['transaction_number']++; if ($transaction['status'] == Oara_Utilities::STATUS_CONFIRMED) { $overviewArray['transaction_confirmed_value'] += $transaction['amount']; $overviewArray['transaction_confirmed_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_PENDING) { $overviewArray['transaction_pending_value'] += $transaction['amount']; $overviewArray['transaction_pending_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_DECLINED) { $overviewArray['transaction_declined_value'] += $transaction['amount']; $overviewArray['transaction_declined_commission'] += $transaction['commission']; } } } } $groupMap = self::groupOverview($groupMap, $overviewArray); } } } } } foreach ($groupMap as $merchant => $overviewPerDate) { foreach ($overviewPerDate as $date => $overview) { if (Oara_Utilities::checkRegister($overview)) { $totalOverview[] = $overview; } } } return $totalOverview; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId, $dStartDate, $dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $overviewArray = array(); $transactionArray = Oara_Utilities::transactionMapPerDay($transactionList); $mothOverviewUrls = array(); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($i = 0; $i < $dateArraySize; $i++) { $valuesFormExport = Oara_Utilities::cloneArray($this->_exportTransactionParameters); $valuesFormExport[] = new Oara_Curl_Parameter('datefrom', $dateArray[$i]->toString("yyyy-MM-dd")); $valuesFormExport[] = new Oara_Curl_Parameter('dateto', $dateArray[$i]->toString("yyyy-MM-dd")); $mothUrls[] = new Oara_Curl_Request('https://accounts.skimlinks.com/reports_export.php?', $valuesFormExport); } $exportReport = $this->_client->get($mothUrls); $exportReportNumber = count($exportReport); for ($i = 0; $i < $exportReportNumber; $i++) { $exportData = str_getcsv($exportReport[$i], "\n"); $num = count($exportData); for ($j = 1; $j < $num - 5; $j++) { $overviewExportArray = str_getcsv($exportData[$j], ","); if (Oara_Utilities::parseDouble($overviewExportArray[2]) != 0 && isset($this->_merchantMap[$overviewExportArray[0]]) && in_array($this->_merchantMap[$overviewExportArray[0]], $merchantList)) { $overview = array(); $overview['merchantId'] = $this->_merchantMap[$overviewExportArray[0]]; $overviewDate = new Zend_Date($mothUrls[$i]->getParameter(5)->getValue(), 'yyyy-MM-dd', 'en'); $overview['date'] = $overviewDate->toString("yyyy-MM-dd HH:mm:ss"); $overview['click_number'] = (int) $overviewExportArray[1]; $overview['impression_number'] = 0; $overview['transaction_number'] = 0; $overview['transaction_confirmed_value'] = 0; $overview['transaction_confirmed_commission'] = 0; $overview['transaction_pending_value'] = 0; $overview['transaction_pending_commission'] = 0; $overview['transaction_declined_value'] = 0; $overview['transaction_declined_commission'] = 0; $transactionDateArray = Oara_Utilities::getDayFromArray($overview['merchantId'], $transactionArray, $overviewDate); foreach ($transactionDateArray as $transaction) { $overview['transaction_number']++; if ($transaction['status'] == Oara_Utilities::STATUS_CONFIRMED) { $overview['transaction_confirmed_value'] += $transaction['amount']; $overview['transaction_confirmed_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_PENDING) { $overview['transaction_pending_value'] += $transaction['amount']; $overview['transaction_pending_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_DECLINED) { $overview['transaction_declined_value'] += $transaction['amount']; $overview['transaction_declined_commission'] += $transaction['commission']; } } } } if (Oara_Utilities::checkRegister($overview)) { $overviewArray[] = $overview; } } } } return $overviewArray; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId, $dStartDate, $dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $overviewArray = array(); $transactionArray = Oara_Utilities::transactionMapPerDay($transactionList); $mothOverviewUrls = array(); foreach (array_keys($this->_websiteList) as $websiteId) { $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($i = 0; $i < $dateArraySize; $i++) { $overviewExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); $overviewExport[] = new Oara_Curl_Parameter('AfID', $websiteId); $overviewExport[] = new Oara_Curl_Parameter('RptDate', $dateArray[$i]->toString("dd-MM-yyyy")); $mothOverviewUrls[] = new Oara_Curl_Request('http://www.clixgalore.co.uk/AffiliateSummaryStatsPopup.asp?', $overviewExport); } } $exportReport = $this->_client->get($mothOverviewUrls); for ($i = 0; $i < count($exportReport); $i++) { if (!preg_match("/No clicks\\/transactions have been sent!/", $exportReport[$i])) { $dom = new Zend_Dom_Query($exportReport[$i]); $results = $dom->query('table'); $count = count($results); $tableNode = null; for ($j = 0; $j < $count; $j++) { $node = $results->next(); if ($j == 1) { $tableNode = $node; break; } } $exportData = self::htmlToCsv(self::DOMinnerHTML($tableNode)); for ($j = 1; $j < count($exportData); $j++) { $overviewExportArray = str_getcsv($exportData[$j], ";"); if (isset($this->_merchantMap[$overviewExportArray[0]]) && in_array((int) $this->_merchantMap[$overviewExportArray[0]], $merchantList)) { $obj = array(); $obj['merchantId'] = $this->_merchantMap[$overviewExportArray[0]]; $overviewDate = new Zend_Date($mothOverviewUrls[$i]->getParameter(2)->getValue(), "dd-MM-yyyy HH:mm:ss"); $obj['date'] = $overviewDate->toString("yyyy-MM-dd HH:mm:ss"); $obj['impression_number'] = $overviewExportArray[4]; $obj['click_number'] = $overviewExportArray[6]; $obj['transaction_number'] = 0; $obj['transaction_confirmed_commission'] = 0; $obj['transaction_confirmed_value'] = 0; $obj['transaction_pending_commission'] = 0; $obj['transaction_pending_value'] = 0; $obj['transaction_declined_commission'] = 0; $obj['transaction_declined_value'] = 0; $transactionDateArray = Oara_Utilities::getDayFromArray($obj['merchantId'], $transactionArray, $overviewDate); foreach ($transactionDateArray as $transaction) { $obj['transaction_number']++; if ($transaction['status'] == Oara_Utilities::STATUS_CONFIRMED) { $obj['transaction_confirmed_value'] += $transaction['amount']; $obj['transaction_confirmed_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_PENDING) { $obj['transaction_pending_value'] += $transaction['amount']; $obj['transaction_pending_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_DECLINED) { $obj['transaction_declined_value'] += $transaction['amount']; $obj['transaction_declined_commission'] += $transaction['commission']; } } } } if (Oara_Utilities::checkRegister($obj)) { $overviewArray[] = $obj; } } } } } return $overviewArray; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Base#getTransactionList($merchantId, $dStartDate, $dEndDate) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $totalOverviews = array(); $urls = array(); $urls[] = new Oara_Curl_Request('http://book.terravision.eu/partner/my/stats', array()); $exportReport = $this->_client->get($urls); $dom = new Zend_Dom_Query($exportReport[0]); $results = $dom->query('input[name="form[_token]"]'); $token = null; foreach ($results as $result) { $token = $result->getAttribute("value"); } $valuesFormExport = array(); $valuesFormExport[] = new Oara_Curl_Parameter('form[year]', $dStartDate->toString("yyyy")); $valuesFormExport[] = new Oara_Curl_Parameter('fform[_token]', $token); $valuesFormExport[] = new Oara_Curl_Parameter('show', 'Show'); $urls = array(); $urls[] = new Oara_Curl_Request('http://book.terravision.eu/partner/my/stats?', $valuesFormExport); $exportReport = $this->_client->post($urls); $stringToFind = $dStartDate->toString("MM-yyyy"); /*** load the html into the object ***/ $dom = new Zend_Dom_Query($exportReport[0]); $results = $dom->query('.frame > table'); $exportData = self::htmlToCsv(self::DOMinnerHTML($results->current())); $num = count($exportData); $transactionCounter = 0; $valueCounter = 0; $commissionCounter = 0; for ($i = 1; $i < $num - 1; $i++) { $transactionArray = str_getcsv($exportData[$i], ";"); if ($transactionArray[0] == $stringToFind) { $transactionCounter = $transactionArray[12]; $valueCounter += $transactionArray[14]; $commissionCounter += $transactionArray[16]; } } if ($transactionCounter > 0) { $dateList = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); for ($i = 0; $i < count($dateList); $i++) { $transaction = array(); $transaction['merchantId'] = 1; $transaction['status'] = Oara_Utilities::STATUS_CONFIRMED; $transaction['date'] = $dateList[$i]->toString("yyyy-MM-dd HH:mm:ss"); $transaction['amount'] = $valueCounter / count($dateList); $transaction['commission'] = $commissionCounter / count($dateList); $totalTransactions[] = $transaction; } } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId, $dStartDate, $dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $totalOverviews = array(); $transactionArray = Oara_Utilities::transactionMapPerDay($transactionList); $mothOverviewUrls = array(); $valuesFormExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); if ($this->_dateFormat == 'dd/MM/yy') { $valuesFormExport[] = new Oara_Curl_Parameter('startDate', $dStartDate->toString('dd/MM/yy')); $valuesFormExport[] = new Oara_Curl_Parameter('endDate', $dEndDate->toString('dd/MM/yy')); } else { if ($this->_dateFormat == 'M/d/yy') { $valuesFormExport[] = new Oara_Curl_Parameter('startDate', $dStartDate->toString('M/d/yy')); $valuesFormExport[] = new Oara_Curl_Parameter('endDate', $dEndDate->toString('M/d/yy')); } else { if ($this->_dateFormat == 'd/MM/yy') { $valuesFormExport[] = new Oara_Curl_Parameter('startDate', $dStartDate->toString('d/MM/yy')); $valuesFormExport[] = new Oara_Curl_Parameter('endDate', $dEndDate->toString('d/MM/yy')); } else { if ($this->_dateFormat == 'tt.MM.uu') { $valuesFormExport[] = new Oara_Curl_Parameter('startDate', $dStartDate->toString('dd.MM.yy')); $valuesFormExport[] = new Oara_Curl_Parameter('endDate', $dEndDate->toString('dd.MM.yy')); } else { throw new Exception("\n Date Format not supported " . $this->_dateFormat . "\n"); } } } } $urls = array(); $urls[] = new Oara_Curl_Request('http://www.tradedoubler.com/pan/aReport3Internal.action?', $valuesFormExport); $exportReport = $this->_client->get($urls); $exportReport[0] = self::checkReportError($exportReport[0], $urls[0]); $exportData = str_getcsv($exportReport[0], "\r\n"); $num = count($exportData); if ($num > 3) { $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($i = 0; $i < $dateArraySize; $i++) { $valuesFormExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); if ($this->_dateFormat == 'dd/MM/yy') { $valuesFormExport[] = new Oara_Curl_Parameter('startDate', $dateArray[$i]->toString('dd/MM/yy')); $valuesFormExport[] = new Oara_Curl_Parameter('endDate', $dateArray[$i]->toString('dd/MM/yy')); } else { if ($this->_dateFormat == 'M/d/yy') { $valuesFormExport[] = new Oara_Curl_Parameter('startDate', $dateArray[$i]->toString('M/d/yy')); $valuesFormExport[] = new Oara_Curl_Parameter('endDate', $dateArray[$i]->toString('M/d/yy')); } else { if ($this->_dateFormat == 'd/MM/yy') { $valuesFormExport[] = new Oara_Curl_Parameter('startDate', $dateArray[$i]->toString('d/MM/yy')); $valuesFormExport[] = new Oara_Curl_Parameter('endDate', $dateArray[$i]->toString('d/MM/yy')); } else { if ($this->_dateFormat == 'tt.MM.uu') { $valuesFormExport[] = new Oara_Curl_Parameter('startDate', $dateArray[$i]->toString('dd.MM.yy')); $valuesFormExport[] = new Oara_Curl_Parameter('endDate', $dateArray[$i]->toString('dd.MM.yy')); } else { throw new Exception("\n Date Format not supported " . $this->_dateFormat . "\n"); } } } } $mothOverviewUrls[] = new Oara_Curl_Request('http://www.tradedoubler.com/pan/aReport3Internal.action?', $valuesFormExport); } } $exportReport = $this->_client->get($mothOverviewUrls); $exportReportNumber = count($exportReport); for ($i = 0; $i < $exportReportNumber; $i++) { $exportReport[$i] = self::checkReportError($exportReport[$i], $mothOverviewUrls[$i]); $exportData = str_getcsv($exportReport[$i], "\r\n"); $num = count($exportData); for ($j = 2; $j < $num - 1; $j++) { $overviewExportArray = str_getcsv($exportData[$j], ";"); $parameter = $mothOverviewUrls[$i]->getParameter(39); $overviewDate = $parameter->getValue(); if ($this->_dateFormat == 'dd/MM/yy') { $overviewDate = new Zend_Date($overviewDate, "dd/MM/yy"); } else { if ($this->_dateFormat == 'M/d/yy') { $overviewDate = new Zend_Date($overviewDate, "M/d/yy"); } else { if ($this->_dateFormat == 'd/MM/yy') { $overviewDate = new Zend_Date($overviewDate, "d/MM/yy"); } else { if ($this->_dateFormat == 'tt.MM.uu') { $overviewDate = new Zend_Date($overviewDate, "dd.MM.yy"); } else { throw new Exception("\n Date Format not supported " . $this->_dateFormat . "\n"); } } } } if (!isset($overviewExportArray[2])) { throw new Exception('Problem getting overview\\n\\n'); } if ($overviewDate->compare($dStartDate) >= 0 && $overviewDate->compare($dEndDate) <= 0 && isset($overviewExportArray[2]) && in_array((int) $overviewExportArray[2], $merchantList)) { $overview = array(); $overview['merchantId'] = (int) $overviewExportArray[2]; $overview['date'] = $overviewDate->toString("yyyy-MM-dd HH:mm:ss"); $overview['click_number'] = (int) $overviewExportArray[4]; $overview['impression_number'] = (int) $overviewExportArray[3]; $overview['transaction_number'] = 0; $overview['transaction_confirmed_value'] = 0; $overview['transaction_confirmed_commission'] = 0; $overview['transaction_pending_value'] = 0; $overview['transaction_pending_commission'] = 0; $overview['transaction_declined_value'] = 0; $overview['transaction_declined_commission'] = 0; $transactionDateArray = Oara_Utilities::getDayFromArray($overview['merchantId'], $transactionArray, $overviewDate); foreach ($transactionDateArray as $transaction) { $overview['transaction_number']++; if ($transaction['status'] == Oara_Utilities::STATUS_CONFIRMED) { $overview['transaction_confirmed_value'] += $transaction['amount']; $overview['transaction_confirmed_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_PENDING) { $overview['transaction_pending_value'] += $transaction['amount']; $overview['transaction_pending_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_DECLINED) { $overview['transaction_declined_value'] += $transaction['amount']; $overview['transaction_declined_commission'] += $transaction['commission']; } } } } if (Oara_Utilities::checkRegister($overview)) { $totalOverviews[] = $overview; } } } } return $totalOverviews; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Interface#getTransactionList($aMerchantIds, $dStartDate, $dEndDate, $sTransactionStatus) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $totalTransactions = array(); foreach ($this->_idBox as $id) { $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($j = 0; $j < $dateArraySize; $j++) { echo "day " . $dateArray[$j]->toString("d") . "\n"; echo round(memory_get_usage(true) / 1048576, 2) . " megabytes \n"; $try = 0; $done = false; while (!$done && $try < 5) { try { $totalTransactions = array_merge($totalTransactions, self::getTransactionReportRecursive($id, $dateArray[$j])); $done = true; } catch (Exception $e) { $try++; } } if ($try == 5) { throw new Exception("Couldn't get data for the date " . $dateArray[$j]->toString("dd-MM-yyyy")); } } } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Interface#getTransactionList($aMerchantIds, $dStartDate, $dEndDate) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $filter = new Zend_Filter_LocalizedToNormalized(array('precision' => 2, 'locale' => 'fr')); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); //foreach ($merchantList as $merchantId) { $urls = array(); for ($i = 0; $i < $dateArraySize; $i++) { $valuesFromExport = array(); $valuesFromExport[] = new Oara_Curl_Parameter('action', "myresume"); $valuesFromExport[] = new Oara_Curl_Parameter('progid', 0); $valuesFromExport[] = new Oara_Curl_Parameter('dD', $dateArray[$i]->toString("dd/MM/yyyy")); $valuesFromExport[] = new Oara_Curl_Parameter('dF', $dateArray[$i]->toString("dd/MM/yyyy")); $valuesFromExport[] = new Oara_Curl_Parameter('periode', "0"); $valuesFromExport[] = new Oara_Curl_Parameter('expAct', "1"); $valuesFromExport[] = new Oara_Curl_Parameter('tabid', "0"); $valuesFromExport[] = new Oara_Curl_Parameter('Submit', "Voir"); $urls[] = new Oara_Curl_Request('http://affilie.publicidees.com/index.php?', $valuesFromExport); } $exportReport = $this->_client->get($urls); $numExport = count($exportReport); for ($i = 0; $i < $numExport; $i++) { $exportData = str_getcsv(utf8_decode($exportReport[$i]), "\n"); $num = count($exportData); $headerArray = str_getcsv($exportData[0], ";"); $headerMap = array(); if (count($headerArray) > 1) { for ($j = 0; $j < count($headerArray); $j++) { if ($headerArray[$j] == "" && $headerArray[$j - 1] == "Ventes") { $headerMap["pendingVentes"] = $j; } else { if ($headerArray[$j] == "" && $headerArray[$j - 1] == "CA") { $headerMap["pendingCA"] = $j; } else { $headerMap[$headerArray[$j]] = $j; } } } } for ($j = 1; $j < $num; $j++) { $transactionExportArray = str_getcsv($exportData[$j], ";"); if (isset($headerMap["Ventes"]) && isset($headerMap["pendingVentes"])) { $confirmedTransactions = (int) $transactionExportArray[$headerMap["Ventes"]]; $pendingTransactions = (int) $transactionExportArray[$headerMap["pendingVentes"]]; for ($z = 0; $z < $confirmedTransactions; $z++) { $transaction = array(); $transaction['merchantId'] = 1; $parameters = $urls[$i]->getParameters(); $transactionDate = new Zend_Date($parameters[2]->getValue(), "dd/MM/yyyy"); $transaction['date'] = $transactionDate->toString("yyyy-MM-dd HH:mm:ss"); $transaction['amount'] = (double) $filter->filter(substr($transactionExportArray[$headerMap["CA"]], 0, -2)) / $confirmedTransactions; $transaction['commission'] = (double) $filter->filter(substr($transactionExportArray[$headerMap["CA"]], 0, -2)) / $confirmedTransactions; $transaction['status'] = Oara_Utilities::STATUS_CONFIRMED; $totalTransactions[] = $transaction; } for ($z = 0; $z < $pendingTransactions; $z++) { $transaction = array(); $transaction['merchantId'] = 1; $transaction['date'] = $dateArray[$i]->toString("yyyy-MM-dd HH:mm:ss"); $transaction['amount'] = (double) $transactionExportArray[$headerMap["pendingCA"]] / $pendingTransactions; $transaction['commission'] = (double) $transactionExportArray[$headerMap["pendingCA"]] / $pendingTransactions; $transaction['status'] = Oara_Utilities::STATUS_PENDING; $totalTransactions[] = $transaction; } } } } //} return $totalTransactions; }
/** * (non-PHPdoc) * * @see library/Oara/Network/Oara_Network_Publisher_Base#getTransactionList($merchantId,$dStartDate,$dEndDate) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); foreach ($dateArray as $date) { $apiURL = "https://{$this->_domain}/apifleet/rest/{$this->_clientId}/{$this->_accessId}/statCampaign/quick/{$date->toString("yyyy-MM-dd")}"; $response = self::call($apiURL); if (isset($response["resource"]["numSales"])) { $transaction = array(); $transaction['merchantId'] = "1"; $transaction['date'] = $date->toString("yyyy-MM-dd HH:mm:ss"); $transaction['status'] = Oara_Utilities::STATUS_CONFIRMED; $transaction['amount'] = $response["resource"]["saleAmount"]; $transaction['commission'] = $response["resource"]["theyGet"]; $transaction['currency'] = $response["resource"]["currency"]; if ($transaction['amount'] != 0 && $transaction['commission'] != 0) { $totalTransactions[] = $transaction; } } } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId,$dStartDate,$dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $totalOverview = array(); //At first, we need to be sure that there are some data. $auxStartDate = clone $dStartDate; $auxStartDate->setHour("00"); $auxStartDate->setMinute("00"); $auxStartDate->setSecond("00"); $auxEndDate = clone $dEndDate; $auxEndDate->setHour("23"); $auxEndDate->setMinute("59"); $auxEndDate->setSecond("59"); $dStartDate = clone $dStartDate; $dStartDate->setHour("00"); $dStartDate->setMinute("00"); $dStartDate->setSecond("00"); $dEndDate = clone $dEndDate; $dEndDate->setHour("23"); $dEndDate->setMinute("59"); $dEndDate->setSecond("59"); $params = $this->_credentialsParameters; $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); for ($i = 0; $i < sizeof($dateArray); $i++) { $groupMap = array(); $auxStartDate = clone $dateArray[$i]; $auxStartDate->setHour("00"); $auxStartDate->setMinute("00"); $auxStartDate->setSecond("00"); $overviewList = $this->_apiClient->getAffiliateAggregateStatistics($params['client'], $params['password'], $params['add_code'], $auxStartDate->toString("yyyy-MM-dd"), $auxStartDate->toString("yyyy-MM-dd")); if (!preg_match("/No Results found/", $overviewList, $matches)) { $overviewList = str_replace(array("£"), array("£"), $overviewList); $xmlObj = simplexml_load_string($overviewList); foreach ($xmlObj->children() as $overview) { $merchantId = (string) $overview->campaign_id; if (in_array($merchantId, $merchantList)) { $obj = array(); $obj['merchantId'] = $merchantId; $obj['date'] = $auxStartDate->toString("yyyy-MM-dd HH:mm:ss"); $obj['status'] = Oara_Utilities::STATUS_CONFIRMED; $obj['click_number'] = 0; if ((string) $overview->clicks != null) { $obj['click_number'] = (string) $overview->clicks; } $obj['impression_number'] = 0; if ((string) $overview->impressions != null) { $obj['impression_number'] = (string) $overview->impressions; } $obj['transaction_number'] = 0; $obj['transaction_confirmed_value'] = 0; $obj['transaction_confirmed_commission'] = 0; $obj['transaction_pending_value'] = 0; $obj['transaction_pending_commission'] = 0; $obj['transaction_declined_value'] = 0; $obj['transaction_declined_commission'] = 0; $obj['transaction_confirmed_value'] = Oara_Utilities::parseDouble((string) $overview->sales); $obj['transaction_confirmed_commission'] = Oara_Utilities::parseDouble((string) $overview->payout); if ($obj['transaction_confirmed_value'] != 0 || $obj['transaction_confirmed_commission'] != 0) { $obj['transaction_number']++; } if (Oara_Utilities::checkRegister($obj)) { $totalOverview[] = $obj; } } } } } return $totalOverview; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId,$dStartDate,$dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $totalOverview = array(); //At first, we need to be sure that there are some data. $auxStartDate = clone $dStartDate; $auxStartDate->setHour("00"); $auxStartDate->setMinute("00"); $auxStartDate->setSecond("00"); $auxEndDate = clone $dEndDate; $auxEndDate->setHour("23"); $auxEndDate->setMinute("59"); $auxEndDate->setSecond("59"); $params = array(); $params['sDateType'] = 'transaction'; if ($dStartDate != null) { $params['dStartDate'] = $auxStartDate->toString("yyyy-MM-ddTHH:mm:ss"); } if ($dEndDate != null) { $params['dEndDate'] = $auxEndDate->toString("yyyy-MM-ddTHH:mm:ss"); } if ($merchantList != null) { $params['aMerchantIds'] = $merchantList; } $params['iOffset'] = null; $params['iLimit'] = $this->_pageSize; $clickStats = $this->_apiClient->getClickStats($params); $impressionStats = $this->_apiClient->getImpressionStats($params); $transactionList = Oara_Utilities::transactionMapPerDay($transactionList); if (count($clickStats->getClickStatsReturn) > 0 || count($impressionStats->getImpressionStatsReturn) > 0 || count($transactionList) > 0) { unset($clickStats); unset($impressionStats); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); for ($i = 0; $i < sizeof($dateArray); $i++) { $groupMap = array(); $auxStartDate = clone $dateArray[$i]; $auxStartDate->setHour("00"); $auxStartDate->setMinute("00"); $auxStartDate->setSecond("00"); $auxEndDate = clone $dateArray[$i]; $auxEndDate->setHour("23"); $auxEndDate->setMinute("59"); $auxEndDate->setSecond("59"); $params = array(); $params['sDateType'] = 'transaction'; if ($dStartDate != null) { $params['dStartDate'] = $auxStartDate->toString("yyyy-MM-ddTHH:mm:ss"); } if ($dEndDate != null) { $params['dEndDate'] = $auxEndDate->toString("yyyy-MM-ddTHH:mm:ss"); } if ($merchantList != null) { $params['aMerchantIds'] = $merchantList; } $params['iOffset'] = null; $params['iLimit'] = $this->_pageSize; $clickStats = $this->_apiClient->getClickStats($params); if (count($clickStats->getClickStatsReturn) > 0) { $groupMap = self::groupOverview($groupMap, Oara_Utilities::soapConverter($clickStats->getClickStatsReturn, $this->_clickConverterConfiguration)); $iteration = self::calculeIterationNumber($clickStats->getClickStatsCountReturn->iRowsAvailable, $this->_pageSize); unset($clickStats); for ($j = 1; $j < $iteration; $j++) { $params['iOffset'] = $this->_pageSize * $j; $clickStats = $this->_apiClient->getClickStats($params); $groupMap = self::groupOverview($groupMap, Oara_Utilities::soapConverter($clickStats->getClickStatsReturn, $this->_clickConverterConfiguration)); unset($clickStats); gc_collect_cycles(); } } $params['iOffset'] = null; $impressionStats = $this->_apiClient->getImpressionStats($params); if (count($impressionStats->getImpressionStatsReturn) > 0) { $groupMap = self::groupOverview($groupMap, Oara_Utilities::soapConverter($impressionStats->getImpressionStatsReturn, $this->_impressionConverterConfiguration)); $iteration = self::calculeIterationNumber($impressionStats->getImpressionStatsCountReturn->iRowsAvailable, $this->_pageSize); unset($impressionStats); for ($j = 1; $j < $iteration; $j++) { $params['iOffset'] = $this->_pageSize * $j; $impressionStats = $this->_apiClient->getImpressionStats($params); $groupMap = self::groupOverview($groupMap, Oara_Utilities::soapConverter($impressionStats->getImpressionStatsReturn, $this->_impressionConverterConfiguration)); unset($impressionStats); gc_collect_cycles(); } } $transactionDateArray = array(); foreach ($transactionList as $merchantId => $data) { $transactionDateArray = array_merge($transactionDateArray, Oara_Utilities::getDayFromArray($merchantId, $transactionList, $auxStartDate)); } if (count($transactionDateArray) > 0) { $groupMap = self::groupOverview($groupMap, $transactionDateArray); } foreach ($groupMap as $merchant => $overview) { $overview['merchantId'] = $merchant; $overview['date'] = $auxStartDate->toString("yyyy-MM-dd HH:mm:ss"); if (Oara_Utilities::checkRegister($overview)) { $totalOverview[] = $overview; } } } } return $totalOverview; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId, $dStartDate, $dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $totalOverview = array(); $urls = array(); $valuesFromExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); $valuesFromExport[] = new Oara_Curl_Parameter('startyear', $dStartDate->get(Zend_Date::YEAR)); $valuesFromExport[] = new Oara_Curl_Parameter('startmonth', (int) $dStartDate->get(Zend_Date::MONTH) - 1); $valuesFromExport[] = new Oara_Curl_Parameter('startday', $dStartDate->get(Zend_Date::DAY)); $valuesFromExport[] = new Oara_Curl_Parameter('endyear', $dEndDate->get(Zend_Date::YEAR)); $valuesFromExport[] = new Oara_Curl_Parameter('endmonth', (int) $dEndDate->get(Zend_Date::MONTH) - 1); $valuesFromExport[] = new Oara_Curl_Parameter('endday', $dEndDate->get(Zend_Date::DAY)); $urls[] = new Oara_Curl_Request('https://members.cj.com/member/' . $this->_memberId . '/publisher/report/performance.do?', $valuesFromExport); $exportReport = $this->_client->get($urls); $exportData = str_getcsv($exportReport[0], "\n"); $num = count($exportData); if ($num > 1) { $transactionArray = Oara_Utilities::transactionMapPerDay($transactionList); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); foreach ($dateArray as $currentStartDate) { $groupMap = array(); $urls = array(); $valuesFromExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); $valuesFromExport[] = new Oara_Curl_Parameter('startyear', $currentStartDate->get(Zend_Date::YEAR)); $valuesFromExport[] = new Oara_Curl_Parameter('startmonth', (int) $currentStartDate->get(Zend_Date::MONTH) - 1); $valuesFromExport[] = new Oara_Curl_Parameter('startday', $currentStartDate->get(Zend_Date::DAY)); $valuesFromExport[] = new Oara_Curl_Parameter('endyear', $currentStartDate->get(Zend_Date::YEAR)); $valuesFromExport[] = new Oara_Curl_Parameter('endmonth', (int) $currentStartDate->get(Zend_Date::MONTH) - 1); $valuesFromExport[] = new Oara_Curl_Parameter('endday', $currentStartDate->get(Zend_Date::DAY)); $urls[] = new Oara_Curl_Request('https://members.cj.com/member/' . $this->_memberId . '/publisher/report/performance.do?', $valuesFromExport); $exportReport = $this->_client->get($urls); $clickImpressionsArray = array(); if (!preg_match("/error/i", $exportReport[0], $matches)) { $exportData = str_getcsv($exportReport[0], "\n"); $num = count($exportData); for ($i = 1; $i < $num; $i++) { $overviewExportArray = str_getcsv($exportData[$i], ","); if (isset($this->_merchantMap[$overviewExportArray[0]]) && in_array((int) $this->_merchantMap[$overviewExportArray[0]], $merchantList)) { $obj = array(); $obj['merchantId'] = $this->_merchantMap[$overviewExportArray[0]]; $obj['date'] = $currentStartDate->toString("yyyy-MM-dd HH:mm:ss"); $obj['click_number'] = $overviewExportArray[6]; $obj['impression_number'] = $overviewExportArray[7]; $clickImpressionsArray[] = $obj; } } } else { echo "Warning overview could fail for the day " . $currentStartDate->toString("dd/MM/yyyy") . " \n\n"; } $groupMap = self::groupOverview($groupMap, $clickImpressionsArray); $transactionDateArray = array(); foreach ($transactionArray as $merchantId => $data) { $transactionDateArray = array_merge($transactionDateArray, Oara_Utilities::getDayFromArray($merchantId, $transactionArray, $currentStartDate)); } if (count($transactionDateArray) > 0) { $groupMap = self::groupOverview($groupMap, $transactionDateArray); } foreach ($groupMap as $merchant => $groupOverview) { $groupOverview['merchantId'] = $merchant; $groupOverview['date'] = $currentStartDate->toString("yyyy-MM-dd HH:mm:ss"); if (Oara_Utilities::checkRegister($groupOverview)) { $totalOverview[] = $groupOverview; } } } } return $totalOverview; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Interface#getTransactionList($aMerchantIds, $dStartDate, $dEndDate, $sTransactionStatus) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $dirDestination = realpath(dirname(__FILE__)) . '/../../data/pdf'; $now = new Zend_Date(); if ($now->toString("yyyy-MM") != $dStartDate->toString("yyyy-MM")) { $fileName = "S_M_{$this->_apiPassword}_" . $dStartDate->toString("yyyyMM") . ".txt.gz"; // Raising this value may increase performance $buffer_size = 4096; // read 4kb at a time $local_file = $dirDestination . "/" . $fileName; $url = "http://affjet.dc.fubra.net/tools/ItunesConnect/ic.php?user="******"&password="******"&apiPassword="******"&type=M&date=" . $dStartDate->toString("yyyyMM"); $context = \stream_context_create(array('http' => array('header' => "Authorization: Basic " . base64_encode("{$this->_httpLogin}")))); \file_put_contents($local_file, \file_get_contents($url, false, $context)); $out_file_name = \str_replace('.gz', '', $local_file); // Open our files (in binary mode) $file = \gzopen($local_file, 'rb'); if ($file != null) { $out_file = \fopen($out_file_name, 'wb'); // Keep repeating until the end of the input file while (!\gzeof($file)) { // Read buffer-size bytes // Both fwrite and gzread and binary-safe \fwrite($out_file, \gzread($file, $buffer_size)); } // Files are done, close files \fclose($out_file); \gzclose($file); unlink($local_file); $salesReport = file_get_contents($out_file_name); $salesReport = explode("\n", $salesReport); for ($i = 1; $i < count($salesReport) - 1; $i++) { $row = str_getcsv($salesReport[$i], "\t"); if ($row[15] != 0) { $sub = false; if ($row[7] < 0) { $sub = true; $row[7] = abs($row[7]); } for ($j = 0; $j < $row[7]; $j++) { $obj = array(); $obj['merchantId'] = "1"; $obj['date'] = $dEndDate->toString("yyyy-MM-dd") . " 00:00:00"; $obj['custom_id'] = $row[4]; $comission = 0.3; if ($row[2] == "FUBRA1PETROLPRICES1" || $row[2] == "com.fubra.petrolpricespro.subscriptionYear") { $value = 2.99; $obj['amount'] = Oara_Utilities::parseDouble($value); $obj['commission'] = Oara_Utilities::parseDouble($value - $value * $comission); } else { if ($row[2] == "FUBRA1WORLDAIRPORTCODES1") { if ($obj['date'] < "2013-04-23 00:00:00") { $value = 0.6899999999999999; $obj['amount'] = Oara_Utilities::parseDouble($value); $obj['commission'] = Oara_Utilities::parseDouble($value - $value * $comission); } else { $value = 1.49; $obj['amount'] = Oara_Utilities::parseDouble($value); $obj['commission'] = Oara_Utilities::parseDouble($value - $value * $comission); } } else { throw new Exception("APP not found {$row[2]}"); } } if ($sub) { $obj['amount'] = -$obj['amount']; $obj['commission'] = -$obj['commission']; } $obj['status'] = Oara_Utilities::STATUS_CONFIRMED; $totalTransactions[] = $obj; } } } unlink($out_file_name); } } else { $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($z = 0; $z < $dateArraySize; $z++) { $transactionDate = $dateArray[$z]; $fileName = "S_D_{$this->_apiPassword}_" . $transactionDate->toString("yyyyMMdd") . ".txt.gz"; // Raising this value may increase performance $buffer_size = 4096; // read 4kb at a time $local_file = $dirDestination . "/" . $fileName; $url = "http://affjet.dc.fubra.net/tools/ItunesConnect/ic.php?user="******"&password="******"&apiPassword="******"&type=D&date=" . $transactionDate->toString("yyyyMMdd"); $context = \stream_context_create(array('http' => array('header' => "Authorization: Basic " . base64_encode("{$this->_httpLogin}")))); \file_put_contents($local_file, \file_get_contents($url, false, $context)); $out_file_name = \str_replace('.gz', '', $local_file); // Open our files (in binary mode) $file = \gzopen($local_file, 'rb'); if ($file != null) { $out_file = \fopen($out_file_name, 'wb'); // Keep repeating until the end of the input file while (!\gzeof($file)) { // Read buffer-size bytes // Both fwrite and gzread and binary-safe \fwrite($out_file, \gzread($file, $buffer_size)); } // Files are done, close files \fclose($out_file); \gzclose($file); unlink($local_file); $salesReport = file_get_contents($out_file_name); $salesReport = explode("\n", $salesReport); for ($i = 1; $i < count($salesReport) - 1; $i++) { $row = str_getcsv($salesReport[$i], "\t"); if ($row[15] != 0) { $sub = false; if ($row[7] < 0) { $sub = true; $row[7] = abs($row[7]); } for ($j = 0; $j < $row[7]; $j++) { $obj = array(); $obj['merchantId'] = "1"; $obj['date'] = $transactionDate->toString("yyyy-MM-dd") . " 00:00:00"; $obj['custom_id'] = $row[4]; if ($row[2] == "FUBRA1PETROLPRICES1" || $row[2] == "com.fubra.petrolpricespro.subscriptionYear") { $value = 2.99; $comission = 0.3; $obj['amount'] = Oara_Utilities::parseDouble($value); $obj['commission'] = Oara_Utilities::parseDouble($value - $value * $comission); } else { if ($row[2] == "FUBRA1WORLDAIRPORTCODES1") { $comission = 0.3; if ($obj['date'] < "2013-04-23 00:00:00") { $value = 0.6899999999999999; $obj['amount'] = Oara_Utilities::parseDouble($value); $obj['commission'] = Oara_Utilities::parseDouble($value - $value * $comission); } else { $value = 1.49; $obj['amount'] = Oara_Utilities::parseDouble($value); $obj['commission'] = Oara_Utilities::parseDouble($value - $value * $comission); } } else { throw new Exception("APP not found {$row[2]}"); } } if ($sub) { $obj['amount'] = -$obj['amount']; $obj['commission'] = -$obj['commission']; } $obj['status'] = Oara_Utilities::STATUS_CONFIRMED; $totalTransactions[] = $obj; } } } unlink($out_file_name); } } } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Interface#getTransactionList($idMerchant, $dStartDate, $dEndDate) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); //The end data for the API has to be one day more $iteration = self::calculeIterationNumber(count($merchantList), '20'); for ($it = 0; $it < $iteration; $it++) { echo "iteration {$it} of {$iteration} \n\n"; //echo "mechant".$cid." ".count($totalTransactions)."\n\n"; $merchantSlice = array_slice($merchantList, $it * 20, 20); try { $transactionDateEnd = clone $dEndDate; $transactionDateEnd->addDay(1); $restUrl = 'https://commission-detail.api.cj.com/v3/commissions?cids=' . implode(',', $merchantSlice) . '&date-type=posting&start-date=' . $dStartDate->toString("yyyy-MM-dd") . '&end-date=' . $transactionDateEnd->toString("yyyy-MM-dd"); unset($transactionDateEnd); $totalTransactions = array_merge($totalTransactions, self::getTransactionsXml($restUrl, $merchantList)); } catch (Exception $e) { $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($j = 0; $j < $dateArraySize; $j++) { $transactionDateEnd = clone $dateArray[$j]; $transactionDateEnd->addDay(1); echo $dateArray[$j]->toString("yyyy-MM-dd") . "\n\n"; $restUrl = 'https://commission-detail.api.cj.com/v3/commissions?cids=' . implode(',', $merchantSlice) . '&date-type=posting&start-date=' . $dateArray[$j]->toString("yyyy-MM-dd") . '&end-date=' . $transactionDateEnd->toString("yyyy-MM-dd"); try { $totalTransactions = array_merge($totalTransactions, self::getTransactionsXml($restUrl, $merchantList)); } catch (Exception $e) { $try = 0; $done = false; while (!$done && $try < 5) { try { $totalTransactions = array_merge($totalTransactions, self::transactionsByType(implode(',', $merchantSlice), $dateArray[$j], $transactionDateEnd, $merchantList)); $done = true; } catch (Exception $e) { $try++; echo "try again {$try}\n\n"; } } if ($try == 5) { throw new Exception("Couldn't get data from the Transaction"); } } unset($transactionDateEnd); } } } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Interface#getTransactionList($aMerchantIds, $dStartDate, $dEndDate, $sTransactionStatus) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $filter = new Zend_Filter_LocalizedToNormalized(array('precision' => 2)); $valuesFromExport = array(); $urls = array(); $urls[] = new Oara_Curl_Request('https://secure.paymode.com/paymode/reports-baiv2.jsp?', array()); $exportReport = $this->_client->get($urls); $dom = new Zend_Dom_Query($exportReport[0]); $results = $dom->query('input[type="hidden"]'); foreach ($results as $hidden) { $name = $hidden->getAttribute("name"); $value = $hidden->getAttribute("value"); $valuesFromExport[] = new Oara_Curl_Parameter($name, $value); } $valuesFromExport[] = new Oara_Curl_Parameter('dataSource', '1'); $valuesFromExport[] = new Oara_Curl_Parameter('RA:reports-baiv2.jspCHOOSE', '620541800'); $valuesFromExport[] = new Oara_Curl_Parameter('reportFormat', 'csv'); $valuesFromExport[] = new Oara_Curl_Parameter('includeCurrencyCodeColumn', 'on'); $valuesFromExport[] = new Oara_Curl_Parameter('remitTypeCode', ''); $valuesFromExport[] = new Oara_Curl_Parameter('PAYMENT_CURRENCY_TYPE', 'CREDIT'); $valuesFromExport[] = new Oara_Curl_Parameter('PAYMENT_CURRENCY_TYPE', 'INSTRUCTION'); $valuesFromExport[] = new Oara_Curl_Parameter('subSiteExtID', ''); $valuesFromExport[] = new Oara_Curl_Parameter('ediProvider835Version', '5010'); $valuesFromExport[] = new Oara_Curl_Parameter('tooManyRowsCheck', 'true'); $urls = array(); $dateList = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); foreach ($dateList as $date) { $valuesFromExportTemp = Oara_Utilities::cloneArray($valuesFromExport); $valuesFromExportTemp[] = new Oara_Curl_Parameter('date', $date->toString("MM/dd/yyyy")); $urls[] = new Oara_Curl_Request('https://secure.paymode.com/paymode/reports-do_csv.jsp?closeJQS=true?', $valuesFromExportTemp); } $exportReport = $this->_client->get($urls); $transactionCounter = 0; $valueCounter = 0; $commissionCounter = 0; $j = 0; foreach ($exportReport as $report) { $reportParameters = $urls[$j]->getParameters(); $reportDate = $reportParameters[count($reportParameters) - 1]->getValue(); $transactionDate = new Zend_Date($reportDate, 'MM/dd/yyyy', 'en'); if (!preg_match("/logout.jsp/", $report)) { $exportReportData = str_getcsv($report, "\n"); $num = count($exportReportData); for ($i = 1; $i < $num; $i++) { $transactionArray = str_getcsv($exportReportData[$i], ","); if (count($transactionArray) == 30 && $transactionArray[0] == 'D' && $transactionArray[1] == null) { $transactionCounter++; $valueCounter += $filter->filter($transactionArray[24]); $commissionCounter += $filter->filter($transactionArray[28]); } } } $j++; } if ($transactionCounter > 0) { for ($i = 0; $i < count($dateList); $i++) { $transaction = array(); $transaction['merchantId'] = 1; $transaction['status'] = Oara_Utilities::STATUS_PAID; $transaction['date'] = $dateList[$i]->toString("yyyy-MM-dd HH:mm:ss"); $transaction['amount'] = $valueCounter / count($dateList); $transaction['commission'] = $commissionCounter / count($dateList); $totalTransactions[] = $transaction; } } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId, $dStartDate, $dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $totalOverviews = array(); $transactionArray = self::transactionMapPerDay($transactionList); foreach ($transactionArray as $merchantId => $linkList) { foreach ($linkList as $link => $websiteList) { foreach ($websiteList as $website => $pageList) { foreach ($pageList as $page => $dateList) { foreach ($dateList as $date => $transactionList) { $overview = array(); $overview['merchantId'] = $merchantId; $overviewDate = new Zend_Date($date, "yyyy-MM-dd"); $overview['date'] = $overviewDate->toString("yyyy-MM-dd HH:mm:ss"); $clickNumber = rand(1, 30); $overview['click_number'] = $clickNumber; $overview['link'] = $link; $overview['website'] = $website; $overview['page'] = $page; $impressionNumber = rand(1, 60); $overview['impression_number'] = $impressionNumber; $overview['transaction_number'] = 0; $overview['transaction_confirmed_value'] = 0; $overview['transaction_confirmed_commission'] = 0; $overview['transaction_pending_value'] = 0; $overview['transaction_pending_commission'] = 0; $overview['transaction_declined_value'] = 0; $overview['transaction_declined_commission'] = 0; foreach ($transactionList as $transaction) { $overview['transaction_number']++; if ($transaction['status'] == Oara_Utilities::STATUS_CONFIRMED) { $overview['transaction_confirmed_value'] += $transaction['amount']; $overview['transaction_confirmed_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_PENDING) { $overview['transaction_pending_value'] += $transaction['amount']; $overview['transaction_pending_commission'] += $transaction['commission']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_DECLINED) { $overview['transaction_declined_value'] += $transaction['amount']; $overview['transaction_declined_commission'] += $transaction['commission']; } } } } $totalOverviews[] = $overview; } } } } } $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $overviewNumber = rand(1, 20); for ($i = 0; $i < $overviewNumber; $i++) { $dateIndex = rand(0, count($dateArray) - 1); $merchantIndex = rand(0, count($merchantList) - 1); $overview = array(); $overview['merchantId'] = $merchantList[$merchantIndex]; $overview['date'] = $dateArray[$dateIndex]->toString("yyyy-MM-dd HH:mm:ss"); $clickNumber = rand(1, 30); $overview['click_number'] = $clickNumber; $overview['link'] = $this->_linkList[rand(0, count($this->_linkList) - 1)]; $overview['website'] = $this->_websiteList[rand(0, count($this->_websiteList) - 1)]; $overview['page'] = $this->_pageList[rand(0, count($this->_pageList) - 1)]; $impressionNumber = rand(1, 60); $overview['impression_number'] = $impressionNumber; $overview['transaction_number'] = 0; $overview['transaction_confirmed_value'] = 0; $overview['transaction_confirmed_commission'] = 0; $overview['transaction_pending_value'] = 0; $overview['transaction_pending_commission'] = 0; $overview['transaction_declined_value'] = 0; $overview['transaction_declined_commission'] = 0; $totalOverviews[] = $overview; } return $totalOverviews; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Publisher_Base#getTransactionList($merchantId,$dStartDate,$dEndDate) */ public function getTransactionList($merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null, $merchantMap = null) { $totalTransactions = array(); $dStartDate = clone $dStartDate; $dStartDate->setHour("00"); $dStartDate->setMinute("00"); $dStartDate->setSecond("00"); $dEndDate = clone $dEndDate; $dEndDate->setHour("23"); $dEndDate->setMinute("59"); $dEndDate->setSecond("59"); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); foreach ($dateArray as $date) { $totalAuxTransactions = array(); $transactionList = $this->_apiClient->getSales($date->toString("yyyy-MM-dd"), 'trackingDate', null, null, null, 0, $this->_pageSize); if ($transactionList->total > 0) { $iteration = self::calculeIterationNumber($transactionList->total, $this->_pageSize); for ($i = 0; $i < $iteration; $i++) { $transactionList = $this->_apiClient->getSales($date->toString("yyyy-MM-dd"), 'trackingDate', null, null, null, $i, $this->_pageSize); $totalAuxTransactions = array_merge($totalAuxTransactions, $transactionList->saleItems->saleItem); unset($transactionList); gc_collect_cycles(); } } $leadList = $this->_apiClient->getLeads($date->toString("yyyy-MM-dd"), 'trackingDate', null, null, null, 0, $this->_pageSize); if ($leadList->total > 0) { $iteration = self::calculeIterationNumber($leadList->total, $this->_pageSize); for ($i = 0; $i < $iteration; $i++) { $leadList = $this->_apiClient->getLeads($date->toString("yyyy-MM-dd"), 'trackingDate', null, null, null, $i, $this->_pageSize); $totalAuxTransactions = array_merge($totalAuxTransactions, $leadList->leadItems->leadItem); unset($leadList); gc_collect_cycles(); } } foreach ($totalAuxTransactions as $transaction) { if (in_array($transaction->program->id, $merchantList)) { $obj = array(); $obj['currency'] = $transaction->currency; if ($transaction->reviewState == 'confirmed') { $obj['status'] = Oara_Utilities::STATUS_CONFIRMED; } else { if ($transaction->reviewState == 'open' || $transaction->reviewState == 'approved') { $obj['status'] = Oara_Utilities::STATUS_PENDING; } else { if ($transaction->reviewState == 'rejected') { $obj['status'] = Oara_Utilities::STATUS_DECLINED; } } } if (!isset($transaction->amount) || $transaction->amount == 0) { $obj['amount'] = $transaction->commission; } else { $obj['amount'] = $transaction->amount; } if (isset($transaction->gpps) && $transaction->gpps != null) { foreach ($transaction->gpps->gpp as $gpp) { if ($gpp->id == "zpar0") { if (strlen($gpp->_) > 100) { $gpp->_ = substr($gpp->_, 0, 100); } $obj['custom_id'] = $gpp->_; } } } $obj['unique_id'] = $transaction->id; $obj['commission'] = $transaction->commission; $transactionDate = new Zend_Date($transaction->trackingDate, "yyyy-MM-dd HH:mm:ss"); $obj['date'] = $transactionDate->toString("yyyy-MM-dd HH:mm:ss"); $obj['merchantId'] = $transaction->program->id; $totalTransactions[] = $obj; } } unset($totalAuxTransactions); gc_collect_cycles(); } return $totalTransactions; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId, $dStartDate, $dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $overviewArray = array(); $overviewExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); $overviewExport[] = new Oara_Curl_Parameter('StartYear', $dStartDate->get(Zend_Date::YEAR)); $overviewExport[] = new Oara_Curl_Parameter('StartMonth', $dStartDate->get(Zend_Date::MONTH)); $overviewExport[] = new Oara_Curl_Parameter('StartDay', $dStartDate->get(Zend_Date::DAY)); $overviewExport[] = new Oara_Curl_Parameter('EndYear', $dEndDate->get(Zend_Date::YEAR)); $overviewExport[] = new Oara_Curl_Parameter('EndMonth', $dEndDate->get(Zend_Date::MONTH)); $overviewExport[] = new Oara_Curl_Parameter('EndDay', $dEndDate->get(Zend_Date::DAY)); $overviewExport[] = new Oara_Curl_Parameter('Merchant', '0'); $urls = array(); $urls[] = new Oara_Curl_Request('http://admin.omgpm.com/v2/Reports/Affiliate/DailyExport.aspx?', $overviewExport); $exportReport = $this->_client->get($urls); $xml = self::loadXml($exportReport[0]); if (isset($xml->Report->Detail_Collection->Detail)) { $transactionArray = Oara_Utilities::transactionMapPerDay($transactionList); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); $urls = array(); for ($i = 0; $i < $dateArraySize; $i++) { $overviewExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); $overviewExport[] = new Oara_Curl_Parameter('StartYear', $dateArray[$i]->get(Zend_Date::YEAR)); $overviewExport[] = new Oara_Curl_Parameter('StartMonth', $dateArray[$i]->get(Zend_Date::MONTH)); $overviewExport[] = new Oara_Curl_Parameter('StartDay', $dateArray[$i]->get(Zend_Date::DAY)); $overviewExport[] = new Oara_Curl_Parameter('EndYear', $dateArray[$i]->get(Zend_Date::YEAR)); $overviewExport[] = new Oara_Curl_Parameter('EndMonth', $dateArray[$i]->get(Zend_Date::MONTH)); $overviewExport[] = new Oara_Curl_Parameter('EndDay', $dateArray[$i]->get(Zend_Date::DAY)); $overviewExport[] = new Oara_Curl_Parameter('Merchant', '0'); $urls[] = new Oara_Curl_Request('http://admin.omgpm.com/v2/Reports/Affiliate/DailyExport.aspx?', $overviewExport); } $exportReport = $this->_client->get($urls); $exportReportNumber = count($exportReport); for ($i = 0; $i < $exportReportNumber; $i++) { $groupMerchantOverview = array(); $xml = self::loadXml($exportReport[$i]); if (isset($xml->Report->Detail_Collection->Detail)) { $overviewList = $xml->Report->Detail_Collection->Detail; $overviewListAux = $xml->Report->Detail_Collection->Detail; foreach ($overviewList as $overview) { if (isset($this->_merchantMap[self::findAttribute($overview, 'Merchant')]) && in_array((int) $this->_merchantMap[self::findAttribute($overview, 'Merchant')], $merchantList)) { $merchantId = $this->_merchantMap[self::findAttribute($overview, 'Merchant')]; if (!in_array($merchantId, $groupMerchantOverview)) { $groupMerchantOverview[] = $merchantId; $obj = array(); $obj['merchantId'] = $merchantId; $obj['date'] = $dateArray[$i]->toString("yyyy-MM-dd HH:mm:ss"); $obj['impression_number'] = 0; $obj['click_number'] = 0; foreach ($overviewListAux as $overviewAux) { if (isset($this->_merchantMap[self::findAttribute($overviewAux, 'Merchant')]) && in_array((int) $this->_merchantMap[self::findAttribute($overviewAux, 'Merchant')], $merchantList)) { $merchantIdAux = $this->_merchantMap[self::findAttribute($overviewAux, 'Merchant')]; if ($merchantId == $merchantIdAux) { $obj['impression_number'] += self::findAttribute($overviewAux, 'Impressions'); $obj['click_number'] += self::findAttribute($overviewAux, 'Clicks'); } } } $obj['transaction_number'] = 0; $obj['transaction_confirmed_commission'] = 0; $obj['transaction_confirmed_value'] = 0; $obj['transaction_pending_commission'] = 0; $obj['transaction_pending_value'] = 0; $obj['transaction_declined_commission'] = 0; $obj['transaction_declined_value'] = 0; $transactionDateArray = Oara_Utilities::getDayFromArray($obj['merchantId'], $transactionArray, $dateArray[$i]); foreach ($transactionDateArray as $transaction) { $obj['transaction_number']++; if ($transaction['status'] == Oara_Utilities::STATUS_CONFIRMED) { $obj['transaction_confirmed_commission'] += (double) $transaction['commission']; $obj['transaction_confirmed_value'] += (double) $transaction['amount']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_PENDING) { $obj['transaction_pending_commission'] += (double) $transaction['commission']; $obj['transaction_pending_value'] += (double) $transaction['amount']; } else { if ($transaction['status'] == Oara_Utilities::STATUS_DECLINED) { $obj['transaction_declined_commission'] += (double) $transaction['commission']; $obj['transaction_declined_value'] += (double) $transaction['amount']; } } } } if (Oara_Utilities::checkRegister($obj)) { $overviewArray[] = $obj; } } } } } } } return $overviewArray; }
/** * (non-PHPdoc) * @see library/Oara/Network/Oara_Network_Base#getOverviewList($merchantId, $dStartDate, $dEndDate) */ public function getOverviewList($transactionList = null, $merchantList = null, Zend_Date $dStartDate = null, Zend_Date $dEndDate = null) { $totalOverview = array(); $mothOverviewUrls = array(); $valuesFormExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); $valuesFormExport[] = new Oara_Curl_Parameter('fromDate', $dStartDate->toString("M/d/yyyy")); $valuesFormExport[] = new Oara_Curl_Parameter('toDate', $dEndDate->toString("M/d/yyyy")); $mothOverviewUrls[] = new Oara_Curl_Request('https://cli.linksynergy.com/cli/publisher/reports/advancedReports.php', $valuesFormExport); $exportMothReport = $this->_client->post($mothOverviewUrls); $exportReportNumber = count($exportMothReport); for ($i = 0; $i < $exportReportNumber; $i++) { $doc = new DOMDocument(); libxml_use_internal_errors(true); $doc->validateOnParse = true; $doc->loadHTML($exportMothReport[$i]); $frame = $doc->getElementById('frame'); if ($frame !== null) { $frameUrl = null; foreach ($frame->attributes as $attrName => $attrNode) { if ($attrName == 'src') { $frameUrl = $attrNode->nodeValue; } } $urls = array(); $urls[] = new Oara_Curl_Request($frameUrl, array()); $exportReport = $this->_client->get($urls); if (preg_match("/result=\"searching\"/", $exportReport[0]) || preg_match("/Logging in/", $exportReport[0])) { $urls = array(); $urls[] = new Oara_Curl_Request($frameUrl, array()); $exportReport = $this->_client->get($urls); } if (!preg_match("/<a class=\"NQWMenuItem\" name=\"SectionElements\" href=\"javascript:void\\(null\\);\" onclick=\"NQWClearActiveMenu\\(\\);Download\\('([^<]*)'\\); return false\">Download Data<\\/a>/", $exportReport[0], $matches)) { if (preg_match("/No Results/", $exportReport[0])) { return $totalOverview; } } } } $transactionArray = Oara_Utilities::transactionMapPerDay($transactionList); $mothOverviewUrls = array(); $dateArray = Oara_Utilities::daysOfDifference($dStartDate, $dEndDate); $dateArraySize = sizeof($dateArray); for ($i = 0; $i < $dateArraySize; $i++) { $valuesFormExport = Oara_Utilities::cloneArray($this->_exportOverviewParameters); $valuesFormExport[] = new Oara_Curl_Parameter('fromDate', $dateArray[$i]->toString("M/d/yyyy")); $valuesFormExport[] = new Oara_Curl_Parameter('toDate', $dateArray[$i]->toString("M/d/yyyy")); $mothOverviewUrls[] = new Oara_Curl_Request('https://cli.linksynergy.com/cli/publisher/reports/advancedReports.php', $valuesFormExport); } $exportMothReport = $this->_client->post($mothOverviewUrls); $exportReportNumber = count($exportMothReport); for ($i = 0; $i < $exportReportNumber; $i++) { $doc = new DOMDocument(); libxml_use_internal_errors(true); $doc->validateOnParse = true; $doc->loadHTML($exportMothReport[$i]); $frame = $doc->getElementById('frame'); $frameUrl = null; if ($frame !== null) { foreach ($frame->attributes as $attrName => $attrNode) { if ($attrName == 'src') { $frameUrl = $attrNode->nodeValue; } } $urls = array(); $urls[] = new Oara_Curl_Request($frameUrl, array()); $exportReport = $this->_client->get($urls); while (!preg_match("/No Results/", $exportReport[0], $matches)) { if (preg_match("/<a class=\"NQWMenuItem\" name=\"SectionElements\" href=\"javascript:void\\(null\\);\" onclick=\"NQWClearActiveMenu\\(\\);Download\\('([^<]*)'\\); return false\">Download Data<\\/a>/", $exportReport[0], $matches)) { $totalOverview = self::getOverview($matches, $totalOverview, $merchantList, $mothOverviewUrls[$i]->getParameter(9), $transactionArray); break; } else { if (preg_match("/result=\"searching\"/", $exportReport[0]) || preg_match("/Logging in/", $exportReport[0])) { $urls = array(); $urls[] = new Oara_Curl_Request($frameUrl, array()); $exportReport = $this->_client->get($urls); } else { //echo $exportReport[0]; throw new Exception("Error getting transactions"); } } } } } return $totalOverview; }