示例#1
0
 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);
         }
     }
 }
示例#2
0
 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);
         }
     }
 }
示例#3
0
 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;
                 }
             }
         }
     }
 }
示例#4
0
 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;
 }
示例#5
0
 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();
 }
示例#6
0
 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;
 }
示例#7
0
 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;
 }
示例#8
0
 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);
         }
     }
 }
示例#9
0
 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');
     }
 }