Example #1
0
 function formatString(&$replaceme, $mytag)
 {
     if (!empty($mytag->part)) {
         $parts = explode(' ', $replaceme);
         if ($mytag->part == 'last') {
             $replaceme = count($parts) > 1 ? end($parts) : '';
         } else {
             $replaceme = reset($parts);
         }
     }
     if (!empty($mytag->type)) {
         if (empty($mytag->format)) {
             $mytag->format = JText::_('DATE_FORMAT_LC3');
         }
         if ($mytag->type == 'date') {
             $replaceme = acymailing_getDate(acymailing_getTime($replaceme), $mytag->format);
         } elseif ($mytag->type == 'time') {
             $replaceme = acymailing_getDate($replaceme, $mytag->format);
         }
     }
     if (!empty($mytag->lower)) {
         $replaceme = strtolower($replaceme);
     }
     if (!empty($mytag->upper)) {
         $replaceme = strtoupper($replaceme);
     }
     if (!empty($mytag->ucwords)) {
         $replaceme = ucwords($replaceme);
     }
     if (!empty($mytag->ucfirst)) {
         $replaceme = ucfirst($replaceme);
     }
     if (!empty($mytag->urlencode)) {
         $replaceme = urlencode($replaceme);
     }
     if (!empty($mytag->maxheight) || !empty($mytag->maxwidth)) {
         $pictureHelper = acymailing_get('helper.acypict');
         $pictureHelper->maxHeight = empty($mytag->maxheight) ? 999 : $mytag->maxheight;
         $pictureHelper->maxWidth = empty($mytag->maxwidth) ? 999 : $mytag->maxwidth;
         $replaceme = $pictureHelper->resizePictures($replaceme);
     }
 }
Example #2
0
 function saveForm()
 {
     $filter = new stdClass();
     $filter->filid = acymailing_getCID('filid');
     $formData = JRequest::getVar('data', array(), '', 'array');
     foreach ($formData['filter'] as $column => $value) {
         acymailing_secureField($column);
         $filter->{$column} = strip_tags($value);
     }
     $config = acymailing_config();
     $alltriggers = array_keys((array) JRequest::getVar('trigger'));
     $filter->trigger = implode(',', $alltriggers);
     $newConfig = new stdClass();
     foreach ($alltriggers as $oneTrigger) {
         $name = 'triggerfilter_' . $oneTrigger;
         if ($config->get($name)) {
             continue;
         }
         $newConfig->{$name} = 1;
     }
     if (in_array('daycron', $alltriggers)) {
         $oldTime = $config->get('cron_plugins_next', 0);
         $newHours = JRequest::getVar('triggerhours');
         $newMinutes = JRequest::getVar('triggerminutes');
         $newTime = acymailing_getTime(date('Y') . '-' . date('m') . '-' . date('d') . ' ' . $newHours . ':' . $newMinutes);
         if ($newTime < $oldTime || $newTime < time()) {
             $newTime += 86400;
         }
         $newConfig->cron_plugins_next = $newTime;
     }
     if (!empty($newConfig)) {
         $config->save($newConfig);
     }
     $data = array('action', 'filter');
     foreach ($data as $oneData) {
         $filter->{$oneData} = array();
         $formData = JRequest::getVar($oneData);
         foreach ($formData['type'] as $num => $oneType) {
             if (empty($oneType)) {
                 continue;
             }
             $filter->{$oneData}['type'][$num] = $oneType;
             $filter->{$oneData}[$num][$oneType] = $formData[$num][$oneType];
         }
         $filter->{$oneData} = serialize($filter->{$oneData});
     }
     $filid = $this->save($filter);
     if (!$filid) {
         return false;
     }
     JRequest::setVar('filid', $filid);
     return true;
 }
Example #3
0
 function save($mail)
 {
     if (isset($mail->alias) or empty($mail->mailid)) {
         if (empty($mail->alias)) {
             $mail->alias = $mail->subject;
         }
         $mail->alias = JFilterOutput::stringURLSafe(trim($mail->alias));
     }
     if (empty($mail->mailid)) {
         if (empty($mail->created)) {
             $mail->created = time();
         }
         if (empty($mail->userid)) {
             $user = JFactory::getUser();
             $mail->userid = $user->id;
         }
         if (empty($mail->key)) {
             $mail->key = acymailing_generateKey(8);
         }
     } else {
         if (!empty($mail->attach)) {
             $oldMailObject = $this->get($mail->mailid);
             if (!empty($oldMailObject)) {
                 $mail->attach = array_merge($oldMailObject->attach, $mail->attach);
             }
         }
     }
     if (!empty($mail->attach) and !is_string($mail->attach)) {
         $mail->attach = serialize($mail->attach);
     }
     if (isset($mail->filter) and !is_string($mail->filter)) {
         $mail->filter = serialize($mail->filter);
     }
     if (!empty($mail->params)) {
         if (!empty($mail->params['lastgenerateddate']) && !is_numeric($mail->params['lastgenerateddate'])) {
             $mail->params['lastgenerateddate'] = acymailing_getTime($mail->params['lastgenerateddate']);
         }
         $mail->params = serialize($mail->params);
     }
     if (!empty($mail->senddate) && !is_numeric($mail->senddate)) {
         $mail->senddate = acymailing_getTime($mail->senddate);
     }
     JPluginHelper::importPlugin('acymailing');
     $dispatcher = JDispatcher::getInstance();
     if (empty($mail->mailid)) {
         $dispatcher->trigger('onAcyBeforeMailCreate', array(&$mail));
         $status = $this->database->insertObject(acymailing_table('mail'), $mail);
     } else {
         $dispatcher->trigger('onAcyBeforeMailModify', array(&$mail));
         $status = $this->database->updateObject(acymailing_table('mail'), $mail, 'mailid');
     }
     if (!$status) {
         $this->errors[] = substr(strip_tags($this->database->getErrorMsg()), 0, 200) . '...';
     }
     if (!empty($mail->params) and is_string($mail->params)) {
         $mail->params = unserialize($mail->params);
     }
     if (!empty($mail->attach) and is_string($mail->attach)) {
         $mail->attach = unserialize($mail->attach);
     }
     if ($status) {
         return empty($mail->mailid) ? $this->database->insertid() : $mail->mailid;
     }
     return false;
 }
