| Server IP : 54.36.91.62 / Your IP : 216.73.217.112 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/amisdesseniors-fr/brest/components/com_hikashop/views/user/ |
Upload File : |
<?php
/**
* @package HikaShop for Joomla!
* @version 6.1.0
* @author hikashop.com
* @copyright (C) 2010-2025 HIKARI SOFTWARE. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
?><?php
class userViewUser extends HikaShopView {
public $extraFields=array();
public $requiredFields = array();
public $validMessages = array();
public $triggerView = array('hikashop');
public function display($tpl = null, $params = null) {
$function = $this->getLayout();
$this->params =& $params;
if(method_exists($this,$function))
$this->$function();
parent::display($tpl);
}
public function after_register() {
$this->user = hikashop_loadUser(true);
}
private function _getURL($params, $ctrl, $task, $exclude = array()) {
global $Itemid;
$originalCtrl = $ctrl;
$isCart = $ctrl == 'cart';
$isWishlist = false;
if($ctrl == 'wishlist') {
$isWishlist = true;
$ctrl = 'cart';
}
$skipParams = false;
$menusClass = hikashop_get('class.menus');
$itemIdForMenu = $menusClass->loadAMenuItemId($ctrl, $task, 0, $exclude);
if(!$itemIdForMenu) {
$itemIdForMenu = $Itemid;
}else {
$result = $menusClass->loadAMenuItemId($ctrl, $task, $itemIdForMenu);
if(!$result) {
$itemIdForMenu = $Itemid;
} elseif($isCart || $isWishlist) {
$app = JFactory::getApplication();
$menus = $app->getMenu();
$menu = $menus->getItem($itemIdForMenu);
if(!empty($menu)) {
$menuParams = $menu->getParams();
$cart_type = $menuParams->get('cart_type');
if(($isCart && $cart_type != 'cart') || ($isWishlist && $cart_type != 'wishlist')) {
$exclude[] = $itemIdForMenu;
return $this->_getURL($params, $originalCtrl, $task, $exclude);
}
if($menu && strpos($menu->link, 'index.php?option='.HIKASHOP_COMPONENT.'&view='.str_replace('&task=', '&layout=', $params)) !== false) {
$skipParams = true;
}
}
}
}
$url = 'index.php?option='.HIKASHOP_COMPONENT;
if(!$skipParams) {
$url .= '&ctrl='.$params;
}
if(!empty($itemIdForMenu)) {
$url .= '&Itemid=' . $itemIdForMenu;
}
return JRoute::_($url);
}
public function cpanel() {
$config =& hikashop_config();
$this->assignRef('config', $config);
global $Itemid;
$this->url_itemid = '';
if(!empty($Itemid)) {
$this->url_itemid = '&Itemid=' . $Itemid;
}
hikashop_loadJsLib('tooltip');
$buttons = array(
'address' => array(
'link' => $this->_getURL('address', 'address', 'listing'),
'level' => 0,
'image' => 'address',
'text' => JText::_('ADDRESSES'),
'description' => JText::_('MANAGE_ADDRESSES'),
'fontawesome' => '<i class="fas fa-map-marker-alt fa-stack-2x"></i>'
),
'order' => array(
'link' => $this->_getURL('order', 'order', 'listing'),
'level' => 0,
'image' => 'order',
'text' => JText::_('ORDERS'),
'description' => JText::_('VIEW_ORDERS'),
'fontawesome' => ''.
'<i class="fas fa-align-justify fa-stack-2x"></i>'.
'<i class="fas fa-circle fa-stack-1x fa-inverse" style="top:28%; left:33%;"></i>'.
'<i class="fas fa-check fa-stack-1x hk-icon-dark" style="top:28%; left:33%;"></i>'
),
);
if(hikashop_level(1)) {
if($config->get('enable_multicart'))
$buttons['cart'] = array(
'link' => $this->_getURL('cart&task=listing', 'cart', 'listing'),
'level' => 0,
'image' => 'cart',
'text' => JText::_('CARTS'),
'description' => JText::_('DISPLAY_THE_CARTS'),
'fontawesome' => '<i class="fas fa-shopping-cart fa-stack-2x"></i>'
);
else
$buttons['cart'] = array(
'link' => $this->_getURL('cart&task=show', 'cart', 'show'),
'level' => 0,
'image' => 'cart',
'text' => JText::_('CARTS'),
'description' => JText::_('DISPLAY_THE_CART'),
'fontawesome' => ''.
'<i class="fas fa-shopping-cart fa-stack-2x"></i>'
);
if($config->get('enable_wishlist')) {
if($config->get('enable_multiwishlist', 1))
$buttons['wishlist'] = array(
'link' => $this->_getURL('cart&task=listing&cart_type=wishlist', 'wishlist', 'listing'),
'level' => 0,
'image' => 'wishlist',
'text' => JText::_('WISHLISTS'),
'description' => JText::_('DISPLAY_THE_WISHLISTS'),
'fontawesome' => ''.
'<i class="fas fa-list-ul fa-stack-2x"></i>'.
'<i class="fas fa-star fa-stack-1x hk-icon-dark" style="top:-38%;left:-40%;font-size:18px"></i>'
);
else
$buttons['wishlist'] = array(
'link' => $this->_getURL('cart&task=show&cart_type=wishlist', 'wishlist', 'show'),
'level' => 0,
'image' => 'wishlist',
'text' => JText::_('WISHLISTS'),
'description' => JText::_('DISPLAY_THE_WISHLIST'),
'fontawesome' => ''.
'<i class="fas fa-list-ul fa-stack-2x"></i>'.
'<i class="fas fa-star fa-stack-1x hk-icon-dark" style="top:-38%;left:-40%;font-size:18px"></i>'
);
}
if($config->get('enable_customer_downloadlist') && hikashop_level(1))
$buttons['download'] = array(
'link' => $this->_getURL('user&task=downloads', 'user', 'downloads'),
'level' => 0,
'image' => 'downloads',
'text' => JText::_('DOWNLOADS'),
'description' => JText::_('DISPLAY_THE_DOWNLOADS'),
'fontawesome' => ''.
'<i class="far fa-circle fa-stack-2x"></i>'.
'<i class="fas fa-arrow-down fa-stack-1x"></i>'
);
}
JPluginHelper::importPlugin('hikashop');
JPluginHelper::importPlugin('hikashopshipping');
JPluginHelper::importPlugin('hikashoppayment');
$app = JFactory::getApplication();
$app->triggerEvent('onUserAccountDisplay', array(&$buttons));
$this->assignRef('buttons',$buttons);
$menus = $app->getMenu();
$menu = $menus->getActive();
$show_page_heading = true;
if(!empty($menu) && method_exists($menu, 'getParams')) {
$params = $menu->getParams();
$show_page_heading = $params->get('show_page_heading');
}
if(is_null($show_page_heading)) {
$com_menus = JComponentHelper::getParams('com_menus');
$show_page_heading = $com_menus->get('show_page_heading');
}
if(!empty($menu) && method_exists($menu, 'getParams')) {
if($show_page_heading)
$this->title = $params->get('page_heading');
$title = $params->get('page_title');
if(empty($title))
$title = $menu->title;
hikashop_setPageTitle($title);
$robots = $params->get('robots');
if (!$robots) {
$jconfig = JFactory::getConfig();
$robots = $jconfig->get('robots', '');
}
if($robots) {
$doc = JFactory::getDocument();
$doc->setMetadata('robots', $robots);
}
} else {
if($show_page_heading)
$this->title = JText::_('CUSTOMER_ACCOUNT');
hikashop_setPageTitle('CUSTOMER_ACCOUNT');
}
$pathway = $app->getPathway();
$items = $pathway->getPathway();
if(!count($items))
$pathway->addItem(JText::_('CUSTOMER_ACCOUNT'), hikashop_completeLink('user'));
$legacy = (int)$this->config->get('cpanel_legacy', false);
if($legacy)
return;
$this->cpanel_orders();
}
protected function cpanel_orders() {
$db = JFactory::getDBO();
$user_id = hikashop_loadUser();
$this->loadRef(array(
'orderClass' => 'class.order',
'currencyClass' => 'class.currency',
'imageHelper' => 'helper.image',
'popupHelper' => 'helper.popup',
'dropdownHelper' => 'helper.dropdown'
));
$nb_display_option = (int)$this->config->get('order_number_acc', 3);
if($nb_display_option <= 0)
$nb_display_option = 3;
$filters = array('`order_type` = \'sale\'', '`order_user_id` = '. (int)$user_id);
$status = $this->config->get('orders_listing_default_status','');
if(!empty($status)) {
$filters[] = 'order_status = '.$db->Quote($status);
}
$filters = implode(' AND ', $filters);
$query = 'SELECT `order_id` FROM ' . hikashop_table('order') . ' WHERE ' . $filters . ' ORDER BY `order_created` DESC';
$db->setQuery($query, 0, $nb_display_option);
$last_order_ids = $db->loadColumn();
if(hikashop_level(1) && $this->config->get('allow_payment_button', 1)) {
$unpaid_statuses = explode(',', $this->config->get('order_unpaid_statuses', 'created'));
$payment_change = $this->config->get('allow_payment_change', 1);
$this->assignRef('payment_change', $payment_change);
$pluginsPayment = hikashop_get('type.plugins');
$pluginsPayment->type = 'payment';
$this->assignRef('paymentPluginsType', $pluginsPayment);
$paymentClass = hikashop_get('class.payment');
$this->assignRef('paymentClass', $paymentClass);
}
$orders = array();
$product_ids = array();
foreach($last_order_ids as $order_id) {
$orders[$order_id] = $this->orderClass->loadFullOrder($order_id, true);
foreach($orders[$order_id]->products as $product) {
$product_ids[] = (int)$product->product_id;
}
}
$this->products = array();
if(count($product_ids)) {
$db->setQuery('SELECT * FROM '.hikashop_table('product').' WHERE product_id IN ('.implode(',', $product_ids). ')');
$this->products = $db->loadObjectList('product_id');
$parent_ids = array();
$productClass = hikashop_get('class.product');
foreach($this->products as $k => $product) {
if(!empty($product->product_parent_id))
$parent_ids[$product->product_id] = (int)$product->product_parent_id;
else {
$productClass->addAlias($this->products[$k]);
}
}
if(count($parent_ids)) {
$db->setQuery('SELECT * FROM '.hikashop_table('product').' WHERE product_id IN ('.implode(',', $parent_ids). ')');
$parents = $db->loadObjectList('product_id');
foreach($parent_ids as $variant_id => $parent_id){
if(!isset($parents[$parent_id]))
continue;
$productClass->addAlias($parents[$parent_id]);
$this->products[$variant_id]->product_alias = $parents[$parent_id]->product_alias;
$this->products[$variant_id]->product_canonical = $parents[$parent_id]->product_canonical;
}
}
}
$this->action_column = false;
if(hikashop_level(1) && $this->config->get('allow_payment_button', 1)) {
$unpaid_statuses = explode(',', $this->config->get('order_unpaid_statuses', 'created'));
foreach($orders as $key =>$order) {
if(in_array($order->order_status, $unpaid_statuses)) {
$orders[$key]->show_payment_button = true;
$this->action_column = true;
}
}
unset($order);
$payment_change = $this->config->get('allow_payment_change', 1);
$this->assignRef('payment_change', $payment_change);
$pluginsPayment = hikashop_get('type.plugins');
$pluginsPayment->type = 'payment';
$this->assignRef('paymentPluginsType', $pluginsPayment);
$paymentClass = hikashop_get('class.payment');
$this->assignRef('paymentClass', $paymentClass);
}
$cancellable_order_status = explode(',', trim($this->config->get('cancellable_order_status', ''), ', '));
if(!empty($cancellable_order_status)) {
foreach($orders as $key =>$order) {
if(in_array($order->order_status, $cancellable_order_status)) {
$orders[$key]->show_cancel_button = true;
$this->action_column = true;
}
}
unset($order);
}
$print_statuses = explode(',', trim($this->config->get('print_invoice_statuses', 'confirmed,shipped,refunded'), ', '));
if(hikashop_level(1) && !empty($orders)) {
foreach($orders as &$order) {
if(in_array($order->order_status, $print_statuses)) {
$order->show_print_button = true;
$this->action_column = true;
}
}
unset($order);
}
$contact_statuses = explode(',', trim($this->config->get('contact_button_orders', 'created,confirmed,shipped,refunded,pending,cancelled'), ', '));
if(hikashop_level(1) && !empty($orders)) {
foreach($orders as &$order) {
if(in_array($order->order_status, $contact_statuses)) {
$order->show_contact_button = true;
$this->action_column = true;
}
}
unset($order);
}
if($this->config->get('allow_reorder', 0)) {
$this->action_column = true;
}
$this->cpanel_data = new stdClass();
$this->cpanel_data->cpanel_title = JText::_('YOUR_LAST_ORDERS');
$this->cpanel_data->cpanel_order_image = true;
$this->cpanel_data->cpanel_orders = $orders;
}
public function guest_form(){
hikashop_setPageTitle('HIKA_REGISTRATION');
global $Itemid;
$url_itemid = '';
if(!empty($Itemid)){
$url_itemid = '&Itemid=' . $Itemid;
}
$this->assignRef('url_itemid', $url_itemid);
$user = (object)@$_SESSION['hikashop_guest_data'];
if(empty($user)){
$user = new stdClass();
$user->username = '';
$user->name = '';
}
$this->assignRef('user', $user);
$config = hikashop_config();
$this->assignRef('config', $config);
$this->_privacy_consent();
}
public function form() {
$app = JFactory::getApplication();
$this->registration();
$menus = $app->getMenu();
$menu = $menus->getActive();
$show_page_heading = true;
$params = null;
if(!empty($menu) && method_exists($menu, 'getParams')) {
$params = $menu->getParams();
$show_page_heading = $params->get('show_page_heading');
}
if(is_null($show_page_heading)) {
$com_menus = JComponentHelper::getParams('com_menus');
if(!empty($com_menus))
$show_page_heading = $com_menus->get('show_page_heading');
}
if(!empty($menu) && method_exists($menu, 'getParams') && $menu->link == 'index.php?option=com_hikashop&view=user&layout=form') {
if($show_page_heading)
$this->title = $params->get('page_heading');
$title = $params->get('page_title');
if(empty($title))
$title = $menu->title;
hikashop_setPageTitle($title);
$robots = $params->get('robots');
if (!$robots) {
$jconfig = JFactory::getConfig();
$robots = $jconfig->get('robots', '');
}
if($robots) {
$doc = JFactory::getDocument();
$doc->setMetadata('robots', $robots);
}
} else {
if($show_page_heading)
$this->title = JText::_('HIKA_REGISTRATION');
hikashop_setPageTitle('HIKA_REGISTRATION');
}
}
public function registration() {
$js ='
function hikashopSubmitForm(form, action) {
var d = document,
button = d.getElementById(\'login_view_action\'),
currentForm = d.forms[form];
if(!currentForm)
return false;
if(form == "hikashop_registration_form") {
hikashopSubmitFormRegister(form,button,currentForm);
return false;
}
if(form != "hikashop_checkout_form")
return false;
if(action && action == "login") {
hikashopSubmitFormLog(form,button,currentForm);
return false;
}
if(action && action == "register") {
hikashopSubmitFormRegister(form,button,currentForm);
return false;
}
var registrationMethod = currentForm.elements["data[register][registration_method]"];
if (registrationMethod)
{
if (registrationMethod[0].id == "data[register][registration_method]login" && registrationMethod[0].checked)
hikashopSubmitFormLog(form,button,currentForm);
else
hikashopSubmitFormRegister(form,button,currentForm);
return false;
}
var usernameValue = "", passwdValue = "", el = null;
el = d.getElementById("username");
if(el) usernameValue = el.value;
el = d.getElementById("passwd");
if(el) passwdValue = el.value;
var registeremailValue = "", registeremailconfValue = "", firstnameValue = "", lastnameValue = "";
el = d.getElementById("register_email");
if(el) registeremailValue = el.value;
el = d.getElementById("register_email_confirm");
if(el) registeremailconfValue = el.value;
el = d.getElementById("address_firstname");
if(el) firstnameValue = el.value;
el = d.getElementById("address_lastname");
if(el) lastnameValue = el.value;
if (usernameValue != "" && passwdValue != "") {
hikashopSubmitFormLog(form,button,currentForm);
} else if ((usernameValue != "" || passwdValue != "") && (registeremailValue == "" && registeremailconfValue == "" && firstnameValue == "" && lastnameValue == "")) {
hikashopSubmitFormLog(form,button,currentForm);
} else {
hikashopSubmitFormRegister(form,button,currentForm);
}
return false;
}
function hikashopSubmitFormRegister(form, button, currentForm) {
if( hikashopCheckChangeForm("register",form) && hikashopCheckChangeForm("user",form) && hikashopCheckChangeForm("address",form) ) {
if(button)
button.value="register";
currentForm.submit();
}
}
function hikashopSubmitFormLog(form,button,currentForm) {
if(button)
button.value="login";
currentForm.submit();
}
var hkKeyPress = function(e) {
var keyCode = (window.event) ? e.which : e.keyCode;
if (keyCode != 13)
return true;
if (e.srcElement) elem = e.srcElement;
else if (e.target) elem = e.target;
if( elem.name == "username" || elem.name == "passwd" ){
var button = document.getElementById("login_view_action"),
currentForm = document.forms["hikashop_checkout_form"];
if(currentForm && button){
hikashopSubmitFormLog("hikashop_checkout_form",button,currentForm);
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
e.returnValue = false;
return false;
}
} else {
}
return true;
};
if(document.addEventListener)
document.addEventListener("keypress", hkKeyPress);
else
document.attachEvent("onkeypress", hkKeyPress);
';
$doc = JFactory::getDocument();
$doc->addScriptDeclaration("\n<!--".$js."//-->\n");
global $Itemid;
$url_itemid = (!empty($Itemid) ? '&Itemid='.$Itemid : '');
$this->assignRef('url_itemid', $url_itemid);
$mainUser = JFactory::getUser();
$data = @$_SESSION['hikashop_main_user_data'];
if(!empty($data)){
foreach($data as $key => $val){
$mainUser->$key = $val;
}
}
$this->assignRef('mainUser', $mainUser);
$lang = JFactory::getLanguage();
$lang->load('com_user', JPATH_SITE);
$user_id = hikashop_loadUser();
$jversion = preg_replace('#[^0-9\.]#i','',JVERSION);
if(version_compare($jversion, '3.4.0', '>='))
JHTML::_('behavior.formvalidator');
else
JHTML::_('behavior.formvalidation');
$user = @$_SESSION['hikashop_user_data'];
$address = @$_SESSION['hikashop_address_data'];
if(!empty($_SESSION['hikashop_billing_address_data']))
$address = $_SESSION['hikashop_billing_address_data'];
$fieldsClass = hikashop_get('class.field');
$this->assignRef('fieldsClass', $fieldsClass);
$fieldsClass->skipAddressName = true;
$extraFields['user'] = $fieldsClass->getFields('frontcomp', $user, 'user');
$config =& hikashop_config();
$this->assignRef('config', $config);
$this->assignRef('extraFields', $extraFields);
$this->assignRef('user', $user);
$simplified_reg = 0;
if(hikashop_level(1))
$simplified_reg = $config->get('simplified_registration', 0);
$this->assignRef('simplified_registration', $simplified_reg);
$display_method = $config->get('display_method', 0);
if(!hikashop_level(1))
$display_method = 0;
$this->assignRef('display_method', $display_method);
$null = array();
$fieldsClass->addJS($null, $null, $null);
$fieldsClass->jsToggle($this->extraFields['user'], $user, 0);
$values = array('user' => $user);
if($config->get('address_on_registration', 1)) {
$extraFields['address'] = $fieldsClass->getFields('frontcomp', $address, 'address');
$this->assignRef('address', $address);
$fieldsClass->jsToggle($this->extraFields['address'], $address, 0);
$values['address'] = $address;
}
$fieldsClass->checkFieldsForJS($this->extraFields,$this->requiredFields,$this->validMessages,$values);
$main = array('name','username', 'email','password','password2');
if($simplified_reg && $simplified_reg != 3 && $simplified_reg != 0) {
$main = array('email');
} else if ($simplified_reg == 3) {
$main = array('email','password','password2');
}
if($config->get('show_email_confirmation_field')) {
$i = 0;
foreach($main as $k) {
$i++;
if($k == 'email')
array_splice($main, $i, 0, 'email_confirm');
}
}
foreach($main as $field) {
$this->requiredFields['register'][] = $field;
if($field=='name') $field = 'HIKA_USER_NAME';
if($field=='username') $field = 'HIKA_USERNAME';
if($field=='email') $field = 'HIKA_EMAIL';
if($field=='email_confirm') $field = 'HIKA_EMAIL_CONFIRM';
if($field=='password') $field = 'HIKA_PASSWORD';
if($field=='password2') $field = 'HIKA_VERIFY_PASSWORD';
$this->validMessages['register'][] = addslashes(JText::sprintf('FIELD_VALID', $fieldsClass->trans($field)));
}
$fieldsClass->addJS($this->requiredFields, $this->validMessages, array('register', 'user', 'address'));
jimport('joomla.html.parameter');
$params = new HikaParameter('');
$this->assignRef('params',$params);
$cartHelper = hikashop_get('helper.cart');
$this->assignRef('cartClass', $cartHelper);
$affiliate = $config->get( 'affiliate_registration_default', 0);
if($affiliate) {
$affiliate = 'checked="checked"';
} else {
$affiliate = '';
}
$this->assignRef('affiliate_checked', $affiliate);
$this->_privacy_consent();
}
private function _privacy_consent() {
$userClass = hikashop_get('class.user');
$privacy = $userClass->getPrivacyConsentSettings();
$this->options = array();
if($privacy) {
$this->options['privacy'] = true;
$this->options['privacy_type'] = $privacy['type'];
$this->options['privacy_id'] = $privacy['id'];
$this->options['privacy_url'] = $privacy['url'];
$this->options['privacy_text'] = $privacy['text'];
}
}
public function downloads() {
hikashop_loadJslib('tooltip');
$user = hikashop_loadUser(true);
if(empty($user))
return false;
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$config = hikashop_config();
$this->assignRef('config', $config);
$paramBase = HIKASHOP_COMPONENT.'.'.$this->getName();
$order_statuses = explode(',', $config->get('order_status_for_download', 'shipped,confirmed'));
foreach($order_statuses as $k => $o) {
$order_statuses[$k] = $db->Quote( trim($o) );
}
$download_time_limit = (int)$config->get('download_time_limit', 0);
$this->assignRef('download_time_limit', $download_time_limit);
$extraFilters = array('order_range' => $config->get('downloads_listing_default_range','last 6 months'));
$pageInfo = $this->getPageInfo('max_order_created', 'desc', $extraFilters);
$searchMap = array(
'op.order_product_name',
'f.file_name'
);
$order = '';
if(!empty($pageInfo->filter->order->value)) {
if($pageInfo->filter->order->value == 'f.file_name')
$order = ' ORDER BY f.file_name '.$pageInfo->filter->order->dir.', f.file_path '.$pageInfo->filter->order->dir;
else
$order = ' ORDER BY '.$pageInfo->filter->order->value.' '.$pageInfo->filter->order->dir;
}
$filters = array(
'o.order_type = \'sale\'',
'o.order_status IN ('.implode(',', $order_statuses).')',
'f.file_ref_id > 0',
'f.file_type = \'file\'',
'o.order_user_id = ' . $user->user_id,
);
if(!empty($pageInfo->search)) {
$searchVal = '\'%'.hikashop_getEscaped(HikaStringHelper::strtolower(trim($pageInfo->search)),true).'%\'';
$filter = '('.implode(' LIKE '.$searchVal.' OR ',$searchMap).' LIKE '.$searchVal.')';
$filters[] = $filter;
}
$end = 0;
$start = 0;
switch($pageInfo->filter->order_range) {
case 'last 30 days':
$start = time() - 2592000;
break;
case 'last 6 months':
$start = mktime(0, 0, 0, date('n')-6, 1, date('y'));
break;
case '':
break;
default:
if(!is_numeric($pageInfo->filter->order_range)) {
$pageInfo->filter->order_range = '';
break;
}
$start = hikashop_getTime($pageInfo->filter->order_range.'-01-01 00:00:00');
$end = hikashop_getTime(($pageInfo->filter->order_range+1).'-01-01 00:00:00');
break;
}
if($start)
$filters['o.order_created.start'] = 'o.order_created >= '.(int)$start;
if($end)
$filters['o.order_created.end'] = 'o.order_created < '.(int)$end;
$filters = implode(' AND ',$filters);
$select = 'o.order_id, o.order_created, p.*, f.*, op.* ';
$selectSum = ', MIN(o.order_created) as min_order_created, MAX(o.order_created) as max_order_created, SUM(op.order_product_quantity) as file_quantity ';
$selectUniq = ', IF( REPLACE(LEFT(f.file_path, 1) , \'#\', \'@\') = \'@\', CONCAT(f.file_id, \'@\', o.order_id), f.file_id ) as uniq_id';
$query = ' FROM '.hikashop_table('order').' AS o ' .
' INNER JOIN '.hikashop_table('order_product').' AS op ON op.order_id = o.order_id ' .
' INNER JOIN '.hikashop_table('product').' AS p ON op.product_id = p.product_id ' .
' INNER JOIN '.hikashop_table('file').' AS f ON (op.product_id = f.file_ref_id OR p.product_parent_id = f.file_ref_id) ' .
' WHERE ' . $filters;
$groupBy = ' GROUP BY uniq_id ';
$sql_query = 'SELECT '. $select . $selectSum . $selectUniq . $query . $groupBy . $order;
$db->setQuery($sql_query, (int)$pageInfo->limit->start, (int)$pageInfo->limit->value);
$downloadData = $db->loadObjectList('uniq_id');
$db->setQuery('SELECT COUNT(*) as all_results_count FROM (SELECT f.file_id ' . $selectUniq . $query . $groupBy . ') AS all_results');
$pageInfo->elements = new stdClass();
$pageInfo->elements->total = $db->loadResult();
$file_ids = array();
$order_ids = array();
$productClass = hikashop_get('class.product');
foreach($downloadData as $k => $data) {
if((int)$data->order_id > 0)
$order_ids[(int)$data->order_id] = (int)$data->order_id;
$downloadData[$k]->download_total = 0;
$downloadData[$k]->downloads = array();
$downloadData[$k]->orders = array();
if(!empty($data->product_id) && !empty($data->product_parent_id) && $data->product_type == 'variant') {
$variant_query = 'SELECT * FROM '.hikashop_table('variant').' AS v '.
' LEFT JOIN '.hikashop_table('characteristic') .' AS c ON v.variant_characteristic_id = c.characteristic_id '.
' WHERE v.variant_product_id = '.(int)$data->product_id.' ORDER BY v.ordering';
$db->setQuery($variant_query);
$downloadData[$k]->characteristics = $db->loadObjectList();
$parentProduct = $productClass->get((int)$data->product_parent_id);
$productClass->checkVariant($downloadData[$k], $parentProduct);
}
$productClass->addAlias($downloadData[$k]);
if(strpos($k,'@') === false)
$file_ids[] = $k;
}
if(!empty($pageInfo->search)) {
$downloadData = hikashop_search($pageInfo->search,$downloadData,array('order_id', 'alias', 'product_canonical'));
}
$pageInfo->elements->page = count($downloadData);
if(!empty($file_ids)) {
$db->setQuery('SELECT ' . $select . $query . ' AND f.file_id IN (' . implode(',', $file_ids) . ')');
$orders = $db->loadObjectList();
foreach($orders as $o) {
if(isset($downloadData[$o->file_id])) {
$downloadData[$o->file_id]->orders[(int)$o->order_id] = $o;
$downloadData[$o->file_id]->orders[(int)$o->order_id]->file_qty = 0;
$downloadData[$o->file_id]->orders[(int)$o->order_id]->download_total = 0;
}
$order_ids[(int)$o->order_id] = (int)$o->order_id;
}
}
if(!empty($order_ids)) {
$db->setQuery('SELECT * FROM ' . hikashop_table('download') . ' WHERE order_id IN (' . implode(',', $order_ids) . ')');
$downloads = $db->loadObjectList();
foreach($downloads as $download) {
$uniq_id = $download->file_id . '@' . $download->order_id;
if(isset($downloadData[$uniq_id])) {
$downloadData[$uniq_id]->download_total += (int)$download->download_number;
$downloadData[$uniq_id]->downloads[$download->file_pos] = $download;
} else if(isset($downloadData[$download->file_id])) {
$downloadData[$download->file_id]->download_total += (int)$download->download_number;
if(isset($downloadData[$download->file_id]->orders[$download->order_id])) {
$downloadData[$download->file_id]->orders[$download->order_id]->file_qty++;
$downloadData[$download->file_id]->orders[$download->order_id]->download_total += (int)$download->download_number;
}
}
}
}
jimport('joomla.html.pagination');
$pagination = hikashop_get('helper.pagination', $pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value);
$pagination->hikaSuffix = '';
$this->assignRef('pagination', $pagination);
$this->assignRef('pageInfo', $pageInfo);
$this->assignRef('downloadData', $downloadData);
$this->filters = array('order_range'=> hikashop_get('type.order_range'));
global $Itemid;
$this->Itemid = $Itemid;
$menus = $app->getMenu();
$menu = $menus->getActive();
$this->toolbar = array();
$show_page_heading = true;
$params = null;
if(!empty($menu) && method_exists($menu, 'getParams')) {
$params = $menu->getParams();
$show_page_heading = $params->get('show_page_heading');
}
if(is_null($show_page_heading)) {
$com_menus = JComponentHelper::getParams('com_menus');
if(!empty($com_menus))
$show_page_heading = $com_menus->get('show_page_heading');
}
if(!empty($menu) && method_exists($menu, 'getParams') && $menu->link == 'index.php?option=com_hikashop&view=user&layout=downloads') {
if($show_page_heading)
$this->title = $params->get('page_heading');
hikashop_setPageTitle($menu->title);
} else {
if($show_page_heading)
$this->title = JText::_('DOWNLOADS');
hikashop_setPageTitle('DOWNLOADS');
$pathway = $app->getPathway();
$pathway->addItem(JText::_('DOWNLOADS'), hikashop_completeLink('user&task=downloads&Itemid='.$Itemid));
$this->toolbar = array(
'back' => array(
'icon' => 'back',
'name' => JText::_('HIKA_BACK'),
'url' => hikashop_completeLink('user&task=cpanel&Itemid='.$Itemid),
'fa' => array('html' => '<i class="fas fa-arrow-circle-left"></i>')
)
);
}
}
}