 *****************************************
 *                                       *
 *         INSTALLATION-GUIDE            *
 *                                       *
 *****************************************
 * @package Upload Manager               *
 * @xtcModified 1.05                     *
 * (c) 2009 imedes.de                    *
 *****************************************
--------------
DESCRIPTION:
--------------

Der Upload Manager ist ein Modul fr xtcModified, welches erlaubt jeden beliebigen Artikel jeweils als sog. Upload Artikel zu definieren. 
Damit Kunden eine oder mehrere Dateien hochladen knnen, muss der als Upload Artikel defnierte Artikel wie gewnlich bestellt werden. Nach der
Bestellung findet sich auf der checkout_success.php ein Link, der direkt zur Upload Seite fhrt von wo aus Kunden eine vordefinierte max. Menge
an Dateien hochladen drfen, bzw. reglementiert ist, welche Datei Typen erlaubt sind und mit welcher max. Speichergre. Die Einstellungen dazu
knnen fr jeden Artikel einzeln auf der Bearbeitungsseite eines Artikels im Backend vorgenommen werden.

Aus Sicherheitsgrnden ist das Upload Verzeichnis nach auen hin nicht sichtbar, so dass das Hochladen bzw. Aufrufen von maskierten Dateien unmglich ist.
Gleichfalls werden die hochgeladenen Dateien mit einem eindeutigen und nicht wiederkehrenden Datei Namen versehen, bzw. besitzen im FTP /upload
Verzechnis keinerlei Mime Types. Im Falle eines Aufrufs von hochgeladenen Dateien via Browser wird die Generierung der Datei Namen dynamisch whrend
 des Aufrufs generiert. Die hochgeladenen Dateien sind entweder auf der account_history_info.php oder der orders.php im Backend verlinkt, bzw. knnen von dort aus
heruntergeladen werden.

Nach jedem Upload einer Datei wird automtisch eine email an den Shop Betreiber verschickt wozu sich eine neue Mail Vorlage in den Mail Verzeichnissen des
Templates  befindet.


--------------
NEW FILES:
--------------
templates/xtc5/mail/english/file_uploaded.txt
templates/xtc5/mail/german/file_uploaded.txt


--------------
NEW DIRS:
--------------
includes/swfupload
upload (chmod 777!!!!)


--------------
CHANGED FILES:
--------------
account_history_info.php
admin/includes/classes/categories.php
admin/includes/modules/new_product.php
admin/includes/configure.php (bitte nicht einfach nur kopieren!!)
admin/orders.php
checkout_success.php
includes/classes/order.php
includes/configure.php (bitte nicht einfach nur kopieren, sondern bestehende ndern!!!!)
includes/header.php
includes/modules/product_info.php
lang/english/admin/categories.php
lang/english/admin/configuration.php
lang/english/english.php
lang/english/lang_english.conf
lang/german/admin/categories.php
lang/german/admin/configuration.php
lang/german/german.php
lang/german/lang_german.conf
send_order.php
templates/xtc5/mail/german/order_mail.html
templates/xtc5/mail/german/order_mail.txt
templates/xtc5/module/account_history_info.html
templates/xtc5/module/checkout_success.html
templates/xtc5/module/product_info/product_info_tabs_v1.html
tzemplates/javascript/gneral.js.php


-------------
INSTALLATION:
-------------

1. Datenkbankerweiterungen durchfhren
CREATE TABLE IF NOT EXISTS `orders_products_uploads` (
  `upload_id` int(11) unsigned NOT NULL auto_increment,
  `orders_products_id` int(11) unsigned NOT NULL,
  `filename` varchar(255) NOT NULL,
  PRIMARY KEY  (`upload_id`)
) ENGINE=MyISAM ;

ALTER TABLE `products` ADD `products_upload_active` tinyint(1) unsigned NOT NULL default '0',
ADD `products_upload_files` smallint(5) unsigned NOT NULL default '0',
ADD `products_upload_size` int(11) unsigned NOT NULL default '0',
ADD `products_upload_extensions` varchar(255) NOT NULL;

INSERT INTO `configuration` (`configuration_id` ,`configuration_key` ,`configuration_value` ,`configuration_group_id` ,`sort_order` ,`last_modified` ,`date_added` ,`use_function` ,`set_function`) VALUES (NULL , 'UPLOAD_ALLOW_DELETE', 'true', '17', '50', NULL , '0000-00-00 00:00:00', NULL , 'xtc_cfg_select_option(array(''true'', ''false''),');


2. new_files und new_dirs kopieren.

3. changed_files kopieren, oder bei nicht standard-version folgende nderungen durchfhren:


-account_history_info.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 include ('includes/application_top.php');

