Your IP : 216.73.216.43


Current Path : /home/c/b/e/cbequiperp/www/libraries/foxcontact/form/
Upload File :
Current File : /home/c/b/e/cbequiperp/www/libraries/foxcontact/form/newsletter.php

<?php defined('_JEXEC') or die(file_get_contents('index.html'));
/**
 * @package   Fox Contact for Joomla
 * @copyright Copyright (c) 2010 - 2015 Demis Palma. All rights reserved.
 * @license   Distributed under the terms of the GNU General Public License GNU/GPL v3 http://www.gnu.org/licenses/gpl-3.0.html
 * @see       Documentation: http://www.fox.ra.it/forum/2-documentation.html
 */
jimport('foxcontact.joomla.log');

class FoxFormNewsletter
{
	private static $enabled = array();
	
	public static function isEnable($extension)
	{
		if (!isset(self::$enabled[$extension]))
		{
			self::$enabled[$extension] = self::isInstalled($extension) && self::config($extension);
		}
		
		return self::$enabled[$extension];
	}
	
	
	private static function isInstalled($extension)
	{
		$db = JFactory::getDBO();
		$query = $db->getQuery(true);
		$query->select($db->quoteName('extension_id'));
		$query->from($db->quoteName('#__extensions'));
		$query->where($db->quoteName('name') . ' = ' . $db->quote($extension));
		$db->setQuery($query);
		return $db->loadResult();
	}
	
	
	private static function config($extension)
	{
		switch ($extension)
		{
			case 'acymailing':
				$enabled = self::configAcyMailing();
				break;
			case 'jnews':
				$enabled = self::configJNews();
				break;
			default:
				$enabled = false;
				break;
		}
		
		return $enabled;
	}
	
	
	private static function configAcyMailing()
	{
		return (bool) @(include_once JPATH_ADMINISTRATOR . '/components/com_acymailing/helpers/helper.php');
	}
	
	
	private static function configJNews()
	{
		$enable = true;
		defined('JNEWS_JPATH_ROOT') or define('JNEWS_JPATH_ROOT', JPATH_ROOT);
		$enable &= (bool) @(include_once JPATH_ROOT . '/components/com_jnews/defines.php');
		if (defined('JNEWS_OPTION'))
		{
			$enable &= (bool) @(include_once JNEWS_JPATH_ROOT . '/administrator/components/' . JNEWS_OPTION . '/classes/class.jnews.php');
		}
		else
		{
			$enable = false;
		}
		
		return $enable;
	}
	
	
	public static function load($extension, $filters = array())
	{
		switch ($extension)
		{
			case 'acymailing':
				return self::loadAcyMailing($filters);
			case 'jnews':
				return self::loadJNews($filters);
			default:
				return null;
		}
	
	}
	
	
	private static function loadAcyMailing($filters)
	{
		return FoxFormNewsletter::query('acymailing', 'listid', 'name', '#__acymailing_list', 'ordering', $filters);
	}
	
	
	private static function loadJNews($filters)
	{
		return FoxFormNewsletter::query('jnews', 'id', 'list_name', '#__jnews_lists', 'id', $filters);
	}
	
	
	private static function query($extension, $key, $value, $table, $order, $filters)
	{
		if (!self::isEnable($extension))
		{
			return null;
		}
		
		$options = array();
		$db = JFactory::getDBO();
		$query = $db->getQuery(true);
		$query->select($db->quoteName($key) . ',' . $db->quoteName($value));
		$query->from($db->quoteName($table));
		$query->where($db->quoteName('published') . ' = ' . $db->quote('1'));
		$query->order($db->quoteName($order) . ' ASC');
		if (count($filters) > 0)
		{
			foreach ($filters as $k => $filter)
			{
				$filters[$k] = $db->quote($filter);
			}
			
			$query->where($db->quoteName($key) . ' IN (' . implode(',', $filters) . ')');
		}
		
		$db->setQuery($query);
		$items = $db->loadObjectlist() or $items = new stdClass();
		if (count($items) === 0)
		{
			return null;
		}
		
		foreach ($items as $item)
		{
			$options[] = array('value' => $item->{$key}, 'label' => $item->{$value});
		}
		
		return array('type' => $extension, 'name' => JText::_("COM_FOXCONTACT_ITEM_NEWSLETTER_{$extension}_LBL"), 'options' => $options);
	}

}