HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/deensekroon.komma-mediadesign.nl/wwwroot/admin/php/products2.php
<?php

include_once($_SERVER['DOCUMENT_ROOT'] . '/admin/php/Products/ProductController.php');

include_once($_SERVER['DOCUMENT_ROOT'] . '/App/Core/Repository.php');
include_once($_SERVER['DOCUMENT_ROOT'] . '/App/Routes/RouteRepository.php');
include_once($_SERVER['DOCUMENT_ROOT'] . '/App/Routes/RouteService.php');
include_once($_SERVER['DOCUMENT_ROOT'] . '/App/Categories/CategoryRepository.php');

/* 
	products.php 

	Mike Ontwerpt 2012
	www.mikeontwerpt.nl
	
*/

function initProducts(){

    $controller = new \Admin\Products\ProductController();

	$output = '';
	if(isset($_POST['back'])){
		Url_Pin::redirect();
	}
	else if(isset($_POST['sbm-add-product'])){
		validateAddEditProduct('add');
	}
	else if(isset($_POST['sbm-edit-product'])){
		validateAddEditProduct('edit');
	}
    else if(isset($_POST['sbm-copy-product'])){
        validateAddEditProduct('copy');
    }
	else if(isset($_POST['toggle_sale'])){
		toggleSale();
	}
	else if(isset($_POST['askMoveToTrash'])){
		$output .= askMoveToTrash();
	}
	else if(isset($_POST['moveToTrash'])){
		moveToTrash();
	}
	else if(isset($_POST['update-modified'])){
		updateModified();
	}
	else if(isset($_POST['update-discount'])){
		updateDiscount();
	}
	else if(isset($_POST['remove-discount'])){
		removeDiscount();
	}
	else if(isset($_POST['do_submit'])){
		if(isset($_POST['sort_what']) && $_POST['sort_what'] == 'instances'){
			sbmChangeInstanceOrder();
		}
		else if(isset($_POST['sort_what']) && $_POST['sort_what'] == 'allinstances'){
			sbmChangeAllInstanceOrder();
		}
		else{
			sbmChangeOrder();
		}
	}
	else if(isset($_POST['sbm_sortfilter'])){
		sortFilter();
	}
	else if(defined('URL_SUB')){
		$subpage = URL_SUB;
		switch($subpage){
			case 'show-product':
			    $output .= showProduct();
			break;
			case 'add-product':
			    $output .= showFormAddEditProduct('add');
			break;
			case 'edit-product':
                $output .= showFormAddEditProduct('edit');
            break;
            case 'copy-product':
                $output .= showFormAddEditProduct('copy');
                break;
            case 'manage-categories':
			case 'delete-category':
			case 'edit-category':
                $output .= manageCategories();
			break;
			case 'order-products':
			    //$output .= showChangeOrder();
			    $output .= showChangeAllInstanceOrder();
			break;
			case 'change-instance-order':
			    $output .= showChangeInstanceOrder();
			break;
			case 'updatePublished':
				updatePublished();
			break;
			case 'updateNew':
				updateNew();
			break;
			case 'updateSale':
				updateSale();
				break;
            case 'show-brand':
                if(defined('URL_SUB2'))
                {
                    $output .= showDashboard();
                }
                break;

			// Fill multiple products trough an xml file
			case 'bulk-upload':
				// Include file
				include_once $_SERVER['DOCUMENT_ROOT'] . '/admin/php/bulkUpload/bulkUploadPage.php';

				// Return HTML
				return (new BulkUploadPage())->index();
				break;
			case 'download-csv':
                $controller->downloadCsv();
				break;
			default:
			$output .= showDashboard();
		}
	}
	else{
		$output .= showDashboard();
	}
	
	return $output;
}

function showDashboard(){

    Url_Pin::set();

	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();

	if(isset($_SESSION['addedit-product'])) unset($_SESSION['addedit-product']);
	if(isset($_SESSION['from-showproduct'])) unset($_SESSION['from-showproduct']);
	$output = '';
	/* title */
	$output .= '<h1>'.$siteLabels['products-title'].'</h1>';

    $output .= getBrandsMenu();

	//start with form for checkboxes
	$output .= '<form action="" name="chkForm" method="post">';

		/* buttons */
		$output .= '<div class="submenu">';
				//buttons
				$output .= '<a href="/admin/products/add-product/" class="btn184 proceed">'.$siteLabels['products-addproduct'].'</a>';
				$output .= '<a href="/admin/products/order-products/" class="btn184">'.$siteLabels['products-orderproducts'].'</a>';
				$output .= '<a href="/admin/products/manage-categories/" class="btn184">'.$siteLabels['products-managecategories'].'</a>';
				$output .= '<input type="submit" name="askMoveToTrash" value="'.$siteLabels['products-removeproducts'].'" class="btn184"/>';
				$output .= '<a href="/admin/products/bulk-upload/" class="btn184">Via XML vullen</a>';

                $output .= '<a href="/admin/products/download-csv/" class="btn184">Download CSV</a>';

				$output .= '<input type="submit" name="toggle_sale" value="Toggle Sale" class="btn184"/>';

	$output .= '<div class="clear"></div>';
		$output .= '</div>';
		
		/* SORT & FILTER */
		
		# sort & filter
		$i = 0;
		$sortarr[$i]['val'] = 'productOrder';
		$sortarr[$i]['label'] = 'Default';
		$i++;
		$sortarr[$i]['val'] = 'titleNL'; 
		$sortarr[$i]['label'] = 'Title';
		$i++;
		$sortarr[$i]['val'] = 'price'; 
		$sortarr[$i]['label'] = 'Price';
		$i++;
		$sortarr[$i]['val'] = 'brandId';
		$sortarr[$i]['label'] = 'Brand';
		$i++;
		$sortarr[$i]['val'] = 'timest'; 
		$sortarr[$i]['label'] = 'Added on';
		$i++;
		
		if(defined('URL_SUB') && substr(URL_SUB,0,6) == 'sortby'){
			# check sort
			$sortby = substr(URL_SUB,9);
			$sortdir = substr(URL_SUB, 7,1);
			$sortdir == 'a' ? $sortdir = 'ASC' : $sortdir = 'DESC';
			
			#check filter
			$filterby = substr(URL_SUB2,9);
			
			if(!empty($filterby)){
				$filterstr = str_replace('-',' ',$filterby);
				$filterquery = 'AND (';
				# found in brands ?
				$brandkey = 0;
				$brandId = '';
				$searchbrandResult = $mysqli->query('SELECT id FROM merken WHERE title LIKE "%'.$filterstr.'%"');
				while($searchbrandRecord = $searchbrandResult->fetch_assoc()){
					$brandId = $searchbrandRecord['id'];
					if($brandkey != 0) $filterquery .= 'OR ';
	
					$filterquery .= 'p.brandId = '.$brandId.' ';
					$brandkey++;
				}
				
				if($brandkey != 0) $filterquery .= 'OR ';
				
				# found in cat ?
				$catkey = 0;
				$catId = '';
				$searchbrandResult = $mysqli->query('SELECT id FROM product_categories WHERE category LIKE "%'.$filterstr.'%"');
				while($searchbrandRecord = $searchbrandResult->fetch_assoc()){
					$catId = $searchbrandRecord['id'];
					if($catkey != 0) $filterquery .= 'OR ';
	
					$filterquery .= 'p.catId = '.$catId.' ';
					$catkey++;
				}
	
				if( $catkey != 0 ) $filterquery .= 'OR ';
				
				$filterquery .= 'p.titleNL LIKE "%'.$filterstr.'%" ';
				$filterquery .= ')';
			}
		}


		if( ! defined('URL_SUB') || URL_SUB != 'show-brand')
		{
			// Show First Category
			$brandQuery = 'SELECT id FROM merken ORDER BY title ASC LIMIT 1';
			$brandResult = $mysqli->query($brandQuery);
			$brandRecord = $brandResult->fetch_assoc();
			$firstBrandId = $brandRecord['id'];

			header('location: /admin/products/show-brand/' . $firstBrandId);
			exit;
		}
		
		## output form
		$output .= '<div class="single-column sortfilter">';
				# Filter input	
				$output .= '<strong>Filter</strong><br />';
				if(!isset($filterstr)) $filterstr = '';
				$output .= '<input type="text" name="filter-by" value="'.$filterstr.'" class="txt" />';
		$output .= '</div>';
		$output .= '<div class="single-column sortfilter">';
				# Sort input
				$output .= '<strong>Sort by</strong><br />';
				
				$output .= '<select name="sort-by">';
					foreach($sortarr as $key => $value){
						$output .= '<option value="'.$value['val'].'" ';
						if(isset($sortby) && $value['val'] == $sortby) $output .= 'selected'; 
						$output .= '>'.$value['label'].'</option>';
					}
				$output .= '</select>';
		$output .= '</div>';
		$output .= '<div class="single-column sortfilter">';
			$output .= '<br /><input type="radio" name="orderdir" value="A" ';
				if (!isset($sortdir) || (isset($sortdir) && $sortdir == 'ASC')) $output .= 'checked';
			$output .= '> Ascending&nbsp;&nbsp;';
			$output .= '<input type="radio" name="orderdir" value="D" ';
				if(isset($sortdir) && $sortdir == 'DESC') $output .= 'checked';
			$output .= '> Descending';
	
		$output .= '</div>';
		$output .= '<div class="single-column sortfilter">';
			# submit button
			$output .= '<br /><input type="submit" name="sbm_sortfilter" value="go" class="btn176 proceed no-margin"/>';
		$output .= '</div>';
		$output .= '<div class="clear"></div>';
		
		/* content */
				
		/* top row */
		$output .= '<div class="itemlist-row itemlist-heading">';
			$output .= '<div class="itemlist-single-column">stockcode</div>';
			$output .= '<div class="itemlist-double-column title"><input type="checkbox" name="checkCtrl" value="checkAll" onClick="check_all(this);" class="itemlist-cbox">title</div>';
			$output .= '<div class="itemlist-single-column">brand</div>';
			//$output .= '<div class="itemlist-single-column">pictures</div>';
			$output .= '<div class="itemlist-single-column">price</div>';
			$output .= '<div class="itemlist-single-column">added on</div>';
			//$output .= '<div class="itemlist-single-column status-column">likes</div>';
			$output .= '<div class="itemlist-single-column status">status</div>';
			$output .= '<div class="itemlist-single-column itemlist-edit">edit</div>';
		$output .= '</div>';	
		
		/* get info */
		$query = 'SELECT DISTINCT p.id, p.catId, p.titleNL, p.isNew, p.published,p.isExtraLeuk as sale, p.price, p.discountPrice,
								  p.brandId, p.timest, p.stockCode, p.thumb
				  FROM product_products as p, content_status as s



				  WHERE s.active = 1
				  AND s.itemId = p.id
				  AND s.linkname = "product_products" ';

                  // Show only by brand?
                  if(defined('URL_SUB') && URL_SUB == 'show-brand' && defined('URL_SUB2') && URL_SUB2 != 'all')
                  {
                      $query .= 'AND p.brandId = ' . URL_SUB2 . ' ';
                  }

				  if(!empty($filterquery)) $query .= $filterquery;
				  if(isset($sortby)){ $query .= 'ORDER BY p.'.$sortby.' '.$sortdir; }
				  else{ $query .= 'ORDER BY p.brandId DESC, p.titleNL ASC'; }
				  
		if($result = $mysqli->query($query)){
			
			while($record = $result->fetch_assoc()){
				//create productid
				$id = $record['id'];
				$catId = $record['catId'];
				$brandId = $record['brandId'];
                $stockCode = $record['stockCode'];

				$addedOn = date('d / m / Y', $record['timest']);
				
				//brands
				if($brandresult = $mysqli->query('SELECT title, brandCode FROM merken WHERE id = '.$brandId.' LIMIT 1')){
					$brandrecord = $brandresult->fetch_assoc();
					if($brandresult->num_rows == 0){
						$brandCode = 'XX';
						$brand = '-';
					}
					else
					{
						$brandCode = fromDatabase($brandrecord['brandCode']);
						$brand = fromDatabase($brandrecord['title']);
					}
				}
				
				$productId = '#'.$brandCode.$id;
				
				//title
				$titleNL = fromDatabase($record['titleNL']);
				
				//categories
                /*
				if($catresult = $mysqli->query('SELECT category FROM product_categories WHERE id = '.$catId.' LIMIT 1')){
					$catrecord = $catresult->fetch_assoc();
					if($catresult->num_rows == 0){
						$category = 'uncategorized';
					}
					else
					{
						$category = fromDatabase($catrecord['category']);
					}
				}
				else{
					$category = '<span class="warning">uncategorized</span>';
				}*/
				
				
				//price
				$price = $record['price'];
				$displayPrice = displayPrice($price);
				
				//discount?
				$discountPrice = '';
				$discountPrice = $record['discountPrice'];
				if(!empty($discountPrice)){
					$oldPrice = $price;
					$displayOldPrice = displayPrice($oldPrice);	
					$displayPrice = displayPrice($discountPrice);			
				}
				
				//new and published
				$new = $record['isNew'];
				$published = $record['published'];
				$sale = $record['sale'];
				$new == 1 ? $updateNew = 0 : $updateNew = 1;
				$published == 1 ? $updatePublished = 0 : $updatePublished = 1;  
				
				//numarticles
                /*
				if($instanceResult = $mysqli->query( 'SELECT id FROM product_instances WHERE productId = '.$id)){
					$numInstances = $instanceResult->num_rows;
				}
				else{
					$numInstances = '<span class="itemlist-warning">0</span>';
				}*/

                /*
				//loves / modified
				$loveResult = $mysqli->query('SELECT id FROM popular_likes WHERE productId = '.$id);
				$numLoves = $loveResult->num_rows;	
				
				$modifiedResult = $mysqli->query('SELECT modified FROM popular_modified WHERE productId = '.$id.' LIMIT 1');
				$modifiedRecord = $modifiedResult->fetch_assoc();
				$modified = $modifiedRecord['modified'];
				if($modifiedResult->num_rows == 0 || $modified == 0 || empty($modified)){
					$displaymodified = '+0';
				}
				else if($modified > 0){
					$displaymodified = '+'.$modified;
				}
				else if($modified < 0){
					$displaymodified = '-'.$modified;
				}
                */


                // Get Thumbnail
                $thumb = '';
                $shortCode = $record['thumb'];
                $thumbQuery =  'SELECT title, filename_medium, filename_small
										FROM media_files
										WHERE shortcode = "'.$shortCode.'" LIMIT 1';
                if($thumbResult = $mysqli->query($thumbQuery)){
                    $thumbRecord = $thumbResult->fetch_assoc();
                    #thumb
                    if(!empty($thumbRecord['filename_small']) && is_file(DOCUMENT_ROOT . '/images/uploads/'.$thumbRecord['filename_small']) ){ $thumb = '/images/uploads/'.$thumbRecord['filename_small']; }
                    else if (!empty($thumbRecord['filename_medium']) && is_file(DOCUMENT_ROOT . '/images/uploads/'.$thumbRecord['filename_medium'])){ $thumb = '/images/uploads/'.$thumbRecord['filename_medium']; }
                }


				$output .= '<div class="itemlist-row">';

					/* product id */
					$output .= '<div class="itemlist-single-column">';
//                        ! empty($stockCode) ? $output .= 'v' : $output .= '<span class="itemlist-warning">x</span>';
                        if( ! empty($thumb))
                        {
						    $output .= '<span class="item-list-image"><a href="/admin/products/show-product/'.$id.'/"><img src="' . $thumb. '" alt="image"></a></span>';
                        }
					$output .= '</div>';


					// Title
					$output .= '<div class="itemlist-double-column title">
									<input type="checkbox" name="option[]" id="option-'.$id.'" value="'.$id.'" class="itemlist-cbox"/>';
						if(strlen($titleNL) > 50) $titleNL = substr($titleNL,0,50).'&hellip;';
						$output .= '<a href="/admin/products/show-product/'.$id.'/">'.$titleNL.'</a>
								</div>';


					/* brand */
					$output .= '<div class="itemlist-single-column">'.$brand.'</div>';
					/* num instances */
					//$output .= '<div class="itemlist-single-column">'.$numInstances.'</div>';
					/* price*/
					if($price == 0) $displayPrice = '<span class="itemlist-warning">'.$displayPrice.'</span>';
					
					$output .= '<div class="itemlist-single-column">';
						if(!empty($discountPrice)) $output .= '<span class="line-through">'.$displayOldPrice.'</span> '; 
						$output .= $displayPrice;
					$output .= '</div>';

					/* discount */
					$output .= '<div class="itemlist-single-column">';
						
						/*$discount[$id] = checkProductDiscount($id);						
						if($discount[$id]) $output .= ' (-'.$discount[$id].'%)';*/
						$output .= $addedOn;
					$output .= '</div>';
					/* empty */
					//$output .= '<div class="itemlist-single-column status-column">'.$numLoves.' / '.$displaymodified.'</div>';
					/* status */
					$output .= '<div class="itemlist-single-column status" style="width: 90px">';
						/* UPDATE NEW WITH JAVASCRIPT */
						$output .= '<a href="/admin/products/updateNew/'.$id.'"><span class="itemlist-btn';
							if($new == 1) $output .= ' active';
						//$output .='" id="itemlist-btn-new" onClick="getPage(\'jsbox\',\'js_updateproducts\',\'action=updateNew&id='.$id.'&val='.$updateNew.'\'); window.location.reload();"></span>';
						$output .='" id="itemlist-btn-new"></span></a>';

						$output .= '<a href="/admin/products/updateSale/'.$id.'"><span class="itemlist-btn';
						if($sale == 1) $output .= ' active';
						//$output .= '" id="itemlist-btn-publish" onClick="getPage(\'jsbox\',\'js_updateproducts\',\'action=updatePublish&id='.$id.'&val='.$updatePublished.'\'); window.location.reload();"></span>';
						$output .= '" id="itemlist-btn-sale"></span></a>';

						/* UPDATE PUBLISHED WITH JAVASCRIPT */
						$output .= '<a href="/admin/products/updatePublished/'.$id.'"><span class="itemlist-btn';
							if($published == 1) $output .= ' active';
						//$output .= '" id="itemlist-btn-publish" onClick="getPage(\'jsbox\',\'js_updateproducts\',\'action=updatePublish&id='.$id.'&val='.$updatePublished.'\'); window.location.reload();"></span>';
						$output .= '" id="itemlist-btn-publish"></span></a>';


				$output .= '</div>';
					/* edit */
					$output .= '<div class="itemlist-single-column itemlist-edit">';
                        $output .= '<span class="copy-btn"><a href="/admin/products/copy-product/'.$id.'/">Copy</a></span>';
                        $output .= '<span class="itemlist-btn" id="itemlist-btn-discount" onclick="toggleDiscount(\''.$id.'\');"></span>';
						//$output .= '<span class="itemlist-btn" id="itemlist-btn-popular" onclick="togglePop(\''.$id.'\');"></span>';
						$output .= '<a href="/admin/products/change-instance-order/'.$id.'/" class="itemlist-btn" id="itemlist-btn-order"></a>';
						$output .= '<a href="/admin/products/edit-product/'.$id.'/" class="itemlist-btn" id="itemlist-btn-edit"></a>';
					$output .= '</div>';
					$output .= '<div class="clear"></div>';	
				$output .= '</div>';
				
				
				/*
				//////////// edit populoar \\\\\\\\\\\\\
				$output .= '<div class="itemlist-edit-popular-row" id="poprow'.$id.'">';
					$output .= '<div class="itemlist-edit-popular-holder">';
						//form
							$output .= '<table class="edit-popular">';
								$output .= '<tr>';
									//title
									$output .= '<td><h2>Popularity</h2></td>';
									$output .= '<td>Likes: '.$numLoves.'<br />Manipulatie: '.$displaymodified.'</td>';
								$output .= '</tr>';
								$output .= '<tr>';
									$output .= '<td>Wijzig manipulatie<br /><input type="text" name="modified-'.$id.'" value="" class="txt" /></td>';
									$output .= '<td>&nbsp;<br /><input type="submit" name="update-modified" value="update" class="btn176 proceed" /></td>';
								$output .= '</tr>';
							$output .= '</table>';
					$output .= '</div>';
					$output .= '<div class="clear"></div>';
				$output .= '</div>';
				*/
				
				$output .= '<div class="itemlist-edit-popular-row" id="discountbox'.$id.'">';
					$output .= '<div class="itemlist-edit-discount-holder">';
						//form
							$output .= '<table class="edit-popular">';
								$output .= '<tr>';
									//title
									$output .= '<td colspan="2"><h2>Discount</h2></td>';
								$output .= '</tr>';
								$output .= '<tr>';
									$output .= '<td>Nieuwe (kortings)prijs<br /><input type="text" name="newdiscount-'.$id.'" value="';
									if(!empty($discountPrice)) $output .= $discountPrice;
									$output .= '" class="txt" /></td>';
									$output .= '<td>&nbsp;<br /><input type="submit" name="update-discount" value="update" class="btn176 proceed" /></td>';
								$output .= '</tr>';
								$output .= '<tr>';
									//title
									$output .= '<td colspan="2"><input type="submit" name="remove-discount" value="remove discount" class="btn176" /></td>';
								$output .= '</tr>';
							$output .= '</table>';
					$output .= '</div>';
					$output .= '<div class="clear"></div>';
				$output .= '</div>';

			}
		}
		
	$output .= '</form>';
	
	
	return $output; 
}


/*
 * Get brand list
 * Get a list of all the brands
 */
function getBrandsMenu()
{
    global $mysqli;

    // Start output
    $output = '<ul class="brand_menu">';
    $output .= '<li><a href="' . SITE_ROOT . 'products/show-brand/all">Alle merken</a></li>';

    if($result = $mysqli->query('SELECT m.id, m.title
                                 FROM merken as m, content_status as s
                                 WHERE s.active = 1
                                 AND s.itemId = m.id
                                 AND s.linkname = "merken"
                                 order by m.title ASC'))
    {
        $numCols = 3;
        $max = $result->num_rows / $numCols;
        $listLength = ceil($max);

        $key = 1;
        while($record = $result->fetch_assoc())
        {
            // new row ?
            if($key % $listLength == 0 && $key != 0)
            {
                $output .= '</ul>';
                $output .= '<ul class="brand_menu">';
            }

            // Get title
            $title = fromDatabase($record['title']);
            $id = $record['id'];

            // Add to list
            $output .= '<li';
            if(defined('URL_SUB') && URL_SUB == 'show-brand' && defined('URL_SUB2') && URL_SUB2 == $id)
            {
                $output .= ' class="active"';
            }
            $output .= '><a href="' . SITE_ROOT . 'products/show-brand/' . $id . '">' . $title . '</a></li>';

            $key++;
        }
    }
    $output .= '</ul>';
    $output .= '<div class="clear"></div>';

    return $output;
}



function showProduct(){


    /* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();

	$_SESSION['from-showproduct'] = true;

	$productId = URL_SUB2;
	if(defined('URL_SUB3')){
		$currentInstance = URL_SUB3;
	}
	else{
		$instanceQuery =  'SELECT DISTINCT id AS instanceId
						   FROM product_instances
						   WHERE productId = '.$productId.'
						   ORDER by instanceOrder DESC
						   LIMIT 1';
		if($instanceResult = $mysqli->query($instanceQuery)){ 
			$instanceRecord = $instanceResult->fetch_assoc();
			$currentInstance = $instanceRecord['instanceId'];
		}
	}
	
	// get info
	$query = 'SELECT p.id, p.catId, p.titleNL,p.descriptionNL,p.specsNL, p.isNew, p.published, p.price, p.brandId, p.timest, p.color
				  FROM product_products as p, content_status as s
				  WHERE s.active = 1
				  AND s.itemId = p.id
				  AND s.linkname = "product_products"
				  AND p.id = '.$productId.' LIMIT 1';
	if($result = $mysqli->query($query)){
		$record = $result->fetch_assoc();

		$title = fromDatabase($record['titleNL']);
		$catId = fromDatabase($record['catId']);

		$output = '';
		/* title */
		$output .= '<h1>'.$siteLabels['products-title'].' &rsaquo; '.strtolower($title).'</h1>';
		
		## buttons 
		$output .= '<form action="" name="chkForm" method="post">';
			$output .= '<div class="submenu">';
				//buttons

                $url = Url_Pin::get();


				$output .= '<a href="/' . $url .'"><span class="btn176 btn176a proceed">Product overzicht</span></a>';
				$output .= '<a href="/admin/products/edit-product/'.$productId.'/" ><span class="btn176 btn176a ">Bewerk product</span></a>';
			$output .= '</div>';
		$output .= '</form>';
	
		
		############################### SIMULATE PRODUCT VIEW ##################################
	
	
		// title \\
		$linkTitle = linkname($title);
		
		// description \\
		$description = fromDatabase($record['descriptionNL']);
		
		// specs \\
		$specs = fromDatabase($record['specsNL']);

        $color = $record['color'];

		// brand \\
		$brandId = $record['brandId'];
		$brand = '';
		if(!empty($brandId)){
			$brandResult = $mysqli->query('SELECT title FROM merken WHERE id = '.$brandId.' LIMIT 1');
			$brandRecord = $brandResult->fetch_assoc();
			$brand = fromDatabase($brandRecord['title']);
		}	
		
		// price \\
		$price = $record['price'];
		$temp = explode('.',$price);
		isset($temp[1]) ? $displayCents = str_pad($temp[1], 2, STR_PAD_LEFT) :  $displayCents = '00';
		$displayPrice = '€ '.$temp[0].','.$displayCents;

		// thumbnail \\
		$instances = array();
		$thumb = '/images/structure/noimage.jpg';
		$instanceQuery =  'SELECT DISTINCT i.id AS instanceId, m.filename_medium, i.instanceOrder
							FROM product_instances AS i, media_files AS m, content_status AS s
							WHERE m.shortcode = i.shortcode
							AND i.productId = "'.$productId.'"
							ORDER BY i.instanceOrder DESC';
		if($instanceResult = $mysqli->query($instanceQuery)){
			$i = 0;
			while($instanceRecord = $instanceResult->fetch_assoc()){
				$instances[$i]['instanceId'] = $instanceRecord['instanceId'];
				$instances[$i]['thumb'] = '/images/uploads/'.$instanceRecord['filename_medium'];
				//if there is an instance selected, set color and thumb
				if(isset($currentInstance)){
					if($currentInstance == $instances[$i]['instanceId']) $thumb = '/images/uploads/'.$instanceRecord['filename_medium'];
				}
				else{
					//else get the first color and thumb
					if($i == 0) $thumb = '/images/uploads/'.$instanceRecord['filename_medium'];
				}
				$i++;
				
			}
		}
		
		/* left column */
		$output .= '<div class="product-page-left-column">';
			
			/* title */
			$output .= '<div class="product-page-title-holder">';
				$output .= '<span class="product-page-title">'.strtolower($title).'</span>';
				$output .= '<span class="product-page-brand">'.strtolower($brand).'</span>';
			$output .= '</div>';
			
			/* image */
			$output .= '<div class="product-page-medium-image">';
				$output .= '<img src="'.$thumb.'" alt="Deense Kroon sieraad genaamd '.$title.'" width="312"/>';
				$output .= '<div class="product-page-colorbar" id="large-color-bar"></div>';
				$output .= '<script type="text/javascript">colorBar(\'large-color-bar\',\''.$color.'\');</script>';
			$output .= '</div>';
			
			/* thumbnails */
			/* start first row */
			$output .= '<div class="product-smallthumb-row">';
				////// dummy //////
				foreach($instances as $key => $value){
					$output .= '<div class="product-smallthumb-holder ';
						if(!(($key+1) % 4) ) $output .= ' no-margin';
					$output .='">';
						$output .= '<div class="product-smallthumb-image">
										<a href="/admin/products/show-product/'.$productId.'/'.$instances[$key]['instanceId'].'/">
											<img src="'.$instances[$key]['thumb'].'" alt="Deense Kroon sieraad genaamd '.$title.' / instantie '.$instances[$key]['instanceId'].'" width="72"/>
										</a>
									</div>';
					$output .= '</div>';
					if(!(($key+1) % 4) && ($key+1) != 8 )  $output .= '</div><div class="product-smallthumb-row">'; ;		
				}
				$output .= '<div class="clear"></div>';
			/* end row */
			$output .= '</div>';
			$output .= '<div class="clear"></div>';
		$output .= '</div>';
		
		/* middle column */
		$output .= '<div class="product-page-middle-column">';
			/* product color */
			$output .= '<span class="product-page-productcolor" id="small-product-color"></span>';
			$output .= '<script type="text/javascript">colorBar(\'small-product-color\',\''.$color.'\');</script>';
			
			/* product price */
			$output .= '<span class="product-page-priceholder">';
				// todo - if(discount) original price
				$output .= '<span class="product-page-oldprice">&nbsp;</span>';
				//current price
				$output .= '<span class="product-page-currentprice">'.$displayPrice.'</span>';
			$output .= '</span>';
			
			/* description */
			$output .= '<span class="product-page-description">';
				////// dummy //////
				$output .= $description;
			$output .= '</span>';
			
		$output .= '</div>';
		
		/* right column */
		$output .= '<div class="product-page-right-column">';
			$output .= '<div class="product-page-specs">';
				/* spec title */
				$output .= '<strong>Specificaties</strong><br /><br />';
				/* in stock? */
				if(categoryHasSize($catId))
				{
					$available = 0;
					if($sizes = checkAvailableSizes($productId))
					{
						if(count($sizes) > 0)
						{
							$available = 1;
						}
					}
				}
				else
				{
					$available = checkAvailableInStock($productId);
				}
				if($available > 0) $output .= '<span class="product-page-instock">Op vooraad</span><br /><br />';
				if($available <= 0) $output .= '<span class="product-page-notinstock">Uitverkocht</span><br /><br />';
				/* specs */
				$output .= $specs;
			
				$output .= '<span class="product-page-num-cart-message"></span>';
				$output .= '<span class="product-page-add-to-cart-row">';
				$output .= '</span>';
			$output .= '</div>';
			$output .= '<div class="clear"></div>';
		$output .= '</div>';	
			$output .= '<div class="clear"></div>';
		$output .= '<hr class="margin-bottom-40" />';
		########################################################################################
		
		return $output;
	
	}
}

function showFormAddEditProduct($method){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();	
	
	//set up session
	if( ! isset($_SESSION['addedit-product'])){
		$_SESSION['addedit-product']['title-nl'] = '';
		$_SESSION['addedit-product']['title-en'] = '';
		$_SESSION['addedit-product']['title-de'] = '';
		$_SESSION['addedit-product']['title-fr'] = '';
		$_SESSION['addedit-product']['description-nl'] = '';
		$_SESSION['addedit-product']['description-en'] = '';
		$_SESSION['addedit-product']['description-de'] = '';
		$_SESSION['addedit-product']['description-fr'] = '';
		$_SESSION['addedit-product']['specs-nl'] = '';
		$_SESSION['addedit-product']['specs-en'] = '';
		$_SESSION['addedit-product']['specs-de'] = '';
		$_SESSION['addedit-product']['specs-fr'] = '';
		$_SESSION['addedit-product']['price'] = '';
		$_SESSION['addedit-product']['category'] = '';
		$_SESSION['addedit-product']['miintoCategoryId'] = '';
		$_SESSION['addedit-product']['googleCategoryId'] = '';
		$_SESSION['addedit-product']['brand'] = '';
		$_SESSION['addedit-product']['tags'] = array();
		$_SESSION['addedit-product']['shortcodes'] = array();
		$_SESSION['addedit-product']['stockcodes'] = array();

        $_SESSION['addedit-product']['purchase'] = '';

        $_SESSION['addedit-product']['isNew'] = '';
        $_SESSION['addedit-product']['isExtraLeuk'] = '';
        $_SESSION['addedit-product']['stockCode'] = '';

        $_SESSION['addedit-product']['thumb'] = '';
        $_SESSION['addedit-product']['hover'] = '';

		$_SESSION['addedit-product']['sizes'] = array();
		$_SESSION['addedit-product']['ean'] = '';
		$_SESSION['addedit-product']['inStock'] = '';

	}
	
	/* if edit, fill session with current values */
	if($method == 'edit' || $method == 'copy')
	{
		$editId = URL_SUB2;
		//input fields
		$query = 'SELECT titleNL, titleEN, titleDE, titleFR,
				         descriptionNL, descriptionEN, descriptionDE, descriptionFR,
				         specsNL, specsEN, specsDE, specsFR,
				         price, catId, miintoCategoryId, googleCategoryId, brandId, isNew, isExtraLeuk,
				         stockCode, color, thumb, hover, purchase
				  FROM product_products
				  WHERE id = "'.$editId.'" LIMIT 1';
		if($result = $mysqli->query($query)){
			$record = $result->fetch_assoc();
			//fill input fields
			$_SESSION['addedit-product']['title-nl'] = $record['titleNL'];
			$_SESSION['addedit-product']['title-en'] = $record['titleEN'];
			$_SESSION['addedit-product']['title-de'] = $record['titleDE'];
			$_SESSION['addedit-product']['title-fr'] = $record['titleFR'];
			$_SESSION['addedit-product']['description-nl'] = $record['descriptionNL'];
			$_SESSION['addedit-product']['description-en'] = $record['descriptionEN'];
			$_SESSION['addedit-product']['description-de'] = $record['descriptionDE'];
			$_SESSION['addedit-product']['description-fr'] = $record['descriptionFR'];
			$_SESSION['addedit-product']['specs-nl'] =  $record['specsNL'];
			$_SESSION['addedit-product']['specs-en'] = $record['specsEN'];
			$_SESSION['addedit-product']['specs-de'] = $record['specsDE'];
			$_SESSION['addedit-product']['specs-fr'] = $record['specsFR'];
			$_SESSION['addedit-product']['price'] =  $record['price'];
			$_SESSION['addedit-product']['category'] = $record['catId'];
			$_SESSION['addedit-product']['miintoCategoryId'] = $record['miintoCategoryId'];
			$_SESSION['addedit-product']['googleCategoryId'] = $record['googleCategoryId'];

            $_SESSION['addedit-product']['brand'] = $record['brandId'];

            $_SESSION['addedit-product']['purchase'] = $record['purchase'];

            $_SESSION['addedit-product']['isNew'] = $record['isNew'];
            $_SESSION['addedit-product']['isExtraLeuk'] = $record['isExtraLeuk'];
            $_SESSION['addedit-product']['stockCode'] = $record['stockCode'];
            $_SESSION['addedit-product']['color'] = $record['color'];

            $_SESSION['addedit-product']['thumb'] = $record['thumb'];
            $_SESSION['addedit-product']['hover'] = $record['hover'];
        }
		//fill shortcodes
		$shortcodeQuery = 'SELECT DISTINCT m.id AS mediaId, i.instanceOrder, i.color, i.shortcode
				  FROM product_instances AS i, media_files AS m
				  WHERE m.shortcode = i.shortcode
				  AND i.productId = "'.$editId.'"
				  ORDER BY i.instanceOrder DESC';
		if($shortcodeResult = $mysqli->query($shortcodeQuery)){
			while($shortcodeRecord = $shortcodeResult->fetch_assoc()){
				$mediaId = $shortcodeRecord['mediaId'];
				$_SESSION['addedit-product']['shortcodes'][$mediaId] = $shortcodeRecord['shortcode'];
				//$_SESSION['addedit-product']['color'][$mediaId] = $shortcodeRecord['color'];
				//echo $mediaId .': '.$shortcodeRecord['stockCode'].'<br />';
			}
		}
		//fill tags
		if($searchtagResult = $mysqli->query('SELECT id, searchtag
											  FROM product_searchtags
											  WHERE productId = "'.$editId.'"
											  ORDER BY timest DESC')){
			while($searchtagRecord = $searchtagResult->fetch_assoc()){
				$searchtagId = $searchtagRecord['id'];
				$searchtag = $searchtagRecord['searchtag'];
				$_SESSION['addedit-product']['tags'][$searchtagId] = $searchtag;
			}
		}

        // Fill Sizes and EAN-code for categories with sizes
        if( categoryHasSize($_SESSION['addedit-product']['category']) )
        {
            if($sizeResult = $mysqli->query('SELECT DISTINCT id, size, ean, inStock
											 FROM shop_stock
											 WHERE productId = "'.$editId.'"
											 ORDER BY id ASC'))
			{
                while($sizeRecord = $sizeResult->fetch_assoc())
				{
					$size = $sizeRecord['size'];
					$_SESSION['addedit-product']['sizes'][$size]['size'] = $sizeRecord['size'];
					$_SESSION['addedit-product']['sizes'][$size]['ean'] = $sizeRecord['ean'];
					$_SESSION['addedit-product']['sizes'][$size]['stock'] = $sizeRecord['inStock'];
                }
            }
        }
        else{
            if($sizeResult = $mysqli->query('SELECT DISTINCT ean, inStock
											 FROM shop_stock
											 WHERE productId = "'.$editId.'"
											 LIMIT 1')){
                $sizeRecord = $sizeResult->fetch_assoc();
                $_SESSION['addedit-product']['ean'] = $sizeRecord['ean'];
				$_SESSION['addedit-product']['inStock'] = $sizeRecord['inStock'];
			}
        }
    }
	/////// end fill session with values //////
	$output = '';

	$output .= '<h1>'.$siteLabels['products-title'].' &rsaquo; ';
	if($method == 'add') $output .= $siteLabels['products-addproduct'].'</h1>';
	if($method == 'edit') $output .= $siteLabels['products-editproduct'].'</h1>';
    if($method == 'copy') $output .= 'copy</h1>';

    /**** S T A R T   F O R M   ****/
	$output .= '<form action="" method="post">';
		//left top column
		$output .= '<h2>'.$siteLabels['products-formaddproduct-information'].'</h2>';
		
		$output .= '<div class="single-column addproduct-lefttop">';	

			// Title (NL)
			$output .= $siteLabels['products-formaddproduct-title-nl'].' *<br />';
			$output .= '<input type="text" name="product-title-nl" value="'.$_SESSION['addedit-product']['title-nl'].'" class="txt" />';

			// Title (DE)
			$output .= $siteLabels['products-formaddproduct-title-de'].'<br />';
			$output .= '<input type="text" name="product-title-de" value="'.$_SESSION['addedit-product']['title-de'].'" class="txt" />';

			// Category
			$output .= $siteLabels['products-formaddproduct-category'].'<br />';
			$output .= '<select name="product-category" id="product-category">';
				$output .= '<option value="0">uncategorized</option>';

				// Display categories
				$categoryRepository = new \App\Categories\CategoryRepository();
				$categories = $categoryRepository->categoriesForTree(null,null,1);
				foreach($categories as $category)
				{
					if(empty($category->route_nl)) continue;
					$output .= '<option value="'.$category->id.'"';
					if($category->id == $_SESSION['addedit-product']['category']) $output .= ' selected';
					$output .= '>'.$category->route_nl.'</option>';
				}

				/*$query = 'SELECT c.id, c.category
					      FROM product_categories as c, content_status as s
						  WHERE s.active = 1
						  AND s.itemId = c.id
						  AND s.linkname = "product_categories"
						  ORDER BY category';
				if(!$result = $mysqli->query($query)){
					//handle errors
					$errors[] = $siteLabels['fm-somethingwentwrong'];
					displayErrors($errors);
				}
				else{
					//display output
                    while($record = $result->fetch_assoc()){
                        $catId = $record['id'];
                        $category = $record['category'];
                        $output .= '<option value="'.$catId.'"';
                        if($catId == $_SESSION['addedit-product']['category']) $output .= ' selected';
                        $output .= '>'.$category.'</option>';
                    }
				}*/
			$output .= '</select>';

            // Miinto category id
            $output .= 'MiintoCategoryId (<a href="http://www.miinto.nl/scripts/category-tree.php" target="_blank">toon tabel</a>)<br />';
            $output .= '<input type="text" name="miintoCategoryId" value="'.$_SESSION['addedit-product']['miintoCategoryId'].'" class="txt" />';

		$output .= '</div>';

		// New column
		$output .= '<div class="single-column addproduct-lefttop">';	

			// Title (EN)
			$output .= $siteLabels['products-formaddproduct-title-en'].' *<br />';
			$output .= '<input type="text" name="product-title-en" value="'.$_SESSION['addedit-product']['title-en'].'" class="txt" />';

			// Title (FR)
			$output .= $siteLabels['products-formaddproduct-title-fr'].'<br />';
			$output .= '<input type="text" name="product-title-fr" value="'.$_SESSION['addedit-product']['title-fr'].'" class="txt" />';

			// Price
			$output .= $siteLabels['products-formaddproduct-price'].' *<br />';
			$output .= '<input type="text" name="product-price" value="'.$_SESSION['addedit-product']['price'].'" class="txt" />';

			// Knijter category id
			$output .= 'Knijter category id (<a href="http://www.google.com/basepages/producttype/taxonomy-with-ids.nl-NL.xls" target="_blank">toon tabel</a>)<br />';
			$output .= '<input type="text" name="googleCategoryId" value="'.$_SESSION['addedit-product']['googleCategoryId'].'" class="txt" />';


		$output .= '</div>';

		// New column
		$output .= '<div class="single-column addproduct-lefttop">';	

			// Brand
			$output .= $siteLabels['products-formaddproduct-brand'].' *<br />';

			$output .= '<select name="product-brand">';
				/* display brands */
				$query = 'SELECT id,title
							FROM merken
							ORDER BY title';
				if(!$result = $mysqli->query($query)){
					//handle errors
					$errors[] = $siteLabels['fm-somethingwentwrong'];
					displayErrors($errors);
				}
				else{
					//display output
                    while($record = $result->fetch_assoc()){
                        $brandId = $record['id'];
                        $brand = $record['title'];
                        $output .= '<option value="'.$brandId.'"';
                        if($brandId == $_SESSION['addedit-product']['brand']) $output .= ' selected';
                        $output .= '>'.$brand.'</option>';
                    }
				}
			$output .= '</select>';

            $output .= $siteLabels['products-formaddproduct-stockCode'].' *<br />';
            $output .= '<input type="text" name="product-stockCode" value="'.$_SESSION['addedit-product']['stockCode'].'" class="txt" />';

            $output .= 'Inkoopprijs<br />';
            $output .= '<input type="text" name="product-purchase" value="'.$_SESSION['addedit-product']['purchase'].'" class="txt" />';


			// In stock (hide if category has size)
			$output .= '<div class="hide_when_size"';
			if( categoryHasSize($_SESSION['addedit-product']['category']) ) $output .= ' style="display:none"';
			$output .= '>';

			$output .= 'Op voorraad<br />';
			$output .= '<input type="text" name="inStock" value="'.$_SESSION['addedit-product']['inStock'].'" class="txt" />';
			$output .= '</div>';
    	$output .= '</div>';

		// New column
        $output .= '<div class="single-column addproduct-lefttop">';
            $output .= '<br />
                        <input type="checkbox" name="isNew" value="1" id="isNew" ';
                        if(isset($_SESSION['addedit-product']['isNew']) && $_SESSION['addedit-product']['isNew'] == 1) $output .= ' checked';
            $output .= '/><label for="isNew">New</label>&nbsp;&nbsp;&nbsp;
						<input type="checkbox" name="isExtraLeuk" value="1"  id="isExtraLeuk" ';
                        if(isset($_SESSION['addedit-product']['isExtraLeuk']) && $_SESSION['addedit-product']['isExtraLeuk'] == 1) $output .= ' checked';
            $output .= '/> <label for="isExtraLeuk">Actie</label><br /><br />';

            isset($_SESSION['addedit-product']['color']) ? $color = $_SESSION['addedit-product']['color'] : $color = $_SESSION['addedit-product']['color'] = 'ffffff';
            $output .= 'Color *<br />';
            $output .= '<input type="text" name="product-color" id="product-color" value="" class="txt color" />';
            $output .= '<script type="text/javascript">
                        var myPicker = new jscolor.color(document.getElementById("product-color"), {})
                            myPicker.fromString("'.$color.'")
                        </script>';

			// In stock (hide if category has size)
			$output .= '<div class="hide_when_size"';
			if( categoryHasSize($_SESSION['addedit-product']['category']) ) $output .= ' style="display:none"';
			$output .= '>';
				$output .= 'EAN Code<br />';
				$output .= '<input type="text" name="product-ean" value="'.$_SESSION['addedit-product']['ean'].'" class="txt" />';
			$output .= '</div>';

        $output .= '</div>';
		$output .= '<div class="clear"></div>';


        /*
         * Category with size extension
         * When user selects a category that has sizes in dropdown, this form slides open
         */

        $output .= '<div id="sizes_box"';
        if(categoryHasSize($_SESSION['addedit-product']['category'])) $output .= ' style="display:block"';
        $output .= '>';

	        $output .= '<span class="title">Maten</span>';
            $output .= '<ul class="rows">';

			// Add default three empty rows
			$productSizes = [];
			for($i=0;$i<3;$i++)
			{
				$productSizes[] = [
					'size'=>'',
					'ean'=>'',
					'stock'=>''];
			}
            if( ! empty($_SESSION['addedit-product']['sizes'])) $productSizes = $_SESSION['addedit-product']['sizes'];

			// Create fields from array
			foreach($productSizes as $productSize)
			{
				$output .= '<li>
								<label>Maat:</label><input type="text" name="sizes[]" value="' . $productSize['size'] . '" class="txt" />
								<label>Op voorraad:</label><input type="text" name="size_in_stock[]" value="' . $productSize['stock'] . '" class="txt" />
								<label>EAN:</label><input type="text" name="size_ean[]" value="' . $productSize['ean'] . '" class="txt long" />
								<span class="delete">Verwijder deze maat</span>
								<div class="clear"></div>
							</li>';
			}

            $output .= '</ul>';
            $output .= '<div class="actions">
                            <span id="add_size">Voeg nieuwe maat toe</span>
                        </div>';
        $output .= '</div>';
        $output .= '<div class="clear"></div>';
        /*
         * End Clothing extension
         */

    //description middle top column
		$output .= '<div class="double-column">';
	
/* Product description (NL) */
			$output .= $siteLabels['products-formaddproduct-description-nl'].' *<br />';
			$output .= '<textarea id="product-description-nl" name="product-description-nl" class="tinymce">'.$_SESSION['addedit-product']['description-nl'].'</textarea>';
/* Product specifications (NL) */	
			$output .= $siteLabels['products-formaddproduct-specs-nl'].' *<br />';
			$output .= '<textarea id="product-specs-nl" name="product-specs-nl" class="tinymce">'.$_SESSION['addedit-product']['specs-nl'].'</textarea>';		
			
		$output .= '</div>';
			//specs right top column
		$output .= '<div class="double-column">';
		
/* Product description (EN) */
			$output .= $siteLabels['products-formaddproduct-description-en'].' *<br />';
			$output .= '<textarea id="product-description-en" name="product-description-en" class="tinymce">'.$_SESSION['addedit-product']['description-en'].'</textarea>';
/* Product specifications (EN) */	
			$output .= $siteLabels['products-formaddproduct-specs-en'].' *<br />';
			$output .= '<textarea id="product-specs-en" name="product-specs-en" class="tinymce">'.$_SESSION['addedit-product']['specs-en'].'</textarea>';		
		
		$output .= '</div>';
		$output .= '<div class="clear"></div>';
			$output .= '<div class="double-column">';
	
/* Product description (DE) */
			$output .= $siteLabels['products-formaddproduct-description-de'].'<br />';
			$output .= '<textarea id="product-description-de" name="product-description-de" class="tinymce">'.$_SESSION['addedit-product']['description-de'].'</textarea>';
/* Product specifications (DE) */	
			$output .= $siteLabels['products-formaddproduct-specs-de'].'<br />';
			$output .= '<textarea id="product-specs-de" name="product-specs-de" class="tinymce">'.$_SESSION['addedit-product']['specs-de'].'</textarea>';		
			
		$output .= '</div>';
			//specs right top column
		$output .= '<div class="double-column">';
		
/* Product description (FR) */
			$output .= $siteLabels['products-formaddproduct-description-fr'].'<br />';
			$output .= '<textarea id="product-description-fr" name="product-description-fr" class="tinymce">'.$_SESSION['addedit-product']['description-fr'].'</textarea>';
/* Product specifications (FR) */	
			$output .= $siteLabels['products-formaddproduct-specs-fr'].'<br />';
			$output .= '<textarea id="product-specs-fr" name="product-specs-fr" class="tinymce">'.$_SESSION['addedit-product']['specs-fr'].'</textarea>';		
		
		$output .= '</div>';
		$output .= '<div class="clear"></div>';
		
/* search tags */		
		$output .= 'Searchtags (comma-seperated) <br />';
		$output .= '<input type="text" name="search-tags" value="" class="tagstxt" />';
		
		$output .= '<div class="triple-column" id="search-tags-holder">';
			foreach($_SESSION['addedit-product']['tags'] as $key => $value){
				$output .= '<span class="tagBox"><span class="tagBox-delete" onClick="getPage(\'search-tags-holder\',\'js_updateTagsSession\',\'action=remove&sessionname=addedit-product&key='.$key.'\');">&times;</span>'.$value.'</span>';
			}	
		$output .= '</div>';
		$output .= '<div class="clear"></div>';
		//horizantal rule
		$output .= '<hr />';
		$output .= '<div class="double-column">';
			$output .= '<h2>'.$siteLabels['products-formaddproduct-images'].'</h2>';
/* Library help */
		//	$output .= '<span class="media-help">Find your image in the media library. Click on an image to insert it in a field. The code that appears stands for the image.</span>';
/* image */
			$output .= '<div class="double-column" id="form-images-holder">';			
				//javascript call goes here
			$output .= '</div>';
			$output .= '<script type="text/javascript">getPage("form-images-holder","js_media","action=showSessionImages&update=0&sessionname=addedit-product");</script>';
			
			//clear float
			$output .= '<div class="clear"></div>';	
		$output .= '</div>';
		$output .= '<div class="triple-column">';
/* media lib */
			$output .= '<h2>Media library</h2>';
			$output .= '<div class="triple-column" id="lib-holder">';
				//javascript call goes here
			$output .= '</div>';
			$output .= '<script type="text/javascript">getPage("lib-holder","js_media","sessionname=addedit-product");</script>';
		$output .= '</div>';
		$output .= '<div class="clear"></div>';
		$output .= '<hr />';
		$output .= '<div class="double-column">';
			if($method == 'add')  $output .= '<input type="submit" name="sbm-add-product" value="'.$siteLabels['products-addproduct'].'" class="btn176 proceed"/>';
			if($method == 'edit' || $method == 'copy') $output .= '<input type="hidden" name="editId" value="'.$editId.'"/>';
			if($method == 'edit') $output .= '<input type="submit" name="sbm-edit-product" value="'.$siteLabels['products-editproduct'].'" class="btn176 proceed"/>';
            if($method == 'copy') $output .= '<input type="submit" name="sbm-copy-product" value="'.$siteLabels['products-addproduct'].'" class="btn176 proceed"/>';

			if($method == 'add') $output .= '<input type="hidden" name="location" value="../"/>';
			if($method == 'edit' || $method == 'copy') $output .= '<input type="hidden" name="location" value="../../"/>';
			$output .= '<input type="submit" name="back" value="'.$siteLabels['form-cancel'].'" class="btn176"/>';
		$output .= '</div>';
		$output .= '<div class="clear"></div>';

		//info
		$output .= '<table>';
			$output .= '<tr>';
				//required
				$output .= '<td class="short">*</td><td class="long"><em>'.$siteLabels['form-required'].'</em></td>';
			$output .= '</tr>';
		$output .= '<table>';
	$output .= '</form>';
	
	return $output;
}

function validateAddEditProduct($method){

	$routeService = new App\Routes\RouteService();
	$routeRepo = new App\Routes\RoutesRepository();

	/* prevend double products with reloading page (session has just been deleted)*/
	if(isset($_SESSION['addedit-product']['title-nl'])){

		/* access the global sql object */
		global $mysqli;	
		/* language */
		$siteLabels = getLanguage();
		/* ******************* */
		/* validate add product */
			#1 get input
			#2 empty input ?
			#3 update session tags ?
			#4 return to dashboard
		/* ******************* */
		#1 get input & add to session
		$titleNL = $_SESSION['addedit-product']['title-nl'] = $_POST['product-title-nl'];
		$titleEN = $_SESSION['addedit-product']['title-en'] = $_POST['product-title-en'];
		$titleDE = $_SESSION['addedit-product']['title-de'] = $_POST['product-title-de'];
		$titleFR = $_SESSION['addedit-product']['title-fr'] = $_POST['product-title-fr'];
		$descriptionNL = $_SESSION['addedit-product']['description-nl'] = $_POST['product-description-nl'];
		$descriptionEN = $_SESSION['addedit-product']['description-en'] = $_POST['product-description-en'];
		$descriptionDE = $_SESSION['addedit-product']['description-de'] = $_POST['product-description-de'];
		$descriptionFR = $_SESSION['addedit-product']['description-fr'] = $_POST['product-description-fr'];
		$specsNL = $_SESSION['addedit-product']['specs-nl'] = $_POST['product-specs-nl'];
		$specsEN = $_SESSION['addedit-product']['specs-en'] = $_POST['product-specs-en'];
		$specsDE = $_SESSION['addedit-product']['specs-de'] = $_POST['product-specs-de'];
		$specsFR = $_SESSION['addedit-product']['specs-fr'] = $_POST['product-specs-fr'];
		$category = $_SESSION['addedit-product']['category'] = $_POST['product-category'];
		$miintoCategoryId = $_SESSION['addedit-product']['miintoCategoryId'] = $_POST['miintoCategoryId'];
		$googleCategoryId = $_SESSION['addedit-product']['googleCategoryId'] = $_POST['googleCategoryId'];
        $brandId = $_SESSION['addedit-product']['brand'] = $_POST['product-brand'];

        $ean = $_SESSION['addedit-product']['ean'] = $_POST['product-ean'];
        $purchase = $_SESSION['addedit-product']['purchase'] = $_POST['product-purchase'];
        $price = $_SESSION['addedit-product']['price'] = $_POST['product-price'];

        $stockCode = $_SESSION['addedit-product']['stockCode'] = $_POST['product-stockCode'];
        $color = $_SESSION['addedit-product']['color'] = $_POST['product-color'];
        $inStock = $_SESSION['addedit-product']['inStock'] = $_POST['inStock'];


        #new ?
        isset($_POST['isNew']) ? $isNew = $_SESSION['addedit-product']['isNew'] = 1 : $isNew = $_SESSION['addedit-product']['isNew'] = 0;

        #extra leuk?
        isset($_POST['isExtraLeuk']) ? $isExtraLeuk = $_SESSION['addedit-product']['isExtraLeuk'] = 1 : $isExtraLeuk = $_SESSION['addedit-product']['isExtraLeuk'] = 0;


        // Are there sizes ?
        if(isset($_POST['sizes']) && categoryHasSize($category) )
        {
            // clear session
            unset($_SESSION['addedit-product']['sizes']);
			$eanInThisSession = array();
            foreach($_POST['sizes'] as $key => $size)
            {
                // Aantal op voorraad
                $sizeStock = $_POST['size_in_stock'][$key];
				$sizeEan = $_POST['size_ean'][$key];

				/*if(in_array($sizeEan,$eanInThisSession))
				{
					$errors[] = 'EAN-code &lsquo;' .$sizeEan . '&rsquo; bestaat al in dit product.';
				}*/

                // Kijk of het veld niet leeg is
                if( ! empty($size))
                {
                    // Sla de maat en aantal op in een sessie.
					$_SESSION['addedit-product']['sizes'][$size]['size'] = $size;
					$_SESSION['addedit-product']['sizes'][$size]['ean'] = $sizeEan;
					$_SESSION['addedit-product']['sizes'][$size]['stock'] = $sizeStock;

					$eanInThisSession[] = $sizeEan;
				}
 				/*
				// Ean in size unique?
				$eanQuery = 'SELECT ean
						 FROM shop_stock
						 WHERE ean = "' . $sizeEan . '"';
				if($method == 'edit') $eanQuery .= ' AND productId != ' . $_POST['editId'];
				$eanQuery .= ' LIMIT 1';

				if ($eanResult = $mysqli->query($eanQuery)) {
					if ($eanResult->num_rows > 0) {
						$errors[] = 'De ingevoerde EAN-code bestaat al. (kan een product in de prullenbak zijn)';
					}
				}*/

            }
        }
		else{
			/*
			// Ean without size unique?
			$eanQuery = 'SELECT ean
						 FROM shop_stock
						 WHERE ean = "' . $ean . '"';
			if($method == 'edit') $eanQuery .= ' AND productId != ' . $_POST['editId'];
			$eanQuery .= ' LIMIT 1';

			if ($eanResult = $mysqli->query($eanQuery)) {
				if ($eanResult->num_rows > 0) {
					$errors[] = 'De ingevoerde EAN-code bestaat al. (kan een product in de prullenbak zijn)';
				}
			}
			*/
		}


        #2 empty input ?
		if(empty($titleNL) || empty($titleEN) || empty($descriptionNL) || empty($descriptionEN) || empty($specsNL) || empty($specsEN) || empty($price) || empty($stockCode)){
			//feedback fill in required fields	
			$errors[] = $siteLabels['fm-emptyrequiredfields'];
		}
		#3 update session tags ?
		$tagsInput = $_POST['search-tags'];
		if(!empty($tagsInput)){
			$arr = explode(',',$tagsInput);	
			foreach($arr as $key => $value){
				if(!empty($value) && !existInArray($value,$_SESSION['addedit-product']['tags'])){
					$_SESSION['addedit-product']['tags'][] = $value;
				}
			}
		}

		#4 valid price ?
		$prices = array('price' => $price, 'purchase' => $purchase);
        foreach($prices as $name => $pr)
        {
			if( ! empty($pr))
			{
				$forbidden = array('!','@','#','$','%','^','&','*','(',')','-','+','=','_','{','}','[',']',':',';','"','\'','<','>','?','/');
				foreach($forbidden as $i => $val){
					$pr=str_replace($val,'',$pr);   //replaces "," with "."
				}
				if(!empty($pr)){
					$pr=str_replace(',','.',$pr);   //replaces "," with "."
					$pr=str_replace('€','',$pr);   //replaces "," with "."
					$pr = trim($pr);
					$pr = $_SESSION['addedit-product'][$name] = number_format($pr, 2, '.', '');
					$pricecheckpattern	= "#^[0-9]{1,3}\.[0-9]{2}$#";
					if (preg_match($pricecheckpattern,$pr)==0){
						$errors[] = 'Er is een prijs niet correct ingevuld.';
					}
				}
			}
			else
			{
				$_SESSION['addedit-product'][$name] = 'NULL';
			}
        }
        $purchase = $_SESSION['addedit-product']['purchase'];
        $price = $_SESSION['addedit-product']['price'];

		// Route unique??
		// Create route
		/*$route = $routeService->createProductRoute($titleNL,$titleEN, $category);
		if($method == 'edit')
		{
			$editId = $_POST['editId'];
			if( ! $routeRepo->unique($route,$editId,'product'))
			{
				$errors[] = 'De route (nl of en) is niet uniek, kies een andere titel';
			}
		}
		else
		{
			if( ! $routeRepo->unique($route))
			{
				$errors[] = 'De route (nl of en) is niet uniek, kies een andere titel';
			}
		}*/

		// VALID ?
		if(isset($errors)){
			displayErrors($errors);
			return showFormAddEditProduct($method);
		}
		else{
			//prepare for database
			$dbTitleNL = inDatabase($titleNL);
			$dbTitleEN = inDatabase($titleEN);
			$dbTitleDE = inDatabase($titleDE);
			$dbTitleFR = inDatabase($titleFR);
			$dbDescriptionNL = inDatabase($descriptionNL);
			$dbDescriptionEN = inDatabase($descriptionEN);
			$dbDescriptionDE = inDatabase($descriptionDE);
			$dbDescriptionFR = inDatabase($descriptionFR);
			$dbSpecsNL = inDatabase($specsNL);
			$dbSpecsEN = inDatabase($specsEN);
			$dbSpecsDE = inDatabase($specsDE);
			$dbSpecsFR = inDatabase($specsFR);
            $dbStockCode = inDatabase($stockCode);
            $dbInStock = inDatabase($inStock);

            $dbEan = inDatabase($ean);

            $miintoCategoryId = inDatabase($miintoCategoryId);
            if(empty($miintoCategoryId)) $miintoCategoryId = 'NULL';


            $googleCategoryId = inDatabase($googleCategoryId);
            if(empty($googleCategoryId)) $googleCategoryId = 'NULL';


            /* MANAGE DATABASE "ADD" */
			
			if($method == 'add' || $method == 'copy'){
				#1 check for Product Order
				$productOrder = 1;
				$orderQuery = 'SELECT productOrder FROM product_products ORDER BY productOrder DESC LIMIT 1';
				if($orderResult = $mysqli->query($orderQuery)){
					if($orderResult->num_rows > 0){
						$orderRecord = $orderResult->fetch_assoc();
						$latestOrder = $orderRecord['productOrder'];
						$productOrder = $latestOrder+1;	
					}
				}
				#2 product query

                // check for thumb and hover image
                $thumb = $hover = null;
                if(isset($_POST['setThumb'])) $thumb = $_POST['setThumb'];
                if(isset($_POST['setHover'])) $hover = $_POST['setHover'];

				$query = 'INSERT INTO product_products(titleNL, titleEN, titleDE, titleFR,
									  descriptionNL, descriptionEN, descriptionDE, descriptionFR,
									  specsNL, specsEN, specsDE, specsFR,
									  price, catId, miintoCategoryId, googleCategoryId, brandId, stockCode, color, isNew, isExtraLeuk,
									  productOrder, timest, thumb, hover, purchase)
						  VALUES("'.$dbTitleNL.'","'.$dbTitleEN.'","'.$dbTitleDE.'","'.$dbTitleFR.'",
								 "'.$dbDescriptionNL.'","'.$dbDescriptionEN.'","'.$dbDescriptionDE.'","'.$dbDescriptionFR.'",
								 "'.$dbSpecsNL.'","'.$dbSpecsEN.'","'.$dbSpecsDE.'","'.$dbSpecsFR.'",
								 '.$price.','.$category.','.$miintoCategoryId.','.$googleCategoryId.', '.$brandId.',"'.$dbStockCode.'","'.$color.'","'.$isNew.'","'.$isExtraLeuk.'",
								 '.$productOrder.','.time().',"'.$thumb.'","'.$hover.'", ' . $purchase . ')';


				if(!$result = $mysqli->query($query)){
					//handle errors
					$errors[] = $siteLabels['fm-somethingwentwrong'].$mysqli->error . '<br />' . $query;
					displayErrors($errors);
					return showFormAddEditProduct($method);
				}
				else{
					//get product Id 
					$productId = $mysqli->insert_id;
					
					//product succesfully added so add a status
					$mysqli->query('INSERT INTO content_status ( linkname, itemId, active, timest) VALUES("product_products","'.$productId.'","1",'.time().')');

					// Store route
					$route = $routeService->createProductRoute($productId, $titleNL,$titleEN, $category);
					$routeRepo->store($route,$productId,'product');

					/*
						now we have to create a product for the instances
						Productcode = "BRANDCODE(2)" + "BRANDCODE(3)" + "PRODUCTID(3)" + "ID(3)" 
						
					*/
					
					//get brandCode
					$brandCode = 'XX';
					if($brandResult = $mysqli->query('SELECT title, brandCode FROM merken WHERE id = '.$brandId.' LIMIT 1')){
						$brandRecord = $brandResult->fetch_assoc();
						$brandCode = substr($brandRecord['brandCode'],0,2);
					}
					
					$catCode = str_pad($category, 3, '0', STR_PAD_LEFT);
					$productCode = str_pad($productId, 3, '0', STR_PAD_LEFT);
					
					$instance_prefix = $brandCode.$catCode.$productCode;
					$newInstanceId = 1;
					
                    #5 check for instanceOrder
                    $instanceOrder = 1;
                    $allinstanceOrder = 1;
                    $orderQuery = 'SELECT allinstanceOrder FROM product_instances ORDER BY allinstanceOrder DESC LIMIT 1';
                    if(!$orderResult = $mysqli->query($orderQuery)){
                        //handle errors
                    }
                    else{
                        if($orderResult->num_rows > 0){
                            $orderRecord = $orderResult->fetch_assoc();
                            $latestOrder = $orderRecord['allinstanceOrder'];
                            $allinstanceOrder = $latestOrder+1;
                        }
                    }

                    $addInstanceId = str_pad($newInstanceId, 3, '0', STR_PAD_LEFT);
                    $instanceCode  = $instance_prefix.$addInstanceId;
                    /* Prepare Queries */



                        #5 instances queries
                    if(isset($_SESSION['addedit-product']['shortcodes'])){
                        foreach($_SESSION['addedit-product']['shortcodes'] as $i => $shortcode){
                            $queries[] = 'INSERT INTO product_instances(instanceCode, productId, shortcode, instanceOrder, allinstanceOrder)
                                          VALUES("'.$instanceCode.'",'.$productId.',"'.$shortcode.'",'.$instanceOrder.','.$allinstanceOrder.')';
                            $newInstanceId++;
                            $addInstanceId = str_pad($newInstanceId, 3, '0', STR_PAD_LEFT);
                            $instanceCode  = $instance_prefix.$addInstanceId;

                            $instanceOrder++;
                            $allinstanceOrder++;
                        }
                    }


                    #3 add search tags
                    if(isset($_SESSION['addedit-product']['tags'])){
                        // for every tag in session
                        $addedTag = array();
                        foreach($_SESSION['addedit-product']['tags'] as $i => $tag){
                            //else insert in db
                            if(!existInArray($tag, $addedTag)){
                                $queries[] = 'INSERT INTO product_searchtags(productId, searchtag, timest)
                                          VALUES('.$productId.',"'.$tag.'",'.time().')';
                                $addedTag[$i] = $tag;
                            }
                        }
                    }


                    #4 Add clothing sizes to stock
                    if(isset($_SESSION['addedit-product']['sizes']) && categoryHasSize($category) )
                    {
                        foreach($_SESSION['addedit-product']['sizes'] as $productSize)
                        {
                            $queries[] = 'INSERT INTO shop_stock(productId, size, ean, inStock, start_stock)
                                          VALUES(' . $productId . ',"' . $productSize['size'] . '","' . $productSize['ean'] . '","' . $productSize['stock'] . '", "' . $productSize['stock'] . '" )';
                        }
                    }
                    else
                    {
                        $queries[] = 'INSERT INTO shop_stock(productId,inStock,start_stock,ean)
									  VALUES(' . $productId . ',"' . $dbInStock . '","' . $dbInStock . '","' . $dbEan . '")';
                    }

                    // Set autocommit to FALSE
                    $mysqli->autocommit(FALSE);

                    foreach($queries as $query)
                    {
                        if(!$mysqli->query($query))
                        {
                            $errors[] = $siteLabels['fm-somethingwentwrong'].$mysqli->error;
                        }
                    }
                    // ROLLBACK of COMMIT
                    if(isset($errors))
                    {
                        $mysqli->rollback();
                        displayErrors($errors);
                        return showDashboard();
                        //header('location: ../');
                    }
                    else
                    {
                        $mysqli->commit();
                        //unset product session
                        unset($_SESSION['addedit-product']);
                        //display feedback
                        $_SESSION['feed-msg-wait'] = '<span class="fm-suc"><span class="fm-suc-v">&radic;</span>Het product is succesvol toegevoegd!</span>';

                        Url_Pin::redirect();
                    }
				}
			}

			/* MANAGE DATABASE "EDIT" */

			if($method == 'edit'){

				$editId = $_POST['editId'];
				if(!empty($editId)){
                    // check for thumb and hover image
                    $thumb = $hover = null;
                    if(isset($_POST['setThumb'])) $thumb = $_POST['setThumb'];
                    if(isset($_POST['setHover'])) $hover = $_POST['setHover'];

                    // Updated at
                    include_once $_SERVER['DOCUMENT_ROOT'] . '/lib/Carbon/Carbon.php';
                    $updated_at = \Carbon\Carbon::now();


					#1 Update Products table
					$query = 'UPDATE product_products SET titleNL="'.$dbTitleNL.'", titleEN="'.$dbTitleEN.'", titleDE="'.$dbTitleDE.'", titleFR="'.$dbTitleFR.'",
									 descriptionNL="'.$dbDescriptionNL.'", descriptionEN="'.$dbDescriptionEN.'", descriptionDE="'.$dbDescriptionDE.'", descriptionFR="'.$dbDescriptionFR.'",
									 specsNL="'.$dbSpecsNL.'", specsEN="'.$dbSpecsEN.'", specsDE="'.$dbSpecsDE.'", specsFR="'.$dbSpecsFR.'",
									 price="'.$price.'", catId="'.$category.'", miintoCategoryId=' . $miintoCategoryId . ', googleCategoryId=' . $googleCategoryId . ',brandId="'.$brandId.'", stockCode="'.$dbStockCode.'", color="'.$color.'",
									 isNew="'.$isNew.'",isExtraLeuk="'.$isExtraLeuk.'",thumb="'.$thumb.'",hover="'.$hover.'",purchase='.$purchase.',updated_at="' . $updated_at . '"
							    WHERE id = "'.$editId.'"
							  LIMIT 1';

					if(!$result = $mysqli->query($query)){
						//handle errors
						$errors[] = $siteLabels['fm-somethingwentwrong'].$mysqli->error;
						displayErrors($errors);
						return showFormAddEditProduct($method);
					}
					else{
						#2 Update Instances
						// delete all instances
						// add new ones
						// if some query goes wrong -> rollback();
						
						// delete all instances
						//$queries[] = 'DELETE FROM product_instances WHERE productId = "'.$editId.'"';
						
						$productId = $editId;

						// Store route
						$route = $routeService->createProductRoute($productId, $titleNL,$titleEN, $category);
						$routeService->update($route,$productId,'product');
						
						$brandCode = 'XX';
						if($brandResult = $mysqli->query('SELECT brandCode FROM merken WHERE id = '.$brandId.' LIMIT 1')){
							$brandRecord = $brandResult->fetch_assoc();
							$brandCode = substr($brandRecord['brandCode'],0,2);
						}
						
						$catCode = str_pad($category, 3, '0', STR_PAD_LEFT);
						$productCode = str_pad($productId, 3, '0', STR_PAD_LEFT);
						$instance_prefix = $brandCode.$catCode.$productCode;
				
						$newInstanceId = 1;
						$addInstanceId = str_pad($newInstanceId, 3, '0', STR_PAD_LEFT);
						$instanceCode  = $instance_prefix.$addInstanceId;
						
						$instanceOrder = 1;
						$allinstanceOrder = 1;
						$orderQuery = 'SELECT allinstanceOrder FROM product_instances ORDER BY allinstanceOrder DESC LIMIT 1';
						if(!$orderResult = $mysqli->query($orderQuery)){
							//handle errors
						}
						else{
							if($orderResult->num_rows > 0){
								$orderRecord = $orderResult->fetch_assoc();
								$latestOrder = $orderRecord['allinstanceOrder'];
								$allinstanceOrder = $latestOrder+1;	
							}
						}				
						
						/* CHECK TO INSERT OR DELETE SHORTCODES */
						//check if this item needs photos
						if(isset($_SESSION['addedit-product']['shortcodes'])){
							foreach($_SESSION['addedit-product']['shortcodes'] as $shortcode){
								if($result = $mysqli->query('SELECT shortcode FROM product_instances WHERE shortcode = "'.$shortcode.'" AND productId = '.$editId.' LIMIT 1')){
									/* if not exists */
									if($result->num_rows == 0){
										$queries[] = 'INSERT INTO product_instances(instanceCode, productId, shortcode, instanceOrder, allinstanceOrder)
											  VALUES("'.$instanceCode.'",'.$productId.',"'.$shortcode.'",'.$instanceOrder.','.$allinstanceOrder.')';
										$newInstanceId++;
										$addInstanceId = str_pad($newInstanceId, 3, '0', STR_PAD_LEFT);
										$instanceCode  = $instance_prefix.$addInstanceId;
										
										$instanceOrder++;
									}
								}
							}
							//check if delete photos ?
							if($result = $mysqli->query('SELECT id, shortcode FROM product_instances WHERE productId = "'.$editId.'"')){
								while($record = $result->fetch_assoc()){
									$sc = $record['shortcode'];
									if(!existInArray($sc, $_SESSION['addedit-product']['shortcodes'])){
										$scId = $record['id'];
										$mysqli->query('DELETE FROM product_instances WHERE id='.$scId.' LIMIT 1');
									}
									
								}
							}					
						}
						/* EIND CHECK */
						
						#3 Update tags
						// delete all searchtags
						// add new ones
						// if some query goes wrong -> rollback();
						
						$queries[] = 'DELETE FROM product_searchtags WHERE productId = "'.$productId.'"';
						
						if(isset($_SESSION['addedit-product']['tags'])){
							// for every tag in session
							$addedTag = array();
							foreach($_SESSION['addedit-product']['tags'] as $i => $tag){
								//else insert in db
								if(!existInArray($tag, $addedTag)){
									$queries[] = 'INSERT INTO product_searchtags(productId, searchtag, timest)
											  VALUES('.$productId.',"'.$tag.'",'.time().')';
									$addedTag[$i] = $tag;
								}
							}
						}

                        #4 Add or edit categories with sizes to stock
                        if(isset($_SESSION['addedit-product']['sizes']) && categoryHasSize($category) )
                        {
                            // Get all sizes in database
                            if($sizeResult = $mysqli->query('SELECT size, ean, inStock
															 FROM shop_stock
															 WHERE productId = "'.$editId.'"
															 ORDER BY id ASC'))
							{
                                $dbSizes = array();
                                while($sizeRecord = $sizeResult->fetch_assoc()){
									$size = $sizeRecord['size'];
									$dbSizes[$size]['size'] = $size;
									$dbSizes[$size]['ean'] = $sizeRecord['ean'];
									$dbSizes[$size]['stock'] = $sizeRecord['inStock'];
                                }

                                // Get all sizes from POST
                                $postSizes = $_SESSION['addedit-product']['sizes'];

                                // Compare values in POST and Database
                                foreach($postSizes as $size => $postSize)
                                {
                                    if(isset($dbSizes[$size]))
                                    {
                                        // Update value
                                        $queries[] = 'UPDATE shop_stock
													  SET ean = "' . $postSize['ean'] . '", inStock = "' . $postSize['stock'] . '"
													  WHERE productId = ' . $productId . '
													  AND size = "' . $size . '"
													  LIMIT 1';
                                    }
                                    else
                                    {
                                        // Insert value
                                        $queries[] = 'INSERT INTO shop_stock(productId, size, ean, inStock)
                                              VALUES(' . $productId . ',"' . $size . '","' . $postSize['ean'] . '","' . $postSize['stock'] . '")';
                                    }
                                }

                                // Check if we need to delete some values
                                foreach($dbSizes as $size => $dbSize)
                                {
                                    if( ! isset($postSizes[$size]))
                                    {
                                        // Delete value
                                        $queries[] = 'DELETE FROM shop_stock WHERE productId = ' . $productId . ' AND size = "' . $size . '" LIMIT 1';
                                    }
                                }

                                // Check if delete empty sizes ( wanneer van categorie geswitched )
                                $queries[] = 'DELETE FROM shop_stock
											  WHERE productId = ' . $productId . '
											  AND size IS NULL LIMIT 1';
                            }
                        }
						// Categories with no size
                        else
                        {
                            if($sizeResult = $mysqli->query('SELECT inStock, ean
															 FROM shop_stock
															 WHERE productId = "'.$editId.'"
															 AND size IS NULL
															 LIMIT 1'))
                            {
                                if($sizeResult->num_rows > 0)
                                {
                                    $queries[] = 'UPDATE shop_stock
												  SET ean = "' . $dbEan . '", inStock = "' . $dbInStock . '"
												  WHERE productId = ' . $productId . '
												  AND size IS NULL
												  LIMIT 1';
                                }
                                else
                                {
                                    $queries[] = 'INSERT INTO shop_stock(productId, ean, inStock)
												  VALUES(' . $productId . ',"' . $dbEan . '","' . $dbInStock . '")';
                                }
                            }

                            // Check if delete  sizes ( wanneer van categorie geswitched )
                            $queries[] = 'DELETE FROM shop_stock
										  WHERE productId = ' . $productId . '
										  AND size IS NOT NULL';
                        }
						
						// Set autocommit to FALSE
						$mysqli->autocommit(FALSE);
						//check for commit or rollback
						foreach($queries as $query)
						{
							if(!$mysqli->query($query))
							{
								$errors[] = $siteLabels['fm-somethingwentwrong'].$mysqli->error;
							}
						}
						// ROLLBACK of COMMIT
						if(isset($errors))
						{
							$mysqli->rollback();
							displayErrors($errors);
                            Url_Pin::redirect();
						}
						else
						{
							//update instances
							$mysqli->commit();
							//unset product session
							unset($_SESSION['addedit-product']);
							//display feedback
							$_SESSION['feed-msg-wait'] = '<span class="fm-suc"><span class="fm-suc-v">&radic;</span>Het product is succesvol bewerkt!</span>';

                            Url_Pin::redirect();

                        }
						
						#3 Update Tags

					}
                }
				else{
					//handle error empty editId
					$errors[] = $siteLabels['fm-somethingwentwrong'];
					displayErrors($errors);
                    Url_Pin::redirect();

                }
			}			
		}
	}
    Url_Pin::redirect();
}
/** Manage categories **/
	
function manageCategories(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();

	include_once($_SERVER['DOCUMENT_ROOT'] . '/App/Categories/CategoryController.php');
	include_once($_SERVER['DOCUMENT_ROOT'] . '/App/Categories/CategoryRepository.php');

	// Create controller
	$controller = new \App\Categories\CategoryController();

	// Check for delete
	if(URL_SUB == 'delete-category') $controller->destroy(URL_SUB2);

	// Check for store
	if(isset($_POST['sbm-add-categorie'])) $controller->store();

	// Check for update
	if(isset($_POST['sbm-edit-categorie'])) $controller->update($_POST['id']);

	// Start output
	$output = '';

	// Create or edit form
	if(URL_SUB != 'edit-category')
	{
		$output .= $controller->create();
	}
	else
	{
		$output .= $controller->edit(URL_SUB2);
	}

	// Show category list
	if(URL_SUB != 'edit-category')
	{
		/* display categories */
		$query = 'SELECT c.id,
						 c.category,
						 c.categoryEn,
						 c.timest,
						 c.active,

						 routes.route_nl
					FROM product_categories AS c

					LEFT JOIN routes
                  	ON routes.routeable_id = c.id
                  	AND routes.routeable_type = "category"

					INNER JOIN content_status AS stat
                  	ON stat.itemId = c.id
                  	AND stat.linkname = "product_categories"

                  	WHERE stat.active = 1

					ORDER BY routes.route_nl ASC';
		if(!$result = $mysqli->query($query)){
			//handle errors
			dd($mysqli->error_list );
			$errors[] = $siteLabels['fm-somethingwentwrong'];
			displayErrors($errors);
		}
		else{
			//display output
			$output .= '<div class="double-column">';
				while($record = $result->fetch_assoc()){
					$catId = $record['id'];
					$active = $record['active'];
					$route = fromDatabase($record['route_nl']);
                    //$miintoId = fromDatabase($record['miintoId']);

					$output .= '<div class="itemlist-row">';
						$output .= '<div class="itemlist-single-column small">id: ' . $catId . '</div>';
						$output .= '<div class="double-column">';
							//$output .= '<strong>' . $category . '</strong>';
							$output .= str_replace('/',' > ',$route);
                            if( ! $active) $output .= ' <em>(niet actief)</em>';
                            //if( ! empty($miintoId)) $output .= ' / Miinto: ' . $miintoId;
						$output .= '</div>';
						$output .= '<div class="itemlist-single-column">';
							$output .= '<a href="/admin/products/delete-category/'.$catId.'/"><span class="tagBox-delete">&times;</span></a>';
						$output .= '</div>';
						$output .= '<div class="itemlist-single-column">&nbsp;</div>';
						$output .= '<div class="itemlist-single-column">';
							$output .= '<a href="/admin/products/edit-category/'.$catId.'/">bewerken</a>';
						$output .= '</div>';
					$output .= '</div>';
				}
			$output .= '</div>';
		}
		$output .= '<div class="clear"></div>';
		$output .= '<br /><br />';
		$output .= '<hr/>';
	}
	return $output;
}

/** Manage move to trash **/

function askMoveToTrash(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();
	
	if(isset($_POST['option'])){
		$output = '';
		//ask the question
		$output .= $siteLabels['products-movetotrash-areyousure'].'<br /><br />';
		foreach($_POST['option'] as $productId){
			//get info
			/* get info */
			$query = 'SELECT p.id, p.catId, p.titleNL, p.price
					  FROM product_products as p
					  WHERE p.id = '.$productId.'
					  LIMIT 1';
			if($result = $mysqli->query($query)){
				$record = $result->fetch_assoc();
				//create productid
				$id = $record['id'];
				$catId = $record['catId'];
				$productId = '#'.$catId.$id;
				
				//title and category 
				$titleNL = fromDatabase($record['titleNL']);
				
				//price
				$price = $record['price'];
				$temp = explode('.',$price);
				isset($temp[1]) ? $displayCents = str_pad($temp[1], 2, STR_PAD_LEFT) :  $displayCents = '00';
				$displayPrice = '€ '.$temp[0].','.$displayCents;
				
				//category
				if($catresult = $mysqli->query('SELECT category FROM product_categories WHERE id = '.$catId.' LIMIT 1')){
					$catrecord = $catresult->fetch_assoc();
					if($catresult->num_rows == 0){
						$category = 'uncategorized';
					}
					else
					{
						$category = fromDatabase($catrecord['category']);
					}
				}
				else{
					$category = '<span class="warning">uncategorized</span>';
				}
				
				//numarticles
                /*
				if($instanceResult = $mysqli->query( 'SELECT id FROM product_instances WHERE productId = '.$id)){
					$numInstances = $instanceResult->num_rows;
				}
				else{
					$numInstances = '<span class="itemlist-warning">0</span>';
				}*/

				//show the articles
				$output .= '<div class="itemlist-row">';
					/* product id */
					$output .= '<div class="itemlist-single-column">';
						$output .= '<span class="itemlist-btn" id="itemlist-btn-photo"></span> '.$productId;
					$output .= '</div>';
					/* title */
					$output .= '<div class="itemlist-double-column">'.$titleNL.'</div>';
					/* num instances */
					//$output .= '<div class="itemlist-single-column">'.$numInstances.'</div>';
					/* price*/
					if($price == 0) $displayPrice = '<span class="itemlist-warning">'.$displayPrice.'</span>';
					$output .= '<div class="itemlist-single-column">'.$displayPrice.'</div>';
					/* discount */
					$output .= '<div class="itemlist-single-column">actie 5</div>';
					/* empty */
					$output .= '<div class="itemlist-single-column">'.$category.'</div>';
					/* status */
					$output .= '<div class="itemlist-single-column">';
					$output .= '</div>';
					/* edit */
					$output .= '<div class="itemlist-single-column itemlist-edit">';
					$output .= '</div>';
					$output .= '<div class="clear"></div>';	
				$output .= '</div>';
			}
			
		}
		$output .= '<div class="clear"></div>';	
		$output .= '<br /><br />';
		$output .= '<form action="" name="moveToTrash" method="post" enctype="multipart/form-data">';
		foreach($_POST['option'] as $productId){
			$output .= '<input type="hidden" name="products[]" value="'.$productId.'" />';
		}
		$output .= '<input type="submit" name="moveToTrash" value="'.$siteLabels['form-yes'].'" class="btn176"/>';
	
		$output .= '<input type="hidden" name="location" value="../"/>';
		$output .= '<input type="submit" name="back" value="'.$siteLabels['form-no'].'" class="btn176 proceed"/>';
		$output .= '</form>';
		
		return $output;			
	}
	else{
		$errors[] = $siteLabels['fm-nothingselected'];
		displayErrors($errors);
		//return showDashboard();
		header('location: ./');
	}
}


function moveToTrash(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();
	
	if(isset($_POST['products'])){
		$output = '';
		foreach($_POST['products'] as $productId){
			/* For each product; change content status to 0 */
			$queries[] = 'UPDATE content_status SET active = 0 WHERE itemId ='.$productId.' AND	linkname = "product_products"';
			$queries[] = 'UPDATE product_products SET updated_at = "' . \Carbon\Carbon::now() . '" WHERE id = ' . $productId;
		}
		
		// Set autocommit to FALSE
		$mysqli->autocommit(FALSE);
		foreach($queries as $query)
		{
			if(!$mysqli->query($query))
			{
				$errors[] = $siteLabels['fm-somethingwentwrong'];
			}
		}
		// ROLLBACK of COMMIT
		if(isset($errors))
		{
			$mysqli->rollback();
			displayErrors($errors);
		}
		else
		{
			$mysqli->commit();
			$msg = str_replace('[numitems]', count($_POST['products']), $siteLabels['fm-itemsmovedtotrash']);
			$_SESSION['feed-msg'] = '<span class="fm-suc"><span class="fm-suc-v">&radic;</span>'.$msg.'</span>';
			//return showDashboard();
            Url_Pin::redirect();
		}
	}		
}


/* CHANGE ORDER */
function showChangeOrder(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();
	
	$output = '';
	
	/* title */
	$output .= '<h1>'.$siteLabels['products-title'].' &rsaquo; '.$siteLabels['products-changeorder'].'</h1>';
	
	$output .= '<div class="double-column">';	

		//$output .= $siteLabels['changeOrderHelp'];

		if(!isset($message)) $message = '';
		//$output .= '<div id="message-box">'.$message.' Waiting for sortation submission...</div>';
			
		$output .= '<form action="'.$_SERVER['REQUEST_URI'].'" id="dd-form" name="dd-form" method="post">';
	/*	$output .= '<p><input type="checkbox" value="1" name="auto_submit" id="auto_submit"'; 
			if(isset($_POST['auto_submit'])) { 
				if($_POST['auto_submit']) { $output .= 'checked="checked"'; } 
			}
		$output .= '/> <label for="auto_submit">Automatically submit on drop event</label></p>';*/
		
		$output .= '<ul id="sortable-list">';
			$order = array();
			$count = 1;
			//Get Info for the list
			$query = 'SELECT p.id, p.catId, p.titleNL, p.isNew, p.published, p.price, p.productOrder
					  FROM product_products as p, content_status as s
					  WHERE s.active = 1
					  AND s.itemId = p.id
					  AND s.linkname = "product_products"
					  ORDER BY p.productOrder DESC';		
			$result = $mysqli->query($query);
			while($item = $result->fetch_assoc())
			{
				//create productid
				$id = $item['id'];
				$catId = $item['catId'];
				$productId = '#'.$catId.$id;
			  	$output .= '<li title="'.$item['id'].'">'.$productId.' '.$item['titleNL'].'</li>';
			  	$order[] = $item['productOrder'];
			}
		$output .= '</ul>';
		$output .= '<br />';
		$output .= '<input type="hidden" name="sort_order" id="sort_order" value="'.implode(',',$order).'" />';
		$output .= '<input type="hidden" name="sort_what" value="products" />';
		$output .= '<input type="submit" name="do_submit" value="'.$siteLabels['form-save'].'" class="btn176 proceed" />';
		
		$output .= '<input type="hidden" name="location" value="../"/>';
		$output .= '<input type="submit" name="back" value="'.$siteLabels['form-back'].'" class="btn176" />';
		$output .= '</form>';
	$output .= '</div>';
	$output .= '<script type="text/javascript"> initSortableList(); </script>';
	return $output;
}

function sbmChangeOrder(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();
	
	/* split the value of the sortation */
	$ids = explode(',',$_POST['sort_order']);
	/* run the update query for each id */
	foreach($ids as $index=>$id) {
		$id = (int) $id;
		if($id != '') {
			$queries[] = 'UPDATE product_products SET productOrder = '.($index + 1).' WHERE id = '.$id.' LIMIT 1';
		}
	}
	  
	// Set autocommit to FALSE
	$mysqli->autocommit(FALSE);
	foreach($queries as $query)
	{
		if(!$mysqli->query($query))
		{
			$errors[] = $siteLabels['fm-somethingwentwrong'];
		}
	}
	// ROLLBACK of COMMIT
	if(isset($errors))
	{
		$mysqli->rollback();
		displayErrors($errors);
		//return showDashboard();
		header('location: ../');
	}
	else
	{
		$mysqli->commit();
		$_SESSION['feed-msg'] = '<span class="fm-suc"><span class="fm-suc-v">&radic;</span>'.$siteLabels['fm-changeordersucces'].'</span>';
	//	return showDashboard();
		header('location: ../');
	}
}


/////////////////////////// ORDER INSTANCES \\\\\\\\\\\\\\\\\\\\\\\\\

function showChangeInstanceOrder(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();
	
	$productId = URL_SUB2;
	
	$output = '';
	
	/* title */
	$output .= '<h1>'.$siteLabels['products-title'].' &rsaquo; '.$siteLabels['products-changeorder'].'</h1>';
	
	$output .= '<div class="double-column">';	

		//$output .= $siteLabels['changeOrderHelp'];

		if(!isset($message)) $message = '';
		//$output .= '<div id="message-box">'.$message.' Waiting for sortation submission...</div>';
			
		$output .= '<form action="'.$_SERVER['REQUEST_URI'].'" id="dd-form" name="dd-form" method="post">';
	/*	$output .= '<p><input type="checkbox" value="1" name="auto_submit" id="auto_submit"'; 
			if(isset($_POST['auto_submit'])) { 
				if($_POST['auto_submit']) { $output .= 'checked="checked"'; } 
			}
		$output .= '/> <label for="auto_submit">Automatically submit on drop event</label></p>';*/
		
		$output .= '<ul id="sortable-thumb">';
			$order = array();
			$count = 1;
			//Get Info for the list
			//fill shortcodes
			$query = 'SELECT DISTINCT m.id AS mediaId, m.cp_thumb, i.id AS instanceId, i.instanceOrder, i.color, i.shortcode, i.stockCode
					  FROM product_instances AS i, media_files AS m
					  WHERE m.shortcode = i.shortcode
					  AND i.productId = "'.$productId.'"
					  ORDER BY i.instanceOrder DESC';
			if($result = $mysqli->query($query)){
				while($item = $result->fetch_assoc())
				{
					//create productid
					$url = $item['cp_thumb'];
					$shortcode = $item['shortcode'];
					$output .= '<li title="'.$item['instanceId'].'">';
						$output .= '<div class="medialib-thumb-holder">';
							$output .= '<span class="medialib-thumb-image">';
								$output .= '<img src="/images/uploads/thumb/'.$url.'" alt="'.$shortcode.'" />';
							$output .= '</span>';
						$output .= '</div>';
					$output .= '</li>';
					$order[] = $item['instanceOrder'];
				}
				$output .= '</ul>';
				$output .= '<br />';
								
				$output .= '<input type="hidden" name="sort_order" id="sort_order" value="'.implode(',',$order).'" />';
				$output .= '<input type="hidden" name="sort_what" value="instances" />';
				$output .= '<input type="hidden" name="productId" value="'.$productId.'" />';
				$output .= '<input type="submit" name="do_submit" value="'.$siteLabels['form-save'].'" class="btn176 proceed" />';
				
				$output .= '<input type="hidden" name="location" value="../../"/>';
				$output .= '<input type="submit" name="back" value="'.$siteLabels['form-back'].'" class="btn176" />';
			}
			else{
				$output .= $mysqli->error;
			}
		$output .= '</form>';
	$output .= '</div>';
	
	$output .= '<script type="text/javascript"> initSortableList(\'#sortable-thumb\'); </script>';
	return $output;
}

function sbmChangeInstanceOrder(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();
	
	/* split the value of the sortation */
	$ids = explode(',',$_POST['sort_order']);
	/* run the update query for each id */
	foreach($ids as $index=>$id) {
		$id = (int) $id;
		if($id != '') {
			$queries[] = 'UPDATE product_instances SET instanceOrder = '.($index + 1).' WHERE id = '.$id.' AND productId="'.$_POST['productId'].'" LIMIT 1';
		}
	}
	  
	// Set autocommit to FALSE
	$mysqli->autocommit(FALSE);
	foreach($queries as $query)
	{
		if(!$mysqli->query($query))
		{
			$errors[] = $siteLabels['fm-somethingwentwrong'];
		}
	}
	// ROLLBACK of COMMIT
	if(isset($errors))
	{
		$mysqli->rollback();
		displayErrors($errors);
		//return showDashboard();
		header('location: ../../');
	}
	else
	{
		$mysqli->commit();
		$_SESSION['feed-msg'] = '<span class="fm-suc"><span class="fm-suc-v">&radic;</span>'.$siteLabels['fm-changeordersucces'].'</span>';
	//	return showDashboard();
		header('location: ../../');
	}
}


/////////////////////////// ORDER ALL INSTANCES \\\\\\\\\\\\\\\\\\\\\\\\\

function showChangeAllInstanceOrder(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();
	
	$output = '';
	
	/* title */
	$output .= '<h1>'.$siteLabels['products-title'].' &rsaquo; '.$siteLabels['products-changeorder'].'</h1>';
	
	$output .= '<div class="quadruple-column">';	

	//$output .= $siteLabels['changeOrderHelp'];

	if(!isset($message)) $message = '';
	//$output .= '<div id="message-box">'.$message.' Waiting for sortation submission...</div>';

	$output .= '<form action="'.$_SERVER['REQUEST_URI'].'" id="dd-form" name="dd-form" method="post">';
/*	$output .= '<p><input type="checkbox" value="1" name="auto_submit" id="auto_submit"';
		if(isset($_POST['auto_submit'])) {
			if($_POST['auto_submit']) { $output .= 'checked="checked"'; }
		}
	$output .= '/> <label for="auto_submit">Automatically submit on drop event</label></p>';*/
	$output .= '<input type="submit" name="do_submit" value="'.$siteLabels['form-save'].'" class="btn176 proceed" />';
	$output .= '<div class="clear"></div>';
	$output .= '<ul id="sortable-thumb">';

	$order = array();
	//Get Info for the list
	//fill shortcodes
	/*$query = 'SELECT DISTINCT m.id AS mediaId, m.cp_thumb, i.id AS instanceId, i.allInstanceOrder, i.color, i.shortcode, i.stockCode
			  FROM product_instances AS i, media_files AS m
			  WHERE m.shortcode = i.shortcode
			  ORDER BY i.allInstanceOrder DESC';*/

	$query = 'SELECT products.id AS productId,
					 products.titleNL AS title,
					 products.productOrder,
					 media.cp_thumb AS thumb,
					 media.filename_small,
					 media.path AS filename_large
			  FROM product_products AS products

			  LEFT JOIN content_status as status
			  ON (status.itemId = products.id
			  AND status.linkname = "product_products")

			  LEFT JOIN media_files AS media ON products.thumb = media.shortcode

			  ORDER BY products.productOrder DESC';

	if($result = $mysqli->query($query))
	{
		while($record = $result->fetch_assoc())
		{
			//create productid
			/*$url = $item['cp_thumb'];
			$shortcode = $item['shortcode'];
			$output .= '<li title="'.$item['instanceId'].'">';
				$output .= '<div class="medialib-thumb-holder">';
					$output .= '<span class="medialib-thumb-image">';
						$output .= '<img src="/images/uploads/thumb/'.$url.'" alt="'.$shortcode.'" />';
					$output .= '</span>';
				$output .= '</div>';
			$output .= '</li>';

			$order[$item['instanceId']] = $item['allInstanceOrder'];*/
			$imageSrc = '/images/uploads/thumb/' . $record['thumb'];

			$output .= '<li title="' . $record['productId'] . '">';

			$output .= '<div class="sort-image">';
			if( is_file($_SERVER['DOCUMENT_ROOT'] . $imageSrc))
			{
				$output .= '<img src="' . $imageSrc . '" alt="' . $record['title'] . '" />';
			}


			$output .= '</div>';
			$output .= '<div class="sort-title">' . $record['title'] . '</div>';

			$output .= '</li>';

			$order[$record['productId']] = $record['productOrder'];
		}
		$output .= '</ul>';

		$output .= '<div class="clear"></div>';
		$output .= '<br />';

		$output .= '<input type="hidden" name="sort_order" id="sort_order" value="'.implode(',',$order).'" />';
		$output .= '<input type="hidden" name="sort_what" value="allinstances" />';
		$output .= '<input type="submit" name="do_submit" value="'.$siteLabels['form-save'].'" class="btn176 proceed" />';

		$output .= '<input type="hidden" name="location" value="../"/>';
		$output .= '<input type="submit" name="back" value="'.$siteLabels['form-back'].'" class="btn176" />';
	}
	else{
		$output .= $mysqli->error;
	}
	$output .= '</form>';
	$output .= '</div>';
	
	$output .= '<script type="text/javascript"> initSortableList(\'#sortable-thumb\'); </script>';
	return $output;
}

function sbmChangeAllInstanceOrder(){
	/* access the global sql object */
	global $mysqli;	
	/* language */
	$siteLabels = getLanguage();
	
	/* split the value of the sortation */
	$ids = explode(',',$_POST['sort_order']);
	/* run the update query for each id */
	foreach($ids as $index => $id) {
		$id = (int) $id;
		if($id != '') {
			$queries[] = 'UPDATE product_products SET productOrder = '.($index + 1).' WHERE id = '.$id.' LIMIT 1';
		}
	}
	  
	// Set autocommit to FALSE
	$mysqli->autocommit(FALSE);
	foreach($queries as $query)
	{
		if(!$mysqli->query($query))
		{
			$errors[] = $siteLabels['fm-somethingwentwrong'];
		}
	}
	// ROLLBACK of COMMIT
	if(isset($errors))
	{
		$mysqli->rollback();
		displayErrors($errors);
		//return showDashboard();
		header('location: ../');
	}
	else
	{
		$mysqli->commit();
		$_SESSION['feed-msg'] = '<span class="fm-suc"><span class="fm-suc-v">&radic;</span>'.$siteLabels['fm-changeordersucces'].'</span>';
	//	return showDashboard();
		header('location: ../');
	}
}

function updateModified(){
	global $mysqli;
	//what product id?
	
	if(isset($_POST['option'])){
		foreach($_POST['option'] as $productId){
		
		$modified = $_POST['modified-'.$productId];
		if(empty($modified)){
			$errors[] = 'empty value';
		}
		if(!is_numeric($modified)){
			$errors[] = 'not a number';
		}
		
		if(!isset($errors)){
		//valid?
			//update or insert?
			$modifiedResult = $mysqli->query('SELECT modified FROM popular_modified WHERE productId = '.$productId.' LIMIT 1');
			if($modifiedResult->num_rows > 0){
				//update
				$mysqli->query('UPDATE popular_modified SET modified = '.$modified.' WHERE productId = '.$productId.' LIMIT 1');
			}
			else{
				//insert
				$mysqli->query('INSERT INTO popular_modified(productId, modified)VALUES('.$productId.','.$modified.')');
			}
			//update total
				$likesresult = $mysqli->query('SELECT id FROM popular_likes WHERE productId = '.$productId);
				$numlikes = $likesresult->num_rows;
				$modifiedresult = $mysqli->query('SELECT modified FROM popular_modified WHERE productId = '.$productId.' LIMIT 1');
				$modifiedrecord = $modifiedresult->fetch_assoc();
				$modified = $modifiedrecord['modified'];
				$total = $modified+$numlikes;
				$mysqli->query('UPDATE popular_modified SET likes = '.$numlikes.', total = '.$total.' WHERE productId = '.$productId.' LIMIT 1');
			}
		}
	}
	//header back	
    Url_Pin::redirect();
}

function updateDiscount(){
	global $mysqli;
	//what product id?
	
	if(isset($_POST['option'])){
		foreach($_POST['option'] as $productId){
		
			$discount = $_POST['newdiscount-'.$productId];
			
			#4 valid price ?
			$forbidden = array('!','@','#','$','%','^','&','*','(',')','-','+','=','_','{','}','[',']',':',';','"','\'','<','>','?','/');
			foreach($forbidden as $i => $val){
				$discount=str_replace($val,'',$discount);   //replaces "," with "."
			}
			if(!empty($discount)){
				$discount=str_replace(',','.',$discount);   //replaces "," with "."
				$discount=str_replace('€','',$discount);   //replaces "," with "."
				$discount = trim($discount);
				$discount = number_format($discount, 2, '.', '');
				$pricecheckpattern	= "#^[0-9]{1,3}\.[0-9]{2}$#";
				if (preg_match($pricecheckpattern,$discount)==0){
					$errors[] = 'err: '.$discount;
				}
			}
			else{
				$error[] = 'empty';	
			}
			
			if(!isset($errors)){
				$mysqli->query('UPDATE product_products 
                                SET discountPrice = "'.$discount.'",
                                    updated_at = "' . \Carbon\Carbon::now() . '"
                                WHERE id = '.$productId.' LIMIT 1');
			}
		}
	}
	//header back	
    Url_Pin::redirect();
}

function removeDiscount(){
	global $mysqli;
	//what product id?
	
	if(isset($_POST['option'])){
		foreach($_POST['option'] as $productId){
			$mysqli->query('UPDATE product_products 
                            SET discountPrice = NULL,
                                updated_at = "' . \Carbon\Carbon::now() . '"
                            WHERE id = '.$productId.' LIMIT 1');
		}
	}
	//header back	
    Url_Pin::redirect();
}

/*
function updateExtraleuk(){
	global $mysqli;
	if(defined('URL_SUB2')){
		$location = '../';
		
		$productId = URL_SUB2;
		
		if($result = $mysqli->query('SELECT extraleuk FROM product_products WHERE id = '.$productId.' LIMIT 1')){
			$record = $result->fetch_assoc();
			$extraleuk = $record['extraleuk'];
			$extraleuk == 1 ? $newExtraleuk = 0 :  $newExtraleuk = 1; 
			$mysqli->query('UPDATE product_products SET extraleuk = '.$newExtraleuk.' WHERE id = '.$productId.' LIMIT 1');
		}	
	}
	else{
		$location = './';
	}
	
	header('location:'.$location);	
}*/

function updatePublished(){
	global $mysqli;
	if(defined('URL_SUB2')){
		$productId = URL_SUB2;
		
		if($result = $mysqli->query('SELECT published FROM product_products WHERE id = '.$productId.' LIMIT 1')){
			$record = $result->fetch_assoc();
			$published = $record['published'];
			$published == 1 ? $newpublished = 0 : $newpublished = 1; 
			$mysqli->query('UPDATE product_products 
                            SET published = '.$newpublished.',
                                updated_at = "' . \Carbon\Carbon::now() . '"
                            WHERE id = '.$productId.' LIMIT 1');
		}
		
	}

    Url_Pin::redirect();
}

function updateNew(){
	global $mysqli;
	if(defined('URL_SUB2')){
		$productId = URL_SUB2;
		
		if($result = $mysqli->query('SELECT isNew FROM product_products WHERE id = '.$productId.' LIMIT 1')){
			$record = $result->fetch_assoc();
			$new = $record['isNew'];
			$new == 1 ? $newnew = 0 :  $newnew = 1; 
			$mysqli->query('UPDATE product_products 
                            SET isNew = '.$newnew.',
                                updated_at = "' . \Carbon\Carbon::now() . '"
                            WHERE id = '.$productId.' LIMIT 1');
		}
	}

    Url_Pin::redirect();
}


function updateSale(){
	global $mysqli;
	if(defined('URL_SUB2')){
		$productId = inDatabase(URL_SUB2);

		if($result = $mysqli->query('SELECT isExtraLeuk FROM product_products WHERE id = '.$productId.' LIMIT 1')){
			$record = $result->fetch_assoc();
			$sale = $record['isExtraLeuk'];
			$sale == 1 ? $newSale = 0 :  $newSale = 1;
			$mysqli->query('UPDATE product_products 
                            SET isExtraLeuk = '.$newSale.',
                                updated_at = "' . \Carbon\Carbon::now() . '"
                            WHERE id = '.$productId.' LIMIT 1');
		}
	}

	Url_Pin::redirect();
}

function sortFilter(){
	//get sort & filter
	
	$sort = $_POST['sort-by'];
	$filter = linkname($_POST['filter-by']);
	$direction = linkname($_POST['orderdir']);
	
	header('location: /admin/products/sortby-'.$direction.'-'.$sort.'/filterby-'.$filter.'/');
}

/**
 * Loop through selected products
 * Toggle the sale boolean
 */
function toggleSale()
{
	// Error handling when nothing selected
	if( ! isset($_POST['option']))
	{
		$errors[] = 'Er is niks geselecteerd';
		displayErrors($errors);
		Url_Pin::redirect();
	}

	// The option $_POST contains product ids
	// Get all products that are selected
	$idString = implode(',',$_POST['option']);

	// The sale boolean is called "isExtraLeuk" in the database (old pains)
	$query = 'SELECT id, isExtraLeuk
			  FROM product_products
			  WHERE id IN (' . $idString . ')';

	// Get $mysql through global (old pains)
	global $mysqli;

	// Fetch result
	$result = $mysqli->query($query);
	while($product = $result->fetch_object())
	{
		// Check current sale
		$sale = $product->isExtraLeuk;

		// Toggle
		$sale ? $newSale = 0 : $newSale = 1;

		// Update
		$mysqli->query('UPDATE product_products
						SET isExtraLeuk = ' . $newSale . ',
						    updated_at = "' . \Carbon\Carbon::now() . '"
						WHERE id = ' . $product->id);
	}

	Url_Pin::redirect();
}