und fge danach ein: 
if (isset($_POST['Upload'])) {

	if ((int)$_POST['orders_products_id'] < 1 || !isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0 || !file_exists($_FILES["Filedata"]['tmp_name'])) {
		header("HTTP/1.1 500 File Upload Error");
		if (isset($_FILES["Filedata"])) {
			echo $_FILES["Filedata"]["error"];
		}

	} else {
		$t_order = xtc_db_fetch_array(xtc_db_query('SELECT orders_id, products_name FROM '.TABLE_ORDERS_PRODUCTS.' WHERE orders_products_id = '.(int)$_POST['orders_products_id']));
		if ($t_order['orders_id'] < 1) { exit; }
		
		$customer_info = xtc_db_fetch_array(xtc_db_query("select customers_id from ".TABLE_ORDERS." where orders_id = '".$t_order['orders_id']."'"));
		if ($customer_info['customers_id'] != $_SESSION['customer_id']) { exit; }
		
		xtc_db_query('INSERT INTO orders_products_uploads (orders_products_id, filename) VALUES ('.(int)$_POST['orders_products_id'].', "'.xtc_db_prepare_input($_FILES["Filedata"]['name']).'")');
		$t_id = xtc_db_insert_id();
		move_uploaded_file($_FILES["Filedata"]['tmp_name'], DIR_FS_UPLOAD.(int)$_POST['orders_products_id'].'_'.$t_id);
		chmod( DIR_FS_UPLOAD.(int)$_POST['orders_products_id'].'_'.$t_id, 0777);
		
		require (DIR_WS_CLASSES.'order.php');
		$order = new order($t_order['orders_id']);
		
		$smarty = new Smarty;
		$smarty->assign('csID', $_SESSION['customer_id']);
		$smarty->assign('oID', $t_order['orders_id']);
		$smarty->assign('product', $t_order['products_name']);
		$smarty->assign('filename', $_FILES["Filedata"]['name']);
		
		
		
		$txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/file_uploaded.txt');
		
		$t_arr = file(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/file_uploaded.txt');
		
		
		xtc_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, EMAIL_BILLING_ADDRESS, STORE_NAME, EMAIL_BILLING_FORWARDING_STRING, $order->customer['email_address'], $order->customer['firstname'], '', '', $t_arr[0], nl2br($txt_mail), $txt_mail);
	}
	exit;
}
if (isset($_GET['upload_id']) && (int)$_GET['upload_id']) {

	$t_value = xtc_db_fetch_array(xtc_db_query('SELECT orders_products_id, filename FROM orders_products_uploads WHERE upload_id = '.(int)$_GET['upload_id']));
	if ($t_value['orders_products_id'] < 1) { exit;	}
	$tfname = strtolower($t_value['filename']);

	$t_order = xtc_db_fetch_array(xtc_db_query('SELECT orders_id FROM '.TABLE_ORDERS_PRODUCTS.' WHERE orders_products_id = '.$t_value['orders_products_id']));
	if ($t_order['orders_id'] < 1) { exit;	}

	$customer_info = xtc_db_fetch_array(xtc_db_query("select customers_id from ".TABLE_ORDERS." where orders_id = '".$t_order['orders_id']."'"));
	if ($customer_info['customers_id'] != $_SESSION['customer_id']) { xtc_redirect(xtc_href_link(FILENAME_ACCOUNT_HISTORY, '', 'SSL')); }	

	$filename = DIR_FS_UPLOAD.$t_value['orders_products_id'].'_'.(int)$_GET['upload_id'];
	
	if (isset($_GET['delete'])) {	
		if (UPLOAD_ALLOW_DELETE == 'true') {
			@unlink($filename);
		
			xtc_db_query('DELETE FROM orders_products_uploads WHERE upload_id = '.(int)$_GET['upload_id']);
		}
		xtc_redirect(xtc_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id='.$_GET['order_id'], 'SSL'));
	}
	
	if (substr($tfname, -3) == 'pdf') {
		header("Cache-Control: public");
		header("Content-Description: File Transfer");
		header('Content-disposition: attachment; filename='.$t_value['filename']);
		header("Content-Type: application/pdf");
		header("Content-Transfer-Encoding: binary");
		header('Content-Length: '. filesize($filename));
		readfile($filename); 			
	} else { // force download
		// fix for IE catching or PHP bug issue
		header("Pragma: public");
		header("Expires: 0"); // set expiration time
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		// browser must download file from server instead of cache
		
		// force download dialog
		header("Content-Type: application/force-download");
		header("Content-Type: application/octet-stream");
		header("Content-Type: application/download");
		
		// use the Content-Disposition header to supply a recommended filename and
		// force the browser to display the save dialog.
		header("Content-Disposition: attachment; filename=".$t_value['filename']);
		
		/*
		The Content-transfer-encoding header should be binary, since the file will be read
		directly from the disk and the raw bytes passed to the downloading computer.
		The Content-length header is useful to set for downloads. The browser will be able to
		show a progress meter as a file downloads. The content-lenght can be determines by
		filesize function returns the size of a file.
		*/
		header("Content-Transfer-Encoding: binary");
		header("Content-Length: ".filesize($filename));
		
		@readfile($filename);			
		
	}	
	exit;
}

---------------------------------------------------------------------------------------------------
finde folgendes:
 require (DIR_WS_CLASSES.'order.php');
 $order = new order((int)$_GET['order_id']);

und fge danach ein:
$odata = $order->getOrderData((int)$_GET['order_id']);
$smarty->assign('order_data', $odata);
$products_with_upload = 0;
foreach ($odata as $t_data) {
	if ($t_data['PRODUCTS_UPLOAD']) {
		$products_with_upload++;
	}
}
---------------------------------------------------------------------------------------------------
finde folgendes:
$smarty->assign('order_data', $order->getOrderData((int)$_GET['order_id']));

und lschen oder auskommentieren
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-admin/includes/classes/categories.php
---------------------------------------------------------------------------------------------------
finde folgendes:
		$sql_data_array = array ('products_quantity' => xtc_db_prepare_input($products_data['products_quantity']), 'products_model' => xtc_db_prepare_input($products_data['products_model']), 'products_ean' => xtc_db_prepare_input($products_data['products_ean']), 'products_price' => xtc_db_prepare_input($products_data['products_price']), 'products_sort' => xtc_db_prepare_input($products_data['products_sort']), 'products_shippingtime' => xtc_db_prepare_input($products_data['shipping_status']), 'products_discount_allowed' => xtc_db_prepare_input($products_data['products_discount_allowed']), 'products_date_available' => $products_date_available, 'products_weight' => xtc_db_prepare_input($products_data['products_weight']), 'products_status' => $products_status, 'products_startpage' => xtc_db_prepare_input($products_data['products_startpage']), 'products_startpage_sort' => xtc_db_prepare_input($products_data['products_startpage_sort']), 'products_tax_class_id' => xtc_db_prepare_input($products_data['products_tax_class_id']), 'product_template' => xtc_db_prepare_input($products_data['info_template']), 'options_template' => xtc_db_prepare_input($products_data['options_template']), 'manufacturers_id' => xtc_db_prepare_input($products_data['manufacturers_id']), 'products_fsk18' => xtc_db_prepare_input($products_data['fsk18']), 'products_vpe_value' => xtc_db_prepare_input($products_data['products_vpe_value']), 'products_vpe_status' => xtc_db_prepare_input($products_data['products_vpe_status']), 'products_vpe' => xtc_db_prepare_input($products_data['products_vpe']));

und ersetze es mit:		
		$sql_data_array = array ('products_quantity' => xtc_db_prepare_input($products_data['products_quantity']), 'products_model' => xtc_db_prepare_input($products_data['products_model']), 'products_ean' => xtc_db_prepare_input($products_data['products_ean']), 'products_price' => xtc_db_prepare_input($products_data['products_price']), 'products_sort' => xtc_db_prepare_input($products_data['products_sort']), 'products_shippingtime' => xtc_db_prepare_input($products_data['shipping_status']), 'products_discount_allowed' => xtc_db_prepare_input($products_data['products_discount_allowed']), 'products_date_available' => $products_date_available, 'products_weight' => xtc_db_prepare_input($products_data['products_weight']), 'products_status' => $products_status, 'products_startpage' => xtc_db_prepare_input($products_data['products_startpage']), 'products_startpage_sort' => xtc_db_prepare_input($products_data['products_startpage_sort']), 'products_tax_class_id' => xtc_db_prepare_input($products_data['products_tax_class_id']), 'product_template' => xtc_db_prepare_input($products_data['info_template']), 'options_template' => xtc_db_prepare_input($products_data['options_template']), 'manufacturers_id' => xtc_db_prepare_input($products_data['manufacturers_id']), 'products_fsk18' => xtc_db_prepare_input($products_data['fsk18']), 'products_vpe_value' => xtc_db_prepare_input($products_data['products_vpe_value']), 'products_vpe_status' => xtc_db_prepare_input($products_data['products_vpe_status']), 'products_vpe' => xtc_db_prepare_input($products_data['products_vpe']), 'products_upload_active' => xtc_db_prepare_input($products_data['products_upload_active']), 'products_upload_files' => xtc_db_prepare_input($products_data['products_upload_files']), 'products_upload_size' => xtc_db_prepare_input($products_data['products_upload_size']), 'products_upload_extensions' => xtc_db_prepare_input($products_data['products_upload_extensions']));
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-admin/includes/modules/new_product.php
---------------------------------------------------------------------------------------------------
finde folgendes (ca. Zeile: 205):
  <!-- EOF - Tomcraft - 2009-11-06 - Included specials //-->
      <td class="main" align="right">      	
      	<input type="submit" class="button" value="<?php echo BUTTON_SAVE; ?>" onclick="return confirm('<?php echo SAVE_ENTRY; ?>')">
      	&nbsp;&nbsp;
      	<?php echo '<a class="button" href="' . xtc_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $_GET['pID']) . '">' . BUTTON_CANCEL . '</a>'; ?>
  	 </td>
    </tr>
	   
