Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 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);
 }