Version Notes
Improved support for downloadable products; Solve a conflict with Amasty extension;
Download this release
Release Info
| Developer | Kancart.com |
| Extension | KANCART_MobileAPI |
| Version | 2.0.7 |
| Comparing to | |
| See all releases | |
Code changes from version 2.0.6 to 2.0.7
- app/code/community/Kancart/MobileApi/Model/Abstract.php +9 -0
- app/code/community/Kancart/MobileApi/Model/Checkout.php +17 -13
- app/code/community/Kancart/MobileApi/Model/Coupon.php +169 -0
- app/code/community/Kancart/MobileApi/Model/ErrorHandler.php +11 -6
- app/code/community/Kancart/MobileApi/Model/Item.php +50 -19
- app/code/community/Kancart/MobileApi/Model/Order.php +19 -37
- app/code/community/Kancart/MobileApi/Model/PayPalEC.php +14 -2
- app/code/community/Kancart/MobileApi/Model/PayPalWPS.php +1 -1
- app/code/community/Kancart/MobileApi/Model/Result.php +0 -1
- app/code/community/Kancart/MobileApi/Model/Store.php +3 -2
- app/code/community/Kancart/MobileApi/Model/User.php +4 -1
- app/code/community/Kancart/MobileApi/controllers/IndexController.php +1 -1
- package.xml +6 -5
app/code/community/Kancart/MobileApi/Model/Abstract.php
CHANGED
|
@@ -33,6 +33,15 @@ abstract class Kancart_MobileApi_Model_Abstract {
|
|
| 33 |
return Mage::app()->getTranslator()->translate($args);
|
| 34 |
}
|
| 35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
public function toAddressData($address) {
|
| 37 |
if (!$address) {
|
| 38 |
return array();
|
| 33 |
return Mage::app()->getTranslator()->translate($args);
|
| 34 |
}
|
| 35 |
|
| 36 |
+
/**
|
| 37 |
+
* Retrieve current layout object
|
| 38 |
+
*
|
| 39 |
+
* @return Mage_Core_Model_Layout
|
| 40 |
+
*/
|
| 41 |
+
public function getLayout() {
|
| 42 |
+
return Mage::getSingleton('core/layout');
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
public function toAddressData($address) {
|
| 46 |
if (!$address) {
|
| 47 |
return array();
|
app/code/community/Kancart/MobileApi/Model/Checkout.php
CHANGED
|
@@ -99,6 +99,7 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
| 99 |
$checkoutDetailArr['need_shipping_address'] = !Kancart::getModel('Store')->checkAddressIntegrity($checkoutDetailArr['shipping_address']);
|
| 100 |
$checkoutDetailArr['billing_address_valid'] = Kancart::getModel('Store')->checkAddressIntegrity($checkoutDetailArr['billing_address']);
|
| 101 |
$checkoutDetailArr['review_orders'] = array($this->getOrderReview());
|
|
|
|
| 102 |
$checkoutDetailArr['price_infos'] = $this->getPriceInfos();
|
| 103 |
$checkoutDetailArr['payment_methods'] = $this->getPaymentMethods();
|
| 104 |
|
|
@@ -200,7 +201,12 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
| 200 |
$this->getOnepage()->getQuote()->getShippingAddress()->setCollectShippingRates(true);
|
| 201 |
$this->getOnepage()->getQuote()->collectTotals()->save();
|
| 202 |
$shippingMethods = array();
|
| 203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 204 |
if (($_shippingRateGroups = $block->getShippingRates())) {
|
| 205 |
foreach ($_shippingRateGroups as $code => $_rates) {
|
| 206 |
foreach ($_rates as $_rate) {
|
|
@@ -291,6 +297,12 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
| 291 |
}
|
| 292 |
|
| 293 |
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 294 |
if ($payment_id === 'paypal') {
|
| 295 |
$real_payment_id = 'paypal_standard';
|
| 296 |
} else if ($payment_id === 'paypalwpp') {
|
|
@@ -326,29 +338,21 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
| 326 |
'purchaseorder' => 3
|
| 327 |
);
|
| 328 |
|
|
|
|
| 329 |
$payments = array();
|
| 330 |
-
$availablePayments = array();
|
| 331 |
$methods = $this->getAvailablePayment();
|
| 332 |
if ($methods) {
|
| 333 |
foreach ($methods as $method) {
|
| 334 |
$code = $method->getCode();
|
|
|
|
|
|
|
|
|
|
| 335 |
if (isset($priorsPayments[$code])) {
|
| 336 |
$payments[$priorsPayments[$code]] = $code;
|
| 337 |
}
|
| 338 |
-
$availablePayments[] = $code;
|
| 339 |
}
|
| 340 |
}
|
| 341 |
|
| 342 |
-
if (sizeof($availablePayments) > 0) {
|
| 343 |
-
$arr = explode('_', $payment_id);
|
| 344 |
-
$code = end($arr);
|
| 345 |
-
if (in_array($code, $availablePayments)) {
|
| 346 |
-
return $code;
|
| 347 |
-
}
|
| 348 |
-
} else {
|
| 349 |
-
Mage::throwException('No available offline payment method configured on Magento backend.');
|
| 350 |
-
}
|
| 351 |
-
|
| 352 |
if (sizeof($payments) < 1) {
|
| 353 |
Mage::throwException('No available offline payment method configured on Magento backend.');
|
| 354 |
}
|
| 99 |
$checkoutDetailArr['need_shipping_address'] = !Kancart::getModel('Store')->checkAddressIntegrity($checkoutDetailArr['shipping_address']);
|
| 100 |
$checkoutDetailArr['billing_address_valid'] = Kancart::getModel('Store')->checkAddressIntegrity($checkoutDetailArr['billing_address']);
|
| 101 |
$checkoutDetailArr['review_orders'] = array($this->getOrderReview());
|
| 102 |
+
$checkoutDetailArr['need_select_shipping_method'] = !$is_virtual && empty($checkoutDetailArr['review_orders'][0]['selected_shipping_method_id']);
|
| 103 |
$checkoutDetailArr['price_infos'] = $this->getPriceInfos();
|
| 104 |
$checkoutDetailArr['payment_methods'] = $this->getPaymentMethods();
|
| 105 |
|
| 201 |
$this->getOnepage()->getQuote()->getShippingAddress()->setCollectShippingRates(true);
|
| 202 |
$this->getOnepage()->getQuote()->collectTotals()->save();
|
| 203 |
$shippingMethods = array();
|
| 204 |
+
|
| 205 |
+
$layout = $this->getLayout();
|
| 206 |
+
$layout->getUpdate()->load('checkout_onepage_shippingmethod');
|
| 207 |
+
$layout->generateXml()->generateBlocks();
|
| 208 |
+
$block = $layout->getBlock('root');
|
| 209 |
+
|
| 210 |
if (($_shippingRateGroups = $block->getShippingRates())) {
|
| 211 |
foreach ($_shippingRateGroups as $code => $_rates) {
|
| 212 |
foreach ($_rates as $_rate) {
|
| 297 |
}
|
| 298 |
|
| 299 |
try {
|
| 300 |
+
Kancart::getModel('Coupon')->applyPromotion(); //apply mobile Promotion
|
| 301 |
+
|
| 302 |
+
if ($this->getQuote()->getGrandTotal() == 0) {
|
| 303 |
+
$payment_id = 'free';
|
| 304 |
+
}
|
| 305 |
+
|
| 306 |
if ($payment_id === 'paypal') {
|
| 307 |
$real_payment_id = 'paypal_standard';
|
| 308 |
} else if ($payment_id === 'paypalwpp') {
|
| 338 |
'purchaseorder' => 3
|
| 339 |
);
|
| 340 |
|
| 341 |
+
$kcode = end(explode('_', $payment_id));
|
| 342 |
$payments = array();
|
|
|
|
| 343 |
$methods = $this->getAvailablePayment();
|
| 344 |
if ($methods) {
|
| 345 |
foreach ($methods as $method) {
|
| 346 |
$code = $method->getCode();
|
| 347 |
+
if ($kcode == $code) {
|
| 348 |
+
return $code;
|
| 349 |
+
}
|
| 350 |
if (isset($priorsPayments[$code])) {
|
| 351 |
$payments[$priorsPayments[$code]] = $code;
|
| 352 |
}
|
|
|
|
| 353 |
}
|
| 354 |
}
|
| 355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 356 |
if (sizeof($payments) < 1) {
|
| 357 |
Mage::throwException('No available offline payment method configured on Magento backend.');
|
| 358 |
}
|
app/code/community/Kancart/MobileApi/Model/Coupon.php
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Kancart_MobileApi_Model_Coupon extends Kancart_MobileApi_Model_Abstract {
|
| 4 |
+
|
| 5 |
+
public function promotionalCouponGenerator($discountAmount) {
|
| 6 |
+
try {
|
| 7 |
+
$model = Mage::getModel('salesrule/rule');
|
| 8 |
+
if (!($data = $this->initData($discountAmount))) {
|
| 9 |
+
return array(false, '0xEEEE', NULL);
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
$collection = $model->getResourceCollection();
|
| 13 |
+
$collection->addFieldToSelect(array('from_date', 'to_date', 'rule_id'))
|
| 14 |
+
->addFieldToFilter('name', 'Kancart')
|
| 15 |
+
->addFieldToFilter('simple_action', $this->getRequest()->getParam('simple_action'))
|
| 16 |
+
->addFieldToFilter('apply_to_shipping', $this->getRequest()->getParam('apply_to_shipping'))
|
| 17 |
+
->addFieldToFilter('discount_amount', $this->getRequest()->getParam('discount_amount'));
|
| 18 |
+
|
| 19 |
+
$collection->load();
|
| 20 |
+
$item = current($collection->getItems());
|
| 21 |
+
if ($item) {
|
| 22 |
+
return array(true, '', $item->getCode());
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
$collection = Mage::helper('Customer')->getGroups();
|
| 26 |
+
foreach ($collection->getItems() as $group) {
|
| 27 |
+
$data['customer_group_ids'][] = $group->getId();
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
//filter HTML tags
|
| 31 |
+
/** @var $helper Mage_Adminhtml_Helper_Data */
|
| 32 |
+
$helper = Mage::helper('adminhtml');
|
| 33 |
+
$data['name'] = $helper->stripTags($data['name']);
|
| 34 |
+
$data['description'] = $helper->stripTags($data['description']);
|
| 35 |
+
foreach ($data['store_labels'] as &$label) {
|
| 36 |
+
$label = $helper->stripTags($label);
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
$id = $this->getRequest()->getParam('promotion_id');
|
| 40 |
+
if ($id) {
|
| 41 |
+
$model->load($id);
|
| 42 |
+
if ($id != $model->getId()) {
|
| 43 |
+
Mage::throwException(Mage::helper('salesrule')->__('Wrong rule specified.'));
|
| 44 |
+
}
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
$session = Mage::getSingleton('adminhtml/session');
|
| 48 |
+
|
| 49 |
+
$validateResult = $model->validateData(new Varien_Object($data));
|
| 50 |
+
if ($validateResult !== true) {
|
| 51 |
+
return array(false, '0xEEEE', $validateResult);
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
if (isset($data['simple_action']) && $data['simple_action'] == 'by_percent'
|
| 55 |
+
&& isset($data['discount_amount'])) {
|
| 56 |
+
$data['discount_amount'] = min(100, $data['discount_amount']);
|
| 57 |
+
}
|
| 58 |
+
if (isset($data['rule']['conditions'])) {
|
| 59 |
+
$data['conditions'] = $data['rule']['conditions'];
|
| 60 |
+
}
|
| 61 |
+
if (isset($data['rule']['actions'])) {
|
| 62 |
+
$data['actions'] = $data['rule']['actions'];
|
| 63 |
+
}
|
| 64 |
+
unset($data['rule']);
|
| 65 |
+
$model->loadPost($data);
|
| 66 |
+
|
| 67 |
+
$session->setPageData($model->getData());
|
| 68 |
+
|
| 69 |
+
$model->save();
|
| 70 |
+
return array(true, '0x0000', $data['coupon_code']);
|
| 71 |
+
} catch (Mage_Core_Exception $e) {
|
| 72 |
+
$mesg = array($e->getMessage());
|
| 73 |
+
} catch (Exception $e) {
|
| 74 |
+
Mage::logException($e);
|
| 75 |
+
$mesg = array($e->getMessage());
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
return array(false, '0xEEEE', $mesg);
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
public function applyPromotion() {
|
| 82 |
+
$discountAmount = $this->getRequest()->getParam('discount_amount');
|
| 83 |
+
$freeShipping = $this->getRequest()->getParam('coupon_free_ship', false);
|
| 84 |
+
if ($discountAmount || ($freeShipping && $freeShipping > 0)) {
|
| 85 |
+
list($result, $code, $coupon) = $this->promotionalCouponGenerator($discountAmount);
|
| 86 |
+
if ($result) {
|
| 87 |
+
try {
|
| 88 |
+
$this->getQuote()->setCouponCode($coupon)->collectTotals()->save();
|
| 89 |
+
} catch (Exception $e) {
|
| 90 |
+
Mage::logException($e);
|
| 91 |
+
}
|
| 92 |
+
}
|
| 93 |
+
}
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
public function getQuote() {
|
| 97 |
+
if (empty($this->_quote)) {
|
| 98 |
+
$this->_quote = Mage::getSingleton('checkout/cart')->getQuote();
|
| 99 |
+
}
|
| 100 |
+
return $this->_quote;
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
private function initData($discountAmount) {
|
| 104 |
+
$now = time();
|
| 105 |
+
$couponCode = 'KM' . strtoupper(dechex($now));
|
| 106 |
+
$couponName = 'Kancart';
|
| 107 |
+
$couponDesc = 'From mobile coupon';
|
| 108 |
+
$fromDate = date('Y-m-d', $now);
|
| 109 |
+
$toDate = date('Y-m-d', $now + 24 * 3600);
|
| 110 |
+
$freeShipping = (bool) $this->getRequest()->getParam('coupon_free_ship', false);
|
| 111 |
+
|
| 112 |
+
if (empty($discountAmount) && !$freeShipping) {
|
| 113 |
+
return false;
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
$conditions = array();
|
| 117 |
+
$conditions[1] = array(
|
| 118 |
+
'type' => 'salesrule/rule_condition_combine',
|
| 119 |
+
'aggregator' => 'all',
|
| 120 |
+
'value' => '1',
|
| 121 |
+
'new_child' => ''
|
| 122 |
+
);
|
| 123 |
+
|
| 124 |
+
$actions = array();
|
| 125 |
+
$actions[1] = array(
|
| 126 |
+
'type' => 'salesrule/rule_condition_product_combine',
|
| 127 |
+
'aggregator' => 'all',
|
| 128 |
+
'value' => '1',
|
| 129 |
+
'new_child' => ''
|
| 130 |
+
);
|
| 131 |
+
|
| 132 |
+
$data = array(
|
| 133 |
+
'description' => $couponDesc,
|
| 134 |
+
'name' => $couponName,
|
| 135 |
+
'is_active' => '1',
|
| 136 |
+
'rule_id' => $this->getRequest()->getParam('promotion_id', null),
|
| 137 |
+
'website_ids' => array(Mage::app()->getStore()->getWebsiteId()),
|
| 138 |
+
'coupon_type' => Mage_SalesRule_Model_Rule::COUPON_TYPE_SPECIFIC,
|
| 139 |
+
'rule' => array('conditions' => $conditions, 'actions' => $actions),
|
| 140 |
+
'store_labels' => array('0' => 'Kancart Coupon'),
|
| 141 |
+
'customer_group_ids' => array(),
|
| 142 |
+
'coupon_code' => $couponCode,
|
| 143 |
+
'uses_per_coupon' => 0,
|
| 144 |
+
'uses_per_customer' => 0,
|
| 145 |
+
'from_date' => $fromDate,
|
| 146 |
+
'to_date' => $toDate,
|
| 147 |
+
'sort_order' => 1,
|
| 148 |
+
'is_rss' => 1,
|
| 149 |
+
'discount_qty' => '0',
|
| 150 |
+
'discount_step' => '0',
|
| 151 |
+
'apply_to_shipping' => $this->getRequest()->getParam('discount_for_shipping', false),
|
| 152 |
+
'simple_free_shipping' => $freeShipping,
|
| 153 |
+
'stop_rules_processing' => '0'
|
| 154 |
+
);
|
| 155 |
+
|
| 156 |
+
if (substr($discountAmount, -1) == '%') {
|
| 157 |
+
$data['simple_action'] = Mage_SalesRule_Model_Rule::BY_PERCENT_ACTION;
|
| 158 |
+
$data['discount_amount'] = substr($discountAmount, 0, -1);
|
| 159 |
+
} elseif (is_numeric($discountAmount) && $discountAmount > 0) {
|
| 160 |
+
$data['simple_action'] = Mage_SalesRule_Model_Rule::CART_FIXED_ACTION;
|
| 161 |
+
$data['discount_amount'] = $discountAmount;
|
| 162 |
+
}
|
| 163 |
+
|
| 164 |
+
return $data;
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
// end
|
app/code/community/Kancart/MobileApi/Model/ErrorHandler.php
CHANGED
|
@@ -5,6 +5,7 @@ class KancartErrorHandler {
|
|
| 5 |
// CATCHABLE ERRORS
|
| 6 |
public static function captureNormal($number, $message, $file, $line) {
|
| 7 |
$errormsg = "ERROR #$number: $message in $file on line $line ";
|
|
|
|
| 8 |
die(json_encode(array('result' => 'fail', 'code' => '0xFFFF', 'info' => $errormsg)));
|
| 9 |
return true;
|
| 10 |
}
|
|
@@ -13,25 +14,29 @@ class KancartErrorHandler {
|
|
| 13 |
public static function captureException($exception) {
|
| 14 |
// Display content $exception variable
|
| 15 |
$errormsg = "Uncaught Exception: #{$exception->getCode()} {$exception->getMessage()} in {$exception->getFile()} on line {$exception->getLine()} ";
|
|
|
|
| 16 |
die(json_encode(array('result' => 'fail', 'code' => '0xFFFF', 'info' => $errormsg)));
|
| 17 |
}
|
| 18 |
|
| 19 |
// UNCATCHABLE ERRORS
|
| 20 |
public static function captureFatalError() {
|
| 21 |
$error = error_get_last();
|
| 22 |
-
if ($error) {
|
| 23 |
-
if(!defined('REQUEST_NORMAL_COMPLETE')){
|
| 24 |
-
$
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
| 26 |
}
|
| 27 |
}
|
| 28 |
}
|
| 29 |
|
| 30 |
}
|
| 31 |
|
| 32 |
-
if(!defined('E_DEPRECATED'))define ('E_DEPRECATED', 8192);
|
| 33 |
|
| 34 |
-
set_error_handler(array('KancartErrorHandler', 'captureNormal'),
|
| 35 |
set_exception_handler(array('KancartErrorHandler', 'captureException'));
|
| 36 |
register_shutdown_function(array('KancartErrorHandler', 'captureFatalError'));
|
| 37 |
?>
|
| 5 |
// CATCHABLE ERRORS
|
| 6 |
public static function captureNormal($number, $message, $file, $line) {
|
| 7 |
$errormsg = "ERROR #$number: $message in $file on line $line ";
|
| 8 |
+
header("HTTP/1.0 200 OK",true);
|
| 9 |
die(json_encode(array('result' => 'fail', 'code' => '0xFFFF', 'info' => $errormsg)));
|
| 10 |
return true;
|
| 11 |
}
|
| 14 |
public static function captureException($exception) {
|
| 15 |
// Display content $exception variable
|
| 16 |
$errormsg = "Uncaught Exception: #{$exception->getCode()} {$exception->getMessage()} in {$exception->getFile()} on line {$exception->getLine()} ";
|
| 17 |
+
header("HTTP/1.0 200 OK",true);
|
| 18 |
die(json_encode(array('result' => 'fail', 'code' => '0xFFFF', 'info' => $errormsg)));
|
| 19 |
}
|
| 20 |
|
| 21 |
// UNCATCHABLE ERRORS
|
| 22 |
public static function captureFatalError() {
|
| 23 |
$error = error_get_last();
|
| 24 |
+
if ($error) {
|
| 25 |
+
if (!defined('REQUEST_NORMAL_COMPLETE') && isset($_REQUEST['method'])) {
|
| 26 |
+
if ($error['type'] == E_COMPILE_ERROR || $error['type'] == E_RECOVERABLE_ERROR || $error['type'] == E_ERROR || $error['type'] == E_CORE_ERROR || $error['type'] == E_USER_ERROR) {
|
| 27 |
+
$errormsg = "FATAL ERROR #{$error['type']}: {$error['message']} in {$error['file']} on line {$error['line']} ";
|
| 28 |
+
header("HTTP/1.0 200 OK",true);
|
| 29 |
+
die(json_encode(array('result' => 'fail', 'code' => '0xFFFF', 'info' => $errormsg)));
|
| 30 |
+
}
|
| 31 |
}
|
| 32 |
}
|
| 33 |
}
|
| 34 |
|
| 35 |
}
|
| 36 |
|
| 37 |
+
if(!defined('E_DEPRECATED')){define ('E_DEPRECATED', 8192);}
|
| 38 |
|
| 39 |
+
set_error_handler(array('KancartErrorHandler', 'captureNormal'), E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR|E_USER_ERROR);
|
| 40 |
set_exception_handler(array('KancartErrorHandler', 'captureException'));
|
| 41 |
register_shutdown_function(array('KancartErrorHandler', 'captureFatalError'));
|
| 42 |
?>
|
app/code/community/Kancart/MobileApi/Model/Item.php
CHANGED
|
@@ -60,8 +60,8 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
| 60 |
$this->getItemPrices();
|
| 61 |
$this->getItemImages();
|
| 62 |
$this->getProductDescription();
|
| 63 |
-
|
| 64 |
-
|
| 65 |
}
|
| 66 |
return array(true, '0x0000', array('item' => $this->item));
|
| 67 |
}
|
|
@@ -364,7 +364,7 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
| 364 |
$productPrice = $_item->getPrice();
|
| 365 |
}
|
| 366 |
if ($productPrice > 0.00) {
|
| 367 |
-
|
| 368 |
$attribute['price'] = $this->getCurrencyPrice($productPrice);
|
| 369 |
}
|
| 370 |
$attribute['options'] = array();
|
|
@@ -500,15 +500,10 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
| 500 |
foreach ($_attributes as $attribute) {
|
| 501 |
$productAttribute = $attribute->getProductAttribute();
|
| 502 |
$attributeValue = $_item->getData($productAttribute->getAttributeCode());
|
| 503 |
-
|
| 504 |
-
$options[$productAttribute->getId()] = array();
|
| 505 |
-
}
|
| 506 |
-
if (!isset($options[$productAttribute->getId()][$attributeValue])) {
|
| 507 |
-
$options[$productAttribute->getId()][$attributeValue] = array();
|
| 508 |
-
}
|
| 509 |
-
$options[$productAttribute->getId()][$attributeValue][] = $_productId;
|
| 510 |
}
|
| 511 |
}
|
|
|
|
| 512 |
foreach ($_attributes as $attribute) {
|
| 513 |
$productAttribute = $attribute->getProductAttribute();
|
| 514 |
$attributeId = $productAttribute->getId();
|
|
@@ -521,19 +516,13 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
| 521 |
$prices = $attribute->getPrices();
|
| 522 |
if (is_array($prices)) {
|
| 523 |
foreach ($prices as $value) {
|
| 524 |
-
if (!
|
| 525 |
continue;
|
| 526 |
}
|
| 527 |
-
$price = $this->_preparePrice($product, $value['pricing_value'], $value['is_percent']);
|
| 528 |
-
$optionProducts = array();
|
| 529 |
-
if (isset($options[$attributeId][$value['value_index']])) {
|
| 530 |
-
$optionProducts = $options[$attributeId][$value['value_index']];
|
| 531 |
-
}
|
| 532 |
$info['options'][] = array(
|
| 533 |
'id' => $value['value_index'],
|
| 534 |
'label' => $value['label'],
|
| 535 |
-
'price' => $
|
| 536 |
-
'products' => $optionProducts,
|
| 537 |
);
|
| 538 |
}
|
| 539 |
}
|
|
@@ -658,6 +647,48 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
| 658 |
return $attributes;
|
| 659 |
}
|
| 660 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 661 |
private function _preparePrice($product, $price, $isPercent = false) {
|
| 662 |
if ($isPercent && !empty($price)) {
|
| 663 |
$price = $product->getFinalPrice() * $price / 100;
|
|
@@ -739,7 +770,7 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
| 739 |
$this->addtoDisplayPrices($display_prices, $this->__('From:'), $this->getCurrencyPrice($_minimalPrice), 'from');
|
| 740 |
$this->addtoDisplayPrices($display_prices, $this->__('To:'), $this->getCurrencyPrice($_maximalPrice), 'to');
|
| 741 |
} else {
|
| 742 |
-
$this->addtoDisplayPrices($display_prices, $this->getCurrencyPrice($_minimalPrice), 'normal');
|
| 743 |
}
|
| 744 |
}
|
| 745 |
$prices['base_price'] = array('price' => $this->getCurrencyPrice($_finalPrice));
|
| 60 |
$this->getItemPrices();
|
| 61 |
$this->getItemImages();
|
| 62 |
$this->getProductDescription();
|
| 63 |
+
// $this->getRecommendedItems();
|
| 64 |
+
// $this->getRelatedItems();
|
| 65 |
}
|
| 66 |
return array(true, '0x0000', array('item' => $this->item));
|
| 67 |
}
|
| 364 |
$productPrice = $_item->getPrice();
|
| 365 |
}
|
| 366 |
if ($productPrice > 0.00) {
|
| 367 |
+
//add
|
| 368 |
$attribute['price'] = $this->getCurrencyPrice($productPrice);
|
| 369 |
}
|
| 370 |
$attribute['options'] = array();
|
| 500 |
foreach ($_attributes as $attribute) {
|
| 501 |
$productAttribute = $attribute->getProductAttribute();
|
| 502 |
$attributeValue = $_item->getData($productAttribute->getAttributeCode());
|
| 503 |
+
$options[$productAttribute->getId()][$_productId] = $attributeValue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 504 |
}
|
| 505 |
}
|
| 506 |
+
$this->item['attribute_relation'] = $this->getAttributeRelation($options);
|
| 507 |
foreach ($_attributes as $attribute) {
|
| 508 |
$productAttribute = $attribute->getProductAttribute();
|
| 509 |
$attributeId = $productAttribute->getId();
|
| 516 |
$prices = $attribute->getPrices();
|
| 517 |
if (is_array($prices)) {
|
| 518 |
foreach ($prices as $value) {
|
| 519 |
+
if (!in_array($value['value_index'], $options[$attributeId])) {
|
| 520 |
continue;
|
| 521 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 522 |
$info['options'][] = array(
|
| 523 |
'id' => $value['value_index'],
|
| 524 |
'label' => $value['label'],
|
| 525 |
+
'price' => $this->_preparePrice($product, $value['pricing_value'], $value['is_percent']),
|
|
|
|
| 526 |
);
|
| 527 |
}
|
| 528 |
}
|
| 647 |
return $attributes;
|
| 648 |
}
|
| 649 |
|
| 650 |
+
private function getAttributeRelation($options, $type = 'associate') {
|
| 651 |
+
$attributeRelation = array();
|
| 652 |
+
|
| 653 |
+
if ($type == 'associate') {
|
| 654 |
+
if ($options && sizeof($options) > 1) {
|
| 655 |
+
$min = 100;
|
| 656 |
+
$parentAttributeId = 0;
|
| 657 |
+
$parentOption = array();
|
| 658 |
+
foreach ($options as $attributeId => $option) {
|
| 659 |
+
$optionSize = sizeof(array_flip($option));
|
| 660 |
+
if ($optionSize < $min) {
|
| 661 |
+
$min = $optionSize;
|
| 662 |
+
$parentAttributeId = $attributeId;
|
| 663 |
+
$parentOption = $option;
|
| 664 |
+
}
|
| 665 |
+
}
|
| 666 |
+
|
| 667 |
+
foreach ($options as $attributeId => $option) {
|
| 668 |
+
if ($parentAttributeId == $attributeId) {
|
| 669 |
+
continue;
|
| 670 |
+
}
|
| 671 |
+
$relations = array();
|
| 672 |
+
foreach ($option as $key => $value) {
|
| 673 |
+
$parentOptionId = $parentOption[$key];
|
| 674 |
+
$relations[$parentOptionId]['parent_option_id'] = $parentOptionId;
|
| 675 |
+
$relations[$parentOptionId]['child_option_id'][] = $value;
|
| 676 |
+
}
|
| 677 |
+
$attributeRelation[] = array(
|
| 678 |
+
'parent_attribute_id' => 'super_attribute_' . $parentAttributeId,
|
| 679 |
+
'child_attribute_id' => 'super_attribute_' . $attributeId,
|
| 680 |
+
'type' => $type,
|
| 681 |
+
'value' => array_values($relations)
|
| 682 |
+
);
|
| 683 |
+
}
|
| 684 |
+
}
|
| 685 |
+
} elseif ($type == 'display') {
|
| 686 |
+
|
| 687 |
+
}
|
| 688 |
+
|
| 689 |
+
return $attributeRelation;
|
| 690 |
+
}
|
| 691 |
+
|
| 692 |
private function _preparePrice($product, $price, $isPercent = false) {
|
| 693 |
if ($isPercent && !empty($price)) {
|
| 694 |
$price = $product->getFinalPrice() * $price / 100;
|
| 770 |
$this->addtoDisplayPrices($display_prices, $this->__('From:'), $this->getCurrencyPrice($_minimalPrice), 'from');
|
| 771 |
$this->addtoDisplayPrices($display_prices, $this->__('To:'), $this->getCurrencyPrice($_maximalPrice), 'to');
|
| 772 |
} else {
|
| 773 |
+
$this->addtoDisplayPrices($display_prices, 'Price: ', $this->getCurrencyPrice($_minimalPrice), 'normal');
|
| 774 |
}
|
| 775 |
}
|
| 776 |
$prices['base_price'] = array('price' => $this->getCurrencyPrice($_finalPrice));
|
app/code/community/Kancart/MobileApi/Model/Order.php
CHANGED
|
@@ -252,54 +252,36 @@ class Kancart_MobileApi_Model_Order extends Kancart_MobileApi_Model_Abstract {
|
|
| 252 |
return;
|
| 253 |
}
|
| 254 |
|
| 255 |
-
$
|
| 256 |
-
$
|
| 257 |
-
|
| 258 |
-
->addFieldToFilter('order_id', $order->getId())
|
| 259 |
-
->addOrder('created_at', 'desc');
|
| 260 |
-
|
| 261 |
-
$purchasedIds = array();
|
| 262 |
-
foreach ($purchased as $_item) {
|
| 263 |
-
$purchasedIds[] = $_item->getId();
|
| 264 |
-
}
|
| 265 |
-
if (empty($purchasedIds)) {
|
| 266 |
-
return;
|
| 267 |
-
}
|
| 268 |
-
$purchasedItems = Mage::getResourceModel('downloadable/link_purchased_item_collection')
|
| 269 |
-
->addFieldToFilter('purchased_id', array('in' => $purchasedIds))
|
| 270 |
-
->addFieldToFilter('status', array(
|
| 271 |
-
'nin' => array(
|
| 272 |
-
Mage_Downloadable_Model_Link_Purchased_Item::LINK_STATUS_PENDING_PAYMENT,
|
| 273 |
-
Mage_Downloadable_Model_Link_Purchased_Item::LINK_STATUS_PAYMENT_REVIEW
|
| 274 |
-
)
|
| 275 |
-
)
|
| 276 |
-
)
|
| 277 |
-
->setOrder('item_id', 'desc');
|
| 278 |
-
|
| 279 |
$block = Mage::getBlockSingleton('downloadable/catalog_product_links');
|
| 280 |
-
foreach ($
|
| 281 |
-
$item->
|
| 282 |
-
|
| 283 |
-
|
| 284 |
-
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
|
|
|
|
|
|
|
|
|
|
| 288 |
}
|
| 289 |
|
| 290 |
-
$arrtibute = Mage::helper('downloadable')->__('Date') . ': %s<br>' . Mage::helper('downloadable')->__('Status') . ': %s<br>' . Mage::helper('downloadable')->__('Remaining Downloads') . ': %s<br>';
|
| 291 |
foreach ($purchasedItems as $item) {
|
| 292 |
if ($item->getNumberOfDownloadsBought()) {
|
| 293 |
-
$
|
| 294 |
} else {
|
| 295 |
-
$
|
| 296 |
}
|
| 297 |
|
| 298 |
$items[] = array(
|
| 299 |
'item_id' => $item->getOrderItemId(),
|
| 300 |
'display_id' => $item->getOrderItemId(),
|
| 301 |
-
'display_attributes' => sprintf($arrtibute,
|
| 302 |
-
'item_title' => $item->getPurchased()->getProductName()
|
| 303 |
'thumbnail_pic_url' => $item->getProduct()->getThumbnailUrl(),
|
| 304 |
'qty' => (int) $item->getQty(),
|
| 305 |
'price' => $item->getPrice(),
|
| 252 |
return;
|
| 253 |
}
|
| 254 |
|
| 255 |
+
$purchasedItems = array();
|
| 256 |
+
$list = Mage::getBlockSingleton('Downloadable/Customer_Products_List');
|
| 257 |
+
$purchased = $list->getPurchased();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 258 |
$block = Mage::getBlockSingleton('downloadable/catalog_product_links');
|
| 259 |
+
foreach ($list->getItems() as $item) {
|
| 260 |
+
if ($item->getPurchased()->getOrderId() == $order->getId()) {
|
| 261 |
+
$item->setPurchased($purchased->getItemById($item->getPurchasedId()));
|
| 262 |
+
$item->setQty($_products[$item->getOrderItemId()]['qty']);
|
| 263 |
+
$item->setProduct($_products[$item->getOrderItemId()]['product']);
|
| 264 |
+
$block->setProduct($item->getProduct());
|
| 265 |
+
$links = $block->getLinks();
|
| 266 |
+
preg_match('/\d+\.\d+/', $block->getFormattedLinkPrice($links[$item->getLinkId()]), $prices);
|
| 267 |
+
$item->setPrice($prices[0]);
|
| 268 |
+
$purchasedItems[] = $item;
|
| 269 |
+
}
|
| 270 |
}
|
| 271 |
|
| 272 |
+
$arrtibute = Mage::helper('downloadable')->__('Date') . ': %s<br>' . Mage::helper('downloadable')->__('Status') . ': %s<br>' . Mage::helper('downloadable')->__('Remaining Downloads') . ': %s<br>Download Url: %s<br>';
|
| 273 |
foreach ($purchasedItems as $item) {
|
| 274 |
if ($item->getNumberOfDownloadsBought()) {
|
| 275 |
+
$url = '<a href="' . $list->getDownloadUrl($item) . '" title="' . Mage::helper('downloadable')->__('Start Download') . '"' . ($list->getIsOpenInNewWindow() ? 'onclick="this.target=\'_blank\'">' : '>') . $item->getLinkTitle() . '</a>';
|
| 276 |
} else {
|
| 277 |
+
$url = '<a href="' . $item->getLinkUrl() . '" title="' . Mage::helper('downloadable')->__('Start Download') . '"' . ($list->getIsOpenInNewWindow() ? 'onclick="this.target=\'_blank\'">' : '>') . $item->getLinkTitle() . '</a>';
|
| 278 |
}
|
| 279 |
|
| 280 |
$items[] = array(
|
| 281 |
'item_id' => $item->getOrderItemId(),
|
| 282 |
'display_id' => $item->getOrderItemId(),
|
| 283 |
+
'display_attributes' => sprintf($arrtibute, $list->formatDate($item->getPurchased()->getCreatedAt()), Mage::helper('downloadable')->__(ucfirst($item->getStatus())), $list->getRemainingDownloads($item), $url),
|
| 284 |
+
'item_title' => $item->getPurchased()->getProductName(),
|
| 285 |
'thumbnail_pic_url' => $item->getProduct()->getThumbnailUrl(),
|
| 286 |
'qty' => (int) $item->getQty(),
|
| 287 |
'price' => $item->getPrice(),
|
app/code/community/Kancart/MobileApi/Model/PayPalEC.php
CHANGED
|
@@ -37,7 +37,7 @@ class Kancart_MobileApi_Model_PayPalEC extends Kancart_MobileApi_Model_Abstract
|
|
| 37 |
* @var string
|
| 38 |
*/
|
| 39 |
protected $_configMethod = Mage_Paypal_Model_Config::METHOD_WPP_EXPRESS;
|
| 40 |
-
protected $_checkout = null;
|
| 41 |
protected $_config = null;
|
| 42 |
|
| 43 |
protected function _initCheckout() {
|
|
@@ -46,7 +46,7 @@ class Kancart_MobileApi_Model_PayPalEC extends Kancart_MobileApi_Model_Abstract
|
|
| 46 |
Mage::throwException(Mage::helper('paypal')->__('Unable to initialize Express Checkout.'));
|
| 47 |
}
|
| 48 |
if (is_null($this->_config)) {
|
| 49 |
-
$this->_config =
|
| 50 |
}
|
| 51 |
$this->_checkout = Mage::getSingleton('paypal/express_checkout', array(
|
| 52 |
'config' => $this->_config,
|
|
@@ -204,4 +204,16 @@ class Kancart_MobileApi_Model_PayPalEC extends Kancart_MobileApi_Model_Abstract
|
|
| 204 |
return $this->_quote;
|
| 205 |
}
|
| 206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
}
|
| 37 |
* @var string
|
| 38 |
*/
|
| 39 |
protected $_configMethod = Mage_Paypal_Model_Config::METHOD_WPP_EXPRESS;
|
| 40 |
+
protected $_checkout = null; //Mage_Paypal_Model_Config
|
| 41 |
protected $_config = null;
|
| 42 |
|
| 43 |
protected function _initCheckout() {
|
| 46 |
Mage::throwException(Mage::helper('paypal')->__('Unable to initialize Express Checkout.'));
|
| 47 |
}
|
| 48 |
if (is_null($this->_config)) {
|
| 49 |
+
$this->_config = new Kancart_Paypal_Model_Config(array($this->_configMethod));
|
| 50 |
}
|
| 51 |
$this->_checkout = Mage::getSingleton('paypal/express_checkout', array(
|
| 52 |
'config' => $this->_config,
|
| 204 |
return $this->_quote;
|
| 205 |
}
|
| 206 |
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
class Kancart_Paypal_Model_Config extends Mage_Paypal_Model_Config {
|
| 210 |
+
|
| 211 |
+
public function __construct($params = array()) {
|
| 212 |
+
parent::__construct($params);
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
public function getBuildNotationCode($countryCode = null) {
|
| 216 |
+
return 'Kancart_SP_EC';
|
| 217 |
+
}
|
| 218 |
+
|
| 219 |
}
|
app/code/community/Kancart/MobileApi/Model/PayPalWPS.php
CHANGED
|
@@ -42,7 +42,7 @@ class Kancart_MobileApi_Model_PayPalWPS extends Kancart_MobileApi_Model_Abstract
|
|
| 42 |
foreach ($standard->getStandardCheckoutFormFields() as $field => $value) {
|
| 43 |
$paypalParams[$field] = $value;
|
| 44 |
}
|
| 45 |
-
$paypalParams['bn'] = '
|
| 46 |
$paypalParams['shopping_url'] = $requestData['shoppingcart_url'];
|
| 47 |
$paypalParams['return'] = $requestData['return_url'];
|
| 48 |
$paypalParams['cancel_return'] = $requestData['cancel_url'];
|
| 42 |
foreach ($standard->getStandardCheckoutFormFields() as $field => $value) {
|
| 43 |
$paypalParams[$field] = $value;
|
| 44 |
}
|
| 45 |
+
$paypalParams['bn'] = 'Kancart_SP_WPS';
|
| 46 |
$paypalParams['shopping_url'] = $requestData['shoppingcart_url'];
|
| 47 |
$paypalParams['return'] = $requestData['return_url'];
|
| 48 |
$paypalParams['cancel_return'] = $requestData['cancel_url'];
|
app/code/community/Kancart/MobileApi/Model/Result.php
CHANGED
|
@@ -70,7 +70,6 @@ class Kancart_MobileApi_Model_Result extends Kancart_MobileApi_Model_Abstract {
|
|
| 70 |
}
|
| 71 |
|
| 72 |
public function returnResult() {
|
| 73 |
-
define('REQUEST_NORMAL_COMPLETE', true);
|
| 74 |
$arr = array('result' => $this->result, 'code' => $this->code, 'info' => $this->info);
|
| 75 |
if (PHP_VERSION >= '5.2.0') {
|
| 76 |
return json_encode($arr);
|
| 70 |
}
|
| 71 |
|
| 72 |
public function returnResult() {
|
|
|
|
| 73 |
$arr = array('result' => $this->result, 'code' => $this->code, 'info' => $this->info);
|
| 74 |
if (PHP_VERSION >= '5.2.0') {
|
| 75 |
return json_encode($arr);
|
app/code/community/Kancart/MobileApi/Model/Store.php
CHANGED
|
@@ -219,7 +219,8 @@ class Kancart_MobileApi_Model_Store extends Kancart_MobileApi_Model_Abstract {
|
|
| 219 |
$update = $layout->getUpdate();
|
| 220 |
$rootCategory = Mage::getModel('catalog/category')
|
| 221 |
->load(Mage::app()->getStore()->getRootCategoryId());
|
| 222 |
-
Mage::register('
|
|
|
|
| 223 |
$update->addHandle($rootCategory->getLayoutUpdateHandle());
|
| 224 |
$update->load();
|
| 225 |
$layout->generateXml()->generateBlocks();
|
|
@@ -243,7 +244,7 @@ class Kancart_MobileApi_Model_Store extends Kancart_MobileApi_Model_Abstract {
|
|
| 243 |
}
|
| 244 |
|
| 245 |
public function getSearchSortOptions() {
|
| 246 |
-
if (!($rootCategory = Mage::registry('
|
| 247 |
$rootCategory = Mage::getModel('catalog/category')
|
| 248 |
->load(Mage::app()->getStore()->getRootCategoryId());
|
| 249 |
}
|
| 219 |
$update = $layout->getUpdate();
|
| 220 |
$rootCategory = Mage::getModel('catalog/category')
|
| 221 |
->load(Mage::app()->getStore()->getRootCategoryId());
|
| 222 |
+
Mage::register('current_category', $rootCategory);
|
| 223 |
+
$update->addHandle('default');
|
| 224 |
$update->addHandle($rootCategory->getLayoutUpdateHandle());
|
| 225 |
$update->load();
|
| 226 |
$layout->generateXml()->generateBlocks();
|
| 244 |
}
|
| 245 |
|
| 246 |
public function getSearchSortOptions() {
|
| 247 |
+
if (!($rootCategory = Mage::registry('current_category'))) {
|
| 248 |
$rootCategory = Mage::getModel('catalog/category')
|
| 249 |
->load(Mage::app()->getStore()->getRootCategoryId());
|
| 250 |
}
|
app/code/community/Kancart/MobileApi/Model/User.php
CHANGED
|
@@ -110,6 +110,7 @@ class Kancart_MobileApi_Model_User extends Kancart_MobileApi_Model_Abstract {
|
|
| 110 |
$uname = $userLoginData['uname'];
|
| 111 |
$pwd = $userLoginData['pwd'];
|
| 112 |
$session = $this->_getSession();
|
|
|
|
| 113 |
$desPassword = Kancart::helper('CryptoUtil')->Crypto($pwd, 'AES-256', KANCART_APP_SECRECT, false);
|
| 114 |
if ($uname != null && $pwd != null) {
|
| 115 |
try {
|
|
@@ -117,7 +118,9 @@ class Kancart_MobileApi_Model_User extends Kancart_MobileApi_Model_Abstract {
|
|
| 117 |
if ($session->getCustomer()->getIsJustConfirmed()) {
|
| 118 |
$session->getCustomer()->sendNewAccountEmail('confirmed');
|
| 119 |
}
|
| 120 |
-
|
|
|
|
|
|
|
| 121 |
} else {
|
| 122 |
return array(false, '0x1001', Mage::helper('customer')->__('Invalid login or password.'));
|
| 123 |
}
|
| 110 |
$uname = $userLoginData['uname'];
|
| 111 |
$pwd = $userLoginData['pwd'];
|
| 112 |
$session = $this->_getSession();
|
| 113 |
+
$defaultGroupId = $session->getCustomer()->getGroupId();
|
| 114 |
$desPassword = Kancart::helper('CryptoUtil')->Crypto($pwd, 'AES-256', KANCART_APP_SECRECT, false);
|
| 115 |
if ($uname != null && $pwd != null) {
|
| 116 |
try {
|
| 118 |
if ($session->getCustomer()->getIsJustConfirmed()) {
|
| 119 |
$session->getCustomer()->sendNewAccountEmail('confirmed');
|
| 120 |
}
|
| 121 |
+
$customerGroupId = $session->getCustomer()->getGroupId();
|
| 122 |
+
$cachekey = $defaultGroupId == $customerGroupId ? NULL : 'group_id_' . $customerGroupId;
|
| 123 |
+
return array(true, '0x0000', array('sessionkey' => md5(time()), 'cachekey' => $cachekey));
|
| 124 |
} else {
|
| 125 |
return array(false, '0x1001', Mage::helper('customer')->__('Invalid login or password.'));
|
| 126 |
}
|
app/code/community/Kancart/MobileApi/controllers/IndexController.php
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?php
|
| 2 |
|
| 3 |
error_reporting(E_ALL ^ E_NOTICE);
|
| 4 |
-
define('KANCART_PLUGIN_VERSION', '2.0.
|
| 5 |
define('KANCART_APP_KEY', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appkey', Mage::app()->getStore()));
|
| 6 |
define('KANCART_APP_SECRECT', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appsecrect', Mage::app()->getStore()));
|
| 7 |
define('MOBILE_API_ROOT', dirname(dirname(__FILE__)));
|
| 1 |
<?php
|
| 2 |
|
| 3 |
error_reporting(E_ALL ^ E_NOTICE);
|
| 4 |
+
define('KANCART_PLUGIN_VERSION', '2.0.7');
|
| 5 |
define('KANCART_APP_KEY', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appkey', Mage::app()->getStore()));
|
| 6 |
define('KANCART_APP_SECRECT', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appsecrect', Mage::app()->getStore()));
|
| 7 |
define('MOBILE_API_ROOT', dirname(dirname(__FILE__)));
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>KANCART_MobileAPI</name>
|
| 4 |
-
<version>2.0.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license>OSL v3.0</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -9,11 +9,12 @@
|
|
| 9 |
<summary>Kancart Mobile API Service</summary>
|
| 10 |
<description>Kancart.com provides a fast on boarding iOS, Android native app and mobile web site solution.&amp;
|
| 11 |
This is the Magento server side extension to provide API service for all Kancart mobile clients.</description>
|
| 12 |
-
<notes>
|
|
|
|
| 13 |
<authors><author><name>Kancart.com</name><user>Kancarter</user><email>support@kancart.com</email></author></authors>
|
| 14 |
-
<date>2013-
|
| 15 |
-
<time>
|
| 16 |
-
<contents><target name="magecommunity"><dir name="Kancart"><dir name="MobileApi"><dir name="Helper"><file name="CryptoUtil.php" hash="2db9a53cbaed6e8bc5f2dae4ed2ec334"/><file name="DES.php" hash="f038974cc0cf453373a52e6d4770ffdb"/><file name="Data.php" hash="ce8f291eec3277eb01b1f00225e5cbd8"/><file name="Rijndael.php" hash="be7c805f21086f7c26f785d0c0e73afd"/></dir><dir name="Model"><file name="Abstract.php" hash="
|
| 17 |
<compatible/>
|
| 18 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 19 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>KANCART_MobileAPI</name>
|
| 4 |
+
<version>2.0.7</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license>OSL v3.0</license>
|
| 7 |
<channel>community</channel>
|
| 9 |
<summary>Kancart Mobile API Service</summary>
|
| 10 |
<description>Kancart.com provides a fast on boarding iOS, Android native app and mobile web site solution.&amp;
|
| 11 |
This is the Magento server side extension to provide API service for all Kancart mobile clients.</description>
|
| 12 |
+
<notes>Improved support for downloadable products; Solve a conflict with Amasty extension;
|
| 13 |
+
</notes>
|
| 14 |
<authors><author><name>Kancart.com</name><user>Kancarter</user><email>support@kancart.com</email></author></authors>
|
| 15 |
+
<date>2013-10-15</date>
|
| 16 |
+
<time>06:47:47</time>
|
| 17 |
+
<contents><target name="magecommunity"><dir name="Kancart"><dir name="MobileApi"><dir name="Helper"><file name="CryptoUtil.php" hash="2db9a53cbaed6e8bc5f2dae4ed2ec334"/><file name="DES.php" hash="f038974cc0cf453373a52e6d4770ffdb"/><file name="Data.php" hash="ce8f291eec3277eb01b1f00225e5cbd8"/><file name="Rijndael.php" hash="be7c805f21086f7c26f785d0c0e73afd"/></dir><dir name="Model"><file name="Abstract.php" hash="8c350a634389b4346ec06eb9d22e5584"/><file name="Cart.php" hash="0a27bc879f150a3bf6692de55a2e1152"/><file name="Category.php" hash="dfedccdc604796a9cee2251128da0b36"/><file name="Checkout.php" hash="35185a231d6cbfdacc5d300bc56b42b8"/><file name="Coupon.php" hash="512c92915f02e353ba32b95e90b0c410"/><file name="ErrorHandler.php" hash="6d62e02c4ce592a41b242e781fe2c28a"/><file name="Item.php" hash="6402877ed7f91ac2e5fd817132e0b273"/><file name="Items.php" hash="d9ce1a9bbbf33f7c266b2939b4a1d12e"/><file name="Order.php" hash="c130f62e60a52feee620193f2aa14d0b"/><file name="PayPalEC.php" hash="936af8c18938954caf8a196f48b9fc5a"/><file name="PayPalWPS.php" hash="59aae032bd1f763df04fecb50198ad35"/><file name="Payment.php" hash="258e8c42fb2ee84fa0619dcc2db54eee"/><file name="Result.php" hash="64759b5dcb022186f12c0cb043877af0"/><file name="Review.php" hash="d320736cc3a8ce67f7aae9b60b7c85eb"/><file name="Store.php" hash="2a3574a2162812eb6a9b80b9852347a0"/><file name="User.php" hash="76a6bb66aa098090fd5b25af7546569c"/></dir><dir name="controllers"><file name="IndexController.php" hash="c78762b71fcdf0560c6ba28e19a4b567"/></dir><dir name="etc"><file name="adminhtml.xml" hash="3364317d05e33ac33f067aed7a9f6a58"/><file name="config.xml" hash="2f9d3466e651ac2b2b1f387b1a2356ad"/><file name="system.xml" hash="79209320204981af35bdb4bdcba8fe76"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Kancart_MobileApi.xml" hash="17ceeb976f959fc6365da95b532dd616"/></dir></target></contents>
|
| 18 |
<compatible/>
|
| 19 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 20 |
</package>
|
