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 RSMembershipModelMemberships extends JModelList
{
public function __construct($config = array()) {
if (empty($config['filter_fields'])) {
$config['filter_fields'] = array(
'm.id', 'm.name', 'category_name',
'm.period_type', 'm.price', 'm.published',
'm.ordering'
);
}
parent::__construct($config);
}
protected function getListQuery() {
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->
select('m.*, '.$db->qn('c.name',
'category_name'))->
from($db->qn('#__rsmembership_memberships',
'm'))->
join('left',$db->qn('#__rsmembership_categories',
'c').' ON
'.$db->qn('m.category_id').' =
'.$db->qn('c.id'));
// search filter
$filter_word =
$this->getState($this->context.'.filter.search');
if (strlen($filter_word))
$query->where($db->qn('m.name').' LIKE
'.$db->q('%'.$filter_word.'%'));
// category filter
$filter_category = (int)
$this->getState($this->context.'.filter.filter_category');
if ($filter_category)
$query->where($db->qn('m.category_id')." =
".$db->q($filter_category));
// state filter
$filter_state =
$this->getState($this->context.'.filter.filter_state');
if (is_numeric($filter_state))
$query->where($db->qn('m.published').' =
'.$db->q($filter_state));
$listOrdering = $this->getState('list.ordering',
'm.ordering');
$listDirection = $this->getState('list.direction',
'ASC');
$query->order($listOrdering.' '.$listDirection);
return $query;
}
protected function populateState($ordering = null, $direction = null) {
$app = JFactory::getApplication();
$this->setState($this->context.'.filter.search',
$app->getUserStateFromRequest($this->context.'.memberships.search',
'filter_search'));
$this->setState($this->context.'.filter.filter_category',
$app->getUserStateFromRequest($this->context.'.memberships.filter_category',
'filter_category'));
$this->setState($this->context.'.filter.filter_state',
$app->getUserStateFromRequest($this->context.'.memberships.filter_state',
'filter_state'));
parent::populateState('m.ordering', 'ASC');
}
public function getTable($type = 'Membership', $prefix =
'RSMembershipTable', $config = array()) {
return JTable::getInstance($type, $prefix, $config);
}
// duplicate function
public function duplicate($cid)
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
jimport('joomla.filesystem.file');
$row = $this->getTable();
$row->load($cid);
$row->published = 0;
$row->name = JText::_('COM_RSMEMBERSHIP_COPY_OF').'
'.$row->name;
$row->ordering = $row->getNextOrder();
$row->id = null;
$row->store();
$membership_new_id = $row->id;
if (!empty($row->thumb))
{
$old_thumb =
JPATH_ROOT.'/components/com_rsmembership/assets/thumbs/'.$row->thumb;
$new_thumb =
JPATH_ROOT.'/components/com_rsmembership/assets/thumbs/'.$row->id.'.jpg';
$copied = JFile::copy($old_thumb, $new_thumb);
if ($copied)
{
$row->thumb = $row->id.'.jpg';
$row->store();
}
else
{
$row->thumb = '';
$row->store();
}
}
$query->select('*')->from($db->qn('#__rsmembership_membership_attachments'))->where($db->qn('membership_id').'
= '.$db->q($cid));
$db->setQuery($query);
$attachments = $db->loadObjectList();
if (!empty($attachments))
foreach ($attachments as $attachment)
{
$row = JTable::getInstance('MembershipAttachment',
'RSMembershipTable');
$row->bind($attachment);
$row->membership_id = $membership_new_id;
$row->id = null;
$row->store();
}
$query->clear();
$query->select('*')->from($db->qn('#__rsmembership_membership_extras'))->where($db->qn('membership_id').'
= '.$db->q($cid));
$db->setQuery($query);
$extras = $db->loadObjectList();
if (!empty($extras))
foreach ($extras as $extra)
{
$row = JTable::getInstance('MembershipExtras',
'RSMembershipTable');
$row->bind($extra);
$row->membership_id = $membership_new_id;
$row->id = null;
$row->store();
}
$query->clear();
$query->select('*')->from($db->qn('#__rsmembership_membership_shared'))->where($db->qn('membership_id').'
= '.$db->q($cid));
$db->setQuery($query);
$shares = $db->loadObjectList();
if (!empty($shares))
foreach ($shares as $share)
{
$row = JTable::getInstance('MembershipShared',
'RSMembershipTable');
$row->bind($share);
$row->membership_id = $membership_new_id;
$row->id = null;
$row->store();
}
$query->clear()
->select('*')
->from($db->qn('#__rsmembership_membership_fields'))
->where($db->qn('membership_id') . ' =
' . $db->q($cid));
if ($fields = $db->setQuery($query)->loadObjectList())
{
foreach ($fields as $field)
{
$field->membership_id = $membership_new_id;
$row = JTable::getInstance('Membership_Field',
'RSMembershipTable');
$row->bind($field);
$row->id = null;
$row->store();
}
}
return true;
}
public function getCategories() {
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->qn('id').',
'.$db->qn('name'))->from('#__rsmembership_categories')->order($db->qn('ordering').'
ASC');
$db->setQuery($query);
$results = $db->loadObjectList();
return $results;
}
public function getSideBar() {
require_once JPATH_COMPONENT.'/helpers/toolbar.php';
// Categories filter
$options['filter_category'] =
$this->getState($this->context.'.filter.filter_category');
$options['categories'] = array();
$categories = $this->getCategories();
foreach ($categories as $category) {
$options['categories'][] = JHtml::_('select.option',
$category->id, $category->name);
}
// Memberships States filter
$options['filter_state'] =
$this->getState($this->context.'.filter.filter_state');
$options['states'] = array(
JHtml::_('select.option', '1',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIPS_FILTER_PUBLISHED')),
JHtml::_('select.option', '0',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIPS_FILTER_UNPUBLISHED'))
);
RSMembershipToolbarHelper::addFilter(
JText::_('COM_RSMEMBERSHIP_ALL_CATEGORIES'),
'filter_category',
JHtml::_('select.options', $options['categories'],
'value', 'text', $options['filter_category'],
true)
);
RSMembershipToolbarHelper::addFilter(
JText::_('COM_RSMEMBERSHIP_MEMBERSHIPS_FILTER_BY_STATE'),
'filter_state',
JHtml::_('select.options', $options['states'],
'value', 'text', $options['filter_state'],
false)
);
return RSMembershipToolbarHelper::render();
}
public function getOrdering() {
require_once JPATH_COMPONENT.'/helpers/adapters/ordering.php';
$ordering = new RSOrdering();
return $ordering;
}
public function getFilterBar() {
require_once
JPATH_COMPONENT.'/helpers/adapters/filterbar.php';
// search filter
$options['search'] = array(
'label' => JText::_('JSEARCH_FILTER'),
'value' =>
$this->getState($this->context.'.filter.search')
);
// Ordering results
$options['listOrder'] =
$this->getState('list.ordering', 'm.ordering');
$options['listDirn'] =
$this->getState('list.direction', 'asc');
$options['sortFields'] = array(
JHtml::_('select.option', 'm.id',
JText::_('COM_RSMEMBERSHIP_ID')),
JHtml::_('select.option', 'm.ordering',
JText::_('JGRID_HEADING_ORDERING')),
JHtml::_('select.option', 'm.name',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIP')),
JHtml::_('select.option', 'category_name',
JText::_('COM_RSMEMBERSHIP_CATEGORY_NAME')),
JHtml::_('select.option', 'm.period_type',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIP_LENGTH')),
JHtml::_('select.option', 'm.price',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIP_PRICE')),
JHtml::_('select.option', 'm.published',
JText::_('JPUBLISHED'))
);
// Categories filter
$options['filter_category'] =
$this->getState($this->context.'.filter.filter_category');
$options['categories'] =
array(JHtml::_('select.option', '',
JText::_('COM_RSMEMBERSHIP_ALL_CATEGORIES')));
$categories = $this->getCategories();
foreach ($categories as $category) {
$options['categories'][] = JHtml::_('select.option',
$category->id, $category->name);
}
// Memberships States filter
$options['filter_state'] =
$this->getState($this->context.'.filter.filter_state');
$options['states'] = array(
JHtml::_('select.option', '',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIPS_FILTER_BY_STATE')),
JHtml::_('select.option', '1',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIPS_FILTER_PUBLISHED')),
JHtml::_('select.option', '0',
JText::_('COM_RSMEMBERSHIP_MEMBERSHIPS_FILTER_UNPUBLISHED'))
);
// Joomla 2.5
$options['rightItems'] = array(
array(
'input' => '<select name="filter_state"
class="inputbox"
onchange="this.form.submit()">'."\n"
.JHtml::_('select.options',
$options['states'], 'value', 'text',
$options['filter_state'], false)."\n"
.'</select>'
),
array(
'input' => '<select
name="filter_category" class="inputbox"
onchange="this.form.submit()">'."\n"
.JHtml::_('select.options',
$options['categories'], 'value', 'text',
$options['filter_category'], false)."\n"
.'</select>'
)
);
$bar = new RSFilterBar($options);
return $bar;
}
}