und fge danach ein:	   
<?php
echo '<tr><td class="main"><br></td></tr>';

echo '<tr><td class="main">'.TEXT_UPLOAD_ACTIVE.':'.'</td>';
echo '<td><span class="main">';
echo xtc_draw_selection_field('products_upload_active', 'checkbox', '1',$pInfo->products_upload_active==1 ? true : false);
echo '</span></td></tr>';

echo '<tr><td class="main">'.TEXT_UPLOAD_FILES.':'.'</td>';
echo '<td><span class="main">';
echo xtc_draw_input_field('products_upload_files', $pInfo->products_upload_files, 'size="3"');
echo '</span></td></tr>';

echo '<tr><td class="main">'.TEXT_UPLOAD_SIZE.':'.'</td>';
echo '<td><span class="main">';
echo xtc_draw_input_field('products_upload_size', $pInfo->products_upload_size, 'size="6"');
echo ' kb</span></td></tr>';

echo '<tr><td class="main">'.TEXT_UPLOAD_EXTENSIONS.':'.'</td>';
echo '<td><span class="main">';
echo xtc_draw_input_field('products_upload_extensions', $pInfo->products_upload_extensions, '');
echo ' '.TEXT_UPLOAD_EXTENSIONS_INFO.'</span></td></tr>';
?>    

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-admin/orders.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 require ('includes/application_top.php');