Example #4
0
 function onAcyProcessAction_addqueue($cquery, $action, $num)
 {
     $action['mailid'] = intval($action['mailid']);
     if (empty($action['mailid'])) {
         return 'mailid not valid';
     }
     $action['senddate'] = acymailing_replaceDate($action['senddate']);
     if (!is_numeric($action['senddate'])) {
         $action['senddate'] = acymailing_getTime($action['senddate']);
     }
     if (empty($action['senddate'])) {
         return 'send date not valid';
     }
     $query = 'INSERT IGNORE INTO `#__acymailing_queue` (`mailid`,`subid`,`senddate`,`priority`) ' . $cquery->getQuery(array($action['mailid'], 'sub.`subid`', $action['senddate'], '2'));
     $db = JFactory::getDBO();
     $db->setQuery($query);
     $db->query();
     return JText::sprintf('ADDED_QUEUE', $db->getAffectedRows());
 }
Example #5
0
 function display($tpl = null)
 {
     $doc = JFactory::getDocument();
     $config = acymailing_config();
     $buttons = array();
     $desc = array();
     $desc['subscriber'] = '<ul><li>' . JText::_('USERS_DESC_CREATE') . '</li><li>' . JText::_('USERS_DESC_MANAGE') . '</li><li>' . JText::_('USERS_DESC_IMPORT') . '</li></ul>';
     $desc['list'] = '<ul><li>' . JText::_('LISTS_DESC_CREATE') . '</li><li>' . JText::_('LISTS_DESC_SUBSCRIPTION') . '</li></ul>';
     $desc['newsletter'] = '<ul><li>' . JText::_('NEWSLETTERS_DESC_CREATE') . '</li><li>' . JText::_('NEWSLETTERS_DESC_TEST') . '</li><li>' . JText::_('NEWSLETTERS_DESC_SEND') . '</li></ul>';
     $desc['template'] = '<ul><li>' . JText::_('TEMPLATES_DESC_CREATE') . '</li></ul>';
     $desc['queue'] = '<ul><li>' . JText::_('QUEUE_DESC_CONTROL') . '</li></ul>';
     $desc['cpanel'] = '<ul><li>' . JText::_('CONFIG_DESC_CONFIG') . '</li><li>' . JText::_('CONFIG_DESC_MODIFY') . '</li><li>' . JText::_('CONFIG_DESC_PLUGIN') . '</li><li>' . JText::_('QUEUE_DESC_BOUNCE');
     if (!acymailing_level(3)) {
         $desc['cpanel'] .= acymailing_getUpgradeLink('enterprise');
     }
     $desc['cpanel'] .= '</li></ul>';
     $desc['stats'] = '<ul><li>' . JText::_('STATS_DESC_VIEW') . '</li><li>' . JText::_('STATS_DESC_CLICK');
     if (!acymailing_level(1)) {
         $desc['stats'] .= acymailing_getUpgradeLink('essential');
     }
     $desc['stats'] .= '</li><li>' . JText::_('STATS_DESC_CHARTS');
     if (!acymailing_level(1)) {
         $desc['stats'] .= acymailing_getUpgradeLink('essential');
     }
     $desc['stats'] .= '</li></ul>';
     $desc['autonews'] = '<ul><li>' . JText::_('AUTONEWS_DESC');
     if (!acymailing_level(2)) {
         $desc['autonews'] .= acymailing_getUpgradeLink('business');
     }
     $desc['autonews'] .= '</li></ul>';
     $desc['campaign'] = '<ul><li>' . JText::_('CAMPAIGN_DESC_CREATE');
     if (!acymailing_level(3)) {
         $desc['campaign'] .= acymailing_getUpgradeLink('enterprise');
     }
     $desc['campaign'] .= '</li><li>' . JText::_('CAMPAIGN_DESC_AFFECT');
     if (!acymailing_level(3)) {
         $desc['campaign'] .= acymailing_getUpgradeLink('enterprise');
     }
     $desc['campaign'] .= '</li></ul>';
     $desc['update'] = '<ul><li>' . JText::_('UPDATE_DESC') . '</li><li>' . JText::_('CHANGELOG_DESC') . '</li><li>' . JText::_('ABOUT_DESC') . '</li></ul>';
     $buttons[] = array('link' => 'subscriber', 'level' => 0, 'image' => 'acyusers', 'text' => JText::_('USERS'), 'acl' => 'acl_subscriber_manage');
     $buttons[] = array('link' => 'list', 'level' => 0, 'image' => 'acylist', 'text' => JText::_('LISTS'), 'acl' => 'acl_lists_manage');
     $buttons[] = array('link' => 'newsletter', 'level' => 0, 'image' => 'newsletter', 'text' => JText::_('NEWSLETTERS'), 'acl' => 'acl_newsletters_manage');
     $buttons[] = array('link' => 'autonews', 'level' => 2, 'image' => 'autonewsletter', 'text' => JText::_('AUTONEWSLETTERS'), 'acl' => 'acl_autonewsletters_manage');
     $buttons[] = array('link' => 'campaign', 'level' => 3, 'image' => 'campaign', 'text' => JText::_('CAMPAIGN'), 'acl' => 'acl_campaign_manage');
     $buttons[] = array('link' => 'template', 'level' => 0, 'image' => 'acytemplate', 'text' => JText::_('ACY_TEMPLATES'), 'acl' => 'acl_templates_manage');
     $buttons[] = array('link' => 'queue', 'level' => 0, 'image' => 'process', 'text' => JText::_('QUEUE'), 'acl' => 'acl_queue_manage');
     $buttons[] = array('link' => 'stats', 'level' => 0, 'image' => 'stats', 'text' => JText::_('STATISTICS'), 'acl' => 'acl_statistics_manage');
     if (!ACYMAILING_J16 || JFactory::getUser()->authorise('core.admin', 'com_acymailing')) {
         $buttons[] = array('link' => 'cpanel', 'level' => 0, 'image' => 'acyconfig', 'text' => JText::_('CONFIGURATION'), 'acl' => 'acl_configuration_manage');
     }
     $buttons[] = array('link' => 'update', 'level' => 0, 'image' => 'acyupdate', 'text' => JText::_('UPDATE_ABOUT'), 'acl' => 'acl_configuration_manage');
     $htmlbuttons = array();
     foreach ($buttons as $oneButton) {
         if (acymailing_isAllowed($config->get($oneButton['acl'], 'all'))) {
             $htmlbuttons[] = $this->_quickiconButton($oneButton['link'], $oneButton['image'], $oneButton['text'], $desc[$oneButton['link']], $oneButton['level']);
         }
     }
     $geolocParam = $config->get('geolocation');
     if (!empty($geolocParam) && $geolocParam != 1) {
         $condition = '';
         if (strpos($geolocParam, 'creation') !== false) {
             $condition = " WHERE geolocation_type='creation'";
         }
         $db = JFactory::getDBO();
         $query = 'SELECT geolocation_type, geolocation_subid, geolocation_country_code, geolocation_city';
         $query .= ' FROM #__acymailing_geolocation' . $condition . ' GROUP BY geolocation_subid ORDER BY geolocation_created DESC LIMIT 100';
         $db->setQuery($query);
         $geoloc = $db->loadObjectList();
         if (!empty($geoloc)) {
             $markCities = array();
             $diffCountries = false;
             $dataDetails = array();
             foreach ($geoloc as $mark) {
                 $indexCity = array_search($mark->geolocation_city, $markCities);
                 if ($indexCity === false) {
                     array_push($markCities, $mark->geolocation_city);
                     array_push($dataDetails, 1);
                 } else {
                     $dataDetails[$indexCity] += 1;
                 }
                 if (!$diffCountries) {
                     if (!empty($region) && $region != $mark->geolocation_country_code) {
                         $region = 'world';
                         $diffCountries = true;
                     } else {
                         $region = $mark->geolocation_country_code;
                     }
                 }
             }
             $this->assignRef('geoloc_city', $markCities);
             $this->assignRef('geoloc_details', $dataDetails);
             $this->assignRef('geoloc_region', $region);
         }
     }
     acymailing_setTitle(ACYMAILING_NAME, 'acymailing', 'dashboard');
     $bar = JToolBar::getInstance('toolbar');
     if (ACYMAILING_J16 && JFactory::getUser()->authorise('core.admin', 'com_acymailing')) {
         JToolBarHelper::preferences('com_acymailing');
     }
     $bar->appendButton('Pophelp', 'dashboard');
     $this->assignRef('buttons', $htmlbuttons);
     $toggleClass = acymailing_get('helper.toggle');
     $this->assignRef('toggleClass', $toggleClass);
     $db = JFactory::getDBO();
     $db->setQuery('SELECT name,email,html,confirmed,subid,created FROM ' . acymailing_table('subscriber') . ' ORDER BY subid DESC LIMIT 15');
     $users10 = $db->loadObjectList();
     $this->assignRef('users', $users10);
     $db->setQuery('SELECT a.*, b.subject FROM ' . acymailing_table('stats') . ' as a JOIN ' . acymailing_table('mail') . ' as b on a.mailid = b.mailid ORDER BY a.senddate DESC LIMIT 15');
     $newsletters10 = $db->loadObjectList();
     $this->assignRef('stats', $newsletters10);
     $doc->addScript("https://www.google.com/jsapi");
     $today = acymailing_getTime(date('Y-m-d'));
     $joomConfig = JFactory::getConfig();
     $offset = ACYMAILING_J30 ? $joomConfig->get('offset') : $joomConfig->getValue('config.offset');
     $diff = date('Z') + intval($offset * 60 * 60);
     $db->setQuery("SELECT count(`subid`) as total, DATE_FORMAT(FROM_UNIXTIME(`created` - {$diff}),'%Y-%m-%d') as subday FROM " . acymailing_table('subscriber') . " WHERE `created` > 100000 GROUP BY subday ORDER BY subday DESC LIMIT 15");
     $statsusers = $db->loadObjectList();
     $this->assignRef('statsusers', $statsusers);
     $tabs = acymailing_get('helper.acytabs');
     $tabs->setOptions(array('useCookie' => true));
     $this->assignRef('tabs', $tabs);
     $this->assignRef('config', $config);
     parent::display($tpl);
 }
