%PDF- %PDF-
| Direktori : /home/lightco1/luminero.com.au/components/com_cmc/controllers/ | 
| Current File : /home/lightco1/luminero.com.au/components/com_cmc/controllers/subscription.raw.php | 
<?php
/**
 * @package    CMC
 * @author     Compojoom <contact-us@compojoom.com>
 * @date       2016-04-15
 *
 * @copyright  Copyright (C) 2008 - 2016 compojoom.com - Daniel Dimitrov, Yves Hoppe. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE
 */
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.controllerlegacy');
/**
 * Class CmcControllerSubscription
 *
 * @since  1.0
 */
class CmcControllerSubscription extends JControllerLegacy
{
	/**
	 * Save the subscription
	 *
	 * @return void
	 */
	public function save()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		$appl  = JFactory::getApplication();
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$config = JComponentHelper::getParams('com_cmc');
		$chimp = new cmcHelperChimp;
		$input  = JFactory::getApplication()->input;
		$form   = $input->get('jform', '', 'array');
		$isAjax = $input->get('ajax');
		$mergeVars = CmcHelperList::mergeVars($form, $form['cmc']['listid']);
		$listId = $form['cmc']['listid'];
		$email  = $mergeVars['EMAIL'];
		$memberInfo = $chimp->listSubscribe(
			$listId, $email, $mergeVars, $mergeVars['GROUPINGS'], 'html',
			$config->get('opt_in', true), true, true, false
		);
		if ($chimp->getLastError())
		{
			$errors[] = $chimp->getLastError();
			if (isset($memberInfo['errors']))
			{
				foreach ($memberInfo['errors'] as $mailchimpErrors )
				{
					$errors[] = $mailchimpErrors['message'];
				}
			}
			$response['html']  = implode(
				'',
				array_map(
					function($v) {
						return '<p>' . $v . '</p>';
					},
					$errors
				)
			);
			$response['error'] = true;
		}
		else
		{
			// Get the member info from mailchimp
			$status     = 'applied';
			// User was found on list
			if (isset($memberInfo['status']))
			{
				$status = $memberInfo['status'];
			}
			// Check if the subscription is already present in the db
			if (CmcHelperUsers::getSubscription($email, $listId))
			{
				$query->update('#__cmc_users')
					->set(
						array(
							'list_id = ' . $db->quote($listId),
							'email = ' . $db->quote($email),
							'merges = ' . $db->quote(json_encode($mergeVars)),
							'status = ' . $db->q($status)
						)
					)
					->where('list_id = ' . $db->quote($listId))
					->where('email = ' . $db->quote($email));
				$html = 'updated';
			}
			else
			{
				$query->insert('#__cmc_users')->columns('list_id,email,merges,status')
					->values($db->quote($listId) . ',' . $db->quote($email) . ',' . $db->quote(json_encode($mergeVars)) . ',' . $db->q($status));
				$html = 'saved';
			}
			$db->setQuery($query);
			$db->execute();
			$response['html']  = $html;
			$response['error'] = false;
		}
		if ($isAjax)
		{
			echo json_encode($response);
			jexit();
		}
		$appl->enqueueMessage($response['html']);
		$appl->redirect($_SERVER['HTTP_REFERER']);
	}
	/**
	 * Checks if the current user exists in the mailchimp database
	 *
	 * @throws Exception
	 *
	 * @return void
	 */
	public function exist()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		$url = '';
		$chimp = new cmcHelperChimp;
		$input = JFactory::getApplication()->input;
		$form  = $input->get('jform', '', 'array');
		$mergeVars = CmcHelperList::mergeVars($form, $form['cmc']['listid']);
		$email  = $mergeVars['EMAIL'];
		$listId = $form['cmc']['listid'];
		// Check if the user is in the list already
		$isSubscribed = $chimp->isSubscribed($listId, $email);
		$url = '';
		if ($isSubscribed)
		{
			$url   = JRoute::_('index.php?option=com_cmc&task=subscription.update&email=' . $email . '&listid=' . $listId);
		}
		echo json_encode(array('exists' => $isSubscribed, 'url' => $url));
		jexit();
	}
}