Файловый менеджер - Редактировать - /home/wuectly/www/03cbe/com_acymailing.tar
Назад
acymailing.php 0000604 00000005435 15245530272 0007402 0 ustar 00 <?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 jimport('joomla.application.component.controller'); jimport('joomla.application.component.view'); include_once(rtrim(JPATH_ADMINISTRATOR, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php'); if(acymailing_isDebug()) acymailing_displayErrors(); $view = acymailing_getVar('cmd', 'view'); if(!empty($view) AND !acymailing_getVar('cmd', 'ctrl')){ acymailing_setVar('ctrl', $view); $layout = acymailing_getVar('cmd', 'layout'); if(!empty($layout)){ acymailing_setVar('task', $layout); } } $taskGroup = acymailing_getVar('cmd', 'ctrl', acymailing_getVar('cmd', 'gtask', 'lists')); global $Itemid; if(empty($Itemid)){ $urlItemid = acymailing_getVar('int', 'Itemid'); if(!empty($urlItemid)) $Itemid = $urlItemid; } $config = acymailing_config(); acymailing_addScript(false, ACYMAILING_JS.'acymailing.js?v='.str_replace('.', '', $config->get('version'))); 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); } $cssFrontend = $config->get('css_frontend', 'default'); if(!empty($cssFrontend)){ acymailing_addStyle(false, ACYMAILING_CSS.'component_'.$cssFrontend.'.css?v='.filemtime(ACYMAILING_MEDIA.'css'.DS.'component_'.$cssFrontend.'.css')); } if($taskGroup == 'newsletter') $taskGroup = 'frontnewsletter'; if(!file_exists(ACYMAILING_CONTROLLER_FRONT.$taskGroup.'.php') || !include(ACYMAILING_CONTROLLER_FRONT.$taskGroup.'.php')){ return acymailing_raiseError(E_ERROR, 404, 'Page not found : '.$taskGroup); } $className = ucfirst($taskGroup).'Controller'; $classGroup = new $className(); acymailing_setVar('view', $classGroup->getName()); $action = acymailing_getVar('cmd', 'task'); if(empty($action)){ $action = acymailing_getVar('cmd', 'defaulttask'); acymailing_setVar('task', $action); } $classGroup->execute($action); $classGroup->redirect(); if(acymailing_getVar('string', 'tmpl') !== 'component' && !in_array(acymailing_getVar('cmd', 'task'), array('unsub', 'saveunsub', 'optout', 'out', 'view'))){ echo acymailing_footer(); } router.php 0000604 00000004070 15245530272 0006577 0 ustar 00 <?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; } controllers/archive.php 0000604 00000001643 15245530272 0011251 0 ustar 00 <?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(); } } controllers/user.php 0000604 00000034371 15245530272 0010612 0 ustar 00 <?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(); } } controllers/sub.php 0000604 00000040500 15245530272 0010414 0 ustar 00 <?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'); } } controllers/statistics.php 0000604 00000002541 15245530272 0012020 0 ustar 00 <?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; } } controllers/frontemail.php 0000604 00000001161 15245530272 0011763 0 ustar 00 <?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{ } controllers/frontlist.php 0000604 00000003464 15245530272 0011657 0 ustar 00 <?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(); } } controllers/stats.php 0000604 00000003767 15245530272 0010777 0 ustar 00 <?php /** * @package AcyMailing for Joomla! * @version 5.6.1 * @author acyba.com * @copyright (C) 2009-2017 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{ function listing(){ JRequest::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(); JPluginHelper::importPlugin('acymailing'); $this->dispatcher = JDispatcher::getInstance(); $results = $this->dispatcher->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; } function detecttimeout(){ $config = acymailing_config(); if($config->get('security_key') != JRequest::getString('seckey')) die('wrong key'); $db = JFactory::getDBO(); $db->setQuery("REPLACE INTO `#__acymailing_config` (`namekey`,`value`) VALUES ('max_execution_time','5'), ('last_maxexec_check','".time()."')"); $db->query(); @ini_set('max_execution_time',600); @ignore_user_abort(true); $i = 0; while($i < 480){ sleep(8); $i += 10; $db->setQuery("UPDATE `#__acymailing_config` SET `value` = '".intval($i)."' WHERE `namekey` = 'max_execution_time'"); $db->query(); $db->setQuery("UPDATE `#__acymailing_config` SET `value` = '".time()."' WHERE `namekey` = 'last_maxexec_check'"); $db->query(); sleep(2); } exit; } } controllers/frontbounces.php 0000604 00000001646 15245530272 0012342 0 ustar 00 <?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(); } } controllers/url.php 0000604 00000001672 15245530272 0010434 0 ustar 00 <?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; } } controllers/index.html 0000604 00000000054 15245530272 0011107 0 ustar 00 <html><body bgcolor="#FFFFFF"></body></html>