Файловый менеджер - Редактировать - /home/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�\ \ &