\administrator\components\com_virtuemart\models\orders.php
Update the whole function to use full-text search of any items or data within your orders.
- Code: Select all
/**
* Select the products to list on the product list page
* @param $uid integer Optional user ID to get the orders of a single user
* @param $_ignorePagination boolean If true, ignore the Joomla pagination (for embedded use, default false)
*/
public function getOrdersList($uid = 0, $noLimit = false)
{
// vmdebug('getOrdersList');
$this->_noLimit = $noLimit;
$select = " o.*, CONCAT_WS(' ',u.first_name,u.middle_name,u.last_name) AS order_name "
.',u.email as order_email,pm.payment_name AS payment_method ';
$from = $this->getOrdersListQuery();
/* $_filter = array();
if ($uid > 0) {
$_filter[] = ('u.virtuemart_user_id = ' . (int)$uid);
}*/
if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php');
if(!Permissions::getInstance()->check('admin')){
$myuser =JFactory::getUser();
$where[]= ' u.virtuemart_user_id = ' . (int)$myuser->id.' AND o.virtuemart_vendor_id = "1" ';
} else {
$myuser =JFactory::getUser();
if(empty($uid)){
$where[]= ' o.virtuemart_vendor_id = "1" ';
} else {
$where[]= ' u.virtuemart_user_id = ' . (int)$uid.' AND o.virtuemart_vendor_id = "1" ';
}
}
if ($search = JRequest::getString('search', false)){
{
$kw = $search;
$db = JFactory::getDBO();
$q = 'select * from #__virtuemart_orders where 1 order by virtuemart_order_id desc limit 0,1';
$db->setQuery($q);
$o = $db->loadAssoc();
$q = 'select * from #__virtuemart_order_items where 1 order by virtuemart_order_id desc limit 0,1';
$db->setQuery($q);
$oi = $db->loadAssoc();
$q = 'select * from #__virtuemart_order_userinfos where 1 order by virtuemart_order_id desc limit 0,1';
$db->setQuery($q);
$ou = $db->loadAssoc();
$from .= ' LEFT JOIN #__virtuemart_order_items AS oi ON o.virtuemart_order_id = oi.virtuemart_order_id ';
$qs = array(); $qs1 = array(); $qs2 = array(); $qs3 = array();
foreach ($o as $key=>$v)
{
$qs3[] = ' `o`.`'.$key.'` LIKE "%'.$db->escape($kw).'" ';
}
foreach ($oi as $key=>$v)
{
$qs3[] = ' `oi`.`'.$key.'` LIKE "%'.$db->escape($kw).'%" ';
}
foreach ($ou as $key=>$v)
{
$qs3[] = ' `u`.`'.$key.'` LIKE "%'.$db->escape($kw).'%" ';
}
$qs3q = implode(' or ', $qs3);
$where[] = ' ('.$qs3q.' ) ';
}
/*
$search = '"%' . $this->_db->getEscaped( $search, true ) . '%"' ;
$search = str_replace(' ','%',$search);
$searchFields = array();
$searchFields[] = 'u.first_name';
$searchFields[] = 'u.middle_name';
$searchFields[] = 'u.last_name';
$searchFields[] = 'o.order_number';
$searchFields[] = 'u.company';
$searchFields[] = 'u.email';
$searchFields[] = 'u.phone_1';
$searchFields[] = 'u.address_1';
$searchFields[] = 'u.zip';
$where[] = implode (' LIKE '.$search.' OR ', $searchFields) . ' LIKE '.$search.' ';
//$where[] = ' ( u.first_name LIKE '.$search.' OR u.middle_name LIKE '.$search.' OR u.last_name LIKE '.$search.' OR `order_number` LIKE '.$search.')';
*/
}
$order_status_code = JRequest::getString('order_status_code', false);
if ($order_status_code and $order_status_code!=-1){
$where[] = ' o.order_status = "'.$order_status_code.'" ';
}
if (count ($where) > 0) {
$whereString = ' WHERE (' . implode (' AND ', $where) . ') ';
}
else {
$whereString = '';
}
if ( JRequest::getCmd('view') == 'orders') {
$ordering = $this->_getOrdering();
} else {
$ordering = ' order by o.modified_on DESC';
}
$this->_data = $this->exeSortSearchListQuery(0,$select,$from,$whereString,'',$ordering);
return $this->_data ;
}
Best Regards, Stan