0byt3m1n1
Path:
/
home1
/
aserty
/
www
/
bymal.com
/
campperf
/
[
Home
]
File: downloadmultidailydata.php
<?php ########################################################################## ## TWW's ePN Campaign Performance Report v1 ## ## Released November 11, 2009 ## ## ---------------------- ## ## By Sonja Ray Tropical Web Works ## ## (http://www.tropicalwebworks.com) ## ## Script may be downloaded from: ## ## http://www.isoldwhat.com ## ## ## ## You may use this script for your own use without charge. ## ## You may NOT sell or redistribute this script without permission ## ## You may NOT remove visible active links to ## ## TropicalWebWorks.com or ISoldWhat.com ## ## ## ## Copyright (c) 2009 TropicalWebWorks.com - All Rights Reserved ## ## This script is made available "as is" and ## ## no warrantees are express or implied ## ########################################################################## $i = 1; include 'conn.php'; ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ePN Campaign Performance Report Multi-Day Data Download</title> <meta name="description" content="Easily compare performance of your ePN campaigns -- more data than ePN gives you"> <meta name="robots" content="NOINDEX"> <meta name="copyright" content="This page design and its contents are copyright 2009 I Sold What - A Division of Tropical Web Works. All Rights Reserved."> <meta name="MSSmartTagsPreventParsing" content="TRUE"> <meta http-equiv="imagetoolbar" content="no"> <meta http-equiv="pragma" content="no-cache"> <meta name="author" content="Tropical Web Works, tropicalwebworks.com, web site design, database development, search engine optimization, hosting"> <link href="styles.css" rel="stylesheet" type="text/css"> <script language="Javascript" src="jscripts/calendar/calendar.js"></script> </head> <body> <?php include 'header.php'; ?> <h2>Download and import daily campaign performance reports in bulk from eBay</h2> <?php if( !mysql_num_rows( mysql_query("SHOW TABLES LIKE '$tablename'" ))) { echo '<ul> <li>You must <a href="install.php">run the installation file</a> before proceeding.</li> </ul>'; include 'footer.php'; exit; } ?> <p> Below are a set of clickable links that you can use to retrieve and import past reports. You can simply click each month in turn to retrieve and import that month's data from ePN. Or you can enter specific start dates and end dates using the form — but <strong>do not retrieve more than a month's data at a time, or data from more than one month at a time</strong>. This script will fail in unexpected ways if you attempt to retrieve more than 1 month at time. You've been warned. </p> <p> Also, be patient while the data is retrieved. Each day's report must be collected individually and imported into the database. </p> <p> This is a one-time operation. If you <a href="cron.php" target="_blank">set up a cron job</a> to retrieve the data automatically every day, then you never need to do this part again. </p> <p> ePN's earliest start date is <strong>2008-04-01</strong> (April 1, 2008), the date that the ePN program moved in-house from CJ. If you joined ePN after that, the earliest start date you should enter is the date of your first ePN report. </p> <p> ePN began reporting <strong>GMB</strong> on <strong>2009-05-01</strong> (May 1, 2009) — so if you download and import data prior to that date, any reports you generate that include dates prior to that date will not reflect GMB or GMB-calculated data correctly. You can still view reports to see Impressions, Clicks, Bids, Winning Bids, etc. — it's only the GMB-related data that will be incomplete. </p> <br> <?php if ( isset($_REQUEST['poststartdate']) && isset($_REQUEST['postenddate']) ) { // need to convert 2009-04-01 and 2009-04-30 to 04/01/2009 and 04/30/2009 $poststartdate = escape_data($_REQUEST['poststartdate']); $postenddate = escape_data($_REQUEST['postenddate']); $goodtogo = 'no'; $startdatemt = strtotime($poststartdate); $enddatemt = strtotime($postenddate); // check for less than 3 days $twodaysmt = mktime(0, 0, 0, date("m"), date("d")-3, date("Y")); $interval = strtotime("-3 day"); if ( ($startdatemt - $interval) > 3 ) { $startdatemt = $interval; $poststartdate = strftime('%Y-%m-%d', $startdatemt); } if ( ($enddatemt - $interval) > 3 ) { $enddatemt = $interval; $postenddate = strftime('%Y-%m-%d', $enddatemt); } // echo 'poststartdate: '.$poststartdate.'<br>'; // echo 'postenddate: '.$postenddate.'<br>'; // exit; $thedays = array(); if ( $poststartdate == $postenddate ) { // echo 'we only need to get one report<br>'; $startdate = strftime('%m/%d/%Y', $startdatemt); $enddate = strftime('%m/%d/%Y', $startdatemt); // echo 'startdate: '.$startdate.'<br>'; // echo 'enddate: '.$enddate.'<br>'; $month = strftime('%m', $startdatemt); $year = strftime('%Y', $startdatemt); // echo 'month: '.$month.'<br>'; // echo 'year: '.$year.'<br>'; $datefordb = $poststartdate; // echo 'datefordb: '.$datefordb.'<br>'; $thedays = array(strftime('%d', $startdatemt)); $goodtogo = 'yes'; } else { // echo 'we need to get multiple reports<br>'; // first check to see if it's the same month $startmonth = strftime('%m', $startdatemt); $endmonth = strftime('%m', $enddatemt); // echo 'startmonth: '.$startmonth.'<br>'; // echo 'endmonth: '.$endmonth.'<br>'; if ( $startmonth != $endmonth ) { echo '<h4 style="color:red;">Do not attempt to retrieve more than one month at a time!!!!!!!</h4>'; echo '<p style="color: red;">Start month and end month <b>must</b> be the same.</p>'; $goodtogo = 'no'; } else { // if same month, we continue $year = strftime('%Y', $startdatemt); $month = $startmonth; // echo 'month: '.$month.'<br>'; // echo 'year: '.$year.'<br>'; // now create our array of days // first make sure start date is earlier than end date - if not, switch 'em if ( $startdatemt > $enddatemt ) { $temp = $startdatemt; $startdatemt = $enddatemt; $enddatemt = $temp; } $startday = strftime('%d', $startdatemt); $endday = strftime('%d', $enddatemt); $thedays = range($startday,$endday); } // echo '<pre>THE DAYS:<br>'; // print_r($thedays); // echo '</pre>'; // foreach( $thedays as $key => $val ) { // $val &= str_pad($val,2,0,STR_PAD_LEFT); // } // echo '<pre>'; // print_r($thedays); // echo '</pre>'; $goodtogo = 'yes'; } // exit; $query = " INSERT INTO $tablename ( "; $query = ""; if ( $goodtogo == 'yes' ) { $goodtogo2 = 'yes'; foreach( $thedays as $key => $dayofmonth ) { // foreach is one report for each day we're retrieving // echo 'dayofmonth: '.$dayofmonth.'<br>'; $dayofmonth = str_pad($dayofmonth,2,0,STR_PAD_LEFT); $date = "$month/$dayofmonth/$year"; $date = "$month/$dayofmonth/$year"; $datefordb = "$year-$month-$dayofmonth"; // echo 'datefordb2: '.$datefordb.'<br>'; $checkiftherequery = " SELECT count(ReportDate) as isitthere FROM $tablename WHERE ReportDate >= '$datefordb' AND ReportDate <= '$datefordb' "; // echo '<br>checkiftherequery: '.$checkiftherequery.'<br>'; $checkifthere = mysql_query($checkiftherequery) or die('Bad myquery: '.mysql_error()); if ( $checkifthere ) { $row = mysql_fetch_array($checkifthere); // echo $row['isitthere']; if ( $row['isitthere'] > 0 ) { // echo '<br>We already have those dates.<br>'; // exit; $goodtogo2 = 'no'; } else { $goodtogo2 = 'yes'; } } if ( $goodtogo2 == 'yes' ) { $url = 'https://www.ebaypartnernetwork.com/PublisherReportCampaign?user_name='.$username.'&user_password='.$password .'&toolCategIdToolIdCombo=UNKNOWN' .'&report_category_start_date='.$date .'&reportChartType=3' .'&action_id=6' .'&predefinedDateRange=Custom' .'&campaign_id=' .'&program_id_cpa=6' .'&start_date='.$date .'&advIdProgIdCombo=1%7C1' .'&program_id_ebay_only=1' .'&reportType=2' .'&advertiser_id=1' .'&end_date='.$date .'&tool_combo_id=' .'&program_id=1' .'&export_text=Export+to+Text' .'&period_id=1' .'&campaign_combo_id=' ; // echo '<br>URL: '.$url.'<br>'; // $reportdata = file_get_contents($url); $reportdata = file($url); // echo '<pre>'; // print_r($reportdata); // echo '</pre>'; $goodtogo3 = 'no'; if ( substr($reportdata[0],0,8) == 'Campaign' ) { $goodtogo3 = 'yes'; // echo '==YES=='; } else { $goodtogo3 = 'no'; // echo '==NO=='; } if ( $goodtogo3 == 'yes' ) { $query = ''; foreach( $reportdata as $keyfile => $valfile ) { // echo '<br>'.$valfile.'<br>'; $fieldnames = array(); $insertvalues = array(); $inserts = ''; $linearray = explode("\t",$valfile); // creates an array of entries for each tabbed item in the file foreach( $linearray as $key => $val ) { $val = str_replace(',','',$val); $val = escape_data(str_replace('/','',$val)); // echo '<br>linearray: '.$keyfile.' key: '.$key.' - '. ' val: '.$val.'<br>'; if ( $keyfile == 0 ) { // generate the field names // echo '<br>theval: '.$val.'<br>'; $val = '`'.$val.'`'; $fieldnames[] = str_replace(' ','',$val); // print_r($fieldnames); $fields = implode(', ',$fieldnames); // echo '<br>fields: '.$fields.'<br>'; // $query .= $fields; } else { // generate the field values $val = "'".$val."'"; $insertvalues[] = $val; } } if ( $keyfile != 0 ) { $query .= " INSERT INTO $tablename ( `ReportDate`, " ; $query .= $fields; $query .= " ) VALUES "; $inserts .= " ( "; $inserts .= "'".$datefordb."', "; $inserts .= implode(', ',$insertvalues); $inserts .= " ) ;"; $query .= $inserts; // echo '<br>QUERY: '.$query.'<br>'; $insert = mysql_query($query) or die('Bad insert query: ' . mysql_error().$query); } // $query .= " ; "; $query = ''; } // END foreach filearray } // END if goodtogo3 } } } } ?> <?php echo '<table><tr><td style="width:45%;">'; $yearstonow = range('2008',date('Y')); // $yearstonow = range(2008,2011); foreach( $yearstonow as $key => $val ) { $years[$val] = $val; } // echo '<pre>'; // print_r($years); // echo '</pre>'; $themonths = range(1,12); foreach( $themonths as $key => $val ) { $val = str_pad($val,2,'0',STR_PAD_LEFT); $months[$val] = $val; } // echo '<pre>'; // print_r($months); // echo '</pre>'; foreach( $years as $year ) { echo '<h4><strong>Year: '.$year.'</strong></h4>'; echo '<ul>'; foreach( $months as $month ) { if ( $year == 2008 ) { $nomonths = array('01','02','03'); if ( !in_array($month, $nomonths) ) { $month = str_pad($month,2,'0',STR_PAD_LEFT); $days = daysInMonth($month, 2009); $thedate = strtotime("$year-$month-01"); $friendlydate = date('M Y',$thedate); $startdate = $year.'-'.$month.'-01'; $enddate = $year.'-'.$month.'-'.$days; echo '<li><a href="'.$_SERVER['PHP_SELF'].'?poststartdate='.$startdate.'&postenddate='.$enddate.'">'.$friendlydate.'</a>'; $myquery = " SELECT DISTINCT ReportDate FROM $tablename WHERE ReportDate >= '$startdate' AND ReportDate <= '$enddate' ORDER BY ReportDate "; $query = mysql_query($myquery) or die('Bad myquery: '.mysql_error()); $dateswehave = array(); if ( $query && mysql_num_rows($query) > 0 ) { echo '<br>We have data in the database for this month:<br>'; while ($row = mysql_fetch_array($query)) { $dateswehave[] = $row['ReportDate']; } echo implode(', ', $dateswehave); } else { echo '<br>No data for this month'; } echo '</li>'; } } else { if ( $year < date('Y') ) { $month = str_pad($month,2,'0',STR_PAD_LEFT); $days = daysInMonth($month, 2009); $thedate = strtotime("$year-$month-01"); $friendlydate = date('M Y',$thedate); $startdate = $year.'-'.$month.'-01'; $enddate = $year.'-'.$month.'-'.$days; echo '<li><a href="'.$_SERVER['PHP_SELF'].'?poststartdate='.$startdate.'&postenddate='.$enddate.'">'.$friendlydate.'</a>'; $myquery = " SELECT DISTINCT ReportDate FROM $tablename WHERE ReportDate >= '$startdate' AND ReportDate <= '$enddate' ORDER BY ReportDate "; $query = mysql_query($myquery) or die('Bad myquery: '.mysql_error()); $dateswehave = array(); if ( $query && mysql_num_rows($query) > 0 ) { echo '<br>We have data in the database for this month:<br>'; while ($row = mysql_fetch_array($query)) { $dateswehave[] = $row['ReportDate']; } echo implode(', ', $dateswehave); } else { echo '<br>No data for this month'; } echo '</li>'; } elseif ( $year == date('Y') ) { if ( $month <= date('m') ) { $month = str_pad($month,2,'0',STR_PAD_LEFT); $days = daysInMonth($month, 2009); $thedate = strtotime("$year-$month-01"); $friendlydate = date('M Y',$thedate); $startdate = $year.'-'.$month.'-01'; $enddate = $year.'-'.$month.'-'.$days; echo '<li><a href="'.$_SERVER['PHP_SELF'].'?poststartdate='.$startdate.'&postenddate='.$enddate.'">'.$friendlydate.'</a>'; $myquery = " SELECT DISTINCT ReportDate FROM $tablename WHERE ReportDate >= '$startdate' AND ReportDate <= '$enddate' ORDER BY ReportDate "; $query = mysql_query($myquery) or die('Bad myquery: '.mysql_error()); $dateswehave = array(); if ( $query && mysql_num_rows($query) > 0 ) { echo '<br>We have data in the database for this month:<br>'; while ($row = mysql_fetch_array($query)) { $dateswehave[] = $row['ReportDate']; } echo implode(', ', $dateswehave); } else { echo '<br>No data for this month'; } echo '</li>'; } } } } echo '</ul>'; // echo '<br>key: '.$key; // echo '<br>val: '.$val; } echo '</td><td style="width:55%; padding-left:18px;">'; $getdatesquery = " SELECT MIN(ReportDate) as startdatedb, MAX(ReportDate) as enddatedb FROM $tablename "; // echo $getdatesquery; $getdates = mysql_query($getdatesquery) or die($err.'Bad MySQL query: <br>'.mysql_error().'<br>'.file_get_contents('footer.php')); // echo '<br>Numrows: '.mysql_num_rows($getdates); if ( $getdates && mysql_num_rows($getdates) > 0 ) { $dates = mysql_fetch_array($getdates); if ( $dates['startdatedb'] != null && $dates['enddatedb'] != null ) { $startdatedb = $dates['startdatedb']; $enddatedb = $dates['enddatedb']; $nodata = 'havedata'; } else { $startdatedb = ''; $enddatedb = ''; $nodata = 'nodata'; } } elseif( !$getdates) { echo '<p>There was an error.</p>'; include 'footer.php'; exit; } elseif (mysql_num_rows($getdates) < 1) { $startdatedb = ''; $enddatedb = ''; $nodata = 'nodata'; } if ( isset($nodata) && $nodata == 'nodata' ) { echo '<p>Your database contains no data yet.</p>'; // include 'footer.php'; // exit; } if ( isset($_REQUEST['poststartdate']) && trim($_REQUEST['poststartdate']) != '' ) { $startdate = escape_data($_REQUEST['poststartdate']); } elseif ( isset($startdatedb) && $startdatedb != '' && $startdatedb > '2009-04-01' ) { $startdate = $startdatedb; } else { $startdate = '2008-04-01'; } if ( isset($_REQUEST['postenddate']) && trim($_REQUEST['postenddate']) != '' ) { $enddate = escape_data($_REQUEST['postenddate']); } elseif ( isset($enddatedb) && $enddatedb != '' ) { $enddate = $enddatedb; } else { $enddate = date('2008-04-30'); } ?> <form name="searchdataform" class="searchdataform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table class="searchtable nobdr" style="width:auto;"> <tr> <td> <strong>Select Date Range:</strong><br>YYYY-MM-DD<br>e.g. 2009-10-22</td> <td class="fromto"> <table><tr><td> From:</td><td><input type="text" name="poststartdate" value="<?php echo isset($_REQUEST['poststartdate']) && $_REQUEST['poststartdate'] != '' ? htmlentities($_REQUEST['poststartdate']) : $startdate ;?>"> <a href="#" onclick="return getCalendar(document.searchdataform.poststartdate);"><img src="jscripts/calendar/calendar.png"></a><br clear="both"> </td></tr><tr><td> To:</td><td><input type="text" name="postenddate" value="<?php echo isset($_REQUEST['postenddate']) && $_REQUEST['postenddate'] != '' ? htmlentities($_REQUEST['postenddate']) : $enddate; ?>"> <a href="#" onclick="return getCalendar(document.searchdataform.postenddate);"><img src="jscripts/calendar/calendar.png"></a> </td></tr></table> </td> <?php if ( isset($startdatedb) && $startdatedb != null && isset($enddatedb) && $enddatedb != null ) { echo '<td rowspan="2">Database contains reports from<br>'.$startdatedb.' to '.$enddatedb; echo '<br><ul><li><a href="index.php">Proceed to reports</a></li></ul>'; echo '</td>'; } ?> </tr> <tr> <td colspan="2"> <input type="hidden" name="proceed" value="proceed"> <input type="submit" value="Go" style="display:block; margin:2px auto;"> </td> </tr> </table> <p>If you started with ePN on May 20, 2009, you might want enter 2009-05-20 as the "From" date, and 2009-05-31 as the "To" date in the form above, and then use the links at left to retrieve June, July, August, etc. </form> </td></tr></table> <?php function leapYear($year){ if ($year % 400 == 0 || ($year % 4 == 0 && $year % 100 != 0) ) { return TRUE; } return FALSE; } function daysInMonth($month = 0, $year = ''){ $days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); $d = array( "Jan" => 31, "Feb" => 28, "Mar" => 31, "Apr" => 30, "May" => 31, "Jun" => 30, "Jul" => 31, "Aug" => 31, "Sept" => 30, "Oct" => 31, "Nov" => 30, "Dec" => 31 ); if (!is_numeric($year) || strlen($year) != 4) { $year = date('Y'); } if ($month == 2 || $month == 'Feb') { if (leapYear($year)) { return 29; } } if(is_numeric($month)) { if($month < 1 || $month > 12) { return 0; } else { return $days_in_month[$month - 1]; } } else { if (in_array($month, array_keys($d))) { return $d[$month]; } else { return 0; } } } include 'footer.php'; exit; ?>