Example #6
0
 static function getTime($date)
 {
     return acymailing_getTime($date);
 }
Example #7
0
 function formatString(&$replaceme, $mytag)
 {
     if (!empty($mytag->part)) {
         $parts = explode(' ', $replaceme);
         if ($mytag->part == 'last') {
             $replaceme = count($parts) > 1 ? end($parts) : '';
         } else {
             $replaceme = reset($parts);
         }
     }
     if (!empty($mytag->type)) {
         if (empty($mytag->format)) {
             $mytag->format = JText::_('DATE_FORMAT_LC3');
         }
         if ($mytag->type == 'date') {
             $replaceme = acymailing_getDate(acymailing_getTime($replaceme), $mytag->format);
         } elseif ($mytag->type == 'time') {
             $replaceme = acymailing_getDate($replaceme, $mytag->format);
         } elseif ($mytag->type == 'diff') {
             try {
                 $date = $replaceme;
                 if (is_numeric($date)) {
                     $date = acymailing_getDate($replaceme, '%Y-%m-%d %H:%M:%S');
                 }
                 $dateObj = new DateTime($date);
                 $nowObj = new DateTime();
                 $diff = $dateObj->diff($nowObj);
                 $replaceme = $diff->format($mytag->format);
             } catch (Exception $e) {
                 $replaceme = 'Error using the "diff" parameter in your tag. Please make sure the DateTime() and diff() functions are available on your server.';
             }
         }
     }
     if (!empty($mytag->lower) || !empty($mytag->lowercase)) {
         $replaceme = function_exists('mb_strtolower') ? mb_strtolower($replaceme, 'UTF-8') : strtolower($replaceme);
     }
     if (!empty($mytag->upper) || !empty($mytag->uppercase)) {
         $replaceme = function_exists('mb_strtoupper') ? mb_strtoupper($replaceme, 'UTF-8') : strtoupper($replaceme);
     }
     if (!empty($mytag->ucwords)) {
         $replaceme = ucwords($replaceme);
     }
     if (!empty($mytag->ucfirst)) {
         $replaceme = ucfirst($replaceme);
     }
     if (isset($mytag->rtrim)) {
         $replaceme = empty($mytag->rtrim) ? rtrim($replaceme) : rtrim($replaceme, $mytag->rtrim);
     }
     if (!empty($mytag->urlencode)) {
         $replaceme = urlencode($replaceme);
     }
     if (!empty($mytag->substr)) {
         $args = explode(',', $mytag->substr);
         if (isset($args[1])) {
             $replaceme = substr($replaceme, intval($args[0]), intval($args[1]));
         } else {
             $replaceme = substr($replaceme, intval($args[0]));
         }
     }
     if (!empty($mytag->maxheight) || !empty($mytag->maxwidth)) {
         $pictureHelper = acymailing_get('helper.acypict');
         $pictureHelper->maxHeight = empty($mytag->maxheight) ? 999 : $mytag->maxheight;
         $pictureHelper->maxWidth = empty($mytag->maxwidth) ? 999 : $mytag->maxwidth;
         $replaceme = $pictureHelper->resizePictures($replaceme);
     }
 }
