Esempio n. 1
0
File: tax.php Progetto: rodhoff/MNW
 function save(&$element)
 {
     $old = $this->get($element->tax_namekey);
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     if (!empty($old)) {
         $element->old =& $old;
         $dispatcher->trigger('onBeforeTaxUpdate', array(&$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeTaxCreate', array(&$element, &$do));
     }
     if (!$do) {
         return false;
     }
     if (!empty($old)) {
         $result = parent::save($element);
     } else {
         $this->database->setQuery($this->_getInsert($this->getTable(), $element));
         $result = $this->database->query();
     }
     if (!empty($old)) {
         $dispatcher->trigger('onAfterTaxUpdate', array(&$element));
     } else {
         $dispatcher->trigger('onAfterTaxCreate', array(&$element));
     }
     return $result;
 }
Esempio n. 2
0
 function save(&$element)
 {
     if (empty($element->waitlist_id) && empty($element->date)) {
         $element->date = time();
     }
     $status = parent::save($element);
     return $status;
 }
Esempio n. 3
0
 function save(&$element)
 {
     $class = hikashop_get('helper.translation');
     $class->getTranslations($element);
     $status = parent::save($element);
     if ($status) {
         $class->handleTranslations('characteristic', $status, $element);
     }
     return $status;
 }
Esempio n. 4
0
 function save(&$limit)
 {
     if (empty($limit->limit_type) || $limit->limit_type != 'weight') {
         $limit->limit_unit = '';
     }
     if (!empty($limit->limit_status) && is_array($limit->limit_status)) {
         $limit->limit_status = implode(',', $limit->limit_status);
     }
     $status = parent::save($limit);
     return $status;
 }
Esempio n. 5
0
 function save(&$element, $reorder = true)
 {
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     if (empty($element->shipping_id)) {
         $dispatcher->trigger('onBeforeHikaPluginCreate', array('shipping', &$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeHikaPluginUpdate', array('shipping', &$element, &$do));
     }
     if (!$do) {
         return false;
     }
     if (isset($element->shipping_params) && !is_string($element->shipping_params)) {
         $element->shipping_params = serialize($element->shipping_params);
     }
     if (isset($element->shipping_currency) && is_array($element->shipping_currency)) {
         $element->shipping_currency = implode(",", $element->shipping_currency);
         if (!empty($element->shipping_currency)) {
             $element->shipping_currency = ',' . $element->shipping_currency . ',';
         }
     }
     $status = parent::save($element);
     if ($status) {
         $this->get('reset_cache');
     }
     if ($status && empty($element->shipping_id)) {
         $element->shipping_id = $status;
         if ($reorder) {
             $orderClass = hikashop_get('helper.order');
             $orderClass->pkey = 'shipping_id';
             $orderClass->table = 'shipping';
             $orderClass->groupMap = 'shipping_type';
             $orderClass->groupVal = $element->shipping_type;
             $orderClass->orderingMap = 'shipping_ordering';
             $orderClass->reOrder();
         }
     }
     if ($status && !empty($element->shipping_published) && !empty($element->shipping_id)) {
         $db = JFactory::getDBO();
         $query = 'SELECT shipping_type FROM ' . hikashop_table('shipping') . ' WHERE shipping_id = ' . (int) $element->shipping_id;
         $db->setQuery($query);
         $name = $db->loadResult();
         if (!HIKASHOP_J16) {
             $query = 'UPDATE ' . hikashop_table('plugins', false) . ' SET published = 1 WHERE published = 0 AND element = ' . $db->Quote($name) . ' AND folder = ' . $db->Quote('hikashopshipping');
         } else {
             $query = 'UPDATE ' . hikashop_table('extensions', false) . ' SET enabled = 1 WHERE enabled = 0 AND type = ' . $db->Quote('plugin') . ' AND element = ' . $db->Quote($name) . ' AND folder = ' . $db->Quote('hikashopshipping');
         }
         $db->setQuery($query);
         $db->query();
     }
     return $status;
 }
Esempio n. 6
0
 function save(&$element)
 {
     if (!empty($element->widget_params) && !is_string($element->widget_params)) {
         if ($element->widget_params->display == 'listing' && !isset($element->widget_params->region)) {
             $element->widget_params->region = 'world';
         }
         if (!isset($element->widget_params->status)) {
             $element->widget_params->status = '';
         }
         if (is_array($element->widget_params->status)) {
             $element->widget_params->status = implode(',', $element->widget_params->status);
         }
         $element->widget_params = serialize($element->widget_params);
     }
     return parent::save($element);
 }
Esempio n. 7
0
 function save(&$element)
 {
     $status = parent::save($element);
     if (!$status) {
         return false;
     }
     if (empty($element->banner_id)) {
         $element->banner_id = $status;
         $orderClass = hikashop_get('helper.order');
         $orderClass->pkey = 'banner_id';
         $orderClass->table = 'banner';
         $orderClass->orderingMap = 'banner_ordering';
         $orderClass->reOrder();
     }
     return $status;
 }
Esempio n. 8
0
 function save(&$element)
 {
     if (empty($element->click_id)) {
         if (empty($element->click_created)) {
             $element->click_created = time();
         }
         if (empty($element->click_ip)) {
             $element->click_ip = hikashop_getIP();
         }
         if (empty($element->click_referer)) {
             if (!empty($_SERVER['HTTP_REFERER']) && preg_match('#^https?://.*#i', $_SERVER['HTTP_REFERER'])) {
                 $element->click_referer = str_replace(array('"', '<', '>', "'"), '', @$_SERVER['HTTP_REFERER']);
             }
         }
     }
     return parent::save($element);
 }
Esempio n. 9
0
 function save(&$element)
 {
     $isNew = empty($element->warehouse_id);
     $element->warehouse_modified = time();
     if ($isNew) {
         $element->warehouse_created = $element->warehouse_modified;
         $orderClass = hikashop_get('helper.order');
         $orderClass->pkey = 'warehouse_id';
         $orderClass->table = 'warehouse';
         $orderClass->orderingMap = 'warehouse_ordering';
         $orderClass->reOrder();
     }
     $status = parent::save($element);
     if (!$status) {
         return false;
     }
     return $status;
 }
Esempio n. 10
0
 function save(&$element)
 {
     if (empty($element->geolocation_id) || !empty($element->geolocation_ip)) {
         if (empty($element->geolocation_ip)) {
             return false;
         }
         $location = $this->getIPLocation($element->geolocation_ip);
         if (empty($location)) {
             return false;
         }
         $element->geolocation_latitude = @$location->latitude;
         $element->geolocation_longitude = @$location->longitude;
         $element->geolocation_postal_code = @$location->zipPostalCode;
         $element->geolocation_country = @$location->countryName;
         $element->geolocation_country_code = @$location->countryCode;
         $element->geolocation_state = @$location->regionName;
         $element->geolocation_state_code = @$location->RegionCode;
         $element->geolocation_city = @$location->city;
         $element->geolocation_created = time();
     }
     return parent::save($element);
 }
Esempio n. 11
0
 function save(&$element)
 {
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $new = true;
     if (!empty($element->taxation_id)) {
         $dispatcher->trigger('onBeforeTaxUpdate', array(&$element, &$do));
         $new = false;
     } else {
         $dispatcher->trigger('onBeforeTaxCreate', array(&$element, &$do));
     }
     if (!$do) {
         return false;
     }
     $result = parent::save($element);
     if (!$new) {
         $dispatcher->trigger('onAfterTaxUpdate', array(&$element));
     } else {
         $dispatcher->trigger('onAfterTaxCreate', array(&$element));
     }
     return $result;
 }
Esempio n. 12
0
 function save(&$element)
 {
     if (isset($element->massaction_triggers) && empty($element->massaction_triggers)) {
         $element->massaction_triggers = '';
     }
     if (isset($element->massaction_filters) && empty($element->massaction_filters)) {
         $element->massaction_filters = '';
     }
     if (isset($element->massaction_actions) && empty($element->massaction_actions)) {
         $element->massaction_actions = '';
     }
     if (!isset($this->dispatcher)) {
         JPluginHelper::importPlugin('hikashop');
         $this->dispatcher = JDispatcher::getInstance();
     }
     $this->dispatcher->trigger('onBeforeMassactionCreate', array(&$element));
     $this->dispatcher->trigger('onBeforeMassactionUpdate', array(&$element));
     $this->prepare($element, 'serialize');
     $status = parent::save($element);
     if (!$status) {
         return false;
     }
     $this->dispatcher->trigger('onAfterMassactionCreate', array(&$element));
     $this->dispatcher->trigger('onAfterMassactionUpdate', array(&$element));
     return $status;
 }
Esempio n. 13
0
 function delete(&$elements, $order = false)
 {
     $elements = (int) $elements;
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $dispatcher->trigger('onBeforeAddressDelete', array(&$elements, &$do));
     if (!$do) {
         return false;
     }
     $orderClass = hikashop_get('class.order');
     $status = true;
     if ($orderClass->addressUsed($elements)) {
         if (!$order) {
             $address = new stdClass();
             $address->address_id = $elements;
             $address->address_published = 0;
             $status = parent::save($address);
             $app = JFactory::getApplication();
             if ($app->isAdmin()) {
                 $app->enqueueMessage(JText::_('ADDRESS_UNPUBLISHED_CAUSE_USED_IN_ORDER'));
             }
         }
     } else {
         $data = $this->get($elements);
         if (!$order || isset($data->address_published) && !$data->address_published) {
             $status = parent::delete($elements);
         }
     }
     if ($status) {
         if (empty($data)) {
             $data = $this->get($elements);
         }
         if (!empty($data->address_default)) {
             $query = 'SELECT MIN(address_id) as address_id, MAX(address_default) as address_default FROM ' . hikashop_table('address') . ' WHERE address_user_id = ' . (int) $data->address_user_id . ' AND address_published = 1';
             $this->database->setQuery($query);
             $ret = $this->database->loadObject();
             if (!empty($ret) && (int) $ret->address_default == 0) {
                 $address = new stdClass();
                 $address->address_id = (int) $ret->address_id;
                 $address->address_default = 1;
                 parent::save($address);
             }
         }
         $dispatcher->trigger('onAfterAddressDelete', array(&$elements));
     }
     return $status;
 }
Esempio n. 14
0
 function save(&$discount)
 {
     if (empty($discount->discount_id)) {
         if (empty($discount->discount_type) || $discount->discount_type == 'coupon' && empty($discount->discount_code)) {
             return false;
         }
         $new = true;
     }
     if (!empty($discount->discount_code)) {
         $discount->discount_code = trim($discount->discount_code);
     }
     if (!empty($discount->discount_product_id) && is_array($discount->discount_product_id)) {
         $discount->discount_product_id = ',' . implode(',', $discount->discount_product_id) . ',';
     }
     if (!empty($discount->discount_category_id) && is_array($discount->discount_category_id)) {
         $discount->discount_category_id = ',' . implode(',', $discount->discount_category_id) . ',';
     }
     if (!empty($discount->discount_zone_id) && is_array($discount->discount_zone_id)) {
         $discount->discount_zone_id = ',' . implode(',', $discount->discount_zone_id) . ',';
     }
     $do = true;
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     if (!empty($new)) {
         $dispatcher->trigger('onBeforeDiscountCreate', array(&$discount, &$do));
     } else {
         $dispatcher->trigger('onBeforeDiscountUpdate', array(&$discount, &$do));
     }
     if (!$do) {
         return false;
     }
     $status = parent::save($discount);
     if ($status) {
         if (!empty($new)) {
             $dispatcher->trigger('onAfterDiscountCreate', array(&$discount));
         } else {
             $dispatcher->trigger('onAfterDiscountUpdate', array(&$discount));
         }
     }
     return $status;
 }
Esempio n. 15
0
 function save(&$order)
 {
     $new = false;
     $config =& hikashop_config();
     if (empty($order->order_id)) {
         if (!is_object($order)) {
             $order = new stdClass();
         }
         $order->order_created = time();
         if (empty($order->order_type)) {
             $order->order_type = 'sale';
         }
         $order->order_ip = hikashop_getIP();
         $order->old = new stdClass();
         if (empty($order->order_status)) {
             $order->order_status = $config->get('order_created_status', 'pending');
         }
         if (empty($order->order_currency_id)) {
             $order->order_currency_id = hikashop_getCurrency();
         }
         if (defined('MULTISITES_ID')) {
             $order->order_site_id = MULTISITES_ID;
         }
         $new = true;
     } else {
         if (empty($order->old)) {
             $order->old = $this->get($order->order_id);
         }
     }
     $order->order_modified = time();
     JPluginHelper::importPlugin('hikashop');
     JPluginHelper::importPlugin('hikashoppayment');
     JPluginHelper::importPlugin('hikashopshipping');
     $dispatcher = JDispatcher::getInstance();
     $order_type = '';
     if (!empty($order->old->order_type)) {
         $order_type = $order->old->order_type;
     }
     if (!empty($order->order_type)) {
         $order_type = $order->order_type;
     }
     $recalculate = false;
     if (!empty($order->product)) {
         $do = true;
         $dispatcher->trigger('onBeforeOrderProductsUpdate', array(&$order, &$do));
         if (!$do) {
             return false;
         }
         $productClass = hikashop_get('class.order_product');
         if (is_array($order->product)) {
             foreach ($order->product as $product) {
                 $productClass->update($product);
             }
         } else {
             $productClass->update($order->product);
         }
         $recalculate = true;
     }
     if (!$new && (isset($order->order_shipping_price) || isset($order->order_payment_price) || isset($order->order_discount_price))) {
         if (isset($order->order_shipping_tax_namekey) || isset($order->order_discount_tax_namekey) || isset($order->order_payment_tax_namekey)) {
             if (!empty($order->old->order_tax_info)) {
                 $order->order_tax_info = $order->old->order_tax_info;
                 foreach ($order->order_tax_info as $k => $tax) {
                     if (isset($order->order_shipping_tax_namekey) && $tax->tax_namekey == $order->order_shipping_tax_namekey) {
                         $order->order_tax_info[$k]->tax_amount_for_shipping = @$order->order_shipping_tax;
                         unset($order->order_shipping_tax_namekey);
                     } elseif (isset($order->order_tax_info[$k]->tax_amount_for_shipping)) {
                         unset($order->order_tax_info[$k]->tax_amount_for_shipping);
                     }
                     if (isset($order->order_payment_tax_namekey) && $tax->tax_namekey == $order->order_payment_tax_namekey) {
                         $order->order_tax_info[$k]->tax_amount_for_payment = @$order->order_payment_tax;
                         unset($order->order_payment_tax_namekey);
                     } elseif (isset($order->order_tax_info[$k]->tax_amount_for_payment)) {
                         unset($order->order_tax_info[$k]->tax_amount_for_payment);
                     }
                     if (isset($order->order_discount_tax_namekey) && $tax->tax_namekey == $order->order_discount_tax_namekey) {
                         $order->order_tax_info[$k]->tax_amount_for_coupon = @$order->order_discount_tax;
                         unset($order->order_discount_tax_namekey);
                     } elseif (isset($order->order_tax_info[$k]->tax_amount_for_coupon)) {
                         unset($order->order_tax_info[$k]->tax_amount_for_coupon);
                     }
                 }
             }
             if (isset($order->order_shipping_tax_namekey)) {
                 $order->order_tax_info[$order->order_shipping_tax_namekey] = new stdClass();
                 $order->order_tax_info[$order->order_shipping_tax_namekey]->tax_namekey = $order->order_shipping_tax_namekey;
                 $order->order_tax_info[$order->order_shipping_tax_namekey]->tax_amount_for_shipping = @$order->order_shipping_tax;
                 unset($order->order_shipping_tax_namekey);
             }
             if (isset($order->order_payment_tax_namekey)) {
                 $order->order_tax_info[$order->order_payment_tax_namekey] = new stdClass();
                 $order->order_tax_info[$order->order_payment_tax_namekey]->tax_namekey = $order->order_payment_tax_namekey;
                 $order->order_tax_info[$order->order_payment_tax_namekey]->tax_amount_for_payment = @$order->order_payment_tax;
                 unset($order->order_payment_tax_namekey);
             }
             if (isset($order->order_discount_tax_namekey)) {
                 $order->order_tax_info[$order->order_discount_tax_namekey] = new stdClass();
                 $order->order_tax_info[$order->order_discount_tax_namekey]->tax_namekey = $order->order_discount_tax_namekey;
                 $order->order_tax_info[$order->order_discount_tax_namekey]->tax_amount_for_coupon = @$order->order_discount_tax;
                 unset($order->order_discount_tax_namekey);
             }
         }
         $recalculate = true;
     }
     if ($recalculate) {
         $this->recalculateFullPrice($order);
     }
     $do = true;
     if ($new) {
         $dispatcher->trigger('onBeforeOrderCreate', array(&$order, &$do));
     } else {
         $dispatcher->trigger('onBeforeOrderUpdate', array(&$order, &$do));
     }
     if ($do) {
         if (isset($order->value)) {
             unset($order->value);
         }
         if (isset($order->order_current_lgid)) {
             unset($order->order_current_lgid);
         }
         if (isset($order->order_current_locale)) {
             unset($order->order_current_locale);
         }
         if (isset($order->mail_status)) {
             unset($order->mail_status);
         }
         if (isset($order->order_tax_info) && !is_string($order->order_tax_info)) {
             $order->order_tax_info = serialize($order->order_tax_info);
         }
         if (isset($order->order_currency_info) && !is_string($order->order_currency_info)) {
             $order->order_currency_info = serialize($order->order_currency_info);
         }
         if (isset($order->order_shipping_params) && !is_string($order->order_shipping_params)) {
             $order->order_shipping_params = serialize($order->order_shipping_params);
         }
         if (isset($order->order_payment_params) && !is_string($order->order_payment_params)) {
             $order->order_payment_params = serialize($order->order_payment_params);
         }
         if ($config->get('update_stock_after_confirm') && isset($order->order_status) && isset($order->old->order_status) && $order_type == 'sale') {
             $invoice_statuses = $config->get('invoice_order_statuses', 'confirmed,shipped');
             if (empty($invoice_statuses)) {
                 $invoice_statuses = 'confirmed,shipped';
             }
             $invoice_order_statuses = explode(',', $invoice_statuses);
             if ($order->old->order_status == 'created' && in_array($order->order_status, $invoice_order_statuses)) {
                 $this->loadProducts($order);
                 if (!empty($order->products)) {
                     $productClass = hikashop_get('class.order_product');
                     foreach ($order->products as $product) {
                         $product->change = 'minus';
                         $productClass->update($product);
                         unset($product->change);
                     }
                 }
             } elseif (in_array($order->old->order_status, $invoice_order_statuses) && $order->order_status == 'created') {
                 $this->loadProducts($order);
                 if (!empty($order->products)) {
                     $productClass = hikashop_get('class.order_product');
                     foreach ($order->products as $product) {
                         $product->change = 'plus';
                         $productClass->update($product);
                         unset($product->change);
                     }
                 }
             }
         }
         if (isset($order->order_status) && $order_type == 'sale') {
             $this->capturePayment($order, 0);
         }
         if (!empty($order->order_status) && empty($order->order_invoice_id) && empty($order->old->order_invoice_id) && $order_type == 'sale') {
             $valid_statuses = explode(',', $config->get('invoice_order_statuses', 'confirmed,shipped'));
             if (empty($valid_statuses)) {
                 $valid_statuses = array('confirmed', 'shipped');
             }
             $excludeFreeOrders = $config->get('invoice_exclude_free_orders', 0);
             if (isset($order->order_full_price)) {
                 $total = $order->order_full_price;
             } elseif (isset($order->old->order_full_price)) {
                 $total = $order->old->order_full_price;
             } else {
                 $total = 0;
             }
             //new order for example
             if (in_array($order->order_status, $valid_statuses) && ($total > 0 || !$excludeFreeOrders)) {
                 $query = 'SELECT MAX(a.order_invoice_id)+1 FROM ' . hikashop_table('order') . ' AS a WHERE a.order_type = \'sale\'';
                 $resetFrequency = $config->get('invoice_reset_frequency', '');
                 if (!empty($resetFrequency)) {
                     $y = (int) date('Y');
                     $m = 1;
                     $d = 1;
                     if ($resetFrequency == 'month') {
                         $m = (int) date('m');
                     }
                     if (strpos($resetFrequency, '/') !== false) {
                         list($d, $m) = explode('/', $resetFrequency, 2);
                         if ($d == '*') {
                             $d = (int) date('d');
                         } else {
                             $d = (int) $d;
                         }
                         if ($m == '*') {
                             $m = (int) date('m');
                         } else {
                             $m = (int) $m;
                         }
                         if ($d <= 0) {
                             $d = 1;
                         }
                         if ($m <= 0) {
                             $m = 1;
                         }
                     }
                     $query .= ' AND a.order_invoice_created >= ' . mktime(0, 0, 0, $m, $d, $y);
                 }
                 $this->database->setQuery($query);
                 $order->order_invoice_id = $this->database->loadResult();
                 if (empty($order->order_invoice_id)) {
                     $order->order_invoice_id = 1;
                 }
                 $order->order_invoice_number = hikashop_encode($order, 'invoice');
                 $order->order_invoice_created = time();
             }
         }
         if (empty($order->old)) {
             unset($order->old);
         }
         $order->order_id = parent::save($order);
         if (isset($order->order_tax_info) && is_string($order->order_tax_info)) {
             $order->order_tax_info = unserialize($order->order_tax_info);
         }
         if (isset($order->order_payment_params) && is_string($order->order_payment_params)) {
             $order->order_payment_params = unserialize($order->order_payment_params);
         }
         if (isset($order->order_shipping_params) && is_string($order->order_shipping_params)) {
             $order->order_shipping_params = unserialize($order->order_shipping_params);
         }
         if (!empty($order->order_id)) {
             $productClass = hikashop_get('class.order_product');
             if ($new && empty($order->order_number)) {
                 $order->order_number = hikashop_encode($order);
                 $updateOrder = new stdClass();
                 $updateOrder->order_id = $order->order_id;
                 $updateOrder->order_number = $order->order_number;
                 $config =& hikashop_config();
                 $valid_statuses = explode(',', $config->get('invoice_order_statuses', 'confirmed,shipped'));
                 if (empty($valid_statuses)) {
                     $valid_statuses = array('confirmed', 'shipped');
                 }
                 $created_status = $config->get('order_created_status', 'created');
                 if (in_array($created_status, $valid_statuses)) {
                     $order->order_invoice_id = $order->order_id;
                     $order->order_invoice_number = $order->order_number;
                     $order->order_invoice_created = time();
                     $updateOrder->order_invoice_id = $order->order_invoice_id;
                     $updateOrder->order_invoice_number = $order->order_invoice_number;
                 }
                 parent::save($updateOrder);
             }
             if (!empty($order->cart->products)) {
                 foreach ($order->cart->products as $k => $p) {
                     $order->cart->products[$k]->order_id = $order->order_id;
                 }
                 if ($config->get('update_stock_after_confirm') && $order->order_status == 'created') {
                     foreach ($order->cart->products as $k => $product) {
                         $order->cart->products[$k]->no_update_qty = true;
                     }
                 }
                 $productClass->save($order->cart->products);
                 if ($config->get('update_stock_after_confirm') && $order->order_status == 'created') {
                     foreach ($order->cart->products as $k => $product) {
                         unset($order->cart->products[$k]->no_update_qty);
                     }
                 }
                 if (!empty($order->order_discount_code) && $order_type == 'sale') {
                     $query = 'UPDATE ' . hikashop_table('discount') . ' SET discount_used_times=discount_used_times+1 WHERE discount_code=' . $this->database->Quote($order->order_discount_code) . ' AND discount_type=\'coupon\' LIMIT 1';
                     $this->database->setQuery($query);
                     $this->database->query();
                 }
                 if (!empty($order->cart->additional)) {
                     foreach ($order->cart->additional as $k => $p) {
                         $order->cart->additional[$k]->product_id = 0;
                         $order->cart->additional[$k]->order_product_quantity = 0;
                         if (!empty($p->name)) {
                             $order->cart->additional[$k]->order_product_name = $p->name;
                         }
                         $order->cart->additional[$k]->order_product_code = 'order additional';
                         if (!empty($p->value)) {
                             $order->cart->additional[$k]->order_product_options = $p->value;
                         }
                         if (!empty($p->price_value)) {
                             $order->cart->additional[$k]->order_product_price = $p->price_value;
                         }
                         $order->cart->additional[$k]->order_id = $order->order_id;
                     }
                     $productClass->save($order->cart->additional);
                 }
             } elseif (!empty($order->order_status) && !empty($order->old)) {
                 $update = $config->get('update_stock_after_confirm');
                 $config =& hikashop_config();
                 $cancelled_order_status = explode(',', $config->get('cancelled_order_status'));
                 $invoice_order_statuses = explode(',', $config->get('invoice_order_statuses', 'confirmed,shipped'));
                 if (empty($invoice_order_statuses)) {
                     $invoice_order_statuses = array('confirmed', 'shipped');
                 }
                 if (!empty($order->order_status) && in_array($order->order_status, $cancelled_order_status) && (empty($order->old->order_status) || !in_array($order->old->order_status, $cancelled_order_status))) {
                     if ($order_type == 'sale' && (in_array($order->order_status, $cancelled_order_status) && (in_array($order->old->order_status, $invoice_order_statuses) || !$update && $order->old->order_status == 'created'))) {
                         $productClass->cancelProductReservation($order->order_id);
                     }
                     if (!isset($order->order_discount_code)) {
                         $code = @$order->old->order_discount_code;
                     } else {
                         $code = $order->order_discount_code;
                     }
                     if (!empty($code) && $order_type == 'sale') {
                         $query = 'UPDATE ' . hikashop_table('discount') . ' SET discount_used_times=discount_used_times-1 WHERE discount_code=' . $this->database->Quote($code) . ' AND discount_type=\'coupon\' LIMIT 1';
                         $this->database->setQuery($query);
                         $this->database->query();
                     }
                 }
                 if (!empty($order->order_status) && !in_array($order->order_status, $cancelled_order_status) && !empty($order->old->order_status) && in_array($order->old->order_status, $cancelled_order_status)) {
                     if ($order_type == 'sale' && (in_array($order->old->order_status, $cancelled_order_status) && (in_array($order->order_status, $invoice_order_statuses) || !$update && $order->order_status == 'created'))) {
                         $productClass->resetProductReservation($order->order_id);
                     }
                     if (!isset($order->order_discount_code)) {
                         $code = @$order->old->order_discount_code;
                     } else {
                         $code = $order->order_discount_code;
                     }
                     if (!empty($code) && $order_type == 'sale') {
                         $query = 'UPDATE ' . hikashop_table('discount') . ' SET discount_used_times = discount_used_times + 1 WHERE discount_code=' . $this->database->Quote($code) . ' AND discount_type=\'coupon\' LIMIT 1';
                         $this->database->setQuery($query);
                         $this->database->query();
                     }
                 }
             }
             if ($new) {
                 $send_email = $this->sendEmailAfterOrderCreation;
                 $dispatcher->trigger('onAfterOrderCreate', array(&$order, &$send_email));
                 if ($send_email) {
                     $this->loadOrderNotification($order, 'order_creation_notification');
                     $mail = hikashop_get('class.mail');
                     if (!empty($order->mail->dst_email)) {
                         $mail->sendMail($order->mail);
                     }
                     $this->mail_success =& $mail->mail_success;
                     $config =& hikashop_config();
                     $emails = $config->get('order_creation_notification_email');
                     if (!empty($emails)) {
                         $mail = hikashop_get('class.mail');
                         if (!empty($order->customer)) {
                             $user_email = $order->customer->user_email;
                             $user_name = $order->customer->name;
                         } else {
                             $order->customer = new stdClass();
                         }
                         $order->customer->user_email = explode(',', $emails);
                         $order->customer->name = ' ';
                         $this->loadOrderNotification($order, 'order_admin_notification');
                         $order->mail->subject = trim($order->mail->subject);
                         if (empty($order->mail->subject)) {
                             $order->mail->subject = JText::sprintf('NEW_ORDER_SUBJECT', $order->order_number, HIKASHOP_LIVE);
                         }
                         if (!empty($user_email)) {
                             $mail->mailer->addReplyTo(array($user_email, $user_name));
                         }
                         if (!empty($order->mail->dst_email)) {
                             $mail->sendMail($order->mail);
                         }
                         if (!empty($user_email)) {
                             $order->customer->user_email = $user_email;
                             $order->customer->name = $user_name;
                         }
                     }
                 }
             } else {
                 $send_email = @$order->history->history_notified;
                 $dispatcher->trigger('onAfterOrderUpdate', array(&$order, &$send_email));
                 if ($send_email) {
                     if (empty($order->mail) && isset($order->order_status)) {
                         $this->loadOrderNotification($order, 'order_status_notification');
                     } else {
                         $order->mail->data =& $order;
                         $order->mail->mail_name = 'order_status_notification';
                     }
                     if (!empty($order->mail)) {
                         $mail = hikashop_get('class.mail');
                         if (!empty($order->mail->dst_email)) {
                             $mail->sendMail($order->mail);
                         }
                         $this->mail_success =& $mail->mail_success;
                     }
                 }
             }
         }
         return $order->order_id;
     }
     return false;
 }
Esempio n. 16
0
 function save(&$element)
 {
     if (version_compare(JVERSION, '1.6', '<')) {
         $query = "SELECT a.id FROM " . hikashop_table('components', false) . ' AS a WHERE a.option=\'' . HIKASHOP_COMPONENT . '\'';
         $this->database->setQuery($query);
         $element->componentid = $this->database->loadResult();
     } else {
         $query = "SELECT a.extension_id FROM " . hikashop_table('extensions', false) . ' AS a WHERE a.type=\'component\' AND a.element=\'' . HIKASHOP_COMPONENT . '\'';
         $this->database->setQuery($query);
         $element->component_id = $this->database->loadResult();
     }
     if (empty($element->id)) {
         $element->params['show_page_title'] = 1;
     }
     if (!empty($element->params) && is_array($element->params)) {
         $params = '';
         foreach ($element->params as $k => $v) {
             $params .= $k . '=' . $v . "\n";
         }
         $element->params = rtrim($params, "\n");
     }
     $element->id = parent::save($element);
     if ($element->id && HIKASHOP_J30) {
         $plugin = JPluginHelper::getPlugin('system', 'cache');
         $params = new JRegistry(@$plugin->params);
         $options = array('defaultgroup' => 'page', 'browsercache' => $params->get('browsercache', false), 'caching' => false);
         $cache = JCache::getInstance('page', $options);
         $cache->clean();
     }
     return $element->id;
 }
Esempio n. 17
0
 function save(&$element)
 {
     if (!empty($element->currency_id) && isset($element->currency_code)) {
         $old = $this->get($element->currency_id);
         if (@$old->currency_code != $element->currency_code) {
             $app = JFactory::getApplication();
             $app->enqueueMessage('You changed the currency code from ' . @$old->currency_code . ' to ' . $element->currency_code . '. Note that payment plugins base themselves on the currency code to see if they support or not the current currency. If you change te currency code, that code won\'t be understood by payment plugins and thus you won\'t see them on your checkout with that currency. If you want to change the display of prices so that it doesn\'t use the code but the symbol of the currency, please change the format option of the currency and leave the default value in the currency code.');
         }
     }
     $element->currency_modified = time();
     return parent::save($element);
 }
Esempio n. 18
0
File: cart.php Progetto: rodhoff/MNW
 function save(&$cart)
 {
     $app = JFactory::getApplication();
     $currUser = hikashop_loadUser(true);
     $user = JFactory::getUser();
     $session = JFactory::getSession();
     if ($app->isAdmin()) {
         if (isset($cart->cart_name)) {
             $cart->cart_name = strip_tags($cart->cart_name);
         }
         if (isset($cart->user_id)) {
             $cart->user_id = (int) $cart->user_id;
         }
         if (isset($cart->cart_type)) {
             $cart->cart_type = strip_tags($cart->cart_type);
         }
         $cart_id = parent::save($cart);
     } else {
         if (!isset($cart->user_id) || !$app->isAdmin() || $currUser->user_cms_id == $cart->user_id || isset($cart->session_id) && $session->getId() == $cart->session_id) {
             if (isset($cart->cart_name)) {
                 $cart->cart_name = strip_tags($cart->cart_name);
             }
             if (isset($cart->cart_share)) {
                 $cart->cart_share = strip_tags($cart->cart_share);
             }
             if (isset($cart->cart_type)) {
                 $cart->cart_type = strip_tags($cart->cart_type);
             }
             if (!empty($cart->cart_params) && !is_string($cart->cart_params)) {
                 $cart->cart_params = json_encode($cart->cart_params);
             }
             if (!isset($cart->user_id) && empty($cart->cart_name)) {
                 $cart->cart_name = '';
             }
             if (!isset($cart->cart_id) && empty($cart->cart_coupon)) {
                 $cart->cart_coupon = '';
             }
             $cart_id = parent::save($cart);
         } else {
             $cart_id = $cart->cart_id;
         }
     }
     return $cart_id;
 }
Esempio n. 19
0
 function saveFrontend(&$element)
 {
     $db = JFactory::getDBO();
     $config = hikashop_config();
     $user_ip = hikashop_getIP();
     $date = time();
     if (empty($element->user_id) || (int) $element->user_id == 0) {
         $element->user_id = $user_ip;
     }
     if (empty($element->vote_type)) {
         $element->vote_type = 'product';
     }
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     $currentElement = new stdClass();
     $dispatcher->trigger('onBeforeVoteCreate', array(&$element, &$do, &$currentElement));
     if (!$do) {
         return false;
     }
     $vElement = new stdClass();
     $vElement->vote_ref_id = (int) $element->vote_ref_id;
     $vElement->vote_type = strip_tags($element->vote_type);
     $vElement->vote_user_id = strip_tags($element->user_id);
     $vElement->vote_pseudo = strip_tags(@$element->pseudo_comment);
     $vElement->vote_ip = strip_tags($user_ip);
     $vElement->vote_email = strip_tags(@$element->email_comment);
     $vElement->vote_date = $date;
     $comment_by_person_by_product = $config->get('comment_by_person_by_product');
     $send_email = $config->get('email_each_comment');
     $vote_if_bought = $config->get('access_vote', 0) == 'buyed';
     if ($vote_if_bought == 1 && $vElement->vote_type == 'product') {
         $purchased = $this->hasBought($vElement->vote_ref_id, $element->user_id);
     }
     if ($element->hikashop_vote_type == 'useful') {
         $useful = JRequest::getVar('value', 0, 'default', 'int');
         $vote_id = JRequest::getVar('hikashop_vote_id', 0, 'default', 'int');
         $element->user_id = JRequest::getVar('hikashop_vote_user_id', 0, 'default', 'int');
         if (empty($element->user_id)) {
             $element->user_id = $user_ip;
         }
         $already_vote = 0;
         $useful_old = 0;
         $query = 'SELECT vote_user_useful FROM ' . hikashop_table('vote_user') . ' WHERE vote_user_id = ' . (int) $vote_id . ' AND vote_user_user_id = ' . $db->quote($element->user_id) . '';
         $db->setQuery($query);
         $already_vote = $db->loadResult();
         if ($already_vote > 0) {
             echo '2';
             exit;
         }
         $voteClass = hikashop_get('class.vote');
         $results = $voteClass->get((int) $vote_id);
         $useful_old = $results->vote_useful;
         if ($useful == 1) {
             $useful_new = $useful_old + 1;
         } else {
             $useful_new = $useful_old - 1;
         }
         $vElement->vote_id = (int) $vote_id;
         $vElement->vote_useful = strip_tags($useful_new);
         $useful = new stdClass();
         $useful->vote_id = (int) $vote_id;
         $useful->vote_useful = (int) $useful_new;
         $updated = parent::save($useful);
         if ($updated) {
             $dispatcher->trigger('onAfterVoteUpdate', array(&$element, $useful));
             $query = 'INSERT INTO ' . hikashop_table('vote_user') . ' (vote_user_id,vote_user_user_id,vote_user_useful) VALUES (' . (int) $vote_id . ',' . $db->quote($element->user_id) . ',1)';
             $db->setQuery($query);
             $db->query();
             if ($db->getAffectedRows() > 0) {
                 echo '1';
             }
         }
         exit;
     }
     if ($vote_if_bought && !$purchased) {
         echo '3';
         exit;
     }
     if ($vElement->vote_type == 'product') {
         $typeClass = hikashop_get('class.product');
         $results = $typeClass->get($vElement->vote_ref_id);
         $hikashop_vote_average_score = $results->product_average_score;
         $hikashop_vote_total_score = $results->product_total_vote;
     } else {
         if (!isset($currentElement->average_score) || !isset($currentElement->total_vote)) {
             echo '4';
             exit;
         }
         $hikashop_vote_average_score = $currentElement->average_score;
         $hikashop_vote_total_score = $currentElement->total_vote;
     }
     $hikashop_vote_total_score_new = $hikashop_vote_total_score + 1;
     $hikashop_vote_average_score_new = ($hikashop_vote_average_score * $hikashop_vote_total_score + $element->vote) / $hikashop_vote_total_score_new;
     $vote_id = '';
     $vote_old = '';
     $filters = array('vote_type = ' . $db->quote($vElement->vote_type), 'vote_ref_id = ' . (int) $vElement->vote_ref_id, 'vote_rating != 0');
     if (empty($element->user_id) || $element->user_id == $user_ip) {
         $filters[] = 'vote_ip = ' . $db->quote($user_ip);
         $filters[] = 'vote_user_id = \'\'';
     } else {
         $filters[] = 'vote_user_id = ' . $db->quote($element->user_id);
     }
     $query = 'SELECT * FROM ' . hikashop_table('vote') . ' WHERE ' . implode(' AND ', $filters);
     $db->setQuery($query);
     $result = $db->loadObject();
     if (!empty($result)) {
         $vote_id = $result->vote_id;
         $vote_old = $result->vote_rating;
         $published = $result->vote_published;
     }
     $nb_comment = $this->commentPassed($vElement->vote_type, $vElement->vote_ref_id, $element->user_id);
     $vote_mode = $config->get('enable_status_vote', 0);
     if ($element->hikashop_vote_type == 'vote') {
         $vElement->vote_rating = strip_tags($element->vote);
         $vElement->vote_comment = '';
         if (!empty($vote_id)) {
             $vElement->vote_id = $vote_id;
             if (!empty($hikashop_vote_total_score)) {
                 $hikashop_vote_average_score_new = ($hikashop_vote_average_score * $hikashop_vote_total_score - $vote_old + $element->vote) / $hikashop_vote_total_score;
             }
             $updated = parent::save($vElement);
             if ($updated && $published == 1) {
                 if ($vElement->vote_type == 'product') {
                     $type = new stdClass();
                     $type->product_id = (int) $vElement->vote_ref_id;
                     $type->product_average_score = $hikashop_vote_average_score_new;
                     $type->product_total_vote = (int) $hikashop_vote_total_score;
                     $typeClass->save($type, true);
                 }
                 $element->average_score = $hikashop_vote_average_score_new;
                 $element->total_vote = (int) $hikashop_vote_total_score;
                 $dispatcher->trigger('onAfterVoteUpdate', array(&$element));
             }
             echo '1';
         } else {
             $inserted = parent::save($vElement);
             if ($inserted) {
                 if ($vElement->vote_type == 'product') {
                     $type = new stdClass();
                     $type->product_id = (int) $vElement->vote_ref_id;
                     $type->product_average_score = $hikashop_vote_average_score_new;
                     $type->product_total_vote = (int) $hikashop_vote_total_score_new;
                     $typeClass->save($type, true);
                 }
                 $element->average_score = $hikashop_vote_average_score_new;
                 $element->total_vote = (int) $hikashop_vote_total_score_new;
                 $dispatcher->trigger('onAfterVoteUpdate', array(&$element));
             }
             echo '2';
         }
         exit;
     }
     jimport('joomla.filter.filterinput');
     $safeHtmlFilter = JFilterInput::getInstance(null, null, 1, 1);
     $config = hikashop_config();
     $vElement->vote_published = $config->get('published_comment', 0);
     if ($element->hikashop_vote_type == 'both') {
         $vElement->vote_rating = strip_tags($element->vote);
         $vElement->vote_comment = $safeHtmlFilter->clean($element->comment, 'string');
         if ($nb_comment < $comment_by_person_by_product) {
             $inserted = parent::save($vElement);
             if ($inserted) {
                 if ($vElement->vote_type == 'product' && $vElement->vote_published) {
                     $type = new stdClass();
                     $type->product_id = (int) $vElement->vote_ref_id;
                     $type->product_average_score = $hikashop_vote_average_score_new;
                     $type->product_total_vote = (int) $hikashop_vote_total_score_new;
                     $typeClass->save($type, true);
                 }
                 $element->average_score = $hikashop_vote_average_score_new;
                 $element->total_vote = (int) $hikashop_vote_total_score;
                 $dispatcher->trigger('onAfterVoteUpdate', array(&$element));
                 if (!empty($send_email)) {
                     $vote_id = $db->insertid();
                     $this->sendNotifComment($vote_id, strip_tags($element->comment), (int) $vElement->vote_ref_id, (int) $element->user_id, strip_tags($element->pseudo_comment), strip_tags($element->email_comment), $vElement->vote_type);
                 }
                 echo '1';
             } else {
                 echo '0';
             }
         } else {
             echo '2';
         }
         exit;
     }
     if ($element->hikashop_vote_type == 'comment') {
         $vElement->vote_rating = '0';
         $vElement->vote_comment = $safeHtmlFilter->clean($element->comment, 'string');
         if ($nb_comment < $comment_by_person_by_product) {
             $inserted = parent::save($vElement);
             $vote_id = 0;
             if ($inserted) {
                 $dispatcher->trigger('onAfterVoteUpdate', array(&$element));
                 if ($send_email != '') {
                     $vote_id = $db->insertid();
                     $this->sendNotifComment($vote_id, strip_tags($element->comment), (int) $vElement->vote_ref_id, (int) $element->user_id, strip_tags($element->pseudo_comment), strip_tags($element->email_comment), $vElement->vote_type);
                 }
                 echo '1';
             } else {
                 echo '0';
             }
         } else {
             echo '2';
         }
     }
     exit;
 }
Esempio n. 20
0
 function update(&$product)
 {
     $old = null;
     if (!empty($product->order_product_id)) {
         $old = $this->get($product->order_product_id);
     }
     $update_quantities = true;
     if (!empty($product->no_update_qty)) {
         unset($product->no_update_qty);
         $update_quantities = false;
     }
     if ($update_quantities && (isset($product->change) || (empty($old) && !empty($product->product_id) || !empty($old->product_id) && $old->order_product_quantity != $product->order_product_quantity))) {
         $k = $product->order_product_quantity;
         if (!empty($old)) {
             if (isset($product->change)) {
                 if ($product->change == 'plus') {
                     $k = -(int) $product->order_product_quantity;
                 } elseif ($product->change == 'minus') {
                     $k = (int) $product->order_product_quantity;
                 }
                 unset($product->change);
             } else {
                 $k = $product->order_product_quantity - $old->order_product_quantity;
             }
         }
         if (!empty($product->product_id)) {
             $product_id = (int) $product->product_id;
         } else {
             $product_id = (int) $old->product_id;
         }
         $filters = array('product_id=' . (int) $product_id);
         $productClass = hikashop_get('class.product');
         $prod = $productClass->get($product_id);
         if (!empty($prod) && $prod->product_type == 'variant' && !empty($prod->product_parent_id)) {
             $filters[] = 'product_id=' . (int) $prod->product_parent_id;
         }
         $query = 'UPDATE ' . hikashop_table('product') . ' SET product_quantity = product_quantity - ' . $k . ' WHERE (' . implode(' OR ', $filters) . ') AND product_quantity >= 0 AND product_quantity > ' . (int) ($k - 1);
         $this->database->setQuery($query);
         $this->database->query();
         $query = 'UPDATE ' . hikashop_table('product') . ' SET product_sales = product_sales + ' . $k . ' WHERE product_sales >= ' . -$k . ' AND (' . implode(' OR ', $filters) . ')';
         $this->database->setQuery($query);
         $this->database->query();
     }
     if (!empty($product->tax_namekey)) {
         $tax = new stdClass();
         if (!empty($product->product_id) && !empty($old)) {
             if (is_string($old->order_product_tax_info)) {
                 $old->order_product_tax_info = unserialize($old->order_product_tax_info);
             }
             $tax = reset($old->order_product_tax_info);
         }
         $tax->tax_namekey = $product->tax_namekey;
         $tax->tax_amount = $product->order_product_tax;
         $product->order_product_tax_info = array($tax);
     }
     if (isset($product->order_product_tax_info) && !is_string($product->order_product_tax_info)) {
         $product->order_product_tax_info = serialize($product->order_product_tax_info);
     }
     if (empty($product->order_product_quantity)) {
         return $this->delete($product->order_product_id);
     }
     if (isset($product->change)) {
         unset($product->change);
     }
     if (isset($product->tax_namekey)) {
         unset($product->tax_namekey);
     }
     $product->order_product_id = parent::save($product);
     return $product->order_product_id;
 }
Esempio n. 21
0
 function save(&$element)
 {
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $id = reset($this->pkeys);
     $do = true;
     if (empty($element->{$id})) {
         $dispatcher->trigger('onBeforeHikaPluginCreate', array('joomla.plugin', &$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeHikaPluginUpdate', array('joomla.plugin', &$element, &$do));
     }
     if (!$do) {
         return false;
     }
     if (isset($element->plugin_params) && !is_string($element->plugin_params)) {
         $element->plugin_params = serialize($element->plugin_params);
     }
     if (!empty($element->params)) {
         if (!HIKASHOP_J16) {
             $params = '';
             foreach ($element->params as $key => $val) {
                 $params .= $key . '=' . $val . "\n";
             }
             $element->params = rtrim($params);
         } else {
             $handler = JRegistryFormat::getInstance('JSON');
             $element->params = $handler->objectToString($element->params);
         }
     }
     return parent::save($element);
 }
Esempio n. 22
0
 function save(&$element, $stats = false)
 {
     if (!$stats) {
         $element->product_modified = time();
     }
     if (empty($element->product_id)) {
         if (strlen(@$element->product_quantity) == 0) {
             $element->product_quantity = -1;
         }
         $element->product_created = @$element->product_modified;
     } else {
         $element->old = $this->get($element->product_id);
     }
     if (empty($element->product_id)) {
         if (empty($element->product_type)) {
             if (!isset($element->product_parent_id) || empty($element->product_parent_id)) {
                 $element->product_type = 'main';
             } else {
                 $element->product_type = 'variant';
             }
         }
     }
     if (isset($element->product_quantity) && !is_numeric($element->product_quantity)) {
         $element->product_quantity = -1;
     }
     $new = false;
     if (empty($element->product_id)) {
         if (empty($element->product_code) && !empty($element->product_name)) {
             $search = explode(",", "ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u");
             $replace = explode(",", "c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u");
             $test = str_replace($search, $replace, $element->product_name);
             $test = preg_replace('#[^a-z0-9_-]#i', '', $test);
             if (empty($test)) {
                 $query = 'SELECT MAX(`product_id`) FROM ' . hikashop_table('product');
                 $this->database->setQuery($query);
                 $last_pid = $this->database->loadResult();
                 $last_pid++;
                 $element->product_code = 'product_' . $last_pid;
             } else {
                 $test = str_replace($search, $replace, $element->product_name);
                 $element->product_code = preg_replace('#[^a-z0-9_-]#i', '_', $test);
             }
         } elseif (empty($element->product_code) && $element->product_type == 'variant' && !empty($element->product_parent_id) && !empty($element->characteristics)) {
             $parent = $this->get($element->product_parent_id);
             $element->product_code = $parent->product_code . '_' . implode('_', array_keys($element->characteristics));
         } elseif (empty($element->product_code)) {
             return false;
         }
         $new = true;
     }
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     if ($new) {
         $dispatcher->trigger('onBeforeProductCreate', array(&$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeProductUpdate', array(&$element, &$do));
     }
     if (!$do) {
         return false;
     }
     $tags = null;
     if (isset($element->tags)) {
         $tags = $element->tags;
         unset($element->tags);
     }
     $status = parent::save($element);
     if ($status) {
         $this->get('reset_cache');
         $element->product_id = $status;
         if ($new) {
             $dispatcher->trigger('onAfterProductCreate', array(&$element));
         } else {
             $dispatcher->trigger('onAfterProductUpdate', array(&$element));
         }
         if ($tags !== null && @$element->product_type != 'variant') {
             $tagsHelper = hikashop_get('helper.tags');
             $fullElement = $element;
             if (!empty($element->old)) {
                 foreach ($element->old as $k => $v) {
                     if (!isset($fullElement->{$k})) {
                         $fullElement->{$k} = $v;
                     }
                 }
             }
             $tagsHelper->saveUCM('product', $fullElement, $tags);
         }
     }
     return $status;
 }
Esempio n. 23
0
 function save(&$element)
 {
     if (!empty($element->params) && is_array($element->params)) {
         if (version_compare(JVERSION, '1.6', '<')) {
             $params = '';
             foreach ($element->params as $k => $v) {
                 $params .= $k . '=' . $v . "\n";
             }
             $element->params = rtrim($params, "\n");
         } else {
             $handler = JRegistryFormat::getInstance('JSON');
             $element->params = $handler->objectToString($element->params);
         }
     }
     $element->id = parent::save($element);
     if ($element->id && !empty($element->hikashop_params)) {
         $configClass =& hikashop_config();
         $config = new stdClass();
         $params_name = 'params_' . $element->id;
         $config->{$params_name} = $element->hikashop_params;
         if ($configClass->save($config)) {
             $configClass->set($params_name, $element->hikashop_params);
         }
         if (!HIKASHOP_J30) {
             return $element->id;
         }
         $plugin = JPluginHelper::getPlugin('system', 'cache');
         $params = new JRegistry(@$plugin->params);
         $options = array('defaultgroup' => 'page', 'browsercache' => $params->get('browsercache', false), 'caching' => false);
         $cache = JCache::getInstance('page', $options);
         $cache->clean();
     }
     return $element->id;
 }
Esempio n. 24
0
 function save(&$element, $ordering = true)
 {
     $pkey = end($this->pkeys);
     $table = hikashop_table(end($this->tables));
     $recalculate = false;
     $new = true;
     if (!empty($element->{$pkey})) {
         $new = false;
         $old = $this->get($element->{$pkey});
         if (isset($element->category_parent_id)) {
             $newParentElement = $this->get($element->category_parent_id);
             if ($old->category_parent_id != $element->category_parent_id) {
                 if ($element->category_parent_id == $element->{$pkey}) {
                     return false;
                 }
                 if ($newParentElement->category_left > $old->category_left && $newParentElement->category_right < $old->category_right) {
                     return false;
                 }
                 $recalculate = true;
             }
             if (!empty($newParentElement->category_type) && $newParentElement->category_type != 'root') {
                 $element->category_type = $newParentElement->category_type;
             }
             if (!empty($element->category_site_id) && $newParentElement->category_type == 'root') {
                 $element->category_site_id = '';
             }
         }
         if (empty($element->category_type)) {
             if (empty($old->category_type) || $old->category_type == 'root') {
                 $element->category_type = $this->type;
             } else {
                 $element->category_type = $old->category_type;
             }
         }
         $element->category_modified = time();
     } else {
         if (empty($element->category_parent_id)) {
             $query = 'SELECT category_id FROM ' . hikashop_table('category') . ' WHERE category_type=\'root\' LIMIT 1;';
             $this->database->setQuery($query);
             $element->category_parent_id = $this->database->loadResult();
             $element->category_namekey = $element->category_type;
             $element->category_depth = 1;
         }
         $newParentElement = $this->get($element->category_parent_id);
         if (empty($element->category_type) && $newParentElement->category_type != 'root') {
             $element->category_type = $newParentElement->category_type;
         }
         if (empty($element->category_type)) {
             $element->category_type = $this->type;
         }
         if (empty($element->category_site_id) && $newParentElement->category_type != 'root') {
             $element->category_site_id = $newParentElement->category_site_id;
         }
         $element->category_created = $element->category_modified = time();
         if (empty($element->category_namekey)) {
             $element->category_namekey = $newParentElement->category_type . '_' . $element->category_created . '_' . rand();
         }
         if (!isset($element->category_published)) {
             $element->category_published = 1;
         }
     }
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     if ($new) {
         $dispatcher->trigger('onBeforeCategoryCreate', array(&$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeCategoryUpdate', array(&$element, &$do));
     }
     if (!$do) {
         return false;
     }
     $status = parent::save($element);
     if (!$status) {
         return false;
     }
     if ($new) {
         $dispatcher->trigger('onAfterCategoryCreate', array(&$element));
     } else {
         $dispatcher->trigger('onAfterCategoryUpdate', array(&$element));
     }
     if (empty($element->{$pkey})) {
         $element->{$pkey} = $status;
         if ($ordering) {
             $orderClass = hikashop_get('helper.order');
             $orderClass->pkey = 'category_id';
             $orderClass->table = 'category';
             $orderClass->groupMap = 'category_parent_id';
             $orderClass->groupVal = $element->category_parent_id;
             $orderClass->orderingMap = 'category_ordering';
             $orderClass->reOrder();
         }
     }
     $filter = '';
     if ($new) {
         $query = 'UPDATE ' . $table . ' SET category_right = category_right + 2 WHERE category_right >= ' . (int) $newParentElement->category_right . $filter;
         $this->database->setQuery($query);
         $this->database->query();
         $query = 'UPDATE ' . $table . ' SET category_left = category_left + 2 WHERE category_left >= ' . (int) $newParentElement->category_right . $filter;
         $this->database->setQuery($query);
         $this->database->query();
         $query = 'UPDATE ' . $table . ' SET category_left = ' . (int) $newParentElement->category_right . ', category_right = ' . (int) ($newParentElement->category_right + 1) . ', category_depth = ' . (int) ($newParentElement->category_depth + 1) . ' WHERE ' . $pkey . ' = ' . $status . ' LIMIT 1';
         $this->database->setQuery($query);
         $this->database->query();
     } elseif ($recalculate) {
         $query = 'SELECT category_left,category_right,category_depth,' . $pkey . ',category_parent_id FROM ' . $table . $filter . ' ORDER BY category_left ASC';
         $this->database->setQuery($query);
         $categories = $this->database->loadObjectList();
         $root = null;
         $this->categories = array();
         foreach ($categories as $cat) {
             $this->categories[$cat->category_parent_id][] = $cat;
             if (empty($cat->category_parent_id)) {
                 $root = $cat;
             }
         }
         $this->rebuildTree($root, 0, 1);
         if ($element->category_type == 'status' && !empty($old->category_type)) {
             $query = 'UPDATE ' . hikashop_table('config') . ' SET config_value = REPLACE(config_value,' . $this->database->Quote($old->category_type) . ',' . $this->database->Quote($element->category_type) . ')';
             $this->database->setQuery($query);
             $this->database->query();
             $query = 'UPDATE ' . hikashop_table('payment') . ' SET payment_params = REPLACE(payment_params,' . $this->database->Quote(strlen($old->category_type) . ':"' . $old->category_type) . ',' . $this->database->Quote(strlen($element->category_type) . ':"' . $element->category_type) . ')';
             $this->database->setQuery($query);
             $this->database->query();
         }
     }
     return $status;
 }
Esempio n. 25
0
File: vote.php Progetto: rodhoff/MNW
 function save(&$element)
 {
     $this->app = Jfactory::getApplication();
     $this->config = hikashop_config();
     $dispatcher = JDispatcher::getInstance();
     $db = JFactory::getDBO();
     if (isset($element->vote_ref_id) || !$this->app->isAdmin()) {
         $this->checkVote($element);
     }
     if (!empty($this->error['code'])) {
         return false;
     }
     $element->vote_date = time();
     if (!$this->app->isAdmin()) {
         $element->vote_ip = hikashop_getIP();
         if (!empty($element->vote_comment) && !$this->config->get('published_comment', '1')) {
             $element->vote_published = 0;
         } else {
             $element->vote_published = 1;
         }
     }
     $oldElement = new stdClass();
     if ($this->app->isAdmin()) {
         if ($element->vote_id != '0') {
             $query = 'SELECT * FROM ' . hikashop_table('vote') . ' WHERE vote_id = ' . (int) $element->vote_id;
             $db->setQuery($query);
             $result = $db->loadObject();
             if (!empty($result)) {
                 $oldElement = $result;
                 if (!isset($element->vote_ref_id)) {
                     $published = $element->vote_published;
                     $element = clone $result;
                     $element->vote_published = $published;
                 }
                 $element->vote_type = $result->vote_type;
             } else {
                 $this->error = array('code' => '505018', 'message' => JText::_('HIKA_VOTE_MISSING_ENTRY'));
                 return false;
             }
         }
     } elseif ($element->vote_rating != 0 && !in_array($this->config->get('enable_status_vote', 'nothing'), array('nothing', 'comment', 'both'))) {
         //If it is only a rating
         $result = $this->getUserRating($element->vote_type, $element->vote_ref_id, $element->vote_user_id);
         if (!empty($result)) {
             $element->vote_id = $result->vote_id;
             $element->vote_published = $result->vote_published;
             $oldElement = $result;
         } else {
             $element->vote_id = 0;
         }
     } else {
         $element->vote_id = 0;
     }
     $new = false;
     if ($element->vote_id == 0) {
         $new = true;
     }
     if ($new) {
         $dispatcher->trigger('onBeforeVoteCreate', array(&$oldElement, &$do, &$element));
     } else {
         $dispatcher->trigger('onBeforeVoteUpdate', array(&$oldElement, &$do, &$element));
     }
     $success = parent::save($element);
     if (!$success) {
         $this->error = array('code' => '505016', 'message' => JText::_('HIKA_VOTE_ERROR_SAVING_DATA'));
         return false;
     }
     $return_data = array('average' => 0, 'total' => 0);
     if ($element->vote_type != 'product') {
         $db = JFactory::getDBO();
         $query = 'SELECT AVG(v.vote_rating) AS average, COUNT(v.vote_id) AS total FROM ' . hikashop_table('vote') . ' AS v ' . ' WHERE vote_ref_id = ' . (int) $element->vote_ref_id . ' AND vote_type = ' . $db->Quote($element->vote_type) . ' AND v.vote_rating != 0';
         $db->setQuery($query);
         $data = $db->loadObject();
         if ($data->total == 0) {
             $return_data['average'] = $element->vote_rating;
             $return_data['total'] = 1;
         } else {
             if (!$new) {
                 $return_data['average'] = ($data->total * $data->average - $oldElement->vote_rating + $element->vote_rating) / $data->total;
                 $return_data['total'] = $data->total;
             } else {
                 $return_data['average'] = ($data->total * $data->average + $element->vote_rating) / ($data->total + 1);
                 $return_data['total'] = $data->total++;
             }
         }
     }
     if (!$new) {
         $dispatcher->trigger('onAfterVoteCreate', array(&$element, &$return_data));
         $this->error = array('code' => '1', 'message' => JText::_('VOTE_UPDATED'));
     } else {
         $dispatcher->trigger('onAfterVoteUpdate', array(&$element, &$return_data));
         $this->error = array('code' => '2', 'message' => JText::_('THANK_FOR_VOTE'));
     }
     $itemClass = hikashop_get('class.' . $element->vote_type);
     if ($itemClass === null) {
         return true;
     }
     if (is_object($itemClass) && !empty($itemClass)) {
         $data = $itemClass->get($element->vote_ref_id);
         if (isset($data->alias)) {
             unset($data->alias);
         }
     } else {
         $data = new stdClass();
     }
     if ($element->vote_rating == 0) {
         return false;
     }
     if ($element->vote_type == 'product') {
         $newValues = $this->updateAverage($element, $oldElement, $data);
         $return_data = array('average' => $newValues->product_average_score, 'total' => $newValues->product_total_vote);
     }
     $this->values = $return_data;
     $success = $itemClass->save($data);
     if (!$success) {
         $this->error = array('code' => '505013', 'message' => JText::_('HIKA_VOTE_ERROR_SAVING_ITEM_DATA'));
         return false;
     }
     return true;
 }
Esempio n. 26
0
 function save(&$filter)
 {
     if (isset($filter->filter_options) && is_array($filter->filter_options)) {
         $filter->filter_options = serialize($filter->filter_options);
     }
     $return = parent::save($filter);
     return $return;
 }
Esempio n. 27
0
File: user.php Progetto: rodhoff/MNW
 function save(&$element, $skipJoomla = false)
 {
     $new = empty($element->user_id);
     if ($new) {
         if (empty($element->user_created_ip)) {
             $element->user_created_ip = hikashop_getIP();
         }
         if (empty($element->user_created)) {
             $element->user_created = time();
         }
         if (empty($element->user_email) && !empty($element->user_cms_id)) {
             $user = JFactory::getUser($element->user_cms_id);
             $element->user_email = $user->email;
         } elseif (!empty($element->user_email) && empty($element->user_cms_id)) {
         }
     }
     if (isset($element->user_currency_id)) {
         $app = JFactory::getApplication();
         $config =& hikashop_config();
         $user = $this->get($element->user_id);
         if (empty($user->user_currency_id)) {
             $user->user_currency_id = $config->get('partner_currency');
         }
         $previousPartnerCurrency = $user->user_currency_id;
         if ($app->isAdmin()) {
             if ($element->user_currency_id == $config->get('partner_currency')) {
                 $element->user_currency_id = 0;
             }
         } elseif ($config->get('allow_currency_selection')) {
             $currencyClass = hikashop_get('class.currency');
             $currency = $currencyClass->get($element->user_currency_id);
             if (empty($currency->currency_published)) {
                 unset($element->user_currency_id);
             }
         } else {
             unset($element->user_currency_id);
         }
         if (!empty($element->user_currency_id)) {
             $element->user_currency_id = (int) $element->user_currency_id;
         }
     }
     if (!empty($element->user_params)) {
         $element->user_params = serialize($element->user_params);
     }
     JPluginHelper::importPlugin('hikashop');
     $dispatcher = JDispatcher::getInstance();
     $do = true;
     if ($new) {
         $dispatcher->trigger('onBeforeUserCreate', array(&$element, &$do));
     } else {
         $dispatcher->trigger('onBeforeUserUpdate', array(&$element, &$do));
     }
     if (!$do) {
         return false;
     }
     $element->user_id = parent::save($element);
     if (empty($element->user_id)) {
         return $element->user_id;
     }
     if ($new) {
         $dispatcher->trigger('onAfterUserCreate', array(&$element));
     } else {
         $dispatcher->trigger('onAfterUserUpdate', array(&$element));
     }
     if ($element->user_id == hikashop_loadUser()) {
         hikashop_loadUser(null, true);
         $this->get(false);
     }
     if ($new) {
         $plugin = JPluginHelper::getPlugin('system', 'hikashopgeolocation');
         if (!empty($plugin) && hikashop_level(2)) {
             jimport('joomla.html.parameter');
             $params = new HikaParameter($plugin->params);
             if (!empty($params)) {
                 if ($params->get('user', 1)) {
                     $geo = new stdClass();
                     $geo->geolocation_ref_id = $element->user_id;
                     $geo->geolocation_type = 'user';
                     $geo->geolocation_ip = $element->user_created_ip;
                     $class = hikashop_get('class.geolocation');
                     $class->params =& $params;
                     $class->save($geo);
                 }
             }
         }
     } else {
         if (!$skipJoomla && !empty($element->user_email)) {
             if (empty($element->user_cms_id)) {
                 $userData = $this->get($element->user_id);
                 $element->user_cms_id = $userData->user_cms_id;
             }
             $user = JFactory::getUser($element->user_cms_id);
             if (!empty($user) && $element->user_email != $user->email) {
                 $user->email = $element->user_email;
                 $user->save();
             }
         }
         if (isset($element->user_currency_id)) {
             $config =& hikashop_config();
             if (empty($element->user_currency_id)) {
                 $element->user_currency_id = $config->get('partner_currency');
             }
             if ($element->user_currency_id != $previousPartnerCurrency) {
                 $currencyClass = hikashop_get('class.currency');
                 $main_currency = (int) $config->get('main_currency', 1);
                 $null = null;
                 $ids = array($previousPartnerCurrency => $previousPartnerCurrency, $element->user_currency_id => $element->user_currency_id, $main_currency => $main_currency);
                 $currencies = $currencyClass->getCurrencies($ids, $null);
                 $srcCurrency = $currencies[$previousPartnerCurrency];
                 $dstCurrency = $currencies[$element->user_currency_id];
                 $mainCurrency = $currencies[$main_currency];
                 $this->_updatePartnerPrice($srcCurrency, $dstCurrency, $mainCurrency, $element, 'click');
                 $this->_updatePartnerPrice($srcCurrency, $dstCurrency, $mainCurrency, $element, 'order');
                 $this->_updatePartnerPrice($srcCurrency, $dstCurrency, $mainCurrency, $element, 'user');
             }
         }
     }
     return $element->user_id;
 }