#!/usr/bin/php
Escape character conversion ****
// If you have extensive html in your descriptions and it's getting mangled on upload, turn this off
// set to true = replace quotes with escape characters
// set to false = no quote replacement
define ('EP_REPLACE_QUOTES', false); // default is false
// **** Field Separator ****
// change this if you can't use the default of tabs
// Tab is the default, comma and semicolon are commonly supported by various progs
// Remember, if your descriptions contain this character, you will confuse EP!
// if EP_EXCEL_SAFE_OUTPUT if false (below) you must make EP_PRESERVE_TABS_CR_LF false also.
$ep_separator = "\t"; // tab is default
//$ep_separator = ','; // comma
//$ep_separator = ';'; // semi-colon
//$ep_separator = '~'; // tilde
//$ep_separator = '*'; // splat
// define ('EP_SEPARATOR', );
// *** Excel safe output ***
// this setting will supersede the previous $ep_separator setting and create a file
// that excel will import without spanning cells from embedded commas or tabs in your products.
// if EP_EXCEL_SAFE_OUTPUT if false (below) you must make EP_PRESERVE_TABS_CR_LF false also.
define ('EP_EXCEL_SAFE_OUTPUT', true); // default is: true
if (EP_EXCEL_SAFE_OUTPUT == true) {
if ($language == 'english') {
$ep_separator = ','; // comma
} elseif ($language == 'german') {
$ep_separator = ';'; // semi-colon
} else {
$ep_separator = ','; // comma // default for all others.
}
}
// *** Preserve Tabs, Carriage returns and Line feeds ***
// this setting will preserve the special chars that can cause problems in
// a text based output. When used with EP_EXCEL_SAFE_OUTPUT, it will safely
// preserve these elements in the export and import.
define ('EP_PRESERVE_TABS_CR_LF', false); // default is: false
// **** Max Category Levels ****
// change this if you need more or fewer categories.
// set this to the maximum depth of your categories.
define ('EP_MAX_CATEGORIES', 7); // default is 7
// VJ product attributes begin
// **** Product Attributes ****
// change this to false, if do not want to download product attributes
define ('EP_PRODUCTS_WITH_ATTRIBUTES', true); // default is true
// change this to true, if you use QTYpro and want to set attributes stock with EP.
define ('EP_PRODUCTS_ATTRIBUTES_STOCK', false); // default is false
// change this if you want to download only selected product options (attributes).
// If you have a lot of product options, and your output file exceeds 256 columns,
// which is the max. limit MS Excel is able to handle, then load-up this array with
// attributes to skip when generating the export.
$attribute_options_select = '';
// $attribute_options_select = array('Size', 'Model'); // uncomment and fill with product options name you wish to download // comment this line, if you wish to download all product options
// VJ product attributes end
// ****************************************
// Froogle configuration variables
// Here are some links regarding Bulk uploads
// http://www.google.com/base/attributes.html
// http://www.google.com/base/help/custom-attributes.html
// ****************************************
// **** Froogle product info page path ****
// We can't use the tep functions to create the link, because the links will point to the
// admin, since that's where we're at. So put the entire path to your product_info.php page here
define ('EP_FROOGLE_PRODUCT_INFO_PATH', HTTP_CATALOG_SERVER . DIR_WS_CATALOG . "product_info.php");
// **** Froogle product image path ****
// Set this to the path to your images directory
define ('EP_FROOGLE_IMAGE_PATH', HTTP_CATALOG_SERVER . DIR_WS_CATALOG_IMAGES);
// **** Froogle - search engine friendly setting
// if your store has SEARCH ENGINE FRIENDLY URLS set, then turn this to true
// I did it this way because I'm having trouble with the code seeing the constants
// that are defined in other places.
define ('EP_FROOGLE_SEF_URLS', false); // default is false
// **** Froogle Currency Setting
define ('EP_FROOGLE_CURRENCY', 'USD'); // default is 'USD'
// ****************************************
// End: Froogle configuration variables
//
// ***********************************
// *** Other Contributions Support ***
// ***********************************
// More Pics 6 v1.3
define ('EP_MORE_PICS_6_SUPPORT', false); // default is false
//
// Header Tags Controller Support v2.0
define ('EP_HTC_SUPPORT', false); // default is false
//
// Separate Pricing Per Customer (SPPC)
define ('EP_SPPC_SUPPORT', false); // default is false
// ///////////////////////////////////////////////////////////////////////////////
// The following items are not complete and untested. Experiment at your own risk.
// ///////////////////////////////////////////////////////////////////////////////
//
// Extra Fields Contribution (***UNTESTED AND MAY NOT BE FUNCTIONAL***)
define ('EP_EXTRA_FIELDS_SUPPORT', false); // default is false
//
// Unknown Image Contrib (***UNTESTED AND MAY NOT BE FUNCTIONAL***)
define ('EP_UNKNOWN_ADD_IMAGES_SUPPORT', false); // default is false
//*******************************
//*******************************
// E N D
// C O N F I G U R A T I O N
// V A R I A B L E S
//*******************************
//*******************************
//*******************************
//*******************************
// S T A R T
// INITIALIZATION
//*******************************
//*******************************
// modify tableBlock for use here.
class epbox extends tableBlock {
// constructor
function epbox($contents, $direct_ouput = true) {
$this->table_width = '';
if (!empty($contents) && $direct_ouput == true) {
echo $this->tableBlock($contents);
}
}
// only member function
function output($contents) {
return $this->tableBlock($contents);
}
}
if (!empty($languages_id) && !empty($language)) {
define ('EP_DEFAULT_LANGUAGE_ID', $languages_id);
define ('EP_DEFAULT_LANGUAGE_NAME', $language);
} else {
//elari check default language_id from configuration table DEFAULT_LANGUAGE
$epdlanguage_query = tep_db_query("select languages_id, name from " . TABLE_LANGUAGES . " where code = '" . DEFAULT_LANGUAGE . "'");
if (tep_db_num_rows($epdlanguage_query) > 0) {
$epdlanguage = tep_db_fetch_array($epdlanguage_query);
define ('EP_DEFAULT_LANGUAGE_ID', $epdlanguage['languages_id']);
define ('EP_DEFAULT_LANGUAGE_NAME', $epdlanguage['name']);
} else {
echo 'Strange but there is no default language to work... That may not happen, just in case... ';
}
}
$languages = tep_get_languages();
// VJ product attributes begin
$attribute_options_array = array();
if (EP_PRODUCTS_WITH_ATTRIBUTES == true) {
if (is_array($attribute_options_select) && (count($attribute_options_select) > 0)) {
foreach ($attribute_options_select as $value) {
$attribute_options_query = "select distinct products_options_id from " . TABLE_PRODUCTS_OPTIONS . " where products_options_name = '" . $value . "'";
$attribute_options_values = tep_db_query($attribute_options_query);
if ($attribute_options = tep_db_fetch_array($attribute_options_values)){
$attribute_options_array[] = array('products_options_id' => $attribute_options['products_options_id']);
}
}
} else {
$attribute_options_query = "select distinct products_options_id from " . TABLE_PRODUCTS_OPTIONS . " order by products_options_id";
$attribute_options_values = tep_db_query($attribute_options_query);
while ($attribute_options = tep_db_fetch_array($attribute_options_values)){
$attribute_options_array[] = array('products_options_id' => $attribute_options['products_options_id']);
}
}
}
// VJ product attributes end
// these are the fields that will be defaulted to the current values in
// the database if they are not found in the incoming file
$default_these = array();
foreach ($languages as $key => $lang){
$default_these[] = 'v_products_name_' . $lang['id'];
$default_these[] = 'v_products_description_' . $lang['id'];
$default_these[] = 'v_products_url_' . $lang['id'];
if (EP_HTC_SUPPORT == true) {
$default_these[] = 'v_products_head_title_tag_' . $lang['id'];
$default_these[] = 'v_products_head_desc_tag_' . $lang['id'];
$default_these[] = 'v_products_head_keywords_tag_' . $lang['id'];
}
}
$default_these[] = 'v_products_image';
if (EP_MORE_PICS_6_SUPPORT == true) {
$default_these[] = 'v_products_subimage1';
$default_these[] = 'v_products_subimage2';
$default_these[] = 'v_products_subimage3';
$default_these[] = 'v_products_subimage4';
$default_these[] = 'v_products_subimage5';
$default_these[] = 'v_products_subimage6';
}
if (EP_UNKNOWN_ADD_IMAGES_SUPPORT == true) {
$default_these[] = 'v_products_mimage';
$default_these[] = 'v_products_bimage';
$default_these[] = 'v_products_subimage1';
$default_these[] = 'v_products_bsubimage1';
$default_these[] = 'v_products_subimage2';
$default_these[] = 'v_products_bsubimage2';
$default_these[] = 'v_products_subimage3';
$default_these[] = 'v_products_bsubimage3';
}
$default_these[] = 'v_categories_id';
$default_these[] = 'v_products_price';
$default_these[] = 'v_products_map';
$default_these[] = 'v_products_quantity';
$default_these[] = 'v_products_weight';
$default_these[] = 'v_status_current';
$default_these[] = 'v_date_avail';
$default_these[] = 'v_date_added';
$default_these[] = 'v_tax_class_title';
$default_these[] = 'v_manufacturers_name';
$default_these[] = 'v_manufacturers_id';
$filelayout = '';
$filelayout_count = '';
$filelayout_sql = '';
$fileheaders = '';
if ( !empty($_GET['dltype']) ) {
// if dltype is set, then create the filelayout. Otherwise it gets read from the uploaded file
list($filelayout, $filelayout_count, $filelayout_sql, $fileheaders) = ep_create_filelayout($_GET['dltype'], $attribute_options_array, $languages); // get the right filelayout for this download
}
//*******************************
//*******************************
// E N D
// INITIALIZATION
//*******************************
//*******************************
//*******************************
//*******************************
// DOWNLOAD FILE (EXPORT)
//*******************************
//*******************************
if ( !empty($_GET['download']) && ($_GET['download'] == 'stream' or $_GET['download'] == 'activestream' or $_GET['download'] == 'tempfile') ){
$filestring = ""; // this holds the csv file we want to download
$result = tep_db_query($filelayout_sql);
$row = tep_db_fetch_array($result);
// $EXPORT_TIME=time(); // start export time when export is started.
$EXPORT_TIME = strftime('%Y%b%d-%H%I');
if ($dltype=="froogle"){
$EXPORT_TIME = "FroogleEP" . $EXPORT_TIME;
} else {
$EXPORT_TIME = "EP" . $EXPORT_TIME;
}
// Here we need to allow for the mapping of internal field names to external field names
// default to all headers named like the internal ones
// the field mapping array only needs to cover those fields that need to have their name changed
if ( count($fileheaders) != 0 ){
$filelayout_header = $fileheaders; // if they gave us fileheaders for the dl, then use them
} else {
$filelayout_header = $filelayout; // if no mapping was spec'd use the internal field names for header names
}
//We prepare the table heading with layout values
foreach( $filelayout_header as $key => $value ){
$filestring .= $key . $ep_separator;
}
// now lop off the trailing tab
$filestring = substr($filestring, 0, strlen($filestring)-1);
// set the type
if ( $dltype == 'froogle' ){
$endofrow = "\n";
} else {
// default to normal end of row
$endofrow = $ep_separator . 'EOREOR' . "\n";
}
$filestring .= $endofrow;
if ($_GET['download'] == 'activestream'){
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=$EXPORT_TIME" . ((EP_EXCEL_SAFE_OUTPUT == true)?".csv":".txt"));
// Changed if using SSL, helps prevent program delay/timeout (add to backup.php also)
// header("Pragma: no-cache");
if ($request_type== 'NONSSL'){
header("Pragma: no-cache");
} else {
header("Pragma: ");
}
header("Expires: 0");
echo $filestring;
}
$num_of_langs = count($languages);
while ($row){
// if the filelayout says we need a products_name, get it
// build the long full froogle image path
$row['v_products_fullpath_image'] = EP_FROOGLE_IMAGE_PATH . $row['v_products_image'];
// Other froogle defaults go here for now
$row['v_froogle_quantitylevel'] = $row['v_products_quantity'];
$row['v_froogle_manufacturer_id'] = '';
$row['v_froogle_exp_date'] = date('Y-m-d', strtotime('+30 days'));
$row['v_froogle_product_type'] = $row['v_categories_id'];
$row['v_froogle_product_id'] = $row['v_products_model'];
$row['v_froogle_currency'] = EP_FROOGLE_CURRENCY;
// names and descriptions require that we loop thru all languages that are turned on in the store
foreach ($languages as $key => $lang){
$lid = $lang['id'];
// for each language, get the description and set the vals
$sql2 = "SELECT *
FROM ".TABLE_PRODUCTS_DESCRIPTION."
WHERE
products_id = " . $row['v_products_id'] . " AND
language_id = '" . $lid . "'
";
$result2 = tep_db_query($sql2);
$row2 = tep_db_fetch_array($result2);
// I'm only doing this for the first language, since right now froogle is US only.. Fix later!
// adding url for froogle, but it should be available no matter what
if (EP_FROOGLE_SEF_URLS == true){
// if only one language
if ($num_of_langs == 1){
$row['v_froogle_products_url_' . $lid] = EP_FROOGLE_PRODUCT_INFO_PATH . '/products_id/' . $row['v_products_id'];
} else {
$row['v_froogle_products_url_' . $lid] = EP_FROOGLE_PRODUCT_INFO_PATH . '/products_id/' . $row['v_products_id'] . '/language/' . $lid;
}
} else {
if ($num_of_langs == 1){
$row['v_froogle_products_url_' . $lid] = EP_FROOGLE_PRODUCT_INFO_PATH . '?products_id=' . $row['v_products_id'];
} else {
$row['v_froogle_products_url_' . $lid] = EP_FROOGLE_PRODUCT_INFO_PATH . '?products_id=' . $row['v_products_id'] . '&language=' . $lid;
}
}
$row['v_products_name_' . $lid] = $row2['products_name'];
$row['v_products_description_' . $lid] = $row2['products_description'];
$row['v_products_url_' . $lid] = $row2['products_url'];
// froogle advanced format needs the quotes around the name and desc
$row['v_froogle_products_name_' . $lid] = '"' . strip_tags(str_replace('"','""',$row2['products_name'])) . '"';
$row['v_froogle_products_description_' . $lid] = '"' . strip_tags(str_replace('"','""',$row2['products_description'])) . '"';
// support for Linda's Header Controller 2.0 here
if(isset($filelayout['v_products_head_title_tag_' . $lid])){
$row['v_products_head_title_tag_' . $lid] = $row2['products_head_title_tag'];
$row['v_products_head_desc_tag_' . $lid] = $row2['products_head_desc_tag'];
$row['v_products_head_keywords_tag_' . $lid] = $row2['products_head_keywords_tag'];
}
// end support for Header Controller 2.0
}
// for the categories, we need to keep looping until we find the root category
// start with v_categories_id
// Get the category description
// set the appropriate variable name
// if parent_id is not null, then follow it up.
// we'll populate an aray first, then decide where it goes in the
$thecategory_id = $row['v_categories_id'];
$fullcategory = ''; // this will have the entire category stack for froogle
for( $categorylevel=1; $categorylevel<=EP_MAX_CATEGORIES; $categorylevel++){
if ($thecategory_id){
$sql2 = "SELECT categories_name
FROM ".TABLE_CATEGORIES_DESCRIPTION."
WHERE
categories_id = " . $thecategory_id . " AND
language_id = " . EP_DEFAULT_LANGUAGE_ID ;
$result2 = tep_db_query($sql2);
$row2 = tep_db_fetch_array($result2);
$sql2 = "SELECT categories_image
FROM ".TABLE_CATEGORIES."
WHERE
categories_id = " . $thecategory_id . '';
$result2 = tep_db_query($sql2);
$row2 = array_merge($row2, tep_db_fetch_array($result2));
// only set it if we found something
$temprow['v_categories_name_' . $categorylevel] = $row2['categories_name'];
$temprow['v_categories_image_' . $categorylevel] = $row2['categories_image'];
// now get the parent ID if there was one
$sql3 = "SELECT parent_id
FROM ".TABLE_CATEGORIES."
WHERE
categories_id = " . $thecategory_id;
$result3 = tep_db_query($sql3);
$row3 = tep_db_fetch_array($result3);
$theparent_id = $row3['parent_id'];
if ($theparent_id != ''){
// there was a parent ID, lets set thecategoryid to get the next level
$thecategory_id = $theparent_id;
} else {
// we have found the top level category for this item,
$thecategory_id = false;
}
//$fullcategory .= " > " . $row2['categories_name'];
$fullcategory = $row2['categories_name'] . " > " . $fullcategory;
} else {
$temprow['v_categories_name_' . $categorylevel] = '';
$temprow['v_categories_image_' . $categorylevel] = '';
}
}
// now trim off the last ">" from the category stack
$row['v_category_fullpath'] = substr($fullcategory,0,strlen($fullcategory)-3);
// temprow has the old style low to high level categories.
$newlevel = 1;
// let's turn them into high to low level categories
for( $categorylevel=EP_MAX_CATEGORIES; $categorylevel>0; $categorylevel--){
if ($temprow['v_categories_name_' . $categorylevel] != ''){
$row['v_categories_name_' . $newlevel] = $temprow['v_categories_name_' . $categorylevel];
$row['v_categories_image_' . $newlevel] = $temprow['v_categories_image_' . $categorylevel];
$newlevel++;
}
}
// if the filelayout says we need a manufacturers name, get it
if (isset($filelayout['v_manufacturers_name'])){
if ($row['v_manufacturers_id'] != ''){
$sql2 = "SELECT manufacturers_name
FROM ".TABLE_MANUFACTURERS."
WHERE
manufacturers_id = " . $row['v_manufacturers_id']
;
$result2 = tep_db_query($sql2);
$row2 = tep_db_fetch_array($result2);
$row['v_manufacturers_name'] = $row2['manufacturers_name'];
}
}
// If you have other modules that need to be available, put them here
// VJ product attribs begin
if (isset($filelayout['v_attribute_options_id_1'])){
$attribute_options_count = 1;
foreach ($attribute_options_array as $attribute_options) {
$row['v_attribute_options_id_' . $attribute_options_count] = $attribute_options['products_options_id'];
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
$lid = $languages[$i]['id'];
$attribute_options_languages_query = "select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$attribute_options['products_options_id'] . "' and language_id = '" . (int)$lid . "'";
$attribute_options_languages_values = tep_db_query($attribute_options_languages_query);
$attribute_options_languages = tep_db_fetch_array($attribute_options_languages_values);
$row['v_attribute_options_name_' . $attribute_options_count . '_' . $lid] = $attribute_options_languages['products_options_name'];
}
$attribute_values_query = "select products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$attribute_options['products_options_id'] . "' order by products_options_values_id";
$attribute_values_values = tep_db_query($attribute_values_query);
$attribute_values_count = 1;
while ($attribute_values = tep_db_fetch_array($attribute_values_values)) {
$row['v_attribute_values_id_' . $attribute_options_count . '_' . $attribute_values_count] = $attribute_values['products_options_values_id'];
$attribute_values_price_query = "select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$row['v_products_id'] . "' and options_id = '" . (int)$attribute_options['products_options_id'] . "' and options_values_id = '" . (int)$attribute_values['products_options_values_id'] . "'";
$attribute_values_price_values = tep_db_query($attribute_values_price_query);
$attribute_values_price = tep_db_fetch_array($attribute_values_price_values);
$row['v_attribute_values_price_' . $attribute_options_count . '_' . $attribute_values_count] = $attribute_values_price['price_prefix'] . $attribute_values_price['options_values_price'];
//// attributes stock add start
if ( EP_PRODUCTS_ATTRIBUTES_STOCK == true ) {
$stock_attributes = $attribute_options['products_options_id'].'-'.$attribute_values['products_options_values_id'];
$stock_quantity_query = tep_db_query("select products_stock_quantity from " . TABLE_PRODUCTS_STOCK . " where products_id = '" . (int)$row['v_products_id'] . "' and products_stock_attributes = '" . $stock_attributes . "'");
$stock_quantity = tep_db_fetch_array($stock_quantity_query);
$row['v_attribute_values_stock_' . $attribute_options_count . '_' . $attribute_values_count] = $stock_quantity['products_stock_quantity'];
}
//// attributes stock add end
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
$lid = $languages[$i]['id'];
$attribute_values_languages_query = "select products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$attribute_values['products_options_values_id'] . "' and language_id = '" . (int)$lid . "'";
$attribute_values_languages_values = tep_db_query($attribute_values_languages_query);
$attribute_values_languages = tep_db_fetch_array($attribute_values_languages_values);
$row['v_attribute_values_name_' . $attribute_options_count . '_' . $attribute_values_count . '_' . $lid] = $attribute_values_languages['products_options_values_name'];
}
$attribute_values_count++;
}
$attribute_options_count++;
}
}
// VJ product attribs end
// this is for the separate price per customer module
if (isset($filelayout['v_customer_price_1'])){
$sql2 = "SELECT
customers_group_price,
customers_group_id
FROM
".TABLE_PRODUCTS_GROUPS."
WHERE
products_id = " . $row['v_products_id'] . "
ORDER BY
customers_group_id"
;
$result2 = tep_db_query($sql2);
$ll = 1;
$row2 = tep_db_fetch_array($result2);
while( $row2 ){
$row['v_customer_group_id_' . $ll] = $row2['customers_group_id'];
$row['v_customer_price_' . $ll] = $row2['customers_group_price'];
$row2 = tep_db_fetch_array($result2);
$ll++;
}
}
if ($dltype == 'froogle'){
// For froogle, we check the specials prices for any applicable specials, and use that price
// by grabbing the specials id descending, we always get the most recently added special price
// I'm checking status because I think you can turn off specials
$sql2 = "SELECT
specials_new_products_price
FROM
".TABLE_SPECIALS."
WHERE
products_id = " . $row['v_products_id'] . " and
status = 1 and
expires_date < CURRENT_TIMESTAMP
ORDER BY
specials_id DESC"
;
$result2 = tep_db_query($sql2);
$ll = 1;
$row2 = tep_db_fetch_array($result2);
if( $row2 ){
// reset the products price to our special price if there is one for this product
$row['v_products_price'] = $row2['specials_new_products_price'];
}
}
//elari -
//We check the value of tax class and title instead of the id
//Then we add the tax to price if EP_PRICE_WITH_TAX is set to true
$row_tax_multiplier = tep_get_tax_class_rate($row['v_tax_class_id']);
$row['v_tax_class_title'] = tep_get_tax_class_title($row['v_tax_class_id']);
$row['v_products_price'] = $row['v_products_price'] +
(EP_PRICE_WITH_TAX == true ? round( ($row['v_products_price'] * $row_tax_multiplier / 100), EP_PRECISION) : 0);
// Now set the status to a word the user specd in the config vars
if ( $row['v_status'] == '1' ){
$row['v_status'] = EP_TEXT_ACTIVE;
} else {
$row['v_status'] = EP_TEXT_INACTIVE;
}
// remove any bad things in the texts that could confuse EasyPopulate
$therow = '';
foreach( $filelayout as $key => $value ){
//echo "The field was $key
";
$thetext = $row[$key];
// kill the carriage returns and tabs in the descriptions, they're killing me!
if (EP_PRESERVE_TABS_CR_LF == false || $dltype == 'froogle') {
$thetext = str_replace("\r",' ',$thetext);
$thetext = str_replace("\n",' ',$thetext);
$thetext = str_replace("\t",' ',$thetext);
}
if (EP_EXCEL_SAFE_OUTPUT == true && $dltype != 'froogle') {
// use quoted values and escape the embedded quotes for excel safe output.
$therow .= '"'.str_replace('"','""',$thetext).'"' . $ep_separator;
} else {
// and put the text into the output separated by $ep_separator defined above
$therow .= $thetext . $ep_separator;
}
}
// lop off the trailing separator, then append the end of row indicator
$therow = substr($therow,0,strlen($therow)-1) . $endofrow;
if ($_GET['download'] == 'activestream'){
echo $therow;
} else {
$filestring .= $therow;
}
// grab the next row from the db
$row = tep_db_fetch_array($result);
}
// now either stream it to them or put it in the temp directory
if ($_GET['download'] == 'activestream'){
die();
} elseif ($_GET['download'] == 'stream'){
//*******************************
// STREAM FILE
//*******************************
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=$EXPORT_TIME" . ((EP_EXCEL_SAFE_OUTPUT == true)?".csv":".txt"));
// Changed if using SSL, helps prevent program delay/timeout (add to backup.php also)
// header("Pragma: no-cache");
if ($request_type== 'NONSSL'){
header("Pragma: no-cache");
} else {
header("Pragma: ");
}
header("Expires: 0");
echo $filestring;
die();
} elseif ($_GET['download'] == 'tempfile') {
//*******************************
// PUT FILE IN TEMP DIR
//*******************************
$tmpfname = EP_TEMP_DIRECTORY . "$EXPORT_TIME" . ((EP_EXCEL_SAFE_OUTPUT == true)?".csv":".txt");
//unlink($tmpfname);
$fp = fopen( $tmpfname, "w+");
fwrite($fp, $filestring);
fclose($fp);
echo "You can get your file in the Tools/File Manager here: " . EP_TEMP_DIRECTORY . "EP" . $EXPORT_TIME . ((EP_EXCEL_SAFE_OUTPUT == true)?".csv":".txt");
die();
}
}
//*******************************
//*******************************
// S T A R T
// PAGE DELIVERY
//*******************************
//*******************************
?>
>
|
|
";
echo "File uploaded. ";
echo "Filename: " . $_POST['localfile'] . "
|