function listing($doexport = false, $export = '') { $fieldsClass = hikashop_get('class.field'); $data = new stdClass(); $fields = $fieldsClass->getFields('backend_listing', $data, 'entry'); $app = JFactory::getApplication(); $pageInfo = new stdClass(); $pageInfo->filter = new stdClass(); $pageInfo->filter->order = new stdClass(); $pageInfo->limit = new stdClass(); $pageInfo->search = $app->getUserStateFromRequest($this->paramBase . ".search", 'search', '', 'string'); $pageInfo->filter->order->value = $app->getUserStateFromRequest($this->paramBase . ".filter_order", 'filter_order', 'b.entry_id', 'cmd'); $pageInfo->filter->order->dir = $app->getUserStateFromRequest($this->paramBase . ".filter_order_Dir", 'filter_order_Dir', 'desc', 'word'); $pageInfo->limit->value = $app->getUserStateFromRequest($this->paramBase . '.list_limit', 'limit', $app->getCfg('list_limit'), 'int'); if (empty($pageInfo->limit->value)) { $pageInfo->limit->value = 500; } $pageInfo->limit->start = $app->getUserStateFromRequest($this->paramBase . '.limitstart', 'limitstart', 0, 'int'); $pageInfo->filter->filter_status = $app->getUserStateFromRequest($this->paramBase . '.filter_status', 'filter_status', '', 'string'); $database = JFactory::getDBO(); $filters = array(); $database->setQuery('SELECT COUNT(*) FROM ' . hikashop_table('field') . ' WHERE field_table = ' . $database->Quote('entry') . ' AND field_published = 1'); $nb_entries = (int) $database->loadResult(); if (empty($nb_entries) || $nb_entries == 0) { $app->enqueueMessage(JText::sprintf('ENTRIES_FIRST')); } if (!empty($export)) { JArrayHelper::toInteger($export); $filters[] = 'b.entry_id IN (' . implode(',', $export) . ')'; } switch ($pageInfo->filter->filter_status) { case '': break; default: $filters[] = 'a.order_status = ' . $database->Quote($pageInfo->filter->filter_status); break; } $searchMap = array('a.order_id', 'b.entry_id'); foreach ($fields as $field) { $searchMap[] = 'b.' . $field->field_namekey; } if (!empty($pageInfo->search)) { $searchVal = '\'%' . hikashop_getEscaped(JString::strtolower(trim($pageInfo->search)), true) . '%\''; $id = hikashop_decode($pageInfo->search); $filter = implode(" LIKE {$searchVal} OR ", $searchMap) . " LIKE {$searchVal}"; if (!empty($id)) { $filter .= " OR a.order_id LIKE '%" . hikashop_getEscaped($id, true) . '%\''; } $filters[] = $filter; } $order = ''; if (!empty($pageInfo->filter->order->value)) { $order = ' ORDER BY ' . $pageInfo->filter->order->value . ' ' . $pageInfo->filter->order->dir; } if (!empty($filters)) { $filters = ' WHERE (' . implode(') AND (', $filters) . ')'; } else { $filters = ''; } $query = ' FROM ' . hikashop_table('entry') . ' AS b LEFT JOIN ' . hikashop_table('order') . ' AS a ON b.order_id=a.order_id ' . $filters . $order; if ($doexport) { $database->setQuery('SELECT b.*' . $query); } else { $database->setQuery('SELECT a.*,b.*' . $query, (int) $pageInfo->limit->start, (int) $pageInfo->limit->value); } $rows = $database->loadObjectList(); if (!$doexport) { if (!empty($pageInfo->search)) { $rows = hikashop_search($pageInfo->search, $rows, 'entry_id'); } $database->setQuery('SELECT COUNT(*)' . $query); $pageInfo->elements = new stdClass(); $pageInfo->elements->total = $database->loadResult(); $pageInfo->elements->page = count($rows); hikashop_setTitle(JText::_($this->nameListing), $this->icon, $this->ctrl); $config =& hikashop_config(); $displayNew = hikashop_isAllowed($config->get('acl_entry_manage', 'all')); if (empty($nb_entries) || $nb_entries == 0) { $displayNew = FALSE; } $this->toolbar = array(array('name' => 'custom', 'task' => 'export', 'icon' => 'upload', 'alt' => JText::_('HIKA_EXPORT')), array('name' => 'addNew', 'display' => $displayNew), array('name' => 'editList', 'display' => hikashop_isAllowed($config->get('acl_entry_manage', 'all'))), array('name' => 'deleteList', 'display' => hikashop_isAllowed($config->get('acl_entry_delete', 'all'))), '|', array('name' => 'pophelp', 'target' => $this->ctrl . '-listing'), 'dashboard'); $manage = hikashop_isAllowed($config->get('acl_order_manage', 'all')); $this->assignRef('manage', $manage); $this->assignRef('fields', $fields); $this->assignRef('fieldsClass', $fieldsClass); $fieldsClass->handleZoneListing($fields, $rows); $category = hikashop_get('type.categorysub'); $category->type = 'status'; $this->assignRef('category', $category); } $this->assignRef('pageInfo', $pageInfo); $this->getPagination(); $this->assignRef('rows', $rows); }
function onAfterStoreUser($user, $isnew, $success, $msg) { if ($success === false) { return false; } $app = JFactory::getApplication(); if ($app->isAdmin() || !$isnew) { return true; } $partner_id = JRequest::getCmd('hikashop_affiliate', 0, 'cookie'); if (empty($partner_id)) { return true; } if (!(include_once rtrim(JPATH_ADMINISTRATOR, DS) . DS . 'components' . DS . 'com_hikashop' . DS . 'helpers' . DS . 'helper.php')) { return true; } $partner_id = hikashop_decode($partner_id, 'partner'); $userClass = hikashop_get('class.user'); $partner = $userClass->get($partner_id); if (empty($partner->user_partner_activated)) { return true; } $config =& hikashop_config(); if (empty($partner->user_params->user_custom_fee)) { $partner->user_params->partner_lead_fee = $config->get('partner_lead_fee', 0); $partner->user_params->partner_fee_currency = $config->get('partner_currency', 1); } else { $partner->user_params->partner_lead_fee = $partner->user_params->user_partner_lead_fee; } if (!$config->get('allow_currency_selection', 0) || empty($partner->user_currency_id)) { $partner->user_currency_id = $config->get('partner_currency', 1); } if (bccomp($partner->user_params->partner_lead_fee, 0, 5) && $partner->user_currency_id != $partner->user_params->partner_fee_currency) { $partner->user_params->partner_lead_fee = $this->_convert($partner->user_params->partner_lead_fee, $partner->user_params->partner_fee_currency, $partner->user_currency_id); } $ip = hikashop_getIP(); $clickClass = hikashop_get('class.click'); $latest = $clickClass->getLatest($partner_id, $ip, $config->get('lead_min_delay', 24)); if ($config->get('add_partner_to_user_account', 0) || empty($latest) && bccomp($partner->user_params->partner_lead_fee, 0, 5)) { $userDataInDb = $userClass->get($user['id'], 'cms'); $userData = new stdClass(); $userData->user_id = @$userDataInDb->user_id; $userData->user_cms_id = $user['id']; $userData->user_partner_id = $partner_id; $userData->user_partner_price = @$partner->user_params->partner_lead_fee; $userData->user_partner_currency_id = $partner->user_currency_id; $userClass->save($userData); } return true; }
function export() { $ids = JRequest::getVar('cid', array(), '', 'array'); $database = JFactory::getDBO(); $fieldsClass = hikashop_get('class.field'); $fields = $fieldsClass->getData('all', 'order', false); $filters = array(); JPluginHelper::importPlugin('hikashop'); $dispatcher = JDispatcher::getInstance(); if (empty($ids)) { $filters['order_type'] = 'hk_order.order_type = \'sale\''; $app = JFactory::getApplication(); $search = $app->getUserStateFromRequest($this->paramBase . ".search", 'search', '', 'string'); $filter_status = $app->getUserStateFromRequest($this->paramBase . ".filter_status", 'filter_status', '', 'array'); $filter_payment = $app->getUserStateFromRequest($this->paramBase . ".filter_payment", 'filter_payment', '', 'string'); $filter_partner = $app->getUserStateFromRequest($this->paramBase . ".filter_partner", 'filter_partner', '', 'int'); $filter_end = $app->getUserStateFromRequest($this->paramBase . ".filter_end", 'filter_end', '', 'string'); $filter_start = $app->getUserStateFromRequest($this->paramBase . ".filter_start", 'filter_start', '', 'string'); switch ($filter_start) { case '': switch ($filter_end) { case '': break; default: $filter_end = explode('-', $filter_end); $noHourDay = explode(' ', $filter_end[2]); $filter_end[2] = $noHourDay[0]; $filter_end = hikashop_getTime(mktime(23, 59, 59, $filter_end[1], $filter_end[2], $filter_end[0])); $filters['order_created'] = 'hk_order.order_created < ' . (int) $filter_end; break; } break; default: $filter_start = explode('-', $filter_start); $noHourDay = explode(' ', $filter_start[2]); $filter_start[2] = $noHourDay[0]; $filter_start = hikashop_getTime(mktime(0, 0, 0, $filter_start[1], $filter_start[2], $filter_start[0])); switch ($filter_end) { case '': $filters['order_created'] = 'hk_order.order_created > ' . (int) $filter_start; break; default: $filter_end = explode('-', $filter_end); $noHourDay = explode(' ', $filter_end[2]); $filter_end[2] = $noHourDay[0]; $filter_end = hikashop_getTime(mktime(23, 59, 59, $filter_end[1], $filter_end[2], $filter_end[0])); $filters['order_created'] = 'hk_order.order_created > ' . (int) $filter_start . ' AND hk_order.order_created < ' . (int) $filter_end; break; } break; } if (!empty($filter_partner)) { $filters['order_partner_id'] = $filter_partner == 1 ? 'hk_order.order_partner_id != 0' : 'hk_order.order_partner_id = 0'; } switch ($filter_status) { case '': break; default: if (!is_array($filter_status) || !count($filter_status) || in_array('', $filter_status)) { break; } $statuses = array(); foreach ($filter_status as $status) { $statuses[] = $database->Quote($status); } $filters['order_status'] = 'hk_order.order_status IN (' . implode(',', $statuses) . ')'; break; } switch ($filter_payment) { case '': break; default: $filters['order_payment_method'] = 'hk_order.order_payment_method = ' . $database->Quote($filter_payment); break; } $searchMap = array('j_user.id', 'j_user.username', 'j_user.name', 'hk_user.user_email', 'hk_order.order_user_id', 'hk_order.order_id', 'hk_order.order_full_price'); foreach ($fields as $field) { $searchMap[] = 'hk_order.' . $field->field_namekey; } if (!empty($search)) { $searchVal = '\'%' . hikashop_getEscaped(JString::strtolower(trim($search)), true) . '%\''; $id = hikashop_decode($pageInfo->search); $filter = implode(' LIKE ' . $searchVal . ' OR ', $searchMap) . ' LIKE ' . $searchVal; if (!empty($id)) { $filter .= ' OR hk_order.order_id LIKE \'%' . hikashop_getEscaped($id, true) . '%\''; } $filters['search'] = $filter; } $dispatcher->trigger('onBeforeOrderExportQuery', array(&$filters, $this->paramBase)); } else { JArrayHelper::toInteger($ids, 0); $filters['order_id'] = 'hk_order.order_id IN (' . implode(',', $ids) . ')'; } $filters = '(' . implode(') AND (', $filters) . ')'; $query = ' FROM ' . hikashop_table('order') . ' AS hk_order ' . ' LEFT JOIN ' . hikashop_table('user') . ' AS hk_user ON hk_order.order_user_id = hk_user.user_id ' . ' LEFT JOIN ' . hikashop_table('users', false) . ' AS j_user ON hk_user.user_cms_id = j_user.id ' . ' WHERE ' . $filters; $database->setQuery('SELECT hk_user.*, hk_order.*, j_user.*' . $query); $rows = $database->loadObjectList('order_id'); if (!empty($rows)) { $addressIds = array(); foreach ($rows as $k => $row) { $rows[$k]->products = array(); $addressIds[$row->order_shipping_address_id] = $row->order_shipping_address_id; $addressIds[$row->order_billing_address_id] = $row->order_billing_address_id; } if (!empty($addressIds)) { $database->setQuery('SELECT * FROM ' . hikashop_table('address') . ' WHERE address_id IN (' . implode(',', $addressIds) . ')'); $addresses = $database->loadObjectList('address_id'); if (!empty($addresses)) { $zoneNamekeys = array(); foreach ($addresses as $address) { $zoneNamekeys[$address->address_country] = $database->Quote($address->address_country); $zoneNamekeys[$address->address_state] = $database->Quote($address->address_state); } if (!empty($zoneNamekeys)) { $database->setQuery('SELECT zone_namekey,zone_name FROM ' . hikashop_table('zone') . ' WHERE zone_namekey IN (' . implode(',', $zoneNamekeys) . ')'); $zones = $database->loadObjectList('zone_namekey'); if (!empty($zones)) { foreach ($addresses as $i => $address) { if (!empty($zones[$address->address_country])) { $addresses[$i]->address_country = $zones[$address->address_country]->zone_name; } if (!empty($zones[$address->address_state])) { $addresses[$i]->address_state = $zones[$address->address_state]->zone_name; } } } } $fields = array_keys(get_object_vars(reset($addresses))); foreach ($rows as $k => $row) { if (!empty($addresses[$row->order_shipping_address_id])) { foreach ($addresses[$row->order_shipping_address_id] as $key => $val) { $key = 'shipping_' . $key; $rows[$k]->{$key} = $val; } } else { foreach ($fields as $field) { $key = 'shipping_' . $field; $rows[$k]->{$key} = ''; } } if (!empty($addresses[$row->order_billing_address_id])) { foreach ($addresses[$row->order_billing_address_id] as $key => $val) { $key = 'billing_' . $key; $rows[$k]->{$key} = $val; } } else { foreach ($fields as $field) { $key = 'billing_' . $field; $rows[$k]->{$key} = ''; } } } } } $orderIds = array_keys($rows); $database->setQuery('SELECT * FROM ' . hikashop_table('order_product') . ' WHERE order_id IN (' . implode(',', $orderIds) . ')'); $products = $database->loadObjectList(); foreach ($products as $product) { $order =& $rows[$product->order_id]; $order->products[] = $product; if (!isset($order->order_full_tax)) { $order->order_full_tax = 0; } $order->order_full_tax += round($product->order_product_quantity * $product->order_product_tax, 2); } foreach ($rows as $k => $row) { $rows[$k]->order_full_tax += $row->order_shipping_tax + $row->order_payment_tax - $row->order_discount_tax; } } $dispatcher->trigger('onBeforeOrderExport', array(&$rows, &$this)); $this->assignRef('orders', $rows); }