| Current Path : /home/w/u/e/wuectly/www/03cbe/ |
| Current File : /home/w/u/e/wuectly/www/03cbe/com_acymailing.zip |
PK dX!]
�� � acymailing.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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(version_compare(PHP_VERSION, '5.3.0', '<')){
echo '<p style="color:red">This version of AcyMailing requires at least PHP 5.3.0, it is time to upgrade the PHP version of your server!</p>';
exit;
}
if(!include_once(rtrim(JPATH_ADMINISTRATOR, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php')){
echo "Could not load Acy helper file";
return;
}
if(acymailing_isDebug()) acymailing_displayErrors();
$taskGroup = acymailing_getVar('cmd', 'ctrl', acymailing_getVar('cmd', 'gtask', 'dashboard'));
if($taskGroup == 'config') $taskGroup = 'cpanel';
$config = acymailing_config();
acymailing_addStyle(false, ACYMAILING_CSS.'backend_default.css?v='.filemtime(ACYMAILING_MEDIA.'css'.DS.'backend_default.css'));
$cssBackend = $config->get('css_backend');
if($cssBackend == 'custom' && file_exists(ACYMAILING_MEDIA.'css'.DS.'backend_custom.css')) acymailing_addStyle(false, ACYMAILING_CSS.'backend_custom.css?v='.filemtime(ACYMAILING_MEDIA.'css'.DS.'backend_custom.css'));
if(ACYMAILING_J30 && !ACYMAILING_J40) acymailing_addStyle(true, '.header{ display: none; }');
acymailing_addScript(false, ACYMAILING_JS.'acymailing.js?v='.filemtime(ACYMAILING_MEDIA.'js'.DS.'acymailing.js'));
if(ACYMAILING_J16 && file_exists(ACYMAILING_ROOT.'media'.DS.'system'.DS.'js'.DS.'core.js')){
$url = rtrim(acymailing_rootURI(), '/').'/media/system/js/core.js?v='.filemtime(ACYMAILING_ROOT.'media'.DS.'system'.DS.'js'.DS.'core.js');
$js = 'document.addEventListener("DOMContentLoaded", function(){
if(typeof Joomla == "undefined" && typeof window.Joomla == "undefined"){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "'.$url.'";
document.head.appendChild(script);
}
});';
acymailing_addScript(true, $js);
}
if($taskGroup != 'update' && !$config->get('installcomplete')){
$url = acymailing_completeLink('update&task=install', false, true);
echo "<script>document.location.href='".$url."';</script>\n";
echo 'Install not finished... You will be redirected to the second part of the install screen<br />';
echo '<a href="'.$url.'">Please click here if you are not automatically redirected within 3 seconds</a>';
return;
}
$action = acymailing_getVar('cmd', 'task', 'listing');
if(empty($action)){
$action = acymailing_getVar('cmd', 'defaulttask', 'listing');
acymailing_setVar('task', $action);
}
$menuDisplayed = false;
if(!ACYMAILING_J40
&& !($taskGroup == 'send' && $action == 'send')
&& $taskGroup !== 'toggle'
&& !acymailing_isNoTemplate()
&& !in_array($action, array('doexport', 'continuesend', 'load'))
&& !in_array($taskGroup, array('editor'))){
$menuHelper = acymailing_get('helper.acymenu');
echo '<div id="acyallcontent" class="acyallcontent">';
echo $menuHelper->display($taskGroup);
echo '<div id="acymainarea" class="acymaincontent_'.$taskGroup.'">';
$menuDisplayed = true;
}
if($taskGroup != 'update' && ACYMAILING_J16 && !acymailing_authorised('core.manage', 'com_acymailing')){
acymailing_display(acymailing_translation('JERROR_ALERTNOAUTHOR'), 'error');
return;
}
if(($taskGroup == 'cpanel' || ($taskGroup == 'update' && $action == 'listing')) && ACYMAILING_J16 && !acymailing_authorised('core.admin', 'com_acymailing')){
acymailing_display(acymailing_translation('JERROR_ALERTNOAUTHOR'), 'error');
return;
}
if(!include_once(ACYMAILING_CONTROLLER.$taskGroup.'.php')){
acymailing_redirect(acymailing_completeLink('dashboard'));
return;
}
$className = ucfirst($taskGroup).'Controller';
$classGroup = new $className();
acymailing_setVar('view', $classGroup->getName());
$classGroup->execute($action);
$classGroup->redirect();
if($menuDisplayed){
echo '</div></div>';
}
PK dX!]�S�8 8
router.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
function AcymailingBuildRoute(&$query){
$segments = array();
if(isset($query['ctrl']) && in_array($query['ctrl'], array('stats', 'moduleloader', 'cron', 'fronteditor', 'frontfilter', 'sub'))){
return $segments;
}
$ctrl = '';
$task = '';
if(isset($query['ctrl'])){
$ctrl = $query['ctrl'];
if($ctrl != 'archive' || (!empty($query['task']) && $query['task'] != 'view')) $segments[] = $query['ctrl'];
unset($query['ctrl']);
if(isset($query['task'])){
$task = $query['task'];
if($ctrl != 'archive' || $task != 'view') $segments[] = $query['task'];
unset($query['task']);
}
}elseif(isset($query['view'])){
$ctrl = $query['view'];
$segments[] = $query['view'];
unset($query['view']);
if(isset($query['layout'])){
$task = $query['layout'];
$segments[] = $query['layout'];
unset($query['layout']);
}
}
if(empty($query)) return $segments;
foreach($query as $name => $value){
if(in_array($name, array('option', 'Itemid', 'start', 'format', 'limitstart', 'no_html', 'val', 'key', 'acyformname', 'subid', 'tmpl', 'lang', 'limit'))) continue;
if($ctrl == 'user' && $name == 'mailid') continue;
$segments[] = $name.':'.$value;
unset($query[$name]);
}
return $segments;
}
function AcymailingParseRoute($segments){
$vars = array();
if(empty($segments)) return $vars;
$i = 0;
foreach($segments as $name){
if(strpos($name, ':')){
list($arg, $val) = explode(':', $name);
if(is_numeric($arg)){
$vars['Itemid'] = $arg;
}else{
$vars[$arg] = $val;
}
}else{
$i++;
if($i == 1){
$vars['ctrl'] = $name;
}elseif($i == 2){
$vars['task'] = $name;
}
}
}
if(empty($vars['ctrl']) && (!empty($vars['listid']) || !empty($vars['mailid']))){
$vars['ctrl'] = 'archive';
if(!empty($vars['mailid'])) $vars['task'] = 'view';
}
return $vars;
}
PK dX!]�n4� � controllers/archive.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
class ArchiveController extends acymailingController{
function view(){
$statsClass = acymailing_get('class.stats');
$statsClass->countReturn = false;
$statsClass->saveStats();
$printEnabled = acymailing_getVar('none', 'print', 0);
if($printEnabled){
$js = "setTimeout(function(){
if(document.getElementById('iframepreview')){
document.getElementById('iframepreview').contentWindow.focus();
document.getElementById('iframepreview').contentWindow.print();
}else{
window.print();
}
},2000);";
acymailing_addScript(true, $js);
}
acymailing_setVar('layout', 'view');
return parent::display();
}
}
PK dX!]��&�8 �8 controllers/user.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
class UserController extends acymailingController{
function __construct($config = array()){
parent::__construct($config);
$this->registerDefaultTask('subscribe');
$this->registerTask('optout', 'unsub');
$this->registerTask('out', 'unsub');
}
function confirm(){
if(acymailing_isRobot()) return false;
$config = acymailing_config();
$userClass = acymailing_get('class.subscriber');
$userClass->geolocRight = true;
$user = $userClass->identify();
if(empty($user)) return false;
$redirectUrl = $config->get('confirm_redirect');
$listRedirection = '';
$subscription = $userClass->getSubscriptionStatus($user->subid);
foreach($subscription as $i => $onelist){
if(!in_array($onelist->status, array(1, 2)) || acymailing_translation('REDIRECTION_CONFIRMATION_'.$i) == 'REDIRECTION_CONFIRMATION_'.$i) continue;
$listRedirection = acymailing_translation('REDIRECTION_CONFIRMATION_'.$i);
break;
}
if(!empty($listRedirection)) $redirectUrl = $listRedirection;
if($config->get('confirmation_message', 1)){
if($user->confirmed && strlen(acymailing_translation('ALREADY_CONFIRMED')) > 0){
acymailing_enqueueMessage(acymailing_translation('ALREADY_CONFIRMED'));
}elseif(!$user->confirmed && strlen(acymailing_translation('SUBSCRIPTION_CONFIRMED')) > 0) acymailing_enqueueMessage(acymailing_translation('SUBSCRIPTION_CONFIRMED'));
}
if(!$user->confirmed) $userClass->confirmSubscription($user->subid);
$notifConfirm = $config->get('notification_confirm');
if(!empty($notifConfirm)){
$listsubClass = acymailing_get('class.listsub');
$userHelper = acymailing_get('helper.user');
$mailer = acymailing_get('helper.mailer');
$mailer->autoAddUser = true;
$mailer->checkConfirmField = false;
$mailer->report = false;
foreach($user as $field => $value) $mailer->addParam('user:'.$field, $value);
$mailer->addParam('user:subscription', $listsubClass->getSubscriptionString($user->subid));
$mailer->addParam('user:subscriptiondates', $listsubClass->getSubscriptionString($user->subid, true));
$mailer->addParam('user:ip', $userHelper->getIP());
if(!empty($userClass->geolocData)){
foreach($userClass->geolocData as $map => $value){
$mailer->addParam('geoloc:notif_'.$map, $value);
}
}
$mailer->addParamInfo();
$allUsers = explode(' ', trim(str_replace(array(';', ','), ' ', $notifConfirm)));
foreach($allUsers as $oneUser){
if(empty($oneUser)) continue;
$mailer->sendOne('notification_confirm', $oneUser);
}
}
if(!empty($redirectUrl)){
$replace = array();
foreach($user as $key => $val){
$replace['{'.$key.'}'] = $val;
$replace['{user:'.$key.'}'] = $val;
}
if($config->get('redirect_tags', 0) == 1) $redirectUrl = str_replace(array_keys($replace), $replace, $redirectUrl);
acymailing_redirect($redirectUrl);
}
if('joomla' == 'wordpress') acymailing_redirect(acymailing_rootURI());
acymailing_setVar('layout', 'confirm');
return parent::display();
}//endfct
function modify(){
$userClass = acymailing_get('class.subscriber');
$userClass->geolocRight = true;
$user = $userClass->identify(true);
if(empty($user)) return $this->subscribe();
acymailing_setVar('layout', 'modify');
return parent::display();
}
function subscribe(){
$userClass = acymailing_get('class.subscriber');
$userClass->geolocRight = true;
$currentUserid = acymailing_currentUserId();
if(!empty($currentUserid) AND $userClass->identify(true)){
return $this->modify();
}
$config = acymailing_config();
$allowvisitor = $config->get('allow_visitor', 1);
if(empty($allowvisitor)){
acymailing_askLog(true, 'ONLY_LOGGED', 'message');
return false;
}
acymailing_setVar('layout', 'modify');
return parent::display();
}
function unsub(){
$userClass = acymailing_get('class.subscriber');
$user = $userClass->identify();
if(empty($user)) return false;
$statsClass = acymailing_get('class.stats');
$statsClass->countReturn = false;
$statsClass->saveStats();
acymailing_setVar('layout', 'unsub');
return parent::display();
}
function saveunsub(){
acymailing_checkRobots();
$subscriberClass = acymailing_get('class.subscriber');
$subscriberClass->sendConf = false;
$listsubClass = acymailing_get('class.listsub');
$userHelper = acymailing_get('helper.user');
$config = acymailing_config();
$subscriber = new stdClass();
$subscriber->subid = acymailing_getVar('int', 'subid');
$user = $subscriberClass->identify();
if(!$user || empty($subscriber->subid) || $user->subid != $subscriber->subid){
echo "<script>alert('ERROR : You are not allowed to modify this user'); window.history.go(-1);</script>";
exit;
}
$refusemails = acymailing_getVar('int', 'refuse');
$unsuball = acymailing_getVar('int', 'unsuball');
$mailid = acymailing_getVar('int', 'mailid');
$oldUser = $subscriberClass->get($subscriber->subid);
$survey = acymailing_getVar('array', 'survey', array(), '');
$tagSurvey = '';
$data = array();
if(!empty($survey)){
foreach($survey as $oneResult){
if(empty($oneResult)) continue;
$data[] = "REASON::".str_replace(array("\n", "\r"), array('<br />', ''), strip_tags($oneResult));
}
$tagSurvey = implode('<br />', $data);
}
$replace = array();
$replace['REASON::'] = '<br />'.acymailing_translation('REASON').' : ';
$reasons = unserialize($config->get('unsub_reasons'));
foreach($reasons as $i => $oneReason){
if(preg_match('#^[A-Z_]*$#', $oneReason)){
$replace[$oneReason] = acymailing_translation($oneReason);
}
}
$tagSurvey = str_replace(array_keys($replace), $replace, $tagSurvey);
$historyClass = acymailing_get('class.acyhistory');
$historyClass->insert($subscriber->subid, 'unsubscribed', $data, $mailid);
$notifToSend = '';
$incrementUnsub = false;
if($refusemails OR $unsuball){
if($refusemails){
$subscriber->accept = 0;
if($config->get('unsubscription_message', 1) && strlen(acymailing_translation('CONFIRM_UNSUB_FULL')) > 0) acymailing_enqueueMessage(acymailing_translation('CONFIRM_UNSUB_FULL'));
$notifToSend = 'notification_refuse';
}elseif($unsuball){
$notifToSend = 'notification_unsuball';
}
$subscription = $subscriberClass->getSubscriptionStatus($subscriber->subid);
$updatelists = array();
foreach($subscription as $listid => $oneList){
if($oneList->status != -1){
$updatelists[-1][] = $listid;
}
}
$listsubClass->sendNotif = false;
if(!empty($updatelists)){
$status = $listsubClass->updateSubscription($subscriber->subid, $updatelists);
if($config->get('unsubscription_message', 1) && strlen(acymailing_translation('CONFIRM_UNSUB_ALL')) > 0) acymailing_enqueueMessage(acymailing_translation('CONFIRM_UNSUB_ALL'));
$incrementUnsub = true;
}else{
if($config->get('unsubscription_message', 1) && strlen(acymailing_translation('ERROR_NOT_SUBSCRIBED')) > 0) acymailing_enqueueMessage(acymailing_translation('ERROR_NOT_SUBSCRIBED'));
}
$subscriber->confirmed = 0;
$subscriberClass->save($subscriber);
}else{
$subscription = $subscriberClass->getSubscriptionStatus($subscriber->subid);
$allLists = acymailing_loadObjectList('SELECT b.listid, b.name, b.type FROM '.acymailing_table('listmail').' as a JOIN '.acymailing_table('list').' as b on a.listid = b.listid WHERE a.mailid = '.$mailid);
if(empty($allLists)){
$allLists = acymailing_loadObjectList('SELECT b.listid, b.name, b.type FROM '.acymailing_table('list').' as b WHERE b.welmailid = '.$mailid.' OR b.unsubmailid = '.$mailid);
}
if(empty($allLists)){
$allLists = acymailing_loadObjectList('SELECT b.listid, b.name, b.type FROM #__acymailing_listsub as a JOIN #__acymailing_list as b on a.listid = b.listid WHERE a.subid = '.$subscriber->subid);
}
$otherSubscriptionsBoxes = acymailing_getVar('array', 'unsubotherlists', array(), 'post');
$otherSubscriptionsId = acymailing_getVar('array', 'unsubotherlistsid', array(), 'post');
$othersubscriptionsToRemove = array();
if(!empty($otherSubscriptionsBoxes)){
$i = 0;
foreach($otherSubscriptionsBoxes as $anotherSubscriptionsBox => $value){
if($value == 1) $othersubscriptionsToRemove[] = intval($otherSubscriptionsId[$i]);
$i++;
}
$otherSubscriptions = acymailing_loadObjectList('SELECT listid, name, type FROM #__acymailing_list WHERE listid IN ('.implode(',', $othersubscriptionsToRemove).')');
foreach($otherSubscriptions as $anotherSubscription){
array_push($allLists, $anotherSubscription);
}
}
if(empty($allLists)){
echo "<script>alert('ERROR : Could not get the list for the mailing $mailid'); window.history.go(-1);</script>";
exit;
}
$campaignList = array();
$unsubList = array();
foreach($allLists as $oneList){
if(isset($subscription[$oneList->listid]) AND $subscription[$oneList->listid]->status != -1){
if($oneList->type == 'campaign'){
$campaignList[] = $oneList->listid;
}else{
$unsubList[$oneList->listid] = $oneList;
}
}
}
if(!empty($campaignList)){
$otherLists = acymailing_loadObjectList('SELECT b.listid, b.name, b.type FROM '.acymailing_table('listcampaign').' as a LEFT JOIN '.acymailing_table('list').' as b on a.listid = b.listid WHERE a.campaignid IN ('.implode(',', $campaignList).')');
if(!empty($otherLists)){
foreach($otherLists as $oneList){
if(isset($subscription[$oneList->listid]) AND $subscription[$oneList->listid]->status != -1){
$unsubList[$oneList->listid] = $oneList;
}
}
}
}
if(!empty($unsubList)){
$updatelists = array();
$updatelists[-1] = array_keys($unsubList);
$listsubClass->survey = $tagSurvey;
$status = $listsubClass->updateSubscription($subscriber->subid, $updatelists);
if($config->get('unsubscription_message', 1) && strlen(acymailing_translation('CONFIRM_UNSUB_CURRENT')) > 0) acymailing_enqueueMessage(acymailing_translation('CONFIRM_UNSUB_CURRENT'));
$incrementUnsub = true;
}else{
if($config->get('unsubscription_message', 1) && strlen(acymailing_translation('ERROR_NOT_SUBSCRIBED_CURRENT')) > 0) acymailing_enqueueMessage(acymailing_translation('ERROR_NOT_SUBSCRIBED_CURRENT'));
}
}
if($incrementUnsub){
$alreadythere = acymailing_loadResult('SELECT subid FROM #__acymailing_history WHERE `action` = "unsubscribed" AND `subid` = '.intval($subscriber->subid).' AND `mailid` = '.intval($mailid).' LIMIT 1,1');
if(empty($alreadythere)){
acymailing_query('UPDATE '.acymailing_table('stats').' SET `unsub` = `unsub` +1 WHERE `mailid` = '.(int)$mailid);
}
}
$classGeoloc = acymailing_get('class.geolocation');
$classGeoloc->saveGeolocation('unsubscription', $subscriber->subid);
if(!empty($notifToSend)){
$notifyUsers = $config->get($notifToSend);
if(!empty($notifyUsers)){
$mailer = acymailing_get('helper.mailer');
$mailer->autoAddUser = true;
$mailer->checkConfirmField = false;
$mailer->report = false;
foreach($oldUser as $field => $value) $mailer->addParam('user:'.$field, $value);
$mailer->addParam('user:subscription', $listsubClass->getSubscriptionString($oldUser->subid));
$mailer->addParam('user:subscriptiondates', $listsubClass->getSubscriptionString($oldUser->subid, true));
$mailer->addParam('user:ip', $userHelper->getIP());
$mailer->addParam('survey', $tagSurvey);
$mailer->addParamInfo();
$allUsers = explode(' ', trim(str_replace(array(';', ','), ' ', $notifyUsers)));
foreach($allUsers as $oneUser){
if(empty($oneUser)) continue;
$mailer->sendOne('notification_unsuball', $oneUser);
}
}
}
$redirectUnsub = $config->get('unsub_redirect');
if(!empty($redirectUnsub)){
$replace = array();
foreach($oldUser as $key => $val){
$replace['{'.$key.'}'] = $val;
$replace['{user:'.$key.'}'] = $val;
}
if($config->get('redirect_tags', 0) == 1) $redirectUnsub = str_replace(array_keys($replace), $replace, $redirectUnsub);
acymailing_redirect($redirectUnsub);
return;
}elseif('joomla' == 'wordpress'){
acymailing_redirect(acymailing_rootURI());
return;
}
acymailing_setVar('layout', 'saveunsub');
return parent::display();
}
function savechanges(){
acymailing_checkToken();
acymailing_checkRobots();
$config = acymailing_config();
$subscriberClass = acymailing_get('class.subscriber');
$subscriberClass->geolocRight = true;
$subscriberClass->extendedEmailVerif = true;
$status = $subscriberClass->saveForm();
$subscriberClass->sendNotification();
if($status){
if($subscriberClass->confirmationSent){
if($config->get('subscription_message', 1) && strlen(acymailing_translation('CONFIRMATION_SENT')) > 0) acymailing_enqueueMessage(acymailing_translation('CONFIRMATION_SENT'), 'message');
$redirectlink = $config->get('sub_redirect');
}elseif($subscriberClass->newUser){
if($config->get('subscription_message', 1) && strlen(acymailing_translation('SUBSCRIPTION_OK')) > 0) acymailing_enqueueMessage(acymailing_translation('SUBSCRIPTION_OK'), 'message');
$redirectlink = $config->get('sub_redirect');
}else{
if(strlen(acymailing_translation('SUBSCRIPTION_UPDATE_OK')) > 0) acymailing_enqueueMessage(acymailing_translation('SUBSCRIPTION_UPDATED_OK'), 'message');
$redirectlink = $config->get('modif_redirect');
}
}elseif($subscriberClass->requireId){
if(strlen(acymailing_translation('IDENTIFICATION_SENT')) > 0) acymailing_enqueueMessage(acymailing_translation('IDENTIFICATION_SENT'), 'notice');
}else{
if(strlen(acymailing_translation('ERROR_SAVING')) > 0) acymailing_enqueueMessage(acymailing_translation('ERROR_SAVING'), 'error');
}
if(!empty($redirectlink)){
if($config->get('redirect_tags', false)) {
$user = $subscriberClass->identify(true);
if(!empty($user->subid)) {
$replace = array();
foreach ($user as $key => $val) {
if(!is_array($val) && !is_object($val)) $replace['{' . $key . '}'] = $val;
}
$redirectlink = str_replace(array_keys($replace), $replace, $redirectlink);
}
}
acymailing_redirect($redirectlink);
return;
}
if($subscriberClass->identify(true)) return $this->modify();
return $this->subscribe();
}
}
PK dX!]�2Z@A @A controllers/sub.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
class SubController extends acymailingController{
function notask(){
$ajax = acymailing_getVar('int', 'ajax', 0);
if($ajax) header("Content-type:text/html; charset=utf-8");
if($ajax){
echo '{"message":"Please enable the Javascript to be able to subscribe","type":"error","code":"0"}';
exit;
}else{
$redirectUrl = urldecode(acymailing_getVar('string', 'redirect', '', ''));
$this->_checkRedirectUrl($redirectUrl);
acymailing_redirect($redirectUrl,'Please enable the Javascript to be able to subscribe','notice');
}
return false;
}
function display($dummy1 = false, $dummy2 = false){
$moduleId = acymailing_getVar('int', 'formid');
if(empty($moduleId)) return;
if(acymailing_getVar('int', 'interval') > 0) setcookie('acymailingSubscriptionState', true, time() + acymailing_getVar('int', 'interval'), '/');
$module = acymailing_loadObject('SELECT * FROM #__modules WHERE id = '.intval($moduleId).' AND `module` LIKE \'%acymailing%\' AND published = 1 LIMIT 1');
if(empty($module)){ echo 'No module found'; exit; }
$module->user = substr( $module->module, 0, 4 ) == 'mod_' ? 0 : 1;
$module->name = $module->user ? $module->title : substr( $module->module, 4 );
$module->style = null;
$module->module = preg_replace('/[^A-Z0-9_\.-]/i', '', $module->module);
$params = array();
if(acymailing_getVar('int', 'autofocus', 0)){
$js = "
window.addEventListener('load', function(){
this.focus();
var moduleInputs = document.getElementsByTagName('input');
if(moduleInputs){
var i = 0;
while(moduleInputs[i].disabled == true){
i++;
}
if(moduleInputs[i]) moduleInputs[i].focus();
}
});";
acymailing_addScript(true, $js);
}
echo JModuleHelper::renderModule($module, $params);
}
function optin(){
acymailing_checkRobots();
$config = acymailing_config();
if(!acymailing_getVar('cmd', 'acy_source') && !empty($_GET['user'])){
acymailing_setVar('acy_source','url');
}
$ajax = acymailing_getVar('int', 'ajax', 0);
if($ajax){
@ob_end_clean();
header("Content-type:text/html; charset=utf-8");
}
$currentUserid = acymailing_currentUserId();
if((int) $config->get('allow_visitor',1) != 1 && empty($currentUserid)){
if($ajax){
echo '{"message":"'.str_replace('"','\"',acymailing_translation('ONLY_LOGGED')).'","type":"error","code":"0"}';
exit;
}else{
acymailing_askLog(false, 'ONLY_LOGGED');
return;
}
}
$userClass = acymailing_get('class.subscriber');
$userClass->geolocRight = true;
$redirectUrl = urldecode(acymailing_getVar('string', 'redirect', '', ''));
$user = new stdClass();
$formData = acymailing_getVar('array', 'user', array(), '');
if(!empty($formData)){
$userClass->checkFields($formData,$user);
}
$allowUserModifications = (bool) ($config->get('allow_modif','data') == 'all');
$allowSubscriptionModifications = (bool) ($config->get('allow_modif','data') != 'none');
if(empty($user->email)){
$connectedUser = $userClass->identify(true);
if(!empty($connectedUser->email)){
$user->email = $connectedUser->email;
$allowUserModifications = true;
$allowSubscriptionModifications = true;
}
}
$user->email = trim($user->email);
$userHelper = acymailing_get('helper.user');
if(empty($user->email) || !$userHelper->validEmail($user->email,true)){
if ($ajax) echo '{"message":"'.str_replace('"','\"',acymailing_translation('VALID_EMAIL')).'","type":"error","code":"0"}';
else echo "<script>alert('".acymailing_translation('VALID_EMAIL',true)."'); window.history.go(-1);</script>";
exit;
}
if(!empty($user->email)) $user->email = acymailing_punycode($user->email);
$alreadyExists = $userClass->get($user->email);
if(!empty($alreadyExists->subid)){
if(!empty($alreadyExists->userid)) unset($user->name);
$user->subid = $alreadyExists->subid;
$currentSubscription = $userClass->getSubscriptionStatus($alreadyExists->subid);
}else{
$allowSubscriptionModifications = true;
$allowUserModifications = true;
$currentSubscription = array();
}
$user->accept = 1;
if($allowUserModifications){
$userClass->recordHistory = true;
$user->subid = $userClass->save($user);
}
$myuser = $userClass->get($user->subid);
if(empty($myuser->subid)){
if ($ajax) echo '{"message":"Could not save the user","type":"error","code":"1"}';
else echo "<script>alert('Could not save the user'); window.history.go(-1);</script>";
exit;
}
if(empty($myuser->accept)){
$myuser->accept = 1;
$userClass->save($myuser);
}
if(!$allowUserModifications && !empty($myuser->subid) && empty($myuser->confirmed)){
$userClass->sendConf($myuser->subid);
}
$statusAdd = (empty($myuser->confirmed) AND $config->get('require_confirmation',false)) ? 2 : 1;
$addlists = array();
$updatelists = array();
$hiddenlistsstring = acymailing_getVar('string', 'hiddenlists', '', '');
if(!empty($hiddenlistsstring)){
$hiddenlists = explode(',',$hiddenlistsstring);
acymailing_arrayToInteger($hiddenlists);
foreach($hiddenlists as $id => $idOneList){
if(!isset($currentSubscription[$idOneList])){
$addlists[$statusAdd][] = $idOneList;
continue;
}
if($currentSubscription[$idOneList]->status == $statusAdd || $currentSubscription[$idOneList]->status == 1) continue;
$updatelists[$statusAdd][] = $idOneList;
}
}
$visibleSubscription = acymailing_getVar('array', 'subscription', '', '');
if(!empty($visibleSubscription)){
foreach($visibleSubscription as $idOneList){
if(empty($idOneList)) continue;
if(!isset($currentSubscription[$idOneList])){
$addlists[$statusAdd][] = $idOneList;
continue;
}
if($currentSubscription[$idOneList]->status == $statusAdd || $currentSubscription[$idOneList]->status == 1) continue;
$updatelists[$statusAdd][] = $idOneList;
}
}
$visiblelistsstring = acymailing_getVar('string', 'visiblelists', '', '');
if(!empty($visiblelistsstring)){
$visiblelist = explode(',',$visiblelistsstring);
acymailing_arrayToInteger($visiblelist);
foreach($visiblelist as $idList){
if(!in_array($idList,$visibleSubscription) AND !empty($currentSubscription[$idList]) AND $currentSubscription[$idList]->status != '-1'){
$updatelists['-1'][] = $idList;
}
}
}
$listsubClass = acymailing_get('class.listsub');
$status = true;
$updateMessage = false;
$insertMessage = false;
if($allowSubscriptionModifications){
if(!empty($updatelists)){
$status = $listsubClass->updateSubscription($myuser->subid,$updatelists) && $status;
$updateMessage = true;
}
if(!empty($addlists)){
$status = $listsubClass->addSubscription($myuser->subid,$addlists) && $status;
$insertMessage = true;
}
}else{
$mailClass = acymailing_get('helper.mailer');
$mailClass->checkConfirmField = false;
$mailClass->checkEnabled = false;
$mailClass->report = false;
$modifySubscriptionSuccess = $mailClass->sendOne('modif',$myuser->subid);
$modifySubscriptionError = $mailClass->reportMessage;
}
$userClass->sendNotification();
if($config->get('subscription_message',1) || $ajax){
if($allowSubscriptionModifications){
if($statusAdd == 2){
if($userClass->confirmationSentSuccess){
$msg = 'CONFIRMATION_SENT';
$code = 2;
$msgtype = 'success';
}else{
$msg = $userClass->confirmationSentError;
$code = 7;
$msgtype = 'error';
}
}else{
if($insertMessage){
$msg = 'SUBSCRIPTION_OK';
$code = 3;
$msgtype = 'success';
}elseif($updateMessage){
$msg = 'SUBSCRIPTION_UPDATED_OK';
$code = 4;
$msgtype = 'success';
}else{
$msg = 'ALREADY_SUBSCRIBED';
$code = 5;
$msgtype = 'success';
}
}
}else{
if($modifySubscriptionSuccess){
$msg = 'IDENTIFICATION_SENT';
$code = 6;
$msgtype = 'warning';
}else{
$msg = $modifySubscriptionError;
$code = 8;
$msgtype = 'error';
}
}
if($msg == strtoupper($msg)){
$source = acymailing_getVar('cmd', 'acy_source');
if(strpos($source, 'module_') !== false){
$moduleId = '_'.strtoupper($source);
if(acymailing_translation($msg.$moduleId) != $msg.$moduleId) $msg = $msg.$moduleId;
}
$msg = acymailing_translation($msg);
}
$replace = array();
$replace['{list:name}'] = '';
foreach($myuser as $oneProp => $oneVal){
$replace['{user:'.$oneProp.'}'] = $oneVal;
}
$msg = str_replace(array_keys($replace),$replace,$msg);
if($config->get('redirect_tags', 0) == 1) $redirectUrl = str_replace(array_keys($replace),$replace,$redirectUrl);
if($ajax){
$msg = str_replace(array("\n","\r",'"','\\'),array(' ',' ',"'",'\\\\'),$msg);
echo '{"message":"'.$msg.'","type":"'.($msgtype == 'warning' ? 'success' : $msgtype).'","code":"'.$code.'"}';
}elseif(empty($redirectUrl)){
acymailing_enqueueMessage($msg,$msgtype == 'success' ? 'info' : $msgtype);
}else{
if(strlen($msg)>0){
if($msgtype == 'success') acymailing_enqueueMessage($msg);
elseif($msgtype == 'warning') acymailing_enqueueMessage($msg,'notice');
else acymailing_enqueueMessage($msg,'error');
}
}
}
$notifContact = $config->get('notification_contact');
if(!empty($notifContact)){
$mailer = acymailing_get('helper.mailer');
$mailer->autoAddUser = true;
$mailer->checkConfirmField = false;
$mailer->report = false;
foreach($user as $field => $value) $mailer->addParam('user:'.$field,$value);
$mailer->addParam('user:subscription',$listsubClass->getSubscriptionString($user->subid));
$mailer->addParam('user:subscriptiondates',$listsubClass->getSubscriptionString($user->subid, true));
$mailer->addParam('user:ip',$userHelper->getIP());
if(!empty($userClass->geolocData)){
foreach($userClass->geolocData as $map=>$value){
$mailer->addParam('geoloc:notif_'.$map,$value);
}
}
$mailer->addParamInfo();
$allUsers = explode(' ',trim(str_replace(array(';',','),' ',$notifContact)));
foreach($allUsers as $oneUser){
if(empty($oneUser)) continue;
$mailer->sendOne('notification_contact',$oneUser);
}
}
if ($ajax) exit;
$this->_closepop($redirectUrl);
if(!empty($redirectUrl)) acymailing_redirect($redirectUrl);
if('joomla' == 'wordpress') acymailing_redirect(acymailing_rootURI());
return true;
}
private function _closepop($redirectUrl){
$this->_checkRedirectUrl($redirectUrl);
if(empty($redirectUrl)) return;
if(!acymailing_getVar('int', 'closepop')) acymailing_redirect($redirectUrl);
echo '<script type="text/javascript" language="javascript">
window.parent.document.location.href=\''.str_replace('&','&',$redirectUrl).'\';
</script>';
$app = JFactory::getApplication();
$messages = $app->getMessageQueue();
if(!empty($messages)){
$session = JFactory::getSession();
$session->set('application.queue', $messages);
}
exit;
}
function optout(){
acymailing_checkRobots();
$config = acymailing_config();
$userClass = acymailing_get('class.subscriber');
$userClass->geolocRight = true;
$ajax = acymailing_getVar('int', 'ajax', 0);
if($ajax){
@ob_end_clean();
header("Content-type:text/html; charset=utf-8");
}
$redirectUrl = urldecode(acymailing_getVar('string', 'redirectunsub'));
$formData = acymailing_getVar('array', 'user', array(), '');
$email = trim(strip_tags(@$formData['email']));
$currentEmail = acymailing_currentUserEmail();
if(empty($email) && !empty($currentEmail)){
$email = $currentEmail;
}
$userHelper = acymailing_get('helper.user');
if(empty($email) || !$userHelper->validEmail($email)){
if ($ajax) echo '{"message":"'.str_replace('"','\"',acymailing_translation('VALID_EMAIL')).'","type":"error","code":"7"}';
else echo "<script>alert('".acymailing_translation('VALID_EMAIL',true)."'); window.history.go(-1);</script>";
exit;
}
$alreadyExists = $userClass->get($email);
if(empty($alreadyExists->subid)){
if ($ajax){
echo '{"message":"'.str_replace('"','\"',acymailing_translation_sprintf('NOT_IN_LIST','<b><i>'.$email.'</i></b>')).'","type":"error","code":"8"}';
exit;
}
if(empty($redirectUrl)) acymailing_enqueueMessage(acymailing_translation_sprintf('NOT_IN_LIST','<b><i>'.$email.'</i></b>'),'warning');
else acymailing_enqueueMessage(acymailing_translation_sprintf('NOT_IN_LIST','<b><i>'.$email.'</i></b>'),'notice');
return $this->_closepop($redirectUrl);
}
$currentEmail = acymailing_currentUserEmail();
if($config->get('allow_modif','data') == 'none' AND (empty($currentEmail) || $currentEmail != $email)){
$mailClass = acymailing_get('helper.mailer');
$mailClass->checkConfirmField = false;
$mailClass->checkEnabled = false;
$mailClass->report = false;
$mailClass->sendOne('modif',$alreadyExists->subid);
if ($ajax){
echo '{"message":"'.str_replace('"','\"',acymailing_translation('IDENTIFICATION_SENT')).'","type":"success","code":"9"}';
exit;
}
if(empty($redirectUrl)) acymailing_enqueueMessage(acymailing_translation( 'IDENTIFICATION_SENT' ),'warning');
else acymailing_enqueueMessage(acymailing_translation( 'IDENTIFICATION_SENT' ), 'notice');
return $this->_closepop($redirectUrl);
}
$visibleSubscription = acymailing_getVar('array', 'subscription', '', '');
$currentSubscription = $userClass->getSubscriptionStatus($alreadyExists->subid);
$hiddenSubscription = explode(',',acymailing_getVar('string', 'hiddenlists', '', ''));
$updatelists = array();
$removeSubscription = array_merge($visibleSubscription,$hiddenSubscription);
foreach($removeSubscription as $idList){
if(!empty($currentSubscription[$idList]) AND $currentSubscription[$idList]->status != '-1'){
$updatelists[-1][] = $idList;
}
}
if(!empty($updatelists)){
$listsubClass = acymailing_get('class.listsub');
$listsubClass->updateSubscription($alreadyExists->subid,$updatelists);
if($config->get('unsubscription_message',1)){
if ($ajax){
echo '{"message":"'.str_replace('"','\"',acymailing_translation('UNSUBSCRIPTION_OK')).'","type":"success","code":"10"}';
exit;
}
if(empty($redirectUrl)) acymailing_enqueueMessage(acymailing_translation('UNSUBSCRIPTION_OK'),'info');
else{
if(strlen(acymailing_translation('UNSUBSCRIPTION_OK'))>0){
acymailing_enqueueMessage(acymailing_translation('UNSUBSCRIPTION_OK'));
}
}
}
}elseif($config->get('unsubscription_message',1) || $ajax){
if ($ajax){
echo '{"message":"'.str_replace('"','\"',acymailing_translation('UNSUBSCRIPTION_NOT_IN_LIST')).'","type":"success","code":"11"}';
exit;
}
if(empty($redirectUrl)) acymailing_enqueueMessage(acymailing_translation('UNSUBSCRIPTION_NOT_IN_LIST'),'info');
else acymailing_enqueueMessage(acymailing_translation('UNSUBSCRIPTION_NOT_IN_LIST'));
}
if ($ajax) exit;
return $this->_closepop($redirectUrl);
}
function _checkRedirectUrl($redirectUrl){
$config = acymailing_config();
$regex = trim(preg_replace('#[^a-z0-9\|\.]#i','',$config->get('module_redirect')),'|');
if(empty($regex) || $regex == 'all' || empty($redirectUrl) || 'joomla' != 'joomla') return;
preg_match('#^(https?://)?(www.)?([^/]*)#i',$redirectUrl,$resultsurl);
$domainredirect = preg_replace('#[^a-z0-9\.]#i','',@$resultsurl[3]);
if(preg_match('#^'.$regex.'$#i',$domainredirect)) return;
$regex .= '|'.$domainredirect;
echo "<script>alert('This redirect url is not allowed, you should change the \"".acymailing_translation('REDIRECTION_MODULE',true)."\" parameter from the AcyMailing configuration page to \"".$regex."\" to allow it or set it to \"all\" to allow all urls'); window.history.go(-1);</script>";
exit;
}
function listing(){
$errorMsg = "You shouldn't see this page. If you come from an external subscription form, maybe the URL in the form action is not valid.";
if(!empty($_SERVER['HTTP_HOST'])) $errorMsg .= "<br />Host: ".htmlspecialchars($_SERVER['HTTP_HOST'],ENT_COMPAT, 'UTF-8');
if(!empty($_SERVER['REQUEST_URI'])) $errorMsg .= "<br />URI: ".htmlspecialchars($_SERVER['REQUEST_URI'],ENT_COMPAT, 'UTF-8');
if(!empty($_SERVER['HTTP_REFERER'])) $errorMsg .= "<br />Referer: ".htmlspecialchars($_SERVER['HTTP_REFERER'],ENT_COMPAT, 'UTF-8');
acymailing_display($errorMsg, 'error');
}
}
PK dX!]��O�a a controllers/statistics.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
acymailing_cmsLoaded();
class StatisticsController extends acymailingController{
function listing(){
acymailing_setVar('tmpl','component');
$statsClass = acymailing_get('class.stats');
$statsClass->saveStats();
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
header("Expires: Wed, 17 Sep 1975 21:32:10 GMT");
ob_end_clean();
acymailing_importPlugin('acymailing');
$results = acymailing_trigger('acymailing_getstatpicture');
$picture = reset($results);
if(empty($picture)) $picture = 'media/com_acymailing/images/statpicture.png';
$picture = ltrim(str_replace(array('\\','/'),DS,$picture),DS);
$imagename = ACYMAILING_ROOT.$picture;
$handle = fopen($imagename, 'r');
if(!$handle) exit;
header("Content-type: image/png");
$contents = fread($handle, filesize($imagename));
fclose($handle);
echo $contents;
exit;
}
}
PK dX!]�뾎q q controllers/frontemail.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
$userid = acymailing_currentUserId();
if(empty($userid)) die(acymailing_translation('ASK_LOG'));
$config = acymailing_config();
if(!acymailing_isAllowed($config->get('acl_lists_manage', 'all'))) die('You are not allowed to access this page');
include(ACYMAILING_BACK.'controllers'.DS.'email.php');
class FrontemailController extends EmailController{
}
PK dX!]����4 4 controllers/frontlist.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
$currentUserid = acymailing_currentUserId();
if(empty($currentUserid)){
acymailing_askLog();
return false;
}
$config = acymailing_config();
if(!acymailing_isAllowed($config->get('acl_lists_manage', 'all'))) die(acymailing_translation('ACY_NOTALLOWED'));
include(ACYMAILING_BACK.'controllers'.DS.'list.php');
class FrontlistController extends ListController{
function __construct($config = array()){
parent::__construct($config);
$listClass = acymailing_get('class.list');
$lists = $listClass->getFrontendLists('listid');
$listid = acymailing_getVar('int', 'listid', 0);
if(empty($lists) || (!empty($listid) && !in_array($listid, array_keys($lists)))) {
acymailing_redirect('index.php', acymailing_translation('ACY_NOTALLOWED'), 'error');
return false;
}
}
function remove(){
$cids = acymailing_getVar('array', 'cid', array(), '');
acymailing_arrayToInteger($cids);
if(empty($cids)) acymailing_redirect('index.php?option=com_acymailing&ctrl=frontlist');
$lists = acymailing_loadObjectList('SELECT * FROM `#__acymailing_list` WHERE listid IN ('.implode(',', $cids).')');
foreach($lists as $list){
if(acymailing_currentUserId() != $list->userid){
acymailing_enqueueMessage(acymailing_translation_sprintf('ACY_NO_ACCESS_LIST', $list->listid), 'error');
array_splice($cids, array_search($list->listid, $cids), 1);
}
}
acymailing_setVar('cid', $cids);
return parent::remove();
}
function form(){
return $this->edit();
}
function edit(){
acymailing_setVar('layout', 'form');
return parent::display();
}
}
PK dX!]�]Pb1 1 controllers/stats.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
class StatsController extends acymailingController{
var $aclCat = 'statistics';
function detaillisting(){
if(!$this->isAllowed('statistics','manage')) return;
acymailing_setVar( 'layout', 'detaillisting' );
return parent::display();
}
function unsubscribed(){
if(!$this->isAllowed('statistics','manage')) return;
acymailing_setVar( 'layout', 'unsubscribed' );
return parent::display();
}
function forward(){
if(!$this->isAllowed('statistics','manage')) return;
acymailing_setVar( 'layout', 'forward' );
return parent::display();
}
function unsubchart(){
if(!$this->isAllowed('statistics','manage')) return;
acymailing_setVar( 'layout', 'unsubchart' );
return parent::display();
}
function mailinglist(){
if(!$this->isAllowed('statistics','manage')) return;
acymailing_setVar( 'layout', 'mailinglist' );
return parent::display();
}
function remove(){
if(!$this->isAllowed('statistics','delete')) return;
acymailing_checkToken();
$cids = acymailing_getVar('array', 'cid', array(), '');
$class = acymailing_get('class.stats');
$num = $class->delete($cids);
acymailing_enqueueMessage(acymailing_translation_sprintf('SUCC_DELETE_ELEMENTS',$num), 'message');
return $this->listing();
}
function export(){
$selectedMail = acymailing_getVar('int', 'filter_mail', 0);
$selectedStatus = acymailing_getVar('string', 'filter_status', '');
$selectedBounce = acymailing_getVar('string', 'filter_bounce', '');
$filters = array();
if(!empty($selectedMail)) $filters[] = 'userstats.mailid = '.$selectedMail;
if(!empty($selectedStatus)){
if($selectedStatus == 'bounce') $filters[] = 'userstats.bounce > 0';
elseif($selectedStatus == 'open') $filters[] = 'userstats.open > 0';
elseif($selectedStatus == 'notopen') $filters[] = 'userstats.open < 1';
elseif($selectedStatus == 'failed') $filters[] = 'userstats.fail > 0';
}
if(!empty($selectedStatus) && $selectedStatus == 'bounce' && !empty($selectedBounce)) $filters[] = "userstats.bouncerule = ".acymailing_escapeDB($selectedBounce);
$query = 'FROM `#__acymailing_userstats` as userstats JOIN `#__acymailing_subscriber` as s ON s.subid = userstats.subid';
if(!empty($filters)) $query .= ' WHERE ('.implode(') AND (',$filters).')';
acymailing_session();
$_SESSION['acymailing']['acyexportquery'] = $query;
acymailing_redirect(acymailing_completeLink((acymailing_isAdmin() ? '' : 'front').'data&task=export&sessionquery=1', acymailing_isNoTemplate(),true));
}
public function exportUnsubscribed(){
return $this->exportData('unsubscribed');
}
public function exportForward(){
return $this->exportData('forward');
}
private function exportData($action){
$selectedMail = acymailing_getVar('int', 'filter_mail', 0);
$filters = array();
$filters[] = "hist.action = ".acymailing_escapeDB($action);
if(!empty($selectedMail)) $filters[] = 'hist.mailid = '.intval($selectedMail);
$query = 'FROM #__acymailing_history as hist JOIN #__acymailing_mail as b on hist.mailid = b.mailid JOIN #__acymailing_subscriber as s on hist.subid = s.subid';
if(!empty($filters)) $query .= ' WHERE ('.implode(') AND (',$filters).')';
acymailing_session();
$_SESSION['acymailing']['acyexportquery'] = $query;
acymailing_redirect(acymailing_completeLink((acymailing_isAdmin() ? '' : 'front').'data&task=export&sessionquery=1',true,true));
}
function exportglobal(){
$extraJoin = '';
$nlCondition = array();
$cids = acymailing_getVar('none', 'cid');
acymailing_arrayToInteger($cids);
if(!empty($cids)){
$nlCondition[] = 'a.mailid IN (' . implode(', ', $cids) . ')';
}elseif (!acymailing_isAdmin()) {
$listClass = acymailing_get('class.list');
$lists = $listClass->getFrontendLists('listid');
$frontListsIds = array_keys($lists);
$extraJoin = " JOIN #__acymailing_listmail AS lm ON a.mailid = lm.mailid";
$filters[] = 'lm.listid IN (' . implode(',', $frontListsIds) . ')';
}
$query = 'SELECT b.subject, a.senddate, a.* , a.bouncedetails
FROM #__acymailing_stats AS a
JOIN #__acymailing_mail AS b ON a.mailid = b.mailid '.$extraJoin;
if(!empty($nlCondition)) $query .= ' WHERE '.implode(' AND ', $nlCondition);
$query .= ' ORDER BY a.senddate DESC';
$mydata = acymailing_loadObjectList($query);
$exportHelper = acymailing_get('helper.export');
$config = acymailing_config();
$encodingClass = acymailing_get('helper.encoding');
$exportHelper->addHeaders('globalStatistics_' . date('m_d_y'));
$eol= "\r\n";
$before = '"';
$separator = '"'.str_replace(array('semicolon','comma'),array(';',','), $config->get('export_separator',';')).'"';
$exportFormat = $config->get('export_format','UTF-8');
$after = '"';
$forwardEnabled = $config->get('forward', 0);
$titles = array(acymailing_translation( 'JOOMEXT_SUBJECT'), acymailing_translation( 'SEND_DATE' ), acymailing_translation( 'OPEN_UNIQUE' ), acymailing_translation('OPEN_TOTAL'), acymailing_translation('OPEN').' (%)');
if(acymailing_level(1)) array_push($titles, acymailing_translation('UNIQUE_HITS'), acymailing_translation('TOTAL_HITS'), acymailing_translation( 'CLICKED_LINK' ).' (%)');
array_push($titles, acymailing_translation( 'UNSUBSCRIBE' ), acymailing_translation( 'UNSUBSCRIBE' ).' (%)');
if(acymailing_level(1) && $forwardEnabled == 1) array_push($titles, acymailing_translation( 'FORWARDED' ));
array_push($titles, acymailing_translation( 'SENT_HTML' ), acymailing_translation( 'SENT_TEXT' ));
if(acymailing_level(3)) array_push($titles,acymailing_translation( 'BOUNCES' ), acymailing_translation( 'BOUNCES' ).' (%)');
array_push($titles, acymailing_translation( 'FAILED' ), acymailing_translation( 'ACY_ID' ));
$titleLine = $before.implode($separator, $titles).$after.$eol;
echo $titleLine;
foreach($mydata as $nl){
$line = $nl->subject . $separator;
$line.= acymailing_getDate($nl->senddate) . $separator;
$line.= $nl->openunique . $separator;
$line.= $nl->opentotal . $separator;
$cleanSent = $nl->senthtml + $nl->senttext;
if(acymailing_level(3)) $cleanSent = $cleanSent - $nl->bounceunique;
$prct = (!empty($cleanSent)? round($nl->openunique/$cleanSent*100,2):'-');
$line.= $prct . '%' . $separator;
if(acymailing_level(1)){
$line.= $nl->clickunique . $separator;
$line.= $nl->clicktotal . $separator;
$prct = (!empty($cleanSent)? round($nl->clickunique/$cleanSent*100,2):'-');
$line.= $prct . '%' . $separator;
}
$line.= $nl->unsub . $separator;
$prct = (!empty($cleanSent)? round($nl->unsub/$cleanSent*100,2):'-');
$line.= $prct . '%' . $separator;
if(acymailing_level(1) && $forwardEnabled == 1){
$line.= $nl->forward . $separator;
}
$line.= $nl->senthtml . $separator;
$line.= $nl->senttext . $separator;
if(acymailing_level(3)){
$line.= $nl->bounceunique . $separator;
$prct = (!empty($nl->senthtml)? round($nl->bounceunique/($nl->senthtml+$nl->senttext)*100,2):'-');
$line.= $prct . '%' . $separator;
}
$line.= $nl->fail . $separator;
$line.= $nl->mailid;
$line = $before.$encodingClass->change($line, 'UTF-8', $exportFormat).$after.$eol;
echo $line;
}
exit;
}
function compare(){
if(!$this->isAllowed('statistics','manage')) return;
$ids = acymailing_getVar('array', 'cid', array(), '');
acymailing_arrayToInteger($ids);
if(empty($_SESSION['acycomparison'])){
$_SESSION['acycomparison'] = $ids;
}else{
$_SESSION['acycomparison'] = array_unique(array_merge($_SESSION['acycomparison'], $ids));
}
if(count($_SESSION['acycomparison']) > 5){
acymailing_enqueueMessage(acymailing_translation('ACY_MAX_COMPARE'), 'warning');
$_SESSION['acycomparison'] = array_slice($_SESSION['acycomparison'], 0, 5);
}elseif(count($_SESSION['acycomparison']) < 2){
acymailing_enqueueMessage(acymailing_translation('ACY_MIN_COMPARE'), 'info');
acymailing_setVar( 'layout', 'listing' );
return parent::display();
}
acymailing_setVar( 'layout', 'compare' );
return parent::display();
}
function addcompare(){
if(!$this->isAllowed('statistics','manage')) return;
$ids = acymailing_getVar('array', 'cid', array(), '');
acymailing_arrayToInteger($ids);
if(empty($_SESSION['acycomparison'])){
$_SESSION['acycomparison'] = $ids;
}else{
$_SESSION['acycomparison'] = array_unique(array_merge($_SESSION['acycomparison'], $ids));
}
if(count($_SESSION['acycomparison']) > 5){
acymailing_enqueueMessage(acymailing_translation('ACY_MAX_COMPARE'), 'warning');
$_SESSION['acycomparison'] = array_slice($_SESSION['acycomparison'], 0, 5);
}elseif(count($_SESSION['acycomparison']) < 2){
acymailing_enqueueMessage(acymailing_translation('ACY_MIN_COMPARE'), 'info');
}
acymailing_setVar( 'layout', 'listing' );
return parent::display();
}
function resetcompare(){
if(!$this->isAllowed('statistics','manage')) return;
$_SESSION['acycomparison'] = array();
acymailing_setVar( 'layout', 'listing' );
return parent::display();
}
function opendays(){
$tags = acymailing_getVar('string', 'tags', '');
if(empty($tags)){
$intoQuery = 'SELECT opendate FROM ' . acymailing_table('userstats') . ' WHERE opendate > 0 LIMIT 5000';
$statsDays = acymailing_loadObjectList('SELECT COUNT(*) AS nb, FROM_UNIXTIME(opendate,\'%w\') AS day FROM ('.$intoQuery.') AS a GROUP BY day', 'day');
}else{
$tags = explode(',', $tags);
acymailing_arrayToInteger($tags);
$tagsData = acymailing_loadObjectList('SELECT * FROM ' . acymailing_table('tagmail') . ' WHERE tagid IN ('.implode(',', $tags).')');
$mails = array();
foreach($tagsData as $oneData){
$mails[$oneData->mailid][] = $oneData->tagid;
}
foreach($mails as $i => $oneMail){
foreach($tags as $oneTag) {
if(!in_array($oneTag, $oneMail)){
unset($mails[$i]);
break;
}
}
}
$eligibleMails = array_keys($mails);
if(empty($eligibleMails)){
$statsDays = array();
}else {
$intoQuery = 'SELECT opendate
FROM ' . acymailing_table('userstats') . '
WHERE opendate > 0 AND mailid IN (' . implode(',', $eligibleMails) . ')
LIMIT 5000';
$statsDays = acymailing_loadObjectList('SELECT COUNT(*) AS nb, FROM_UNIXTIME(opendate,\'%w\') AS day FROM ('.$intoQuery.') AS a GROUP BY day', 'day');
}
}
$total = 0;
foreach ($statsDays as $oneDay) {
$total += $oneDay->nb;
}
if(!empty($statsDays[0])){
$statsDays[7] = $statsDays[0];
unset($statsDays[0]);
}
$days = array('ACY_MONDAY', 'ACY_TUESDAY', 'ACY_WEDNESDAY', 'ACY_THURSDAY', 'ACY_FRIDAY', 'ACY_SATURDAY', 'ACY_SUNDAY');
foreach($days as $i => &$text){
$text = "['".acymailing_translation($text, true)."', ".(empty($statsDays[$i+1]) ? 0 : intval($statsDays[$i+1]->nb * 100 / $total))."]";
}
?>
<div id="chart"></div>
<script language="JavaScript" type="text/javascript">
function drawChart(){
var dataTable = new google.visualization.DataTable();
dataTable.addColumn('string', '');
dataTable.addColumn('number', '');
dataTable.addRows([<?php echo implode(',', $days); ?>]);
var options = {
height: 300,
legend: 'none',
legendTextStyle: {
color: '#333333'
},
legend: {position: 'none'},
axes: {
x: {
0: {side: 'top'}
}
},
vAxis: {
format: '#\'%\''
}
};
var chart = new google.charts.Bar(document.getElementById('chart'));
chart.draw(dataTable, google.charts.Bar.convertOptions(options));
}
drawChart();
</script>
<?php
exit;
}
function detecttimeout(){
$config = acymailing_config();
if($config->get('security_key') != acymailing_getVar('string', 'seckey')) die('wrong key');
acymailing_query("REPLACE INTO `#__acymailing_config` (`namekey`,`value`) VALUES ('max_execution_time','5'), ('last_maxexec_check','".time()."')");
@ini_set('max_execution_time',600);
@ignore_user_abort(true);
$i = 0;
while($i < 480){
sleep(8);
$i += 10;
acymailing_query("UPDATE `#__acymailing_config` SET `value` = '".intval($i)."' WHERE `namekey` = 'max_execution_time'");
acymailing_query("UPDATE `#__acymailing_config` SET `value` = '".time()."' WHERE `namekey` = 'last_maxexec_check'");
sleep(2);
}
exit;
}
}
PK dX!]R�ҹ� � controllers/frontbounces.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
$currentUserid = acymailing_currentUserId();
if(empty($currentUserid)){
acymailing_askLog();
return false;
}
$config = acymailing_config();
if(!acymailing_isAllowed($config->get('acl_statistics_manage', 'all'))) die(acymailing_translation('ACY_NOTALLOWED'));
include(ACYMAILING_BACK.'controllers'.DS.'bounces.php');
class FrontbouncesController extends BouncesController{
function __construct($config = array()){
parent::__construct($config);
$task = acymailing_getVar('cmd', 'task');
if($task != 'chart') die(acymailing_translation('ACY_NOTALLOWED'));
}
function chart(){
acymailing_setVar('layout', 'chart');
return parent::display();
}
}
PK dX!]��� � controllers/url.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
class UrlController extends acymailingController{
function __construct($config = array())
{
parent::__construct($config);
acymailing_setVar('tmpl','component');
$this->registerDefaultTask('click');
}
function sef(){
$urls = acymailing_getVar('array', 'urls', array(), '');
$result = array();
$uri = acymailing_rootURI();
foreach($urls as $url){
$url = base64_decode($url);
$link = acymailing_route($url, false);
if(!empty($uri) && strpos($link, $uri) === 0) $link = substr($link, strlen($uri));
$link = ltrim($link, '/');
$mainurl = acymailing_mainURL($link);
$result[$url] = $mainurl.$link;
}
echo json_encode($result);
exit;
}
}
PK dX!]�#o, , controllers/index.htmlnu &1i� <html><body bgcolor="#FFFFFF"></body></html>PK dX!]���G G controllers/lists.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
class ListsController extends acymailingController{
}
PK dX!]:�-� � controllers/frontchooselist.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
include(ACYMAILING_BACK.'controllers'.DS.'chooselist.php');
class FrontchooselistController extends ChooselistController{
}
PK dX!]�hu�� � controllers/frontfile.phpnu &1i� <?php
/**
* @package AcyMailing for Joomla!
* @version 5.9.6
* @author acyba.com
* @copyright (C) 2009-2018 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
$currentUserid = acymailing_currentUserId();
if(empty($currentUserid)){
acymailing_askLog();
return false;
}
include(ACYMAILING_BACK.'controllers'.DS.'file.php');
class FrontfileController extends FileController
{
function __construct($config = array()){
parent::__construct($config);
$task = acymailing_getVar('string', 'task');
if($task != 'select') die('Access not allowed');
}
function select(){
acymailing_setVar('layout', 'select');
return parent::display();
}
}
PK dX!]�#o, ,
index.htmlnu &1i� <html><body bgcolor="#FFFFFF"></body></html>PK dX!]�#o, , % views/frontchooselist/tmpl/index.htmlnu &1i� <html><body bgcolor="#FFFFFF"></body></html>PK dX!]��E�\ \ &