setDBO(VoxelCareDB::getDatabase()); $view =JRequest::getVar('view'); $this->filter_order_Dir = $mainframe->getUserStateFromRequest( $option.$view.'.filter_order_Dir', 'filter_order_Dir', 'ASC' ); $this->filter_order = $mainframe->getUserStateFromRequest( $option.$view.'.filter_order', 'filter_order', '' ); $this->searchcustomer = $mainframe->getUserStateFromRequest( "$option.$view.searchcustomer", 'searchcustomer', '', 'string' ); $this->searchcustomer = JString::strtolower( $this->searchcustomer ); $this->searchreference = $mainframe->getUserStateFromRequest( "$option.$view.searchreference", 'searchreference', '', 'string' ); $this->searchreference = JString::strtolower( $this->searchreference ); $this->searchbirthdate = $mainframe->getUserStateFromRequest( "$option.$view.searchbirthdate", 'searchbirthdate', '', 'string' ); $this->searchbirthdate = JString::strtolower( $this->searchbirthdate ); $limit = $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', 5, 'int' ); $limitstart = JRequest::getVar('limitstart',0); $limitstart = ($limit != 0 ? (floor($limitstart / $limit) * $limit) : 0); $this->setState('limit', $limit); $this->setState('limitstart', $limitstart); } function _buildQuery() { $where = array(); if ($this->searchcustomer) $where[] = "LOWER(CONCAT_WS(' ',c.name,c.middlename,c.surname)) LIKE ". $this->_db->Quote('%'.$this->searchcustomer.'%'); if ($this->searchreference) $where[] = 'LOWER(c.localid) LIKE '. $this->_db->Quote('%'.$this->searchreference.'%'); if ($this->searchbirthdate) { $dateS =str_replace('-','/',trim($this->searchbirthdate)); $dateArray = explode('/',$dateS); $dateCount = count($dateArray); $dateClauses= array(); $day = $month = $year = -1; switch($dateCount) { case 1: $year = (int) $dateArray[0]; break; case 2: $month = (int) $dateArray[0]; $year = (int) $dateArray[1]; break; case 3: $day = (int) $dateArray[0]; $month = (int) $dateArray[1]; $year = (int) $dateArray[2]; break; } if ($year !=-1 ) $dateClauses[] = "YEAR(c.birthdate) = $year"; if ($month !=-1 ) $dateClauses[] = "MONTH(c.birthdate) = $month"; if ($day !=-1 ) $dateClauses[] = "DAY(c.birthdate) = $day"; if (count($dateClauses)>0) $where[] = implode(' AND ', $dateClauses); } $where[] = ' c.deleted IS NOT TRUE '; $userId = LegacyHelper::getUserId(); $where[] = ' ( c.user = ' . $userId . " OR EXISTS(SELECT g.id FROM #__vxc_group g LEFT JOIN #__vxc_usergroup ug ON ug.group = g.id WHERE ug.user = c.user AND (g.share_customers=1 OR g.manager = ".$userId." )) )"; $where =( count($where) ) ? ' WHERE ' . implode( ' AND ', $where ) : ''; $orderby = ''; $orders = array('id','localid','fullname','name','middlename','surname','email','telephone','birthdate'); if (!in_array($this->filter_order,$orders)) $this->filter_order = 'id'; if (($this->filter_order) && ($this->filter_order_Dir)) { $orderby = ' ORDER BY '. $this->filter_order .' '. $this->filter_order_Dir; } $this->_query = " SELECT c.id id,c.localid localid,c.name name, CONCAT_WS(' ',NULLIF(c.name,''),NULLIF(c.middlename,''),NULLIF(c.surname,'')) fullname, c.middlename middlename,c.surname surname, c.email email, CONCAT_WS('-',NULLIF(c.telephone,''),NULLIF(c.mobile,'')) telephones, c.telephone telephone,c.birthdate birthdate" . ' FROM #__vxc_customer c ' . $where . $orderby ; return $this->_query; } function getData() { if (empty($this->_data)) { $query = $this->_buildQuery(); $this->_data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit')); } return $this->_data; } function getList() { // table ordering $lists['order_Dir'] = $this->filter_order_Dir; $lists['order'] = $this->filter_order; // search filter $lists['searchcustomer']= $this->searchcustomer; $lists['searchreference']= $this->searchreference; $lists['searchbirthdate']= $this->searchbirthdate; return $lists; } function getTotal() { // Load the content if it doesn't already exist if (empty($this->_total)) { $query = $this->_buildQuery(); $this->_total = $this->_getListCount($query); } return $this->_total; } function getPagination() { // Load the content if it doesn't already exist if (empty($this->_pagination)) { jimport('joomla.html.pagination'); $this->_pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit') ); $this->_pagination->maxlimit = 20; } return $this->_pagination; } }// class ?>