
PK 
<?php
namespace app\library;
class CartShopingORG
{
protected $cartName;
// Maximum cart can added to cart, 0 = Unlimited
protected $cartLimit = 0;
// Maximum item can added to cart, 0 = Unlimited
protected $cartMaxItem = 0;
// Maximum quantity of a item can be added to cart, 0 = Unlimited
protected $itemMaxQuantity = 0;
// Do not use cookie, cart items will gone after browser closed
protected $useCookie = false;
private $items = [];
/*private $required = ['pid', 'name', 'salePrice','quantity'];
if (count(array_intersect_key(array_flip($required), $data)) === count($required)) {
// All required keys exist!
}*/
public function __construct($options = []){
if (!session_id()) {
session_start();
}
if (isset($options['cartLimit']) && preg_match('/^\d+$/', $options['cartLimit'])) {
$this->cartLimit = $options['cartLimit'];
}
if (isset($options['cartMaxItem']) && preg_match('/^\d+$/', $options['cartMaxItem'])) {
$this->cartMaxItem = $options['cartMaxItem'];
}
if (isset($options['itemMaxQuantity']) && preg_match('/^\d+$/', $options['itemMaxQuantity'])) {
$this->itemMaxQuantity = $options['itemMaxQuantity'];
}
if (isset($options['useCookie']) && $options['useCookie']) {
$this->useCookie = true;
}
$this->cartName = md5((isset($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : 'SimpleCart') . '_baklol';
$this->loadCart();
}
private function saveCart(){
if ($this->useCookie) {
setcookie($this->cartName, json_encode($this->items), time() + 604800);
} else {
$_SESSION[$this->cartName] = json_encode($this->items);
}
}
private function loadCart(){
$this->items = ($this->useCookie) ? json_decode((isset($_COOKIE[$this->cartName])) ? $_COOKIE[$this->cartName] : '[]', true) : json_decode((isset($_SESSION[$this->cartName])) ? $_SESSION[$this->cartName] : '[]', true);
}
//private function ItemArray($prid,$cid,$scid,$schid,$pid,$name,$salePrice,$quantity,$taxPrice,$regulerPrice,$weight,$variant,$finish,$brand,$model,$notes,$description,$washcare,$image){
private function ItemArray($data=[]){
$array=[
"cartId"=>(isset($data["cartId"]))?$data["cartId"]:md5(date('mdYhis',time())),
//"cartTime"=>(date('mdYhis', time())),
"pid"=>(isset($data["pid"]))?$data["pid"]:"",
"name"=>(isset($data["name"]))?$data["name"]:"",
"salePrice"=>(isset($data["salePrice"]))?$data["salePrice"]:0,
"quantity"=>(isset($data["quantity"]))?$data["quantity"]:0,
"component"=>[
"prid"=>(isset($data["prid"]))?$data["prid"]:"",
"cid"=>(isset($data["cid"]))?$data["cid"]:"",
"scid"=>(isset($data["scid"]))?$data["scid"]:"",
"schid"=>(isset($data["schid"]))?$data["schid"]:"",
"sizeid"=>(isset($data["sizeid"]))?$data["sizeid"]:"",
"colorid"=>(isset($data["colorid"]))?$data["colorid"]:"",
],
"option"=>[
"taxPrice"=>(isset($data["taxPrice"]))?$data["taxPrice"]:0,
"regulerPrice"=>(isset($data["regulerPrice"]))?$data["regulerPrice"]:0,
//"weight"=>(isset($data["weight"]))?$data["weight"]:"",
"variant"=>(isset($data["variant"]))?$data["variant"]:"",
// "finish"=>(isset($data["finish"]))?$data["finish"]:"",
// "brand"=>(isset($data["brand"]))?$data["brand"]:"",
// "model"=>(isset($data["model"]))?$data["model"]:"",
"notes"=>(isset($data["notes"]))?$data["notes"]:"",
// "description"=>(isset($data["description"]))?$data["description"]:"",
// "washcare"=>(isset($data["washcare"]))?$data["washcare"]:""
],
"slider"=>[
"image"=>(isset($data["image"]))?$data["image"]:"",
//"image2"=>(isset($data["image2"]))?$data["image2"]:""
],
"total"=>($data["salePrice"]*$data["quantity"])
];
return $array;
}
//public function addItemToCart($prid,$cid,$scid,$schid,$pid,$name,$salePrice,$quantity,$taxPrice,$regulerPrice,$weight,$variant,$finish,$brand,$model,$notes,$description,$washcare,$image) {
public function addItemToCart($data=[]){
$quantity = (preg_match('/^\d+$/', $data["quantity"])) ? $data["quantity"] : 1;
$pid = $data["pid"];
$sizeid = $data["sizeid"];
if(is_numeric($pid) && is_numeric($quantity)){
$cartList = $this->items;
foreach ($cartList as $key => $value) {
if ($cartList[$key]['pid'] == $pid && $cartList[$key]['component']['sizeid'] == $sizeid)
{
// p($cartList[$key]['component']);
// echo"\nCART: ".$cartList[$key]['component']['sizeid'];
// echo"\ADD: ".$sizeid;
// exit;
$this->items[$key]["quantity"]=$quantity; // add one count
$this->saveCart();
return true;
}
}
//$item = $this->ItemArray($prid,$cid,$scid,$schid,$pid,$name,$salePrice,$quantity,$taxPrice,$regulerPrice,$weight,$variant,$finish,$brand,$model,$notes,$description,$washcare,$image);
if(!empty($this->cartLimit) && $this->cartLimit<=count($cartList)){
return false;
}else{
$item = $this->ItemArray($data);
array_push($this->items, $item);
$this->saveCart();
return true;
}
}
return false;
}
public function plusItemToCart($pid,$sizeid,$quantity=1){
$quantity = (preg_match('/^\d+$/', $quantity)) ? $quantity : 1;
if(is_numeric($pid) && is_numeric($quantity)){
$cartList = $this->items;
foreach ($cartList as $key => $value) {
if ($cartList[$key]['pid'] == $pid && $cartList[$key]['component']['sizeid'] == $sizeid) {
$this->items[$key]["quantity"] +=$quantity; // add multiple count
//($this->items[$key]["quantity"] > $this->itemMaxQuantity) ? $this->itemMaxQuantity : $this->items[$key]["quantity"];
break;
}
}
$this->saveCart();
return true;
}
return false;
}
public function setCountForItem($pid,$sizeid,$quantity=1){
$quantity = (preg_match('/^\d+$/', $quantity)) ? $quantity : 1;
if(is_numeric($pid) && is_numeric($quantity)){
$cartList = $this->items;
foreach ($cartList as $key => $value){
if ($cartList[$key]['pid'] == $pid && $cartList[$key]['component']['sizeid'] == $sizeid){
$this->items[$key]["quantity"] =$quantity; // add one count
break;
}
}
$this->saveCart();
return true;
}
return false;
}
public function getSelectedCount($pid,$sizeid){
$cartList = $this->items;
foreach ($cartList as $key => $value){
if ($cartList[$key]['pid'] == $pid && $cartList[$key]['component']['sizeid'] == $sizeid){
return ($cartList[$key]["quantity"])?$cartList[$key]["quantity"]:0;
break;
}
return 0;
}
}
public function removeItemFromCart($pid,$sizeid){
$cartList = $this->items;
foreach ($cartList as $key => $value){
if ($cartList[$key]['pid'] == $pid && $cartList[$key]['component']['sizeid'] == $sizeid){
$this->items[$key]["quantity"]--;
if($cartList[$key]["quantity"]<1){
unset($this->items[$key]);
//array_splice($this->items, array_search($pid, $this->items), 1);
}
break;
}
}
$this->saveCart();
return true;
}
public function removeItemFromCartAll($pid,$sizeid){
$cartList = $this->items;
foreach ($cartList as $key => $value){
if ($cartList[$key]['pid'] == $pid && $cartList[$key]['component']['sizeid'] == $sizeid){
unset($this->items[$key]);
//array_splice($cartList, array_search($pid, $cartList), 1);
break;
}
}
$this->saveCart();
return true;
}
public function clearCart(){
$this->items = [];
if ($this->useCookie) {
setcookie($this->cartName, '', -1);
} else {
unset($_SESSION[$this->cartName]);
}
$this->saveCart();
return true;
}
public function cartlItem(){
$cartList = $this->items;
/*$flags= $output= []; $l = count($cartList); $i=0;
for ($i=0; $i < $l ; $i++) {
if(@$flags[$cartList[$i]["pid"]]) continue;
$flags[$cartList[$i]["pid"]] =true;
array_push($output,$cartList[$i]["pid"]);
}*/
$cartListCount = count($cartList);
return ($cartListCount!=0)?$cartListCount:0;
}
/*public function getCartCount(){
$cartList = $this->items;
$flags= $output= []; $l = count($cartList); $i=0;
for ($i=0; $i < $l ; $i++) {
if(@$flags[$cartList[$i]["pid"]]) continue;
$flags[$cartList[$i]["pid"]] =true;
array_push($output,$cartList[$i]["pid"]);
}
$cartListCount = count($output);
return ($cartListCount!=0)?$cartListCount:0;
}*/
public function countCart(){
$cartList = $this->items;
$totalCount =0;
foreach ($cartList as $key => $value){
$totalCount +=$cartList[$key]["quantity"];
}
return $totalCount;
}
public function totalCart(){
$cartList = $this->items;
$totalCost =0;
foreach ($cartList as $key => $value){
$totalCost +=($cartList[$key]["salePrice"]*$cartList[$key]["quantity"]);
}
return $totalCost;
}
public function listCart($type=false){
$cartCopy = [];
$cartList = $this->items;
foreach ($cartList as $key => $value){
$item = $cartList[$key];
$itemCopy =[];
foreach($item as $iKey =>$iValue) {
$itemCopy[$iKey] = $item[$iKey];
}
$itemCopy["total"]=number_format(($cartList[$key]["salePrice"]*$cartList[$key]["quantity"]),2,",",".");
array_push($cartCopy,$itemCopy);
}
return($type)?json_encode($cartCopy):$cartCopy;
}
public function getItems(){
return $this->items;
}
public function p($q)
{
echo"<pre>";
print_r($q);
echo"</pre>";
}
}


PK 99