<?php

/**

 * @package	AcyMailing for Joomla!

 * @version	5.6.0

 * @author	acyba.com

 * @copyright	(C) 2009-2016 ACYBA S.A.R.L. All rights reserved.

 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html

 */

defined('_JEXEC') or die('Restricted access');

?><?php



if(!include_once(rtrim(JPATH_ADMINISTRATOR, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php')){

	echo 'This module can not work without the AcyMailing Component';

	return;

};



$doc = JFactory::getDocument();

$config = acymailing_config();

$overridedesign = preg_replace('#[^a-z0-9_]#i', '', JRequest::getCmd('design'));

if(!empty($overridedesign)){

	if($overridedesign == 'popup') $overridedesign = '';

	$params->set('effect', 'mootools-box');

}



switch($params->get('redirectmode', '0')){

	case 1 :

		$redirectUrl = acymailing_completeLink('lists', false, true);

		$redirectUrlUnsub = $redirectUrl;

		break;

	case 2 :

		$redirectUrl = $params->get('redirectlink');

		$redirectUrlUnsub = $params->get('redirectlinkunsub');

		break;

	default :

		if(isset($_SERVER["REQUEST_URI"])){

			$requestUri = $_SERVER["REQUEST_URI"];

		}else{

			$requestUri = $_SERVER['PHP_SELF'];

			if(!empty($_SERVER['QUERY_STRING'])) $requestUri = rtrim($requestUri, '/').'?'.$_SERVER['QUERY_STRING'];

		}

		$redirectUrl = (((!empty($_SERVER['HTTPS']) AND strtolower($_SERVER['HTTPS']) == "on") || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://').$_SERVER["HTTP_HOST"].$requestUri;

		$redirectUrlUnsub = $redirectUrl;

		if($params->get('effect', 'normal') == 'mootools-box') $redirectUrlUnsub = $redirectUrl = '';

}



$regex = trim(preg_replace('#[^a-z0-9\|\.]#i', '', $config->get('module_redirect')), '|');

if($regex != 'all'){

	preg_match('#^(https?://)?(www.)?([^/]*)#i', $redirectUrl, $resultsurl);

	$domainredirect = preg_replace('#[^a-z0-9\.]#i', '', @$resultsurl[3]);

	preg_match('#^(https?://)?(www.)?([^/]*)#i', $redirectUrlUnsub, $resultsurl);

	$domainredirectunsub = preg_replace('#[^a-z0-9\.]#i', '', @$resultsurl[3]);

	$saveRedir = false;

	if(!empty($domainredirect) && !preg_match('#^'.$regex.'$#i', $domainredirect)){

		$regex .= '|'.$domainredirect;

		$saveRedir = true;

	}

	if(!empty($domainredirectunsub) && !preg_match('#^'.$regex.'$#i', $domainredirectunsub)){

		$regex .= '|'.$domainredirectunsub;

		$saveRedir = true;

	}

	if($saveRedir){

		$newConfig = new stdClass();

		$newConfig->module_redirect = $regex;

		$config->save($newConfig);

	}

}



$formName = acymailing_getModuleFormName();

if(!empty($overridedesign)){

	$params->set('includejs', 'module');

}



$introText = $params->get('introtext');

$postText = $params->get('finaltext');

$mootoolsIntro = $params->get('mootoolsintro', '');

if(!empty($introText) && preg_match('#^[A-Z_]*$#', $introText)){

	$introText = JText::_($introText);

}

if(!empty($postText) && preg_match('#^[A-Z_]*$#', $postText)){

	$postText = JText::_($postText);

}

if(!empty($mootoolsIntro) && preg_match('#^[A-Z_]*$#', $mootoolsIntro)){

	$mootoolsIntro = JText::_($mootoolsIntro);

}





if($params->get('effect') == 'mootools-box' AND JRequest::getString('tmpl') != 'component'){

	$mootoolsButton = $params->get('mootoolsbutton', '');

	if(empty($mootoolsButton)){

		$mootoolsButton = JText::_('SUBSCRIBE');

	}else{

		if(!empty($mootoolsButton) && preg_match('#^[A-Z_]*$#', $mootoolsButton)){

			$mootoolsButton = JText::_($mootoolsButton);

		}

	}



	$moduleCSS = $config->get('css_module', 'default');

	if(!empty($moduleCSS)){

		$doc->addStyleSheet(ACYMAILING_CSS.'module_'.$moduleCSS.'.css?v='.filemtime(ACYMAILING_MEDIA.'css'.DS.'module_'.$moduleCSS.'.css'));

	}

	JHTML::_('behavior.modal', 'a.modal');

	require(JModuleHelper::getLayoutPath('mod_acymailing', 'popup'));

	return;

}

acymailing_initModule($params->get('includejs', 'header'), $params);



$userClass = acymailing_get('class.subscriber');

$identifiedUser = null;

$connectedUser = JFactory::getUser();

if($params->get('loggedin', 1) && !empty($connectedUser->email)){

	$identifiedUser = $userClass->get($connectedUser->email);

}



if(version_compare(JVERSION, '3.1.2', '>=')){

	if(!empty($connectedUser->email)) $connectedUser->email = JStringPunycode::emailToUTF8($connectedUser->email);

	if(!empty($identifiedUser->email)) $identifiedUser->email = JStringPunycode::emailToUTF8($identifiedUser->email);

}



$visibleLists = trim($params->get('lists', 'None'));

$hiddenLists = trim($params->get('hiddenlists', 'All'));

$visibleListsArray = array();

$hiddenListsArray = array();

$listsClass = acymailing_get('class.list');

if(empty($identifiedUser->subid)){

	$allLists = $listsClass->getLists('listid');

}else{

	$allLists = $userClass->getSubscription($identifiedUser->subid, 'listid');

}





if(strpos($visibleLists, ',') OR is_numeric($visibleLists)){

	$allvisiblelists = explode(',', $visibleLists);

	foreach($allLists as $oneList){

		if($oneList->published AND in_array($oneList->listid, $allvisiblelists)) $visibleListsArray[] = $oneList->listid;

	}

}elseif(strtolower($visibleLists) == 'all'){

	foreach($allLists as $oneList){

		if($oneList->published){

			$visibleListsArray[] = $oneList->listid;

		}

	}

}



if(strpos($hiddenLists, ',') OR is_numeric($hiddenLists)){

	$allhiddenlists = explode(',', $hiddenLists);

	foreach($allLists as $oneList){

		if($oneList->published AND in_array($oneList->listid, $allhiddenlists)) $hiddenListsArray[] = $oneList->listid;

	}

}elseif(strtolower($hiddenLists) == 'all'){

	$visibleListsArray = array();

	foreach($allLists as $oneList){

		if(!empty($oneList->published)){

			$hiddenListsArray[] = $oneList->listid;

		}

	}

}



if(!empty($visibleListsArray) AND !empty($hiddenListsArray)){

	$visibleListsArray = array_diff($visibleListsArray, $hiddenListsArray);

}



$visibleLists = $params->get('dropdown', 0) ? '' : implode(',', $visibleListsArray);

$hiddenLists = implode(',', $hiddenListsArray);



if(!$params->get('dropdown', 0) && empty($hiddenLists) && empty($visibleLists)){

	echo '<p style="color:red">Error : Please select some lists in your AcyMailing module configuration for the field "'.JText::_('AUTO_SUBSCRIBE_TO').'" and make sure the selected lists are enabled </p>';

}



if(!empty($identifiedUser->subid)){

	$countSub = 0;

	$countUnsub = 0;

	foreach($visibleListsArray as $idOneList){

		if($allLists[$idOneList]->status == -1){

			$countSub++;

		}elseif($allLists[$idOneList]->status == 1) $countUnsub++;

	}

	foreach($hiddenListsArray as $idOneList){

		if($allLists[$idOneList]->status == -1){

			$countSub++;

		}elseif($allLists[$idOneList]->status == 1) $countUnsub++;

	}

}



$checkedLists = $params->get('listschecked', 'All');

if(strtolower($checkedLists) == 'all'){

	$checkedListsArray = $visibleListsArray;

}elseif(strpos($checkedLists, ',') OR is_numeric($checkedLists)){

	$checkedListsArray = explode(',', $checkedLists);

}else{

	$checkedListsArray = array();

}



$listPosition = $params->get('listposition', 'before');





$nameCaption = $params->get('nametext', JText::_('NAMECAPTION'));

$emailCaption = $params->get('emailtext', JText::_('EMAILCAPTION'));

$displayOutside = $params->get('displayfields', 0);

$displayInline = ($params->get('displaymode', 'vertical') == 'vertical') ? false : true;



$displayedFields = $params->get('customfields', 'name,email');

$fieldsToDisplay = explode(',', $displayedFields);

$extraFields = array();



$fieldsize = $params->get('fieldsize', '80%');

if(is_numeric($fieldsize)) $fieldsize .= 'px';



if(!in_array('email', $fieldsToDisplay) && empty($connectedUser->id)) $fieldsToDisplay[] = 'email';



if($params->get('loadmootools', '1') == 1 && ($params->get('effect') == 'mootools-slide' || $params->get('redirectmode', 0) == '3')){

	acymailing_loadMootools($params->get('effect') == 'mootools-slide');

}



if($params->get('effect') == 'mootools-slide'){

	$mootoolsButton = $params->get('mootoolsbutton', '');

	if(empty($mootoolsButton)) $mootoolsButton = JText::_('SUBSCRIBE');



	$js = 'if (window.jQuery) {

			jQuery(document).ready(function(){

				jQuery("#acymailing_fulldiv_'.$formName.'").hide();

 				jQuery("#acymailing_togglemodule_'.$formName.'").click(function(){

					jQuery("#acymailing_fulldiv_'.$formName.'").slideToggle("fast");

					jQuery("#acymailing_togglemodule_'.$formName.'").toggleClass("acyactive");

					return false;

				});

			});

		} else{

		';

	$js .= "window.addEvent('domready', function(){

				var mySlide = new Fx.Slide('acymailing_fulldiv_$formName');

				mySlide.hide();

				try{

					var acytogglemodule = document.id('acymailing_togglemodule_$formName');

				}catch(err){

					var acytogglemodule = $('acymailing_togglemodule_$formName');

				}



				acytogglemodule.addEvent('click', function(e){

					if(mySlide.wrapper.offsetHeight == 0){

						acytogglemodule.className = 'acymailing_togglemodule acyactive';

					}else{

						acytogglemodule.className = 'acymailing_togglemodule';

					}

					mySlide.toggle();

					try {

						var evt = new Event(e);

						evt.stop();

					} catch(err) {

						e.stop();

					}

				});

			});

		}";



	if($params->get('includejs', 'header') == 'header'){

		$doc->addScriptDeclaration($js);

	}else{

		echo "<script type=\"text/javascript\">

			<!--

				$js

			//-->

				</script>";

	}

}



if($params->get('overlay', 0)){

	JHTML::_('behavior.tooltip');

}



if($params->get('showterms', false)){

	require_once JPATH_SITE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php';

	$termsIdContent = $params->get('termscontent', 0);

	if(empty($termsIdContent)){

		$termslink = JText::_('JOOMEXT_TERMS');

	}else{

		if(is_numeric($termsIdContent)){

			$db = JFactory::getDBO();

			if(!ACYMAILING_J16){

				$query = 'SELECT a.id,a.alias,a.catid,a.sectionid, c.alias as catalias, s.alias as secalias FROM #__content as a ';

				$query .= ' LEFT JOIN #__categories AS c ON c.id = a.catid ';

				$query .= ' LEFT JOIN #__sections AS s ON s.id = a.sectionid ';

				$query .= 'WHERE a.id = '.$termsIdContent.' LIMIT 1';

				$db->setQuery($query);

				$article = $db->loadObject();



				$section = $article->sectionid.(!empty($article->secalias) ? ':'.$article->secalias : '');

				$category = $article->catid.(!empty($article->catalias) ? ':'.$article->catalias : '');

				$articleid = $article->id.(!empty($article->alias) ? ':'.$article->alias : '');

				$url = ContentHelperRoute::getArticleRoute($articleid, $category, $section);

			}else{

				$query = 'SELECT a.id,a.alias,a.catid, c.alias as catalias FROM #__content as a ';

				$query .= ' LEFT JOIN #__categories AS c ON c.id = a.catid ';

				$query .= 'WHERE a.id = '.$termsIdContent.' LIMIT 1';

				$db->setQuery($query);

				$article = $db->loadObject();



				$category = $article->catid.(!empty($article->catalias) ? ':'.$article->catalias : '');

				$articleid = $article->id.(!empty($article->alias) ? ':'.$article->alias : '');



				$url = ContentHelperRoute::getArticleRoute($articleid, $category);

			}

			$url .= (strpos($url, '?') ? '&' : '?').'tmpl=component';

		}else{

			$url = $termsIdContent;

		}



		if($params->get('showtermspopup', 1) == 1){

			$acypop = acymailing_get('helper.acypopup');

			$acypop->useMootools = ($params->get('loadmootools', '1') == 1) ? true : false;

			$termslink = $acypop->display(JText::_('JOOMEXT_TERMS'), JText::_('JOOMEXT_TERMS', true), $url, $articleid, 650, 375, '', '', 'text');

		}else{

			$termslink = '<a title="'.JText::_('JOOMEXT_TERMS', true).'"  href="'.$url.'" target="_blank">'.JText::_('JOOMEXT_TERMS').'</a>';

		}

	}

}



if(!empty($overridedesign)){

	ob_start();

}



if($params->get('displaymode') == 'tableless'){

	require(JModuleHelper::getLayoutPath('mod_acymailing', 'tableless'));

}else{

	require(JModuleHelper::getLayoutPath('mod_acymailing'));

}



if(!empty($connectedUser->email)){

	echo '<span style="display:none">{emailcloak=off}</span>';

}



if(!empty($overridedesign)){

	$moduleDisplay = ob_get_clean();

	$file = ACYMAILING_MEDIA.'plugins'.DS.'squeezepage'.DS.$overridedesign.'.php';

	if(file_exists($file)){

		ob_start();

		require($file);

		$squeezePage = ob_get_clean();

		$squeezePage = str_replace('{module}', $moduleDisplay, $squeezePage);

		echo $squeezePage;

	}else{

		echo $moduleDisplay;

	}

}

