Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/administrator/components/com_rsmembership/models/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/administrator/components/com_rsmembership/models/share.php

<?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 RSMembershipModelShare extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields'])) 
			$config['filter_fields'] = array('id',
'name', 'published', 'ordering');

		parent::__construct($config);
	}

	protected function getListQuery() 
	{
		$db		= JFactory::getDBO();
		$query	= $db->getQuery(true);

		$layout 		=
JFactory::getApplication()->input->get('layout',
'', 'cmd');
		$filter_word 	=
$this->getState($this->context.'.filter.search',
'');
		$listOrdering  	= $this->getState('list.ordering',
'ordering');
		$listDirection 	= $this->getState('list.direction',
'ASC');

		switch ($layout) 
		{
			case 'article':
				$query->select('a.*, '.$db->qn('c.title',
'categorytitle'))->from($db->qn('#__content',
'a'))->join('left',
$db->qn('#__categories','c').' ON
'.$db->qn('c.id').' =
'.$db->qn('a.catid'));

				if ( $filter_word ) 
					$query->where($db->qn('a.title').' LIKE
'.$db->q('%'.$filter_word.'%'));

				$query->order($listOrdering.' '.$listDirection);
			break;

			case 'category':
				$query->select('*')->from($db->qn('#__categories'))->where($db->qn('extension').'
LIKE '.$db->q('com_content'));

				if ( $filter_word ) 
					$query->where($db->qn('title').' LIKE
'.$db->q('%'.$filter_word.'%'));

				$listOrdering = $db->qn('id'); // we don't have an
ordering column for 

				$query->order($listOrdering.' '.$listDirection);
			break;

			case 'module':
				$query->select('*')->from($db->qn('#__modules'));

				if ( $filter_word ) 
					$query->where($db->qn('title').' LIKE
'.$db->q('%'.$filter_word.'%').' OR
'.$db->qn('module').' LIKE
'.$db->q('%'.$filter_word.'%'));

				$query->order($listOrdering.' '.$listDirection);
			break;

			case 'menu':
				$query->
					select($db->qn('id').',
'.$db->qn('title','name').',
'.$db->qn('menutype').',
'.$db->qn('published'))->
					from($db->qn('#__menu','m'))->where($db->qn('published').'
!= '.$db->q('-2').' AND
'.$db->qn('client_id').' =
'.$db->q('0').' AND
'.$db->qn('parent_id').' >
'.$db->q('0'));

				if ( $filter_word ) {
					$query->where($db->qn('title').' LIKE
'.$db->q('%'.$filter_word.'%').' OR
'.$db->qn('menutype').' LIKE
'.$db->q('%'.$filter_word.'%'));
				}

				$listOrdering = $db->qn('lft');

				$query->order($listOrdering.' '.$listDirection);

			break;
		}

		return $query;
	}

	public function getItems() 
	{
		$db 	= JFactory::getDBO();
		$items  = $this->_isPlugin() ? array() : parent::getItems();

		if ( empty($items) ) 
		{
			if ( $this->_isPlugin() ) 
			{
				$instances = RSMembership::getSharedContentPlugins();
				foreach ($instances as $instance)
				{
					if ( method_exists($instance, 'getData') ) 
						$instance->getData($this->getShareType(), $items,
$this->getState($this->context.'.share.limitstart'),
$this->getState($this->context.'.share.limit'));
				}
			}
			else
				$items = $db->getList($this->getListQuery(),
$this->getState($this->context.'.share.limitstart'),
$this->getState($this->context.'.share.limit'));
		}

		return $items;
	}

	public function getTotal() 
	{
		if ($this->_isPlugin())
		{
			$instances = RSMembership::getSharedContentPlugins();
			foreach ($instances as $instance)
				if ( method_exists($instance, 'getTotal') ) 
					$instance->getTotal($this->getShareType(), $total);
		} else 
			$total = parent::getTotal();

		
		return $total;
	}

	protected function populateState($ordering = null, $direction = null) {
		$app = JFactory::getApplication();
		$this->setState($this->context.'.filter.search',
$app->getUserStateFromRequest($this->context.'.share.search',
'search'));
		$this->setState($this->context.'.share.limitstart',
$app->getUserStateFromRequest($this->context.'.share.limitstart','limitstart',
0, 'int'));
		$this->setState($this->context.'.share.limit',
$app->getUserStateFromRequest($this->context.'.share.limit',
'limit', $app->getCfg('list_limit')));

		parent::populateState('ordering', 'ASC');
	}

	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')
		);

		$bar = new RSFilterBar($options);

		return $bar;
	}

	public function getSideBar() 
	{
		require_once JPATH_COMPONENT.'/helpers/toolbar.php';

		return RSMembershipToolbarHelper::render();
	}

	public function getRSFieldset() 
	{
		require_once JPATH_COMPONENT.'/helpers/adapters/fieldset.php';

		$fieldset = new RSFieldset();
		return $fieldset;
	}

	public function getHeaders() 
	{
		$headers = array();
		
		$instances = RSMembership::getSharedContentPlugins();
		foreach ($instances as $instance)
			if (method_exists($instance, 'getHeaders'))
				$instance->getHeaders($this->getShareType(), $headers);
		
		return $headers;
	}

	public function _isPlugin() 
	{
		return JFactory::getApplication()->input->get('layout',
'', 'string') == 'plugin';
	}

	public function getPluginShareTypes()
	{
		$plugins 	= array();
		$instances 	= RSMembership::getSharedContentPlugins();

		foreach ($instances as $instance)
		{
			if ( method_exists($instance, 'getSupportedSharedTypes') ) 
				$plugins = array_merge($plugins,
$instance->getSupportedSharedTypes());
		}	

		return $plugins;
	}

	public function getShareType()
	{
		return
JFactory::getApplication()->input->get('share_type',
'', 'string');
	}

	public function addItems($items, $type, $shared_type)
	{
		$db 	= JFactory::getDBO();
		$query	= $db->getQuery(true);

		$membership_id  =
JFactory::getApplication()->input->get('membership_id',  0,
'int');
		$extra_value_id =
JFactory::getApplication()->input->get('extra_value_id', 0,
'int');

		foreach ($items as $item)
		{
			if ($type == 'membership') 
			{
				$row =
$this->getTable('MembershipShared','RSMembershipTable');
				$row->membership_id = $membership_id;
			}
			else
			{
				$row =
$this->getTable('ExtraValueShared','RSMembershipTable');
				$row->extra_value_id = $extra_value_id;
			}

			$row->params = $item;
			$row->type = $shared_type;

			$query->clear();
			if ($type == 'membership')
				$query->select('*')->from($db->qn('#__rsmembership_membership_shared'))->where($db->qn('params').'
= '.$db->q($item).' AND
'.$db->qn('membership_id').' =
'.$db->q($membership_id).' AND
'.$db->qn('type').' =
'.$db->q($row->type));
			else
				$query->select('*')->from($db->qn('#__rsmembership_extra_value_shared'))->where($db->qn('params').'
= '.$db->q($item).' AND
'.$db->qn('extra_value_id').' =
'.$db->q($extra_value_id).' AND
'.$db->qn('type').' =
'.$db->q($row->type));

			$db->setQuery($query);
			$db->execute();

			if ($db->getNumRows())
				continue;

			if ($type == 'membership')
				$row->ordering =
$row->getNextOrder($db->qn('membership_id').' =
'.$db->q($row->membership_id));
			else
				$row->ordering =
$row->getNextOrder($db->qn('extra_value_id').' =
'.$db->q($row->extra_value_id));

			$row->store();
		}

		return true;
	}

	public function getSortColumn()
	{
		$sortColumn =
JFactory::getApplication()->input->get('filter_order',
'ordering', 'string');
		if ($this->_isPlugin())
		{
			$instances = RSMembership::getSharedContentPlugins();
			foreach ($instances as $instance)
				if (method_exists($instance, 'getSortColumn'))
					$instance->getSortColumn($this->getShareType(), $sortColumn);
		}
		
		return $sortColumn;
	}
}