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; }
function save(&$element) { if (empty($element->waitlist_id) && empty($element->date)) { $element->date = time(); } $status = parent::save($element); return $status; }
function save(&$element) { $class = hikashop_get('helper.translation'); $class->getTranslations($element); $status = parent::save($element); if ($status) { $class->handleTranslations('characteristic', $status, $element); } return $status; }
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; }
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; }
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); }
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; }
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); }
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; }
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); }
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; }
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; }
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; }
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; }
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; }
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; }
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); }
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; }
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; }
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; }
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); }
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; }
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; }
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; }
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; }
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; }
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; }