Spade
Mini Shell
| Directory:~$ /home/lmsyaran/www/administrator/components/com_rsmembership/models/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* @package RSMembership!
* @copyright (c) 2009 - 2016 RSJoomla!
* @link https://www.rsjoomla.com
* @license GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
*/
defined('_JEXEC') or die('Restricted access');
class RSMembershipModelTransactions extends JModelList
{
public function __construct($config = array())
{
if (empty($config['filter_fields'])) {
$config['filter_fields'] = array(
'email', 't.type', 't.date',
't.ip', 't.price', 't.coupon',
't.status', 't.gateway', 't.id'
);
}
parent::__construct($config);
}
protected function getListQuery()
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->
select('t.*,
IFNULL(CONVERT('.$db->qn('u.email').' USING `utf8`),
CONVERT('.$db->qn('t.user_email').' USING `utf8`))
AS email')->
from($db->qn('#__rsmembership_transactions',
't'))->
join('left', $db->qn('#__users',
'u').' ON '.$db->qn('t.user_id').' =
'.$db->qn('u.id'));
// search filters
$filter_word =
$this->getState($this->context.'.filter.search');
if ( strlen($filter_word) ) {
$query->where('('.
$db->qn('u.email').' LIKE
'.$db->q('%'.$filter_word.'%').' OR
'.
$db->qn('t.hash').' LIKE
'.$db->q('%'.$filter_word.'%').' OR
'.
$db->qn('t.id').' LIKE
'.$db->q('%'.$filter_word.'%').
')');
}
// filter by type
$filter_type =
$this->getState($this->context.'.filter.filter_type');
if ( $filter_type )
$query->where($db->qn("t.type")." =
".$db->q($filter_type));
// filter by gateway
$filter_gateway =
$this->getState($this->context.'.filter.filter_gateway');
if ( $filter_gateway )
$query->where($db->qn("t.gateway")." =
".$db->q($filter_gateway));
// filter by status
$filter_status =
$this->getState($this->context.'.filter.filter_status');
if ( $filter_status )
$query->where($db->qn('t.status')." =
".$db->q($filter_status));
// filter by date from
$from =
$this->getState($this->context.'.filter.date_from');
if ( $from ) {
$date = JFactory::getDate($from);
$query->where($db->qn('t.date').' >=
'.$db->q($date));
}
// filter by date to
$to = $this->getState($this->context.'.filter.date_to');
if ( $to ) {
$date = JFactory::getDate($to);
$date = str_replace('00:00:00', '23:59:59', $date);
$query->where($db->qn('t.date').' <=
'.$db->q($date));
}
$listOrdering = $this->getState('list.ordering',
't.date');
$listDirection = $this->getState('list.direction',
'ASC');
$query->order($db->qn($listOrdering).'
'.$listDirection);
return $query;
}
public function getItems(){
$items = parent::getItems();
$cache_membership_data = array();
foreach ($items as $item)
{
$membership_id_model = 0;
$params = RSMembershipHelper::parseParams($item->params);
switch($item->type)
{
case 'new':
case 'renew':
case 'addextra':
$membership_id_model = !empty($params['membership_id']) ?
$params['membership_id'] : 0;
break;
case 'upgrade':
$membership_id_model = !empty($params['to_id']) ?
$params['to_id'] : 0;
break;
}
if (!empty($membership_id_model) &&
!isset($cache_membership_data[$membership_id_model]))
{
$cache_membership_data[$membership_id_model] =
RSMembership::getMembershipData($membership_id_model);
}
if (!empty($membership_id_model))
{
$item->membership_data =
$cache_membership_data[$membership_id_model];
}
else
{
$item->membership_data = false;
}
}
return $items;
}
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
$this->setState($this->context.'.filter.search',
$app->getUserStateFromRequest($this->context.'.transactions.search',
'filter_search'));
$this->setState($this->context.'.filter.filter_type',
$app->getUserStateFromRequest($this->context.'.transactions.filter_type',
'filter_type'));
$this->setState($this->context.'.filter.filter_gateway',
$app->getUserStateFromRequest($this->context.'.transactions.filter_gateway',
'filter_gateway'));
$this->setState($this->context.'.filter.date_from',
$app->getUserStateFromRequest($this->context.'.transactions.date_from',
'date_from'));
$this->setState($this->context.'.filter.date_to',
$app->getUserStateFromRequest($this->context.'.transactions.date_to',
'date_to'));
$this->setState($this->context.'.filter.filter_status',
$app->getUserStateFromRequest($this->context.'.transactions.filter_status',
'filter_status'));
parent::populateState('t.date', 'desc');
}
public function getFilterBar()
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
require_once
JPATH_COMPONENT.'/helpers/adapters/filterbar.php';
// Transaction Types filter
$options['filter_type'] =
$this->getState($this->context.'.filter.filter_type');
$options['transaction_types'] = array(
JHtml::_('select.option', '',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_ALL_TYPES')),
JHtml::_('select.option', 'new',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_NEW')),
JHtml::_('select.option', 'renew',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_RENEW')),
JHtml::_('select.option', 'upgrade',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_UPGRADE')),
JHtml::_('select.option', 'addextra',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_ADDEXTRA'))
);
// Gateway filter
$options['filter_gateway'] =
$this->getState($this->context.'.filter.filter_gateway');
$options['gateways'] =
array(JHtml::_('select.option', '',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_ALL_GATEWAYS')),
JHtml::_('select.option', 'No Gateway',
JText::_('COM_RSMEMBERSHIP_NO_GATEWAY')));
$gateways = RSMembership::getPlugins();
foreach ($gateways as $plugin => $name)
{
if ($name == 'Credit Card') $name =
'Authorize.Net';
$options['gateways'][] = JHtml::_('select.option',
$name, $name);
}
// Status filter
$options['filter_status'] =
$this->getState($this->context.'.filter.filter_status');
$statuses = array('pending', 'completed',
'denied');
$options['statuses'] =
array(JHtml::_('select.option', '',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_ALL_STATUSES')));
foreach ( $statuses as $status )
$options['statuses'][] = JHtml::_('select.option',
$status,
JText::_('COM_RSMEMBERSHIP_TRANSACTION_STATUS_'.$status));
// Date from
$options['date_from'] =
$this->getState($this->context.'.filter.date_from');
// Date to
$options['date_to'] =
$this->getState($this->context.'.filter.date_to');
// search filter
$options['search'] = array(
'label' => JText::_('JSEARCH_FILTER'),
'value' =>
$this->getState($this->context.'.filter.search')
);
$options['limitBox'] =
$this->getPagination()->getLimitBox();
// use only the column header ordering
$options['orderDir'] = true;
$options['listOrder'] =
$this->getState('list.ordering', 't.date');
$options['listDirn'] =
$this->getState('list.direction', 'ASC');
$options['sortFields'] = array(
JHtml::_('select.option', 't.id',
JText::_('COM_RSMEMBERSHIP_ID')),
JHtml::_('select.option', 't.gateway',
JText::_('COM_RSMEMBERSHIP_GATEWAY')),
JHtml::_('select.option', 't.status',
JText::_('COM_RSMEMBERSHIP_STATUS')),
JHtml::_('select.option', 't.coupon',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIP_COUPON')),
JHtml::_('select.option', 't.price',
JText::_('COM_RSMEMBERSHIP_PRICE')),
JHtml::_('select.option', 't.ip',
JText::_('COM_RSMEMBERSHIP_IP')),
JHtml::_('select.option', 't.date',
JText::_('COM_RSMEMBERSHIP_DATE')),
JHtml::_('select.option', 't.type',
JText::_('COM_RSMEMBERSHIP_TYPE')),
JHtml::_('select.option', 'email',
JText::_('COM_RSMEMBERSHIP_EMAIL'))
);
// Joomla 2.5
$options['rightItems'] = array();
$bar = new RSFilterBar($options);
return $bar;
}
public function getSideBar()
{
require_once JPATH_COMPONENT.'/helpers/toolbar.php';
// Transaction Types filter
$options['filter_type'] =
$this->getState($this->context.'.filter.filter_type');
$options['transaction_types'] = array(
JHtml::_('select.option', '',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_ALL_TYPES')),
JHtml::_('select.option', 'new',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_NEW')),
JHtml::_('select.option', 'renew',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_RENEW')),
JHtml::_('select.option', 'upgrade',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_UPGRADE')),
JHtml::_('select.option', 'addextra',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_ADDEXTRA'))
);
// Gateway filter
$options['filter_gateway'] =
$this->getState($this->context.'.filter.filter_gateway');
$options['gateways'] =
array(JHtml::_('select.option', '',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_ALL_GATEWAYS')),
JHtml::_('select.option', 'No Gateway',
JText::_('COM_RSMEMBERSHIP_NO_GATEWAY')));
$gateways = RSMembership::getPlugins();
foreach ($gateways as $plugin => $name)
{
if ($name == 'Credit Card') $name =
'Authorize.Net';
$options['gateways'][] = JHtml::_('select.option',
$name, $name);
}
// Status filter
$options['filter_status'] =
$this->getState($this->context.'.filter.filter_status');
$statuses = array('pending', 'completed',
'denied');
$options['statuses'] =
array(JHtml::_('select.option', '',
JText::_('COM_RSMEMBERSHIP_TRANSACTION_ALL_STATUSES')));
foreach ( $statuses as $status )
$options['statuses'][] = JHtml::_('select.option',
$status,
JText::_('COM_RSMEMBERSHIP_TRANSACTION_STATUS_'.$status));
RSMembershipToolbarHelper::addFilter(
JText::_('COM_RSMEMBERSHIP_SELECT_STATUS'),
'filter_status',
JHtml::_('select.options', $options['statuses'],
'value', 'text', $options['filter_status'],
true)
);
RSMembershipToolbarHelper::addFilter(
JText::_('COM_RSMEMBERSHIP_SELECT_GATEWAY'),
'filter_gateway',
JHtml::_('select.options', $options['gateways'],
'value', 'text', $options['filter_gateway'],
false)
);
RSMembershipToolbarHelper::addFilter(
JText::_('COM_RSMEMBERSHIP_SELECT_TYPE'),
'filter_type',
JHtml::_('select.options',
$options['transaction_types'], 'value',
'text', $options['filter_type'], false)
);
// Custom filters
// Date from
$options['date_from'] =
$this->getState($this->context.'.filter.date_from');
RSMembershipToolbarHelper::addFilter(
JText::_('COM_RSMEMBERSHIP_FROM'),
'date_from',
$options['date_from'],
'calendar'
);
// Date to
$options['date_to'] =
$this->getState($this->context.'.filter.date_to');
RSMembershipToolbarHelper::addFilter(
JText::_('COM_RSMEMBERSHIP_TO'),
'date_to',
$options['date_to'],
'calendar'
);
// Calendar buttons
$options['calendar_btn'] = array
('from_btn'=>'date_from',
'to_btn'=>'date_to',
'filter_desc'=>JText::_('COM_RSMEMBERSHIP_FILTER_DESC'));
RSMembershipToolbarHelper::addFilter(
JText::_('COM_RSMEMBERSHIP_FILTER'),
JText::_('COM_RSMEMBERSHIP_FILTER_DESC'),
$options['calendar_btn'],
'calendar_btn'
);
return RSMembershipToolbarHelper::render();
}
public function getCache()
{
return RSMembershipHelper::getCache();
}
public function getLog()
{
$cid = JFactory::getApplication()->input->get('cid',
0, 'int');
$transaction =
$this->getTable('Transaction','RSMembershipTable');
$transaction->load($cid);
return $transaction->response_log;
}
}