und fge danach ein:
if (isset($_GET['upload_id']) && (int)$_GET['upload_id']) {

	if (isset($_GET['delete'])) {
		$t_value = xtc_db_fetch_array(xtc_db_query('SELECT orders_products_id, filename FROM orders_products_uploads WHERE upload_id = '.(int)$_GET['upload_id']));
		if ($t_value['orders_products_id'] < 1) { xtc_redirect(xtc_href_link(FILENAME_ORDERS, 'page='.$_GET['page'].'&oID='.$_GET['oID'].'&action=edit'));	}
		$filename = DIR_FS_UPLOAD.$t_value['orders_products_id'].'_'.(int)$_GET['upload_id'];
		
		@unlink($filename);
	
		xtc_db_query('DELETE FROM orders_products_uploads WHERE upload_id = '.(int)$_GET['upload_id']);
		
		xtc_redirect(xtc_href_link(FILENAME_ORDERS, 'page='.$_GET['page'].'&oID='.$_GET['oID'].'&action=edit'));
	}
	
	$t_value = xtc_db_fetch_array(xtc_db_query('SELECT orders_products_id, filename FROM orders_products_uploads WHERE upload_id = '.(int)$_GET['upload_id']));
	if ($t_value['orders_products_id'] < 1) { exit;	}
	$tfname = strtolower($t_value['filename']);	
	
	$filename = DIR_FS_UPLOAD.$t_value['orders_products_id'].'_'.(int)$_GET['upload_id'];
	if (substr($tfname, -3) == 'pdf') {
		header("Cache-Control: public");
		header("Content-Description: File Transfer");
		header('Content-disposition: attachment; filename='.$t_value['filename']);
		header("Content-Type: application/pdf");
		header("Content-Transfer-Encoding: binary");
		header('Content-Length: '. filesize($filename));
		readfile($filename); 			
	} else { // force download
		// fix for IE catching or PHP bug issue
		header("Pragma: public");
		header("Expires: 0"); // set expiration time
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		// browser must download file from server instead of cache
		
		// force download dialog
		header("Content-Type: application/force-download");
		header("Content-Type: application/octet-stream");
		header("Content-Type: application/download");
		
		// use the Content-Disposition header to supply a recommended filename and
		// force the browser to display the save dialog.
		header("Content-Disposition: attachment; filename=".$t_value['filename']);
		
		/*
		The Content-transfer-encoding header should be binary, since the file will be read
		directly from the disk and the raw bytes passed to the downloading computer.
		The Content-length header is useful to set for downloads. The browser will be able to
		show a progress meter as a file downloads. The content-lenght can be determines by
		filesize function returns the size of a file.
		*/
		header("Content-Transfer-Encoding: binary");
		header("Content-Length: ".filesize($filename));
		
		@readfile($filename);			
		
	}	
	exit;
}

---------------------------------------------------------------------------------------------------
finde folgendes :
		if (sizeof($order->products[$i]['attributes']) > 0) {
			for ($j = 0, $k = sizeof($order->products[$i]['attributes']); $j < $k; $j ++) {

				echo '<br /><nobr><small>&nbsp;<i> - '.$order->products[$i]['attributes'][$j]['option'].': '.$order->products[$i]['attributes'][$j]['value'].': ';

			}

			echo '</i></small></nobr>';
		}

 
und fge danach ein:
		// xtc_upload
		$files_query = "SELECT upload_id, filename FROM orders_products_uploads WHERE orders_products_id = ".(int)$order->products[$i]['opid'];
		$files_query = xtc_db_query($files_query);
		if (xtc_db_num_rows($files_query) > 0) {
			echo '<br><br>';
			while ($files_data_values = xtc_db_fetch_array($files_query)) {
				echo '<a href="'.xtc_href_link(FILENAME_ORDERS, 'upload_id='.$files_data_values['upload_id']).'">'.$files_data_values['filename'].'</a> <a href="'.xtc_href_link(FILENAME_ORDERS, 'upload_id='.$files_data_values['upload_id'].'&delete&page='.$_GET['page'].'&oID='.$_GET['oID']).'">'.ICON_DELETE.'</a><br>';
			}		
		}

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-checkout_success.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 $last_order = $orders['orders_id'];
 $order_status = $orders['orders_status'];
 
und fge danach ein: 
$products_query = xtc_db_query("select count(*) as count from ".TABLE_ORDERS_PRODUCTS." op, ".TABLE_PRODUCTS." p where op.orders_id = '".$last_order."' and op.products_id = p.products_id and p.products_upload_active = '1'");
$products = xtc_db_fetch_array($products_query);
if ($products['count'] > 0) {
	$smarty->assign('ORDER_LINK' ,xtc_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id='.$last_order, 'SSL'));
}

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-includes/classes/order.php
---------------------------------------------------------------------------------------------------
finde folgendes:	
     	require_once(DIR_FS_INC . 'xtc_get_attributes_model.inc.php');
     	
und fge danach ein: 		
    	$products_with_upload = 0;
---------------------------------------------------------------------------------------------------
finde folgendes:
		$order_data[] = array ('PRODUCTS_MODEL' => $order_data_values['products_model'], 'PRODUCTS_NAME' => $order_data_values['products_name'],'PRODUCTS_SHIPPING_TIME' => $order_data_values['products_shipping_time'], 'PRODUCTS_ATTRIBUTES' => $attributes_data, 'PRODUCTS_ATTRIBUTES_MODEL' => $attributes_model, 'PRODUCTS_PRICE' => $xtPrice->xtcFormat($order_data_values['final_price'], true),'PRODUCTS_SINGLE_PRICE' => $xtPrice->xtcFormat($order_data_values['final_price']/$order_data_values['products_quantity'], true), 'PRODUCTS_QTY' => $order_data_values['products_quantity']);

und ersetze es mit:				
		
		$PRODUCTS_UPLOAD_FILES = '';
		$PRODUCTS_UPLOAD_FILES_nr = 0;
		$files_query = "SELECT upload_id, filename FROM orders_products_uploads WHERE orders_products_id = ".$order_data_values['orders_products_id'];
		$files_query = xtc_db_query($files_query);
		while ($files_data_values = xtc_db_fetch_array($files_query)) {
			$PRODUCTS_UPLOAD_FILES .= '<a href="'.xtc_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'upload_id='.$files_data_values['upload_id']).'">'.$files_data_values['filename'].'</a>';
			
			if (UPLOAD_ALLOW_DELETE == 'true') {
				$PRODUCTS_UPLOAD_FILES .= ' <a href="'.xtc_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'upload_id='.$files_data_values['upload_id'].'&delete&order_id='.(int) $oID).'">'.IMAGE_BUTTON_DELETE.'</a>';
			}
			$PRODUCTS_UPLOAD_FILES .= '<br>';
			$PRODUCTS_UPLOAD_FILES_nr++;
		}
		
		$PRODUCTS_UPLOAD = '';
		$t_query = 'SELECT products_upload_active, products_upload_files, products_upload_size, products_upload_extensions FROM '.TABLE_PRODUCTS.' WHERE products_id = '.$order_data_values['products_id'];
		$t_query = xtc_db_query($t_query);
		$t_value = xtc_db_fetch_array($t_query);
		if ($t_value['products_upload_active'] == 1 && $PRODUCTS_UPLOAD_FILES_nr < $t_value['products_upload_files']) {
			$products_with_upload++;
			$t_value['nr'] = $products_with_upload;
			$t_value['orders_products_id'] = $order_data_values['orders_products_id'];
			
			$t_value['upload_allowed_files'] = $t_value['products_upload_files'] - $PRODUCTS_UPLOAD_FILES_nr;
			$t_value['upload_max_filesize'] = $t_value['products_upload_size'];
			$t_value['upload_allowed_extensions'] = $t_value['products_upload_extensions'];
			
			
			$PRODUCTS_UPLOAD = $t_value;
		}
		
		$order_data[] = array ('PRODUCTS_MODEL' => $order_data_values['products_model'], 'PRODUCTS_NAME' => $order_data_values['products_name'],'PRODUCTS_SHIPPING_TIME' => $order_data_values['products_shipping_time'], 'PRODUCTS_ATTRIBUTES' => $attributes_data, 'PRODUCTS_ATTRIBUTES_MODEL' => $attributes_model, 'PRODUCTS_PRICE' => $xtPrice->xtcFormat($order_data_values['final_price'], true),'PRODUCTS_SINGLE_PRICE' => $xtPrice->xtcFormat($order_data_values['final_price']/$order_data_values['products_quantity'], true), 'PRODUCTS_QTY' => $order_data_values['products_quantity'], 'PRODUCTS_UPLOAD' => $PRODUCTS_UPLOAD, 'PRODUCTS_UPLOAD_FILES' => $PRODUCTS_UPLOAD_FILES);

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-includes/configure.php
---------------------------------------------------------------------------------------------------
finde folgendes:
   define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');
   define('DIR_FS_INC', DIR_FS_CATALOG . 'inc/');
 
und fge danach ein:
  define('DIR_FS_UPLOAD', DIR_FS_CATALOG . 'upload/');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-admin/includes/configure.php
---------------------------------------------------------------------------------------------------
finde folgendes:
   define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');
   define('DIR_FS_INC', DIR_FS_CATALOG . 'inc/');
 
und fge danach ein:
  define('DIR_FS_UPLOAD', DIR_FS_CATALOG . 'upload/');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------



-includes/header.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 if (strstr($PHP_SELF, FILENAME_CREATE_GUEST_ACCOUNT )) {
 require('includes/form_check.js.php');
 }
 
und fge davor ein: 
if (strstr($PHP_SELF, FILENAME_ACCOUNT_HISTORY_INFO )) {
?>
<link href="includes/swfupload/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="includes/swfupload/swfupload.js"></script>
<script type="text/javascript" src="includes/swfupload/swfupload.queue.js"></script>
<script type="text/javascript" src="includes/swfupload/fileprogress.js"></script>
<script type="text/javascript">

<?php include 'includes/swfupload/handlers.php'; ?>

var <?php
for ($i = 1; $i <= $products_with_upload; $i++) {
	echo 'upload'.$i.', ';
}
?>dummy;

window.onload = function() {
<?php
foreach ($odata as $t_data) {
	if (!$t_data['PRODUCTS_UPLOAD']) { continue; }
	
	$extensions = '*.*';
	$exts = array();
	if (trim($t_data['PRODUCTS_UPLOAD']['products_upload_extensions']) != '' && trim($t_data['PRODUCTS_UPLOAD']['products_upload_extensions']) != '*' && trim($t_data['PRODUCTS_UPLOAD']['products_upload_extensions']) != '*.*') {
		$t_exts = explode(',', trim($t_data['PRODUCTS_UPLOAD']['products_upload_extensions']));
		foreach ($t_exts as $ext) {
			if (trim($ext) != '') {
				$exts[] = '*.'.trim($ext);
			}
		}
		$extensions = implode(';', $exts);
	}
	
	echo 'upload'.$t_data['PRODUCTS_UPLOAD']['nr'].'  = new SWFUpload({
				// Backend Settings
				upload_url: "'.HTTP_SERVER.DIR_WS_CATALOG.FILENAME_ACCOUNT_HISTORY_INFO.'",	// Relative to the SWF file (or you can use absolute paths)
				post_params: {"'.session_name().'" : "'.session_id().'", "orders_products_id" : "'.$t_data['PRODUCTS_UPLOAD']['orders_products_id'].'"},

				// File Upload Settings
				file_size_limit : "'.$t_data['PRODUCTS_UPLOAD']['products_upload_size'].'",	// kb
				file_types : "'.$extensions.'",
				file_types_description : "",
				file_upload_limit : "'.$t_data['PRODUCTS_UPLOAD']['products_upload_files'].'",
				file_queue_limit : "'.$t_data['PRODUCTS_UPLOAD']['products_upload_files'].'",

				// Event Handler Settings (all my handlers are in the Handler.js file)
				file_dialog_start_handler : fileDialogStart,
				file_queued_handler : fileQueued,
				file_queue_error_handler : fileQueueError,
				file_dialog_complete_handler : fileDialogComplete,
				upload_start_handler : uploadStart,
				upload_progress_handler : uploadProgress,
				upload_error_handler : uploadError,
				upload_success_handler : uploadSuccess,
				upload_complete_handler : uploadComplete,

				// Flash Settings
				flash_url : "'.HTTP_SERVER.DIR_WS_CATALOG.'includes/swfupload/swfupload.swf", // Relative to this file (or you can use absolute paths)
				
				swfupload_element_id : "flashUI'.$t_data['PRODUCTS_UPLOAD']['nr'].'",		// Setting from graceful degradation plugin
				//degraded_element_id : "degradedUI'.$t_data['PRODUCTS_UPLOAD']['nr'].'",	// Setting from graceful degradation plugin

				custom_settings : {
					progressTarget : "fsUploadProgress'.$t_data['PRODUCTS_UPLOAD']['nr'].'",
					cancelButtonId : "btnCancel'.$t_data['PRODUCTS_UPLOAD']['nr'].'"
				},
				
	
				button_placeholder_id : "spanButtonPlaceholder",
				button_width: 120,
				button_height: 20,
				button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
				button_cursor: SWFUpload.CURSOR.HAND,				
				
				// Debug Settings
				debug: false
			});
			
';
}
?>	
}
</script>
<style>
	.swfupload {
		position: absolute;
		z-index: 1;
	}

</style>
<?php
}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-includes/modules/product_info.php
---------------------------------------------------------------------------------------------------
finde folgendes:
                $info_smarty->assign('PRODUCTS_DESCRIPTION', stripslashes($product->data['products_description']));

und fge danach ein:
		$products_query = xtc_db_query("select count(*) as count from ".TABLE_PRODUCTS." p where p.products_id = '".$product->data['products_id']."' and p.products_upload_active = '1'");
		$products = xtc_db_fetch_array($products_query);
		if ($products['count'] > 0) {
			$info_smarty->assign('UOLOAD' ,'1');
		}		

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-lang/english/admin/categories.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 ?>
 
und fge davor ein: 
define('TEXT_UPLOAD_ACTIVE', 'Upload aktivieren');
define('TEXT_UPLOAD_FILES', 'Anzahl Dateien');
define('TEXT_UPLOAD_SIZE', 'Maximale Dateigre');
define('TEXT_UPLOAD_EXTENSIONS', 'Erlaubte Dateiendungen');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-lang/english/admin/configuration.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 ?>
 
und fge davor ein: 
define('UPLOAD_ALLOW_DELETE_TITLE','Delete uploads');
define('UPLOAD_ALLOW_DELETE_DESC','May the customer delete his uploads?');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-lang/english/english.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 ?>
 
und fge davor ein: 
define('UPLOAD_PENDING', 'Pending...');
define('UPLOAD_LIMIT_EXCEEDED', 'You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file."))');
define('UPLOAD_EXCEEDS_SIZE_LIMIT', 'File is too big.');
define('UPLOAD_ZERO_BYTE_FILE', 'Cannot upload Zero Byte files.');
define('UPLOAD_INVALID_FILETYPE', 'Invalid File Type.');
define('UPLOAD_UPLOADING', 'Uploading...');
define('UPLOAD_DONE', 'Complete.');
define('UPLOAD_UPLOAD_ERROR', 'Error while uploading file.');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-lang/english/lang_english.conf
---------------------------------------------------------------------------------------------------
finde folgendes:
title_history = 'Order history'
title_print = 'Printable version of the order'
text_print = 'Print a copy of your order for your records.'

und fge danach ein:
title_upload_files = 'Upload files'
button_choose_files = 'Choose files'
button_cancel_upload = 'Cancel upload'
title_allowed_files = 'Number of files to upload:'
title_max_filesize = 'Max filesize:'
title_allowed_extensions = 'Allowed extensions:'
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-lang/german/admin/categories.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 ?>
 
und fge davor ein: 
define('TEXT_UPLOAD_ACTIVE', 'Upload aktivieren');
define('TEXT_UPLOAD_FILES', 'Anzahl Dateien');
define('TEXT_UPLOAD_SIZE', 'Maximale Dateigre');
define('TEXT_UPLOAD_EXTENSIONS', 'Erlaubte Dateiendungen');
define('TEXT_UPLOAD_EXTENSIONS_INFO', '(mit Komma getrennt. Z.B. "jpg,png,bmp,gif,psd,pdf")');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-lang/german/admin/configuration.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 ?>
 
und fge davor ein: 
define('UPLOAD_ALLOW_DELETE_TITLE','Uploads lschen');
define('UPLOAD_ALLOW_DELETE_DESC','Darf der Kunde seine Uploads lschen?');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-lang/german/german.php
---------------------------------------------------------------------------------------------------
finde folgendes:
 ?>
 
und fge davor ein: 
define('UPLOAD_PENDING', 'Warten...');
define('UPLOAD_LIMIT_EXCEEDED', 'Sie haben mehr Dateien hinzugefgt als erlaubt.\n" + (message === 0 ? "Sie haben das Uploadlimit erreicht" : "Sie drfen " + (message > 1 ? "bis zu " + message + " Dateien hochladen." : "eine Datei hochladen."))');
define('UPLOAD_EXCEEDS_SIZE_LIMIT', 'Die Datei ist zu gro.');
define('UPLOAD_ZERO_BYTE_FILE', 'Kann keine 0 byte groe Datei hochladen.');
define('UPLOAD_INVALID_FILETYPE', 'Falscher Dateityp.');
define('UPLOAD_UPLOADING', 'Lade hoch...');
define('UPLOAD_DONE', 'Fertig.');
define('UPLOAD_UPLOAD_ERROR', 'Problem beim hochladen der Datei.');
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-lang/german/lang_german.conf
---------------------------------------------------------------------------------------------------
finde folgendes:
title_history = 'Bestellhistorie'
title_print = 'Druckversion der Bestellung'
text_print = 'Zu Ihrer Best&auml;tigung k&ouml;nnen Sie die Bestellung ausdrucken.'

 
und fge danach ein: 
title_upload_files = 'Dateien hochladen'
button_choose_files = 'Dateien auswhlen'
button_cancel_upload = 'Upload abbrechen'
title_allowed_files = 'Anzahl der noch mglichen Dateien:'
title_max_filesize = 'Max. Dateigre:'
title_allowed_extensions = 'Erlaubte Dateiendungen:'

---------------------------------------------------------------------------------------------------
finde folgendes:
gv_has_vouchera = 'Sie verf&uuml;gen &uuml;ber ein Guthaben. Sie k&ouml;nnen dieses <br />per <a class="pageResults" href="'
gv_has_voucherb = '"><strong>E-Mail</strong></a> versenden.'

und fge danach ein:
text_upload	   = 'Sie haben eine Bestellung aufgegeben, wo Sie nun einen Upload durchfhren knnen.'
text_to_upload = '<strong>zum Upload</strong>'
---------------------------------------------------------------------------------------------------
finde folgendes: 
[product_info]
 
und fge danach ein: 
text_upload = 'Dies ist ein Uploadartikel!'
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-send_order.php
---------------------------------------------------------------------------------------------------
finde folgendes: 
 $order_check = xtc_db_fetch_array($order_query_check);
 if ($_SESSION['customer_id'] == $order_check['customers_id']) {

und fge danach ein: 
	$products_query = xtc_db_query("select count(*) as count from ".TABLE_ORDERS_PRODUCTS." op, ".TABLE_PRODUCTS." p where op.orders_id = '".$insert_id."' and op.products_id = p.products_id and p.products_upload_active = '1'");
	$products = xtc_db_fetch_array($products_query);
	if ($products['count'] > 0) {
		$smarty->assign('ORDER_LINK' ,xtc_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id='.$insert_id, 'SSL'));
	}

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-templates/xtc5/mail/german/order_mail.html
---------------------------------------------------------------------------------------------------
finde folgendes:  
{foreach name=aussen item=order_total_values from=$order_total}
<div align="right"><font size="1" face="Arial, Helvetica, sans-serif">{$order_total_values.TITLE}{$order_total_values.TEXT}</font></div>
{/foreach}
 
und fge danach ein: 
{if $ORDER_LINK}
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td class="main" valign="top">Sie haben eine Bestellung aufgegeben, wo Sie nun einen Upload durchfhren knnen.</td>
  </tr>
  <tr>
    <td class="contentsTopics" valign="top"><a href="{$ORDER_LINK}"><b>zum Upload</b></a></td>
  </tr>
</table>
  {/if}

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-templates/xtc5/mail/german/order_mail.txt
---------------------------------------------------------------------------------------------------
finde folgendes: 
 {$order_total_values.TITLE}{$order_total_values.TEXT}
 {/foreach}
 
finde folgendes:  
{if $ORDER_LINK}
Sie haben eine Bestellung aufgegeben, wo Sie nun einen Upload durchfhren knnen.
zum Upload: {$ORDER_LINK}
{/if}
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-templates/xtc5/module/account_history_info.html
---------------------------------------------------------------------------------------------------
finde folgendes: 
  {foreach name=aussen item=order_values from=$order_data}
    <tr>
    <td>{$order_values.PRODUCTS_QTY}&nbsp;x</td>
    <td>{$order_values.PRODUCTS_NAME}</strong><em>{$order_values.PRODUCTS_ATTRIBUTES}</em>{if $order_values.PRODUCTS_SHIPPING_TIME neq ''}<br />{#text_shippingtime#} {$order_values.PRODUCTS_SHIPPING_TIME}<br />{/if}</td>
    <td>{$order_values.PRODUCTS_MODEL}<em>{$order_values.PRODUCTS_ATTRIBUTES_MODEL}</em></td>
    <td>{$order_values.PRODUCTS_SINGLE_PRICE}</td>
	<td>{$order_values.PRODUCTS_PRICE}</td>
  </tr>


und fge dqanach ein:			
    {if $order_values.PRODUCTS_UPLOAD_FILES}
    <tr>
   		<td colspan="5">
		    <strong>Hochgeladene Dateien:</strong>
		    <br />{$order_values.PRODUCTS_UPLOAD_FILES}
	 {/if}
    {if $order_values.PRODUCTS_UPLOAD}
   		<br />
    	<table cellpadding="4" cellspacing="4" width="100%">
    		<tr>
    			<td valign="top">
    				<div id="flashUI{$order_values.PRODUCTS_UPLOAD.nr}">
						<fieldset class="flash" id="fsUploadProgress{$order_values.PRODUCTS_UPLOAD.nr}">
							<legend>{#title_upload_files#}</legend>
						</fieldset>
						<div>
							<br />
							<span id="spanButtonPlaceholder"></span>
							<input type="button" value="{#button_choose_files#}" onclick="upload{$order_values.PRODUCTS_UPLOAD.nr}.selectFiles()" style="width: 125px; font-size: 8pt;" />
							<input id="btnCancel{$order_values.PRODUCTS_UPLOAD.nr}" type="button" value="{#button_cancel_upload#}" onclick="cancelQueue(upload{$order_values.PRODUCTS_UPLOAD.nr});" disabled="disabled" style="font-size: 8pt;" />
							<br />
						</div>
					</div>
				</td>
			</tr>
    		<tr>
    			<td valign="top">
					{#title_allowed_files#} {$order_values.PRODUCTS_UPLOAD.upload_allowed_files}
					<br />
					{#title_max_filesize#} {$order_values.PRODUCTS_UPLOAD.upload_max_filesize} kb
					<br />
					{if $order_values.PRODUCTS_UPLOAD.upload_allowed_extensions!=''}{#title_allowed_extensions#} {$order_values.PRODUCTS_UPLOAD.upload_allowed_extensions}{/if}

				</td>
			</tr>
		</table>
   
    
    
    </td>
  </tr>
  {/if}  

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-templates/xtc5/module/checkout_success.html
---------------------------------------------------------------------------------------------------
finde folgendes: 
<strong>{#text_thankyou#}</strong></p>
   
und fge danach ein:
  {if $ORDER_LINK}
    <p><strong>{#text_upload#}</strong></p>
    <p><a href="{$ORDER_LINK}" title="{#text_to_upload#}">{#text_to_upload#}</a></p>
  {/if}

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-templates/xtc5/module/product_info/product_info_tabs_v1.html
---------------------------------------------------------------------------------------------------
finde folgendes:
			{if $SHIPPING_NAME}<p class="shippingtime"><strong>{#text_shippingtime#}</strong>{if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if} {$SHIPPING_NAME}</p>
			{/if}


und fge danach ein:			
			{if $UOLOAD!=''}<br /><strong>{#text_upload#}</strong>{/if}

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


-templates/xtc5/javascript/general.js.php
---------------------------------------------------------------------------------------------------
finde folgendes:
<script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/jquery.js" type="text/javascript"></script>
<script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/thickbox.js" type="text/javascript"></script>


und ersetze mit:			
<?php
if (!strstr($PHP_SELF, FILENAME_ACCOUNT_HISTORY_INFO )) {
?>
<script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/jquery.js" type="text/javascript"></script>
<script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/thickbox.js" type="text/javascript"></script>
<?php
}
?>

---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------


