HEX
Server: Apache
System: Linux v38079.2is.nl 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: democfellows (10015)
PHP: 8.1.34
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/creativefellows.nl/dhwd.creativefellows.nl/src/CassetteShop.php
<?php
	

	class webWinkelData extends BaseController{
					
		function __construct($connection,$klant_id=null,$delivery_options=null)
		{
			$this->connection 		= $connection;
			$this->delivery_options = $delivery_options;
		
			if($klant_id != null)
			{
				$this->klant_id 	= $klant_id;
				$this->setClientData();
			}
		}
	
		/*
		 * Get form field
		 */
		function getShoppingField($f,$session_data=null,$order_total = 0,$show_type=null,$user_logged=false)
		{
			
			if( ($show_type == "register" || $show_type == "update") && $f[6] == false) return;
			if($show_type == "register" || $show_type == "update") $f[3] = preg_replace("/hidden/","",$f[3]);
			
			$hidden_labels = false;
			
			// return as hidden input when logged
			if($user_logged == true) return "<input type='hidden' name='".strtolower($f[0])."' id='".strtolower($f[0])."' value='". $session_data ."' ".$f[2]."/>";
			
			$lbl = ($f[2] != false) ? " *" : null;
										
			switch($f[0]){
				
				case "afleveradres":
				
					$hidden_labels = true;
					$field = "<h2>".$f[1]."</h2>";
					
				break;
				
				case "opmerkingen":
					$field = "<textarea name='".strtolower($f[0])."' class='form-text textarea' ".$f[2].">". $session_data ."</textarea>";	
				break;
			
				case "land":
				case "land_delivery":
					$field = '<div class="form-group">';
						$field .= '<select name="'. strtolower($f[0]) .'" id="'. strtolower($f[0]) .'">';
				
							$i == 0;
							foreach($f[4] as $label => $value)
							{
								$field .= '<option value="'.$label .'">'.  $value .'</option>';
								$i++;
							}
						
							$field .= '</select>';				
					$field .= '</div>';
				break;
			
				case "betaalmethode":
			
					return false;
		
				break;
			
				case "aanhef":
			
					$field = '<div class="form-group">';
						$i == 0;
						foreach($f[4] as $label => $value)
						{
							$field .= '<input type="radio" name="aanhef" id="'. $f[0] .'_'. $label .'" value="'. $value .'"'. ($i == 0 ? " checked" : "") .' /> <label for="'. $f[0] .'_'. $label .'">'. $label .'</label>&nbsp;&nbsp;&nbsp;';
							$i++;
						}
					$field .= '</div>';
				
				break;
			
				case "account":
				case "voorwaarden":
				case "afwijkend_adres":
				
					$field = '<div class="form-group checkbox">';
						$i == 0;
						foreach($f[4] as $label => $value)
						{
							$field .= '<input type="checkbox" name="'. $f[0] .'" id="'. $f[0] .'" value="'. $value .'" /> <label for="'. $f[0] .'">'. $label .'</label>&nbsp;&nbsp;&nbsp;';
							$i++;
						}
					$field .= '</div>';
				
				break;
											
				case "straat":
			
					 $field = "<input type='".$f[5]."' name='".strtolower($f[0])."' id='".strtolower($f[0])."' class='form-text straat' value='". $session_data ."' ".$f[2]." />";
			
				break;
			
				case "bezorgen":
											
					$delivery_options = $this->getBezorgKosten($order_total);	
				
					$field = '<div id="delivery-options" class="delivery-options">';
					foreach($delivery_options as $i => $bezorg_optie)
					{
						$field .= '<div>';
							$field .= '<input type="radio" name="delivery_option" id="'. $bezorg_optie["type"] .'" value="'. $i .'" '. ($i == 0 ? "checked" : "") .'/>';
							$field .= '<label for="'. $bezorg_optie["type"] .'">'. $bezorg_optie["type"] .'</label>';
						$field .= '</div>';
					}
					$field .= '</div>';
			
				break;
				
				case "wachtwoord":
				case "herhaal_wachtwoord":
				
					$required 	= $show_type == "update" ? "" : $f[2];

					$field 		= "<input type='password' name='".strtolower($f[0])."' id='".strtolower($f[0])."' class='form-text' />";
				
				break;
							
				default:

					$field = "<input type='".$f[5]."' name='".strtolower($f[0])."' id='".strtolower($f[0])."' class='form-text' value='". $session_data ."' ".$f[2]."/>";
				
				break;
			
			}
		
			$data = '<div class="form-row '. $f[3] .'" id="field_'. vl($f[0]) .'">';
				if($hidden_labels == false) $data .= "<label for='".strtolower($f[0])."'>". ucfirst($f[1]) . $lbl . "</label>";
				$data .= $field;
			$data .= "</div>";
						
			return $data;
		}
	
		/*
		 * Get delivery costs on order total and country
		 */
		function getBezorgKosten($total,$country="netherlands",$selected_item=null)
		{
		
			//echo $country;
			//d($this->delivery_options);
					
			switch(strtolower($country))
			{
				case "netherlands":
				case "nederland":
								
					if($total < 50)
					{
						$array = array(
							$this->delivery_options[0]
						);
					}
					/*elseif($total < 180)
					{
						$array = array(
							$this->delivery_options[1],
							$this->delivery_options[2]
						);						
					} */
					else{
						$array = array(
							$this->delivery_options[1]
						);
					}
				break;
			
				default:
					$array = array(
						$this->delivery_options[2]
					);
				break;
			
			}
		
			return $selected_item == null ? $array : array( $array[$selected_item] );

		}
	
	
		function formatPrice($str,$show_sign=true)
		{
			return ($show_sign == true ? "&euro; " : "") . number_format($str,2,',','');
		}
	
	
		function bestellingData($bestelling_id)
		{
			$order 				= $this->run("SELECT * FROM `bestellingen` WHERE `bestelling_id` = '". $this->esc($bestelling_id) ."'",false);
			$order["products"] 	= $this->run("SELECT * FROM `bestellingen_producten` WHERE `bestelling_id` = '". $this->esc($bestelling_id) ."'");
		
			return $order;
		}
	
	
		function bestelling($factuurnummer)
		{
			$order = $this->run("SELECT * FROM `bestellingen` WHERE `order_id` = '".$this->esc($factuurnummer)."'",false);
			return $order;
		}
	
	
		function getOrderByPayid($payment_id)
		{
			$order = $this->run("SELECT * FROM `bestellingen` WHERE `ideal_trans_id` = '".$this->esc($payment_id)."'",false);
			return $order;
		}
	
	
		function updatePaymentStatus($order_id)
		{
			$this->update("UPDATE `bestellingen` SET `betaald` = 1 WHERE `order_id` = '".$this->esc($order_id)."'");
		}
	
	
		function setOrderStatus($order_id,$status)
		{
			$this->update("UPDATE `bestellingen` SET `status` = '". $this->esc($status) ."' WHERE `order_id` = '".$this->esc($order_id)."'");
		}


		function getBestellingTotaal($sessiondata)
		{
			$total 	= 0;
			foreach($sessiondata as $uid => $p)
			{
				$item_totaal 	= $p["price"]* $p["amount"];
			
				$total = $total+$item_totaal;
			}
			return $total;
		}


		function setClientData($klant_id = null)
		{
			if($klant_id != null) $this->klant_id = $klant_id;
		
			$r = $this->run("SELECT * FROM `klanten` WHERE `klant_id` = '$this->klant_id'",false);
	
			$this->klantData = array();
			foreach($r as $column => $value)
			{
				$this->klantData[$column] = $value;
			}
		
			$this->naam_volledig 	= preg_replace('/\s+/', ' ',$this->klantData["voornaam"]." ".$this->klantData["tussenvoegsel"]." ".$this->klantData["achternaam"]);
			$bedrijfsnaam 			= ($this->klantData["bedrijfsnaam"] != "") ? $this->klantData["bedrijfsnaam"]."<br />tav " : null;
			$this->userDBadres  	= $bedrijfsnaam.$this->naam_volledig."<br />".$this->klantData["straat"]." ".$this->klantData["huisnummer"]."<br />".$this->klantData["postcode"]." ".$this->klantData["plaats"]."<br />".$this->klantData["land"]."<br /><a href='".$this->klantData["email"]."' style='".$this->css_color."'>".$this->klantData["email"]."</a>";
	
		}


		function insertKlantinfo($aanhef,$voornaam,$achternaam,$bedrijfsnaam,$telefoon,$email,$straat,$huisnummer,$postcode,$plaats,$land)
		{
		
			// create unique_id			
			$array = array(
				'aanhef' => $this->esc($aanhef),
				'voornaam' => $this->esc($voornaam),
				'achternaam' => $this->esc($achternaam),
				'bedrijfsnaam' => $this->esc($bedrijfsnaam),
				'telefoon' => $this->esc($telefoon),
				'email' => $this->esc($email),
				'straat' => $this->esc($straat),
				'huisnummer' => $this->esc($huisnummer),
				'postcode' => $this->esc($postcode),
				'plaats' => $this->esc($plaats),
				'land' => $this->esc($land)
			);
		
			// insert in DB
			$this->klant_id = $this->dbInsert("klanten",$array);
				
			// set client data
			$this->setClientData();
		
			return $this->klant_id;
		}
			
	
		function insertBestelling($bestelling_totaal, $betaalmethode, $opmerkingen, $bestelling_voltooid, $bestelling_betaald, $ordered_products, $order_delivery, $delivery_address=null)
		{
		
			$this->factuur_nr 	= $this->getFactuurNummer();
		 	$this->bezorgkosten = $order_delivery;
		
			$array = array(
				'klant_id' => $this->esc($this->klant_id),
				'order_id' => $this->esc($this->factuur_nr),
				'totaal' => $bestelling_totaal,
				'bezorgkosten' => $this->esc($this->bezorgkosten),
				'type_betaling' => $this->esc($betaalmethode),
				'opmerkingen' => $this->esc($opmerkingen),
				'voltooid' => $bestelling_voltooid,
				'betaald' => $bestelling_betaald
			);
			
			
			// insert delivery address if different that invoice address
			if( $delivery_address != null) $array = array_merge($array,$delivery_address);

			
			// insert in DB
			$order_id = $this->dbInsert("bestellingen",$array);
		

			// insert products
			$this->insertBestellingProducten($ordered_products,$order_id);
		
			return $order_id;		
		}


		function insertBestellingProducten($bestellijst,$bestelling_id)
		{
				
			foreach($bestellijst as $uid => $p)
			{	
				$array = array(
					'uid' => $this->esc($uid),
					'bestelling_id' => $bestelling_id,
					'aantal' => $this->esc($p["amount"]),
					'prijs' => $this->esc($p["price"]),
					'maat' => $this->esc($p["size"]),
					'options' => $this->esc(str_replace("|*|",", ",$p["options"])),
					'totaal' => $this->esc($p["price"]* $p["amount"])
				);
		
				// insert in DB
				$order_id = $this->dbInsert("bestellingen_producten",$array);
		
			}
		
		
		}
	

		function updateBezorgAdres($bestelling_id,$tav_afleveradres,$straat_afleveradres,$huisnummer_afleveradres,$postcode_afleveradres,$plaats_afleveradres,$land_afleveradres)
		{
		
			$this->update("UPDATE `bestellingen`
				SET 
					`tav` = '". $this->esc($tav_afleveradres) ."',
					`straat` = '". $this->esc($straat_afleveradres) ."',
					`huisnummer` = '". $this->esc($huisnummer_afleveradres) ."',
					`postcode` = '". $this->esc($postcode_afleveradres) ."',
					`plaats` = '". $this->esc($plaats_afleveradres) ."',
					`land` = '". $this->esc($land_afleveradres) ."' 
				WHERE 
					`bestelling_id` = '". $this->esc($bestelling_id) ."'"
				);
		}


		function insertAfleveradres($user_id,$afleveradres)
		{
			$array = array(
				'user_id' => $this->esc($user_id),
				'adres' => $this->esc($afleveradres)
			);
		
			// insert in DB
			$order_id = $this->dbInsert("bestellingen_afleveradressen",$array);
		
		}


		function updateTransactieId($bestelling_id,$transactionID)
		{
			$this->update("UPDATE `bestellingen` SET `ideal_trans_id` = '". $this->esc($transactionID) ."' WHERE `bestelling_id` = '". $this->esc($bestelling_id) ."'");
		}


		function updateIdealStatus($transactionID)
		{
			$this->update("UPDATE `bestellingen` SET `voltooid` = 1 WHERE `ideal_trans_id` = '".$this->esc($transactionID)."'");
		}
	
	
		function getDBFactuurNummer($transactionID)
		{
			$order = $this->run("SELECT * FROM `bestellingen` WHERE `ideal_trans_id` = '".$this->esc($transactionID)."'",false);
			return $order["order_id"];
		}
	
	
		function getFactuurNummer()
		{
			$settings = $this->run("SELECT * FROM `instellingen`LIMIT 0,1",false);
		
			$this->update("UPDATE `instellingen` SET `order_nummer`= ". ($settings["order_nummer"]+1) ." WHERE `id` = '". $settings["id"] ."'");

			return $factuurnummer = $settings["prefix_order_nummer"].sprintf('%05d',$settings["order_nummer"]);		
		
		}

	
		function updateHTML($bestelling_id,$html)
		{
			$this->update("UPDATE `bestellingen` SET `html` = '". $this->esc($html) ."' WHERE `bestelling_id` = '". $this->esc($bestelling_id) ."'");
		}


		function maakFactuur($emailBody)
		{
			//settings
			$settings = $this->run("SELECT * FROM `instellingen` WHERE `id`='1'",false);
		
			// add email footer
			$bericht = $this->getEmailHeader($settings);
		
			// email body toevoegen
			$bericht .= "<tr><td colspan='4'>". $emailBody ."</td></tr>";
		
			// add email footer
			$bericht .= $this->getEmailFooter($settings);
		
			return $bericht;
		}


		/*
		 * Send email
		 */
		function verstuurEmail($bericht,$onderwerp,$user_email=null)
		{
			$data = $this->run("SELECT * FROM `instellingen` WHERE `id` = 1",false);
		
	
			$headers_consument 	= "From: ".$data["master_email"]."\n";  
			$headers_consument .= "Reply-To: ".$data["master_email"]."\n";
			$headers_consument .= "Content-type: text/html; charset=UTF-8\n";
		
			$headers_masteremail = "From: ".$data["master_email"]."\n";  
			$headers_masteremail .= "Reply-To: $user_email\n";
			$headers_masteremail .= "Content-type: text/html; charset=UTF-8\n";
		
			if($user_email != null) mail($user_email, $onderwerp, $bericht, $headers_consument);
	
			if(mail($data["master_email"], $onderwerp, $bericht, $headers_masteremail))
			{
				//mail("info@kaschkajewellery.nl,contact@creativefellows.nl", $onderwerp, $bericht, $headers_masteremail);
				return true;
			}
			else return false;
				
		}
		
		
		/*
		 * get email header
		 */
		protected function getEmailHeader($settings)
		{		
			$header = "<html><head></head><body>";	
			$header .= "<table border='0' cellspacing='0' cellpadding='5' style='width:600px; font-size:12px;font-family:Helvetica,arial, sans-serif; color:#333;' align='center'>";
			$header .= "<tr><td colspan='4'>&nbsp;</td></tr>";
			$header .= "<tr><td colspan='4' style='border-bottom:solid 1px #dddddd;height:124x;'><img src='". $settings["website"] ."/". $settings["logo"] ."' alt='". $settings["bedrijfsnaam"] ."' style='". $settings["logo_style"] ."' /></td></tr>";
			$header .= "<tr><td colspan='4'>&nbsp;</td></tr>";
			return $header;
		}
		

		/*
		 * get email footer
		 */
		protected function getEmailFooter($settings)
		{
			$footer = "<tr><td colspan='4' style='border-bottom:solid 1px #dddddd;'>&nbsp;</td></tr>";
			$footer .= "<tr><td colspan='4'>&nbsp;</td></tr>";
			$footer .= "<tr><td colspan='4' style='width:260px;vertical-align:top;line-height:16px;'>";
		
				$footer .= "<table border='0' cellspacing='0' cellpadding='3' style='width:100%; font-size:13px;font-family:Helvetica,arial, sans-serif; color:#333;'>";
					$footer .= "<tr>";
						$footer .= "<td style='width:300px;vertical-align:top;font-size:12px;'>
						<strong>".$settings["bedrijfsnaam"]."</strong><br />
						".$settings["adres"]."<br />
						".$settings["postcode_woonplaats"]."<br />
						".$settings["master_email"]."</td>";
						$footer .= "<td style='vertical-align:top;font-size:12px;'><br />Bank ".$settings["bank"]."<br />IBAN ".$settings["bank_iban"]."<br />BIC ".$settings["bank_bic"]."</td>";	
					$footer .= "</tr>";
				
				$footer .= "</table>";
					
			$footer .= "</td></tr>";
			$footer .= "<tr><td colspan='4'>&nbsp;</td></tr>";
			$footer .= "<tr><td colspan='4'>&nbsp;</td></tr>";
		
			$footer .= "</table>";
			$footer .= "</body></html>";
	
			return $footer;
		}
	
		function checkCode($code)
		{

			if(trim($code) == "") return null;
		
			$code_data	= $this->run("SELECT * FROM `kortingscodes`,`kortingcode_reeks` WHERE `kortingscodes`.`kortingscode_id` = `kortingcode_reeks`.`kortingscode_id` AND `code` ='".$this->esc($code)."' AND status = '1'",false);
			return $code_data;
		
		}
	
		function getData($type,$id,$return=null)
		{
		
			switch($type)
			{			
				case "korting":
					$query = "SELECT * FROM `kortingscodes` WHERE `kortingscode_id` = ".$this->esc($id);
				break;
			}
		
			$code_data	= $this->run($query,false);
		
			if($return != null) return $code_data[$return];
			else return $r;
	
		}
	
		function deactiveerCode($code_reeks_id,$user_id)
		{
			$this->update("UPDATE `kortingcode_reeks` SET `status` = 0,`used_by_klant` = '$user_id' WHERE `codereeks_id` =".$code_reeks_id);			
		}
	
		function getKorting($discount_amount,$discount_type,$order_total)
		{

			// fixed discount
			if($discount_type == 1) return $discount_amount;
			else
			{ 
				// percentage discount
				return ($discount_amount/100) * $order_total;

			}
			
		}
		

	}

	
	
?>