<script language="JavaScript" type="text/javascript">
     function statsusers(){
		var dataTable = new google.visualization.DataTable();
		dataTable.addRows(<?php 
echo count($this->statsusers);
?>
);
		dataTable.addColumn('string');
		dataTable.addColumn('number','<?php 
echo JText::_('USERS', true);
?>
');
		<?php 
$i = count($this->statsusers) - 1;
foreach ($this->statsusers as $oneResult) {
    echo "dataTable.setValue({$i}, 0, '" . addslashes(acymailing_getDate(acymailing_getTime($oneResult->subday), JText::_('DATE_FORMAT_LC3'))) . "'); ";
    echo "dataTable.setValue({$i}, 1, " . intval(@$oneResult->total) . "); ";
    if ($i-- == 0) {
        break;
    }
}
?>
        var vis = new google.visualization.ColumnChart(document.getElementById('statsusers'));
        var options = {
        	width:document.documentElement.clientWidth/2,
          height: 300,
          legend:'none'
        };
        vis.draw(dataTable, options);
	}
	google.load("visualization", "1", {packages:["corechart"]});
Example #9
0
 function scheduleone()
 {
     if (!$this->isAllowed('newsletters', 'schedule')) {
         return;
     }
     $mailid = JRequest::getInt('mailid');
     $subid = JRequest::getInt('subid');
     $senddate = JRequest::getString('senddate', '');
     $sendhours = JRequest::getString('sendhours', '');
     $sendminutes = JRequest::getString('sendminutes', '');
     $senddateComplete = $senddate . ' ' . $sendhours . ':' . $sendminutes;
     $app = JFactory::getApplication();
     JRequest::checkToken() && !empty($mailid) && !empty($subid) or die('Invalid Token');
     $realSendDate = acymailing_getTime($senddateComplete);
     if ($realSendDate < time()) {
         acymailing_display(JText::_('DATE_FUTURE'), 'warning');
         if ($app->isAdmin()) {
             return $this->addqueue();
         } else {
             $frontSubController = acymailing_get('controller.frontsubscriber');
             return $frontSubController->addqueue();
         }
     }
     $mailClass = acymailing_get('class.mail');
     $myNewsletter = $mailClass->get($mailid);
     $queueEntry = new stdClass();
     $queueEntry->mailid = $myNewsletter->mailid;
     $queueEntry->subid = $subid;
     $queueEntry->senddate = $realSendDate;
     $queueEntry->priority = 1;
     $db = JFactory::getDBO();
     $status = $db->insertObject('#__acymailing_queue', $queueEntry);
     if ($status) {
         acymailing_display(JText::sprintf('AUTOSEND_DATE', '<b><i>' . $myNewsletter->subject . '</i></b>', acymailing_getDate($realSendDate)), 'success');
     } else {
         acymailing_display(array(JText::_('ERROR_SAVING'), $db->getErrorMsg()), 'error');
         if ($app->isAdmin()) {
             return $this->addqueue();
         } else {
             $frontSubController = acymailing_get('controller.frontsubscriber');
             return $frontSubController->addqueue();
         }
     }
 }
Example #10
0
 function listing()
 {
     $config =& acymailing_config();
     acymailing_setTitle(JText::_('CHARTS'), 'stats', 'diagram');
     $bar = JToolBar::getInstance('toolbar');
     $bar->appendButton('Link', 'cancel', JText::_('GLOBAL_STATISTICS'), acymailing_completeLink('stats'));
     JToolBarHelper::divider();
     JToolBarHelper::custom('export', 'acyexport', '', JText::_('ACY_EXPORT'), false);
     $bar->appendButton('Directprint');
     JToolBarHelper::divider();
     $bar->appendButton('Pophelp', 'charts');
     if (acymailing_isAllowed($config->get('acl_cpanel_manage', 'all'))) {
         $bar->appendButton('Link', 'acymailing', JText::_('ACY_CPANEL'), acymailing_completeLink('dashboard'));
     }
     $db = JFactory::getDBO();
     $app = JFactory::getApplication();
     $where = array();
     $groupby = array();
     $groupingtype = array();
     $groupby[] = 'groupingdate';
     $groupby[] = 'groupingtype';
     $selectfield = 'sub.created';
     $listsneeded = false;
     $listClass = acymailing_get('class.list');
     $allLists = $listClass->getLists('listid');
     $this->assignRef('lists', $allLists);
     $display = JRequest::getVar('display', array());
     $this->assignRef('display', $display);
     foreach ($display as $var => $val) {
         $var = acymailing_securefield($var);
         $this->{$var} = acymailing_securefield($val);
     }
     if (empty($display)) {
         return;
     }
     $compares = JRequest::getVar('compares', array());
     $this->assignRef('compares', $compares);
     if (!empty($compares['lists'])) {
         $groupingtype[] = 'list.name';
         $listsneeded = true;
         $selectfield = 'listsub.subdate';
         $where[] = "list.type = 'list'";
         $filterLists = JRequest::getVar('filterlists', array());
         JArrayHelper::toInteger($filterLists);
         if (!empty($filterLists)) {
             $where[] = "listsub.listid IN (" . implode(',', $filterLists) . ")";
         }
         $this->assignRef('filterlists', $filterLists);
     }
     if ($this->interval == 'day') {
         $groupingdate = "DATE_FORMAT(FROM_UNIXTIME(" . $selectfield . "),'%Y-%m-%d')";
         $this->dateformat = '%d %B %Y';
     } elseif ($this->interval == 'month') {
         $groupingdate = "DATE_FORMAT(FROM_UNIXTIME(" . $selectfield . "),'%Y-%m-01')";
         $this->dateformat = '%B %Y';
     } elseif ($this->interval == 'year') {
         $groupingdate = "DATE_FORMAT(FROM_UNIXTIME(" . $selectfield . "),'%Y-01-01')";
         $this->dateformat = '%Y';
     } else {
         return;
     }
     if (!empty($compares['years'])) {
         $groupingtype[] = "DATE_FORMAT(FROM_UNIXTIME(" . $selectfield . "),'%Y')";
         $this->dateformat = str_replace('%Y', '', $this->dateformat);
         $groupingdate = str_replace('%Y', '2000', $groupingdate);
     }
     $fieldtotal = 'COUNT(sub.subid)';
     $fieldtype = empty($groupingtype) ? "'Total'" : "CONCAT('Total - '," . implode(", ' - ' ,", $groupingtype) . ")";
     if (!empty($this->sumup)) {
         $min = empty($this->datemin) ? 0 : acymailing_getTime($this->datemin);
         $max = empty($this->datemax) ? time() : acymailing_getTime($this->datemax);
         if (empty($min)) {
             $db->setQuery('SELECT min(created) FROM #__acymailing_subscriber WHERE created > 0 LIMIT 1');
             $min = $db->loadResult();
         }
         $this->results = array();
         $maxInter = $min;
         $nbqueries = 0;
         while ($maxInter < $max) {
             $nbqueries++;
             if ($nbqueries > 100) {
                 if ($nbqueries == 101) {
                     acymailing_display('There are too many requests, please reduce the date range or change the interval');
                 }
                 continue;
             }
             $previous = $maxInter;
             if ($this->interval == 'day') {
                 $maxInter = mktime(0, 0, 0, date("n", $maxInter), date("j", $maxInter) + 1, date("Y", $maxInter));
             } elseif ($this->interval == 'month') {
                 $maxInter = mktime(0, 0, 0, date("n", $maxInter) + 1, 1, date("Y", $maxInter));
             } elseif ($this->interval == 'year') {
                 $maxInter = mktime(0, 0, 0, 1, 1, date("Y", $maxInter) + 1);
             }
             $whereCond = array();
             if ($listsneeded) {
                 $whereCond[] = 'listsub.status != 2';
                 $whereCond[] = 'listsub.subdate > 0';
                 $whereCond[] = 'listsub.subdate < ' . $maxInter;
                 $whereCond[] = '(listsub.status = 1 OR listsub.unsubdate >' . $maxInter . ')';
                 $query = "SELECT COUNT(listsub.subid) as total, " . $fieldtype . " as groupingtype, '" . acymailing_getDate($previous + 43200, '%Y-%m-%d') . "' as groupingdate";
                 $query .= " FROM #__acymailing_listsub as listsub ";
                 $query .= " JOIN #__acymailing_list as list ON listsub.listid = list.listid ";
                 $query .= " WHERE (" . implode(") AND (", array_merge($where, $whereCond)) . ")";
                 $query .= " GROUP BY listsub.listid";
             } else {
                 $whereCond[] = 'sub.created < ' . $maxInter;
                 $whereCond[] = 'sub.created > 0';
                 $query = "SELECT COUNT(sub.subid) as total, " . $fieldtype . " as groupingtype, '" . acymailing_getDate($previous + 43200, '%Y-%m-%d') . "' as groupingdate";
                 $query .= " FROM #__acymailing_subscriber as sub";
                 $query .= " WHERE (" . implode(") AND (", array_merge($where, $whereCond)) . ")";
             }
             $db->setQuery($query);
             $this->results = array_merge($this->results, $db->loadObjectList());
         }
     } else {
         if (!empty($this->datemin)) {
             $where[] = $groupingdate . ' >= ' . $db->Quote($this->datemin);
         }
         if (!empty($this->datemax)) {
             $where[] = $groupingdate . ' < ' . $db->Quote($this->datemax);
         }
         $where[] = 'sub.created > 0';
         $query = "SELECT " . $fieldtotal . " as total, " . $fieldtype . " as groupingtype, " . $groupingdate . " as groupingdate";
         if ($listsneeded) {
             $query .= " FROM #__acymailing_listsub as listsub ";
             $query .= " JOIN #__acymailing_subscriber as sub ON listsub.subid = sub.subid ";
             $query .= " JOIN #__acymailing_list as list ON listsub.listid = list.listid ";
         } else {
             $query .= " FROM #__acymailing_subscriber as sub ";
         }
         if (!empty($where)) {
             $query .= " WHERE (" . implode(") AND (", $where) . ")";
         }
         if (!empty($groupby)) {
             $query .= " GROUP BY " . implode(',', $groupby);
         }
         $query .= " ORDER BY groupingdate ASC";
         $db->setQuery($query);
         $this->results = $db->loadObjectList();
     }
     if (empty($this->results)) {
         $app->enqueueMessage(JText::_('NO_SUBSCRIBER'), 'notice');
     }
     return $this->displayResult();
 }
 function display($tpl = null)
 {
     $doc =& JFactory::getDocument();
     $config = acymailing_config();
     $buttons = array();
     $desc = array();
     $desc['subscriber'] = '<ul><li>' . JText::_('USERS_DESC_CREATE') . '</li><li>' . JText::_('USERS_DESC_MANAGE') . '</li><li>' . JText::_('USERS_DESC_IMPORT') . '</li></ul>';
     $desc['list'] = '<ul><li>' . JText::_('LISTS_DESC_CREATE') . '</li><li>' . JText::_('LISTS_DESC_SUBSCRIPTION') . '</li></ul>';
     $desc['newsletter'] = '<ul><li>' . JText::_('NEWSLETTERS_DESC_CREATE') . '</li><li>' . JText::_('NEWSLETTERS_DESC_TEST') . '</li><li>' . JText::_('NEWSLETTERS_DESC_SEND') . '</li></ul>';
     $desc['template'] = '<ul><li>' . JText::_('TEMPLATES_DESC_CREATE') . '</li></ul>';
     $desc['queue'] = '<ul><li>' . JText::_('QUEUE_DESC_CONTROL') . '</li></ul>';
     $desc['cpanel'] = '<ul><li>' . JText::_('CONFIG_DESC_CONFIG') . '</li><li>' . JText::_('CONFIG_DESC_MODIFY') . '</li><li>' . JText::_('CONFIG_DESC_PLUGIN') . '</li><li>' . JText::_('QUEUE_DESC_BOUNCE');
     if (!acymailing_level(3)) {
         $desc['cpanel'] .= acymailing_getUpgradeLink('enterprise');
     }
     $desc['cpanel'] .= '</li></ul>';
     $desc['stats'] = '<ul><li>' . JText::_('STATS_DESC_VIEW') . '</li><li>' . JText::_('STATS_DESC_CLICK');
     if (!acymailing_level(1)) {
         $desc['stats'] .= acymailing_getUpgradeLink('essential');
     }
     $desc['stats'] .= '</li><li>' . JText::_('STATS_DESC_CHARTS');
     if (!acymailing_level(1)) {
         $desc['stats'] .= acymailing_getUpgradeLink('essential');
     }
     $desc['stats'] .= '</li></ul>';
     $desc['autonews'] = '<ul><li>' . JText::_('AUTONEWS_DESC');
     if (!acymailing_level(2)) {
         $desc['autonews'] .= acymailing_getUpgradeLink('business');
     }
     $desc['autonews'] .= '</li></ul>';
     $desc['campaign'] = '<ul><li>' . JText::_('CAMPAIGN_DESC_CREATE');
     if (!acymailing_level(3)) {
         $desc['campaign'] .= acymailing_getUpgradeLink('enterprise');
     }
     $desc['campaign'] .= '</li><li>' . JText::_('CAMPAIGN_DESC_AFFECT');
     if (!acymailing_level(3)) {
         $desc['campaign'] .= acymailing_getUpgradeLink('enterprise');
     }
     $desc['campaign'] .= '</li></ul>';
     $desc['update'] = '<ul><li>' . JText::_('UPDATE_DESC') . '</li><li>' . JText::_('CHANGELOG_DESC') . '</li><li>' . JText::_('ABOUT_DESC') . '</li></ul>';
     $buttons[] = array('link' => 'subscriber', 'level' => 0, 'image' => 'acyusers', 'text' => JText::_('USERS'), 'acl' => 'acl_subscriber_manage');
     $buttons[] = array('link' => 'list', 'level' => 0, 'image' => 'acylist', 'text' => JText::_('LISTS'), 'acl' => 'acl_lists_manage');
     $buttons[] = array('link' => 'newsletter', 'level' => 0, 'image' => 'newsletter', 'text' => JText::_('NEWSLETTERS'), 'acl' => 'acl_newsletters_manage');
     $buttons[] = array('link' => 'autonews', 'level' => 2, 'image' => 'autonewsletter', 'text' => JText::_('AUTONEWSLETTERS'), 'acl' => 'acl_autonewsletters_manage');
     $buttons[] = array('link' => 'campaign', 'level' => 3, 'image' => 'campaign', 'text' => JText::_('CAMPAIGN'), 'acl' => 'acl_campaign_manage');
     $buttons[] = array('link' => 'template', 'level' => 0, 'image' => 'acytemplate', 'text' => JText::_('ACY_TEMPLATES'), 'acl' => 'acl_templates_manage');
     $buttons[] = array('link' => 'queue', 'level' => 0, 'image' => 'process', 'text' => JText::_('QUEUE'), 'acl' => 'acl_queue_manage');
     $buttons[] = array('link' => 'stats', 'level' => 0, 'image' => 'stats', 'text' => JText::_('STATISTICS'), 'acl' => 'acl_statistics_manage');
     $buttons[] = array('link' => 'cpanel', 'level' => 0, 'image' => 'acyconfig', 'text' => JText::_('CONFIGURATION'), 'acl' => 'acl_configuration_manage');
     $buttons[] = array('link' => 'update', 'level' => 0, 'image' => 'acyupdate', 'text' => JText::_('UPDATE_ABOUT'), 'acl' => 'acl_configuration_manage');
     $htmlbuttons = array();
     foreach ($buttons as $oneButton) {
         if (acymailing_isAllowed($config->get($oneButton['acl'], 'all'))) {
             $htmlbuttons[] = $this->_quickiconButton($oneButton['link'], $oneButton['image'], $oneButton['text'], $desc[$oneButton['link']], $oneButton['level']);
         }
     }
     acymailing_setTitle(ACYMAILING_NAME, 'acymailing', 'dashboard');
     $bar =& JToolBar::getInstance('toolbar');
     $bar->appendButton('Pophelp', 'dashboard');
     $this->assignRef('buttons', $htmlbuttons);
     $toggleClass = acymailing_get('helper.toggle');
     $this->assignRef('toggleClass', $toggleClass);
     $db = JFactory::getDBO();
     $db->setQuery('SELECT name,email,html,confirmed,subid,created FROM ' . acymailing_table('subscriber') . ' ORDER BY created DESC LIMIT 15');
     $users10 = $db->loadObjectList();
     $this->assignRef('users', $users10);
     $db->setQuery('SELECT a.*, b.subject FROM ' . acymailing_table('stats') . ' as a LEFT JOIN ' . acymailing_table('mail') . ' as b on a.mailid = b.mailid ORDER BY a.senddate DESC LIMIT 15');
     $newsletters10 = $db->loadObjectList();
     $this->assignRef('stats', $newsletters10);
     $doc->addScript(((empty($_SERVER['HTTPS']) or strtolower($_SERVER['HTTPS']) != "on") ? 'http://' : 'https://') . "www.google.com/jsapi");
     $today = acymailing_getTime(date('Y-m-d'));
     $joomConfig =& JFactory::getConfig();
     $diff = date('Z') + intval($joomConfig->getValue('config.offset') * 60 * 60);
     $db->setQuery("SELECT count(`subid`) as total, DATE_FORMAT(FROM_UNIXTIME(`created` - {$diff}),'%Y-%m-%d') as subday FROM " . acymailing_table('subscriber') . " GROUP BY subday ORDER BY subday DESC LIMIT 15");
     $statsusers = $db->loadObjectList();
     $this->assignRef('statsusers', $statsusers);
     jimport('joomla.html.pane');
     $tabs =& JPane::getInstance('tabs');
     $this->assignRef('tabs', $tabs);
     $this->assignRef('config', $config);
     parent::display($tpl);
 }
 function replaceSubTag(&$allresults, $i, &$user)
 {
     $arguments = explode('|', strip_tags($allresults[1][$i]));
     $field = $arguments[0];
     unset($arguments[0]);
     $mytag = null;
     $mytag->default = '';
     if (!empty($arguments)) {
         foreach ($arguments as $onearg) {
             $args = explode(':', $onearg);
             if (isset($args[1])) {
                 $mytag->{$args}[0] = $args[1];
             } else {
                 $mytag->{$args}[0] = 1;
             }
         }
     }
     $replaceme = isset($user->{$field}) && strlen($user->{$field}) > 0 ? $user->{$field} : $mytag->default;
     if (!empty($mytag->part)) {
         $parts = explode(' ', $replaceme);
         if ($mytag->part == 'last') {
             $replaceme = count($parts) > 1 ? end($parts) : '';
         } else {
             $replaceme = reset($parts);
         }
     }
     if (!empty($mytag->type)) {
         if (empty($mytag->format)) {
             $mytag->format = JText::_('DATE_FORMAT_LC3');
         }
         if ($mytag->type == 'date') {
             $replaceme = acymailing_getDate(acymailing_getTime($replaceme), $mytag->format);
         } elseif ($mytag->type == 'time') {
             $replaceme = acymailing_getDate($replaceme, $mytag->format);
         }
     }
     $replaceme = nl2br($replaceme);
     if (!empty($mytag->lower)) {
         $replaceme = strtolower($replaceme);
     }
     if (!empty($mytag->ucwords)) {
         $replaceme = ucwords($replaceme);
     }
     if (!empty($mytag->ucfirst)) {
         $replaceme = ucfirst($replaceme);
     }
     if (!empty($mytag->urlencode)) {
         $replaceme = urlencode($replaceme);
     }
     return $replaceme;
 }
 function acymailing_replaceusertags(&$email, &$user, $send = true)
 {
     $match = '#(?:{|%7B)cbtag:(.*)(?:}|%7D)#Ui';
     $variables = array('subject', 'body', 'altbody');
     $found = false;
     foreach ($variables as $var) {
         if (empty($email->{$var})) {
             continue;
         }
         $found = preg_match_all($match, $email->{$var}, $results[$var]) || $found;
         if (empty($results[$var][0])) {
             unset($results[$var]);
         }
     }
     if (!$found) {
         return;
     }
     $values = null;
     if (!empty($user->userid)) {
         $db = JFactory::getDBO();
         $db->setQuery('SELECT * FROM ' . acymailing_table('comprofiler', false) . ' WHERE user_id = ' . $user->userid . ' LIMIT 1');
         $values = $db->loadObject();
     }
     include_once ACYMAILING_ROOT . 'administrator' . DS . 'components' . DS . 'com_comprofiler' . DS . 'plugin.foundation.php';
     cbimport('cb.database');
     $currentCBUser = null;
     $tags = array();
     foreach ($results as $var => $allresults) {
         foreach ($allresults[0] as $i => $oneTag) {
             if (isset($tags[$oneTag])) {
                 continue;
             }
             $arguments = explode('|', $allresults[1][$i]);
             $field = $arguments[0];
             unset($arguments[0]);
             $mytag = null;
             $mytag->default = $this->params->get('default_' . $field, '');
             if (!empty($arguments)) {
                 foreach ($arguments as $onearg) {
                     $args = explode(':', $onearg);
                     if (isset($args[1])) {
                         $mytag->{$args}[0] = $args[1];
                     } else {
                         $mytag->{$args}[0] = 1;
                     }
                 }
             }
             if (substr($field, 0, 6) == 'cbapi_' and !empty($user->userid)) {
                 if (empty($currentCBUser)) {
                     $currentCBUser =& CBuser::getInstance($user->userid);
                 }
                 if (!empty($currentCBUser)) {
                     $values->{$field} = $currentCBUser->getField(substr($field, 6), $mytag->default, 'html', 'none', 'profile', 0, true);
                 }
             }
             $replaceme = isset($values->{$field}) ? $values->{$field} : $mytag->default;
             if (!empty($mytag->type)) {
                 if ($mytag->type == 'date') {
                     if (empty($mytag->format)) {
                         $mytag->format = JText::_('DATE_FORMAT_LC3');
                     }
                     $replaceme = acymailing_getDate(acymailing_getTime($replaceme), $mytag->format);
                 }
                 if ($mytag->type == 'image' and !empty($replaceme)) {
                     $replaceme = '<img src="' . ACYMAILING_LIVE . 'images/comprofiler/' . $replaceme . '"/>';
                 }
             }
             if ($field == 'thumb') {
                 $replaceme = '<img src="' . ACYMAILING_LIVE . 'images/comprofiler/tn' . $values->avatar . '"/>';
             } elseif ($field == 'avatar') {
                 $replaceme = '<img src="' . ACYMAILING_LIVE . 'images/comprofiler/' . $values->avatar . '"/>';
             }
             if (!empty($mytag->lower)) {
                 $replaceme = strtolower($replaceme);
             }
             if (!empty($mytag->ucwords)) {
                 $replaceme = ucwords($replaceme);
             }
             if (!empty($mytag->ucfirst)) {
                 $replaceme = ucfirst($replaceme);
             }
             if (!empty($mytag->urlencode)) {
                 $replaceme = urlencode($replaceme);
             }
             if (!empty($mytag->maxheight) || !empty($mytag->maxwidth)) {
                 $pictureHelper = acymailing_get('helper.acypict');
                 $pictureHelper->maxHeight = empty($mytag->maxheight) ? 999 : $mytag->maxheight;
                 $pictureHelper->maxWidth = empty($mytag->maxwidth) ? 999 : $mytag->maxwidth;
                 $replaceme = $pictureHelper->resizePictures($replaceme);
             }
             $tags[$oneTag] = $replaceme;
         }
     }
     foreach ($results as $var => $allresults) {
         $email->{$var} = str_replace(array_keys($tags), $tags, $email->{$var});
     }
 }
Example #14
0
 function save($mail)
 {
     if (isset($mail->alias) or empty($mail->mailid)) {
         if (empty($mail->alias)) {
             $mail->alias = $mail->subject;
         }
         $mail->alias = JFilterOutput::stringURLSafe(trim($mail->alias));
     }
     if (empty($mail->mailid)) {
         if (empty($mail->created)) {
             $mail->created = time();
         }
         if (empty($mail->userid)) {
             $user =& JFactory::getUser();
             $mail->userid = $user->id;
         }
         if (empty($mail->key)) {
             $mail->key = md5($mail->alias . time());
         }
     } else {
         if (!empty($mail->attach)) {
             $oldMailObject = $this->get($mail->mailid);
             if (!empty($oldMailObject)) {
                 $mail->attach = array_merge($oldMailObject->attach, $mail->attach);
             }
         }
     }
     if (!empty($mail->attach) and !is_string($mail->attach)) {
         $mail->attach = serialize($mail->attach);
     }
     if (isset($mail->filter) and !is_string($mail->filter)) {
         $mail->filter = serialize($mail->filter);
     }
     if (!empty($mail->params)) {
         if (!empty($mail->params['lastgenerateddate']) && !is_numeric($mail->params['lastgenerateddate'])) {
             $mail->params['lastgenerateddate'] = acymailing_getTime($mail->params['lastgenerateddate']);
         }
         $mail->params = serialize($mail->params);
     }
     if (!empty($mail->senddate) && !is_numeric($mail->senddate)) {
         $mail->senddate = acymailing_getTime($mail->senddate);
     }
     if (empty($mail->mailid)) {
         $status = $this->database->insertObject(acymailing_table('mail'), $mail);
     } else {
         $status = $this->database->updateObject(acymailing_table('mail'), $mail, 'mailid');
     }
     if (!empty($mail->params) and is_string($mail->params)) {
         $mail->params = unserialize($mail->params);
     }
     if (!empty($mail->attach) and is_string($mail->attach)) {
         $mail->attach = unserialize($mail->attach);
     }
     if ($status) {
         return empty($mail->mailid) ? $this->database->insertid() : $mail->mailid;
     }
     return false;
 }
Example #15
0
 function acymailing_replaceusertags(&$email, &$user, $send = true)
 {
     $match = '#(?:{|%7B)usertag:(.*)(?:}|%7D)#Ui';
     $variables = array('subject', 'body', 'altbody');
     $found = false;
     foreach ($variables as $var) {
         if (empty($email->{$var})) {
             continue;
         }
         $found = preg_match_all($match, $email->{$var}, $results[$var]) || $found;
         if (empty($results[$var][0])) {
             unset($results[$var]);
         }
     }
     if (!$found) {
         return;
     }
     $db = JFactory::getDBO();
     $receivervalues = null;
     $tags = array();
     foreach ($results as $var => $allresults) {
         foreach ($allresults[0] as $i => $oneTag) {
             if (isset($tags[$oneTag])) {
                 continue;
             }
             $arguments = explode('|', $allresults[1][$i]);
             $field = $arguments[0];
             unset($arguments[0]);
             $mytag = null;
             $mytag->default = $this->params->get('default_' . $field, '');
             if (!empty($arguments)) {
                 foreach ($arguments as $onearg) {
                     $args = explode(':', $onearg);
                     if (isset($args[1])) {
                         $mytag->{$args}[0] = $args[1];
                     } else {
                         $mytag->{$args}[0] = 1;
                     }
                 }
             }
             $values = null;
             if (!empty($mytag->info) and $mytag->info == 'sender') {
                 if (empty($this->sendervalues[$email->mailid]) and !empty($email->userid)) {
                     $db->setQuery('SELECT * FROM ' . acymailing_table('users', false) . ' WHERE id = ' . $email->userid . ' LIMIT 1');
                     $this->sendervalues[$email->mailid] = $db->loadObject();
                 }
                 if (!empty($this->sendervalues[$email->mailid])) {
                     $values = $this->sendervalues[$email->mailid];
                 }
             } else {
                 if (empty($receivervalues) and !empty($user->userid)) {
                     $db->setQuery('SELECT * FROM ' . acymailing_table('users', false) . ' WHERE id = ' . $user->userid . ' LIMIT 1');
                     $receivervalues = $db->loadObject();
                 }
                 if (!empty($receivervalues)) {
                     $values = $receivervalues;
                 }
             }
             $replaceme = isset($values->{$field}) ? $values->{$field} : $mytag->default;
             if (!empty($mytag->type)) {
                 if ($mytag->type == 'date') {
                     if (empty($mytag->format)) {
                         $mytag->format = JText::_('DATE_FORMAT_LC3');
                     }
                     $replaceme = acymailing_getDate(acymailing_getTime($replaceme), $mytag->format);
                 }
             }
             if (!empty($mytag->part)) {
                 $parts = explode(' ', $replaceme);
                 if ($mytag->part == 'last') {
                     $replaceme = count($parts) > 1 ? end($parts) : '';
                 } else {
                     $replaceme = reset($parts);
                 }
             }
             if (!empty($mytag->lower)) {
                 $replaceme = strtolower($replaceme);
             }
             if (!empty($mytag->ucwords)) {
                 $replaceme = ucwords($replaceme);
             }
             if (!empty($mytag->ucfirst)) {
                 $replaceme = ucfirst($replaceme);
             }
             if (!empty($mytag->urlencode)) {
                 $replaceme = urlencode($replaceme);
             }
             $tags[$oneTag] = $replaceme;
         }
     }
     foreach ($results as $var => $allresults) {
         $email->{$var} = str_replace(array_keys($tags), $tags, $email->{$var});
     }
 }