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> ';
$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> ';
$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 ? "€ " : "") . 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'> </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'> </td></tr>";
return $header;
}
/*
* get email footer
*/
protected function getEmailFooter($settings)
{
$footer = "<tr><td colspan='4' style='border-bottom:solid 1px #dddddd;'> </td></tr>";
$footer .= "<tr><td colspan='4'> </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'> </td></tr>";
$footer .= "<tr><td colspan='4'> </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;
}
}
}
?>