`
kirenenko04
  • 浏览: 145977 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Add To Cart Programmlly

 
阅读更多
<?php 
class Bysoft_Mycheckout_Model_Addtocart{
	
	/**
	 * When occur FATAL ERROR, it will redo the run function 
	 * @param unknown $i
	 */
	public function shutdown($i) {
		var_dump('already shutdown.');
		$last_error = error_get_last();
		var_dump($last_error);
		register_shutdown_function(array(&$this,'shutdown',$i));
		$this->run($i);
	}
	
	/**
	 * main function:
	 * 1.get the number $i `th user,
	 * 2.login it
	 * 3.get two rand product and add them to user's shopping cart, before that, clear his shopping cart
	 */
	public function run($i) {
		umask(0);
		Mage::app('admin');
		$this->i=$i;
		register_shutdown_function(array(&$this,'shutdown',$i));
		Mage::app()->setCurrentStore(1);
		$websiteId = 1;
		$arr = $this->getProductData();
		$email = 'test_' . $i . '@test.com';
		$password = 'password';
		if ($this->login_user($email,$password)) {
			$this->cleanCart();
			var_dump($this->getCartItemNum());
			if($this->getCartItemNum() < 2) {
				$product_ids = array();
				for ($j = 1; $j <= 2; ++$j) {
					$product_ids[] = $this->saveRandProduct($arr,$j);		
				}
				
				$cart = Mage::getModel('checkout/cart');
				$cart->init();
		
				$customer = Mage::getModel("customer/customer");
				$customer->setWebsiteId(1);
				$customer->loadByEmail($email);
				$customer->load($customer->getId());
				
				$quote = Mage::getSingleton('checkout/session')->getQuote();
				$quote->setCustomer($customer);
				var_dump($quote->getCustomerId());
				$cart->addProductsByIds($product_ids);
				$cart->save();
				
			}
			Mage::getSingleton('customer/session')->logout()->renewSession();
		}
	}
	
	/**
	 * get all useable product sku from a csv file.
	 * @return multitype:unknown
	 */
	public function getProductData() {
		//get product data from csv file(which products have enough stock)
		$file_path = BP . DS . 'media' . DS. 'product_inventory' . DS .'data.csv';
		$fp = fopen($file_path, 'r');
		$res = array();
		$count = 0;
		while ($data = fgetcsv($fp)) {
			if (isset($data[0]) && trim($data[0])!= '' && $count != 0) {
				$res[] = $data;
			}
			++$count;
		}
		return $res;
	}
	
	/**
	 * login a user
	 */
	public function login_user($email,$password) {
		$session = Mage::getSingleton('customer/session');
		try {
			$session->login( $email, $password );
			$session->setCustomerAsLoggedIn($session->getCustomer());
			var_dump($email . ' login successed!');
			return true;
		} catch( Exception $e ) {
			return false;
		}
	
	}
	
	/**
	 * clean current logined user's shopping cart.
	 */
	public function cleanCart() {
		if ($this->getCartItemNum() >0) {
			Mage::getSingleton('checkout/cart')->truncate()->save();
			var_dump('remove all item from cart');
		}
	}
	
	/**
	 * count current user's shopping cart item number
	 */
	public function getCartItemNum() {
		//get cart item (current login user)
		$cart = Mage::getSingleton('checkout/session');
		$cart->init();
		$quote = $cart->getQuote();
		$items = $quote->getAllVisibleItems();
		foreach ($items as $item) {
			//var_dump($item->getData());
		}
		return count($items);
	}
	
	/**
	 * get random product from a array.
	 * @param array $arr
	 * @param int $j
	 * @return int
	 */
	
	public function saveRandProduct($arr,$j) {
		while (!$_product) {
			$num = (rand(($j-1)*(floor(count($arr)/2))+1,$j*floor(count($arr)/2)));
			$product_model = Mage::getModel('catalog/product');
			$productid = $product_model->getIdBySku($arr[$num-1][0]);
			$_product = $product_model->load($productid);
		}
		return $productid;
	}	
}

 

分享到:
评论

相关推荐

    Add to cart JumboAdobeXD源码下载设计素材UI设计.xd

    Add to cart JumboAdobeXD源码下载设计素材UI设计

    eastbay_addtocart:EastBay - 多账户自动加入购物车

    克隆这个git clone https://github.com/hassansin/eastbay_addtocart.git eastbay_addtocart && cd eastbay_addtocart : git clone https://github.com/hassansin/eastbay_addtocart.git eastbay_addtocart && cd ...

    addToCart.rar

    用vue实现加入购物车的抛物线动画,平抛运动,带有抛物线的小球抛物线掉落到购物车

    BestBuy Add To Cart Link Generator-crx插件

    语言:English 在bestbuy产品页面上,单击以创建专用加入卡特网链路的书签 当ps5s,series-xs或图形卡下降时,您有几秒钟 一项采购。 添加到购物车链接比页面上的按钮更可靠,因此此扩展名让您创建自己的。...

    react-task1-addtocart

    react-task1-addtocart

    AddToCart-crx插件

    语言:English 温度 安装此扩展程序以使RegExr的AddToCart功能正常工作!

    add-to-cart

    add-to-cart

    add to home

    经过测试,并在项目中有用过的,页面收藏到桌面的功能 js版本,有例子可测试

    VC6_add files to project失效解决方法

    VC6 add files to project失效解决方法

    Add Python to the search path on Windows

    Add Python to the search path on Windows

    drupal的addtoany模块

    drupal的addtoany模块,支持drupal6,可以方便的订阅、收藏或者通过email发送给其他朋友们,是个推广的好帮手。

    AddToAny:分享任何地方「AddToAny: Share Anywhere」-crx插件

    功能:-AddToAny的通用共享按钮和智能菜单-基于您可能已经在使用的服务进行个性化-与Gmail,WhatsApp,LinkedIn和更多社交媒体网络共享-AddToAny的“更多”按钮可让您随时随时访问任何其他服务-正确-单击以从上下文...

    Add-nofollow-to-XFN WordPress增加nofollow标签.rar

    插件名称:Add-nofollow-to-XFN 插件功能:在WordPress后台的"链接" - "添加新链接"中的"链接关系(XFN)"中增加一个"nofollow"选项,安装插件后效果如下: 安装方法: 下载插件压缩包,解压后将 "Add-nofollow-to...

    Ajax-Magento-ajax-add-to-cart.zip

    Ajax-Magento-ajax-add-to-cart.zip,[模块magento 1]magento ajax添加到购物车-ajoter vos produits au panier en ajax/感谢ajax将您的产品添加到购物车,ajax代表异步javascript和xml。它是多种web技术的集合,包括...

    add_arrow_to_line.m

    matlab功能函数,给直线加上箭头,使之成为矢线,起点[a,b],终点[c,d] 引用格式:add_arrow_to_line(a, c, b, d, color, linewidth, length_arrow) length_arrow指箭头边线长度

    好用的zencart 批发插件

    安装步骤如下: 1.压缩文件包,将文件里边的YOUR_TEMPLATE...--eof Add to Cart Box--&gt;就行.弄好这个文件之后,把includes下的其它文件都上传好。 3.进入前台,进入属性管理,你可以看到多了一个属性Grid了,选择即可

    reactjs-addtocart

    该项目是通过引导的。 可用脚本 在项目目录中,可以运行: yarn start 在开发模式下运行该应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。...

    Add to Microsoft To Do-0.20.0

    名称:Add to Microsoft To Do -------------------- 版本:0.20.0 作者:Pavel Ukhan 分类:生产工具 -------------------- 概述:这是将任何内容从网络保存到待办事项列表的最简单方法。 该扩展允许您将有关当前...

    Add Shopping Cart .zip

    JavaScript

Global site tag (gtag.js) - Google Analytics