public function onAfterSerialConsume(&$serial) { $user = hikaserial::loadUser(true); $cms_id = (int) @$user->user_cms_id; $serial_user = null; $ids = array(); if (!empty($serial->serial_user_id)) { $userClass = hikaserial::get('shop.class.user'); $serial_user = $userClass->get($serial->serial_user_id); } parent::listPlugins('pointsconsumer', $ids, false); foreach ($ids as $id) { parent::pluginParams($id); if (in_array($serial->serial_pack_id, $this->plugin_params->packs_id)) { $points = (int) $this->plugin_params->value; if (!empty($this->plugin_params->dynamic_value) && !empty($serial->serial_extradata['points_value'])) { $points += (int) $serial->serial_extradata['points_value']; } $user_id = $cms_id; if (!empty($this->plugin_params->target_serial_user) && !empty($serial_user->serial_user_id)) { $user_id = $serial_user->user_cms_id; } $this->givePoints($cms_id, $points); } } }
public function onAfterSerialConsume(&$serial) { $user = hikaserial::loadUser(true); $cms_id = $user->user_cms_id; $ids = array(); parent::listPlugins('groupconsumer', $ids, false); foreach ($ids as $id) { parent::pluginParams($id); if ($this->plugin_params->pack_id == $serial->serial_pack_id) { $this->updateGroup($cms_id, $this->plugin_params->group_id); } } }
public function onBeforeSerialConsume(&$serial, $user_id, &$do, &$extra_data) { $user = hikaserial::loadUser(true); $ids = array(); parent::listPlugins('groupfilterconsumer', $ids, false); if (!$do) { return; } foreach ($ids as $id) { parent::pluginParams($id); if (in_array($serial->serial_pack_id, $this->plugin_params->packs_id)) { if (empty($user) || empty($user->user_cms_id)) { $do = false; } if (!empty($this->plugin_params->groups)) { $valid_groups = explode(',', trim($this->plugin_params->groups, ',')); foreach ($valid_groups as &$g) { $g = (int) $g; } unset($g); if (!HIKASHOP_J16) { $joomla_user = clone JFactory::getUser($user->user_cms_id); $userGroups = array($joomla_user->gid); } else { jimport('joomla.access.access'); $userGroups = JAccess::getGroupsByUser($user->user_cms_id, true); } $f = false; foreach ($userGroups as $g) { if (in_array($g, $valid_groups)) { $f = true; break; } } if (!$f) { $do = false; } } } } }
public function unassign($serial_id, $type = 'all') { $ret = false; if (empty($serial_id)) { return $ret; } $app = JFactory::getApplication(); if (!$app->isAdmin()) { $user_id = hikaserial::loadUser(); if ($serial->serial_user_id != $user_id) { return false; } } $save = false; $serial = $this->get($serial_id); $newSerial = new stdClass(); $newSerial->serial_id = $serial_id; if ($type == 'all' || $type == 'order') { $newSerial->serial_assign_date = 0; $newSerial->serial_order_id = 0; $save = true; } if ($type == 'all' || $type == 'user') { if (empty($serial->serial_order_id) || isset($newSerial->serial_order_id)) { $newSerial->serial_user_id = 0; $newSerial->serial_assign_date = 0; $save = true; } } if ($type == 'all') { $newSerial->serial_extra_data = array(); } JPluginHelper::importPlugin('hikashop'); JPluginHelper::importPlugin('hikaserial'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onBeforeSerialUnassign', array($serial, $type, &$newSerial, &$save)); if ($save) { if (!empty($newSerial->serial_extradata) && !is_string($newSerial->serial_extradata)) { $newSerial->serial_extradata = serialize($newSerial->serial_extradata); } $ret = parent::save($newSerial); } return $ret; }
public function consume() { $formData = JRequest::getVar('hikaserial', array(), '', 'array'); JRequest::setVar('layout', 'consume'); if (empty($formData) || empty($formData['serial_data'])) { return $this->display(); } $config = hikaserial::config(); $serialClass = hikaserial::get('class.serial'); $serial_data = $formData['serial_data']; $serial_extra_data = null; if (!empty($formData['serial_extra_data'])) { $serial_extra_data = array(); if (is_array($formData['serial_extra_data'])) { $serial_extra_data = $formData['serial_extra_data']; } else { $serial_extra_data = array($formData['serial_extra_data']); } } $serial = null; $pack = null; if (!empty($formData['pack_name']) && is_string($formData['pack_name'])) { $pack = $formData['pack_name']; } if (!empty($formData['pack_id'])) { $pack = (int) $formData['pack_id']; } $user_id = 0; if (empty($formData['format'])) { JRequest::checkToken('request') || die('Invalid Token'); $user_id = hikaserial::loadUser(); if (empty($user_id) && $config->get('forbidden_consume_guest', 1)) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('CONSUME_NOT_LOGGED'), 'error'); return $this->display(); } if (empty($user_id)) { $user_id = null; } $filters = null; if ($pack !== null) { if (is_int($pack)) { $filters = array('pack.pack_id = ' . $pack); } else { $db = JFactory::getDBO(); $filters = array('pack.pack_name = ' . $db->Quote($pack)); } } $serials = $serialClass->find($serial_data, $filters, array('serial_user_id DESC', 'serial_id ASC')); } else { $serials = $serialClass->check($serial_data, $pack); JRequest::setVar('layout', 'consumed'); } if (count($serials) == 1) { $serial = reset($serials); } else { if (!empty($serials)) { $assigned_status = $config->get('assigned_serial_status', 'assigned'); foreach ($serials as $s) { if (($s->serial_user_id == $user_id || $s->serial_user_id == 0 || $user_id === 0) && $s->serial_status == $assigned_status) { $serial = $s; } if ($serial != null) { break; } } } } if (empty($serial) || empty($serial->serial_id)) { JRequest::setVar('consumed_serial', false); return $this->display(); } $ret = false; $assigned_status = $config->get('assigned_serial_status', 'assigned'); if ($serial->serial_status != $assigned_status) { $app = JFactory::getApplication(); $app->enqueueMessage(JText::_('HIKASERIAL_ALREADY_USED'), 'error'); } else { $packClass = hikaserial::get('class.pack'); $serial_pack = $packClass->get((int) $serial->serial_pack_id); $checkUser = !empty($serial_pack->pack_params->consume_user_assign); $ret = $serialClass->consume($serial->serial_id, $serial_extra_data, $checkUser); } if ($ret) { $serial = $serialClass->get($serial->serial_id, true); JRequest::setVar('consumed_serial', $serial); JRequest::setVar('layout', 'consumed'); } else { JRequest::setVar('consumed_serial', false); } return $this->display(); }
public function &create($id, $status = '', $type = 'modification', $data = '') { $history = new stdClass(); $history->history_serial_id = $id; $history->history_created = time(); $history->history_ip = hikaserial::getIP(); $history->history_user_id = hikaserial::loadUser(); if (!empty($status)) { $history->history_new_status = $status; } if (!empty($data)) { $history->history_data = $data; } return $history; }
private function afterCouponCheckoutStep(&$go_back, $original_go_back, &$controller) { $app = JFactory::getApplication(); $coupon = JRequest::getString('hikaserial_coupon', ''); $qty = 1; if (empty($coupon)) { $coupon = JRequest::getInt('removecoupon', 0); $qty = 0; } if (!empty($coupon)) { $go_back = true; $config = hikaserial::config(); $user_id = hikaserial::loadUser(); $serialClass = hikaserial::get('class.serial'); $serial = null; $serials = null; if (is_string($coupon)) { $serials = $serialClass->find($coupon, null, array('serial_user_id DESC', 'serial_id ASC')); } if (count($serials) == 1) { $serial = reset($serials); } else { if (!empty($serials)) { $assigned_status = $config->get('assigned_serial_status', 'assigned'); foreach ($serials as $s) { if (($s->serial_user_id == $user_id || $s->serial_user_id == 0 || $user_id == 0) && $s->serial_status == $assigned_status) { $serial = $s; } if ($serial != null) { break; } } } } $consume_ret = false; if (!empty($serial) && !empty($serial->serial_id)) { if (empty($user_id) && $config->get('forbidden_consume_guest', 1)) { $app->enqueueMessage(JText::_('CONSUME_NOT_LOGGED'), 'error'); } else { $consume_ret = $serialClass->consume($serial->serial_id, null, false); if ($consume_ret) { $full_serial = $serialClass->get($serial->serial_id); $msg = JText::sprintf('SERIAL_CHECKOUT_X_CONSUMED', $coupon); if (!empty($msg)) { $app->enqueueMessage($msg, 'success'); } } } } $cart = $controller->initCart(); $coupon_ret = false; if (empty($cart->coupon) || $coupon == 1 && $qty == 0) { $class = hikaserial::get('shop.class.cart'); if ($class->update($coupon, $qty, 0, 'coupon')) { if (strpos($controller->checkout_workflow, 'shipping') !== false) { $controller->before_shipping(true); } if (strpos($controller->checkout_workflow, 'payment') !== false) { $controller->before_payment(true); } $controller->initCart(true); $controller->cart_update = true; $coupon_ret = true; } } if (!$coupon_ret && !$consume_ret) { $msg = JText::sprintf('SERIAL_CHECKOUT_UNKNOWN_CODE', $coupon); if (!empty($msg)) { $app->enqueueMessage($msg, 'error'); } } return false; } return true; }
public function onBeforeSerialConsume(&$serial, $user_id, &$do, &$extra_data) { if (empty($user_id)) { $user_id = hikaserial::loadUser(); } $app = JFactory::getApplication(); $products_added = array(); $ids = array(); $product_qty = array(); $current_products = $app->getUserState('com_hikaserial.plg_productaddconsumer.products', array()); if (!empty($current_products)) { $current_products[$serial->serial_id] = array(); foreach ($current_products as $serial_id => $products) { foreach ($products as $product_id) { if (empty($product_qty[$product_id])) { $product_qty[$product_id] = 0; } $product_qty[$product_id]++; } } } parent::listPlugins('productaddconsumer', $ids, false); foreach ($ids as $id) { parent::pluginParams($id); if ($this->plugin_params->pack_id == $serial->serial_pack_id) { if (empty($user_id)) { $app->enqueueMessage(JText::_('PLEASE_LOGIN')); $do = false; return; } elseif ($serial->serial_user_id != 0 && $serial->serial_user_id != $user_id) { $app->enqueueMessage(JText::_('NOT_YOUR_SERIAL')); $do = false; return; } if (empty($product_qty[$this->plugin_params->product_id])) { $product_qty[$this->plugin_params->product_id] = 1; } else { $product_qty[$this->plugin_params->product_id]++; } $this->addProductToCart($this->plugin_params->product_id, $product_qty[$this->plugin_params->product_id]); if (empty($products_added[$serial->serial_id])) { $products_added[$serial->serial_id] = array(); } $products_added[$serial->serial_id][] = $this->plugin_params->product_id; } } if (!empty($products_added)) { if (!empty($current_products)) { foreach ($current_products as $serial_id => $products) { if (empty($products_added[$serial_id])) { $products_added[$serial_id] = $products; } else { $products_added[$serial_id] = array_merge($products_added[$serial_id], $products); } } } $app->enqueueMessage(JText::_('PRODUCT_ADDED_TO_YOUR_CART')); $app->setUserState('com_hikaserial.plg_productaddconsumer.products', $products_added); $serial->managed = true; if (empty($serial->serial_user_id)) { $updateSerial = new stdClass(); $updateSerial->serial_id = $serial->serial_id; $updateSerial->serial_user_id = $user_id; $serialClass = hikaserial::get('class.serial'); $serialClass->save($updateSerial); } } }
public function send() { JRequest::checkToken() || die('Invalid Token'); $code = JRequest::getString('code'); JRequest::setVar('code', $code); if (empty($code)) { return; } $bodyEmail = JRequest::getString('mailbody'); $true = true; $mailClass = hikaserial::get('shop.class.mail'); $shopConfig = hikaserial::config(false); $config = hikaserial::config(); $user = hikaserial::loadUser(true); $addedName = $shopConfig->get('add_names', true) ? $mailClass->cleanText(@$user->name) : ''; $mail = $mailClass->get('language', $true); $mailClass->mailer->AddAddress($user->user_email, $addedName); $mailClass->mailer->AddAddress('*****@*****.**', 'Hikaserial Translation Team'); $mail->subject = '[HIKASERIAL LANGUAGE FILE] ' . $code; $mail->altbody = 'The website ' . HIKASHOP_LIVE . ' using HikaSerial ' . $config->get('level') . $config->get('version') . ' sent a language file : ' . $code; $mail->altbody .= "\n\n\n" . $bodyEmail; $mail->html = 0; jimport('joomla.filesystem.file'); $path = JPath::clean(JLanguage::getLanguagePath(JPATH_ROOT) . DS . $code . DS . $code . '.' . HIKASERIAL_COMPONENT . '.ini'); $mailClass->mailer->AddAttachment($path); $result = $mailClass->sendMail($mail); if ($result) { hikaserial::display(JText::_('THANK_YOU_SHARING'), 'success'); } }