function update() { $config = acymailing::config(); if (!acymailing::isAllowed($config->get('acl_config_manage', 'all'))) { acymailing::display(JText::_('ACY_NOTALLOWED'), 'error'); return false; } acymailing::setTitle(JText::_('UPDATE_ABOUT'), 'install', 'update'); $bar =& JToolBar::getInstance('toolbar'); $bar->appendButton('Link', 'back', JText::_('ACY_CLOSE'), acymailing::completeLink('dashboard')); return $this->_iframe(ACYMAILING_UPDATEURL . 'update'); }
function display($tpl = null) { global $Itemid; $db =& JFactory::getDBO(); $app =& JFactory::getApplication(); $document =& JFactory::getDocument(); $params =& $app->getParams(); $feedEmail = @$app->getCfg('feed_email') ? $app->getCfg('feed_email') : 'author'; $siteEmail = $app->getCfg('mailfrom'); $menus =& JSite::getMenu(); $menu = $menus->getActive(); if (empty($menu) and !empty($Itemid)) { $menus->setActive($Itemid); $menu = $menus->getItem($Itemid); } $myItem = empty($Itemid) ? '' : '&Itemid=' . $Itemid; if (is_object($menu)) { jimport('joomla.html.parameter'); $menuparams = new JParameter($menu->params); } $listid = acymailing::getCID('listid'); if (empty($listid) and !empty($menuparams)) { $listid = $menuparams->get('listid'); } $document->link = acymailing::completeLink('archive&listid=' . intval($listid)); $listClass = acymailing::get('class.list'); if (empty($listid)) { return JError::raiseError(404, 'Mailing List not found'); } $oneList = $listClass->get($listid); if (empty($oneList->listid)) { return JError::raiseError(404, 'Mailing List not found : ' . $listid); } if (!acymailing::isAllowed($oneList->access_sub) || !$oneList->published || !$oneList->visible) { return JError::raiseError(404, JText::_('ACY_NOTALLOWED')); } $filters = array(); $filters[] = 'a.type = \'news\''; $filters[] = 'a.published = 1'; $filters[] = 'a.visible = 1'; $filters[] = 'c.listid = ' . $oneList->listid; $query = 'SELECT a.*'; $query .= ' FROM ' . acymailing::table('listmail') . ' as c'; $query .= ' LEFT JOIN ' . acymailing::table('mail') . ' as a on a.mailid = c.mailid '; $query .= ' WHERE (' . implode(') AND (', $filters) . ')'; $query .= ' ORDER BY a.senddate DESC, c.mailid DESC'; $db->setQuery($query, 0, $app->getCfg('feed_limit')); $rows = $db->loadObjectList(); foreach ($rows as $row) { } }
function addSubscription($subid, $lists) { $app =& JFactory::getApplication(); $my = JFactory::getUser(); $result = true; $time = time(); $subid = intval($subid); $listHelper = acymailing::get('helper.list'); foreach ($lists as $status => $listids) { $status = intval($status); JArrayHelper::toInteger($listids); $this->database->setQuery('SELECT `listid`,`access_sub` FROM ' . acymailing::table('list') . ' WHERE `listid` IN (' . implode(',', $listids) . ') AND `type` = \'list\''); $allResults = $this->database->loadObjectList('listid'); $listids = array_keys($allResults); //-1 is unsubscribe if ($status == '-1') { $column = 'unsubdate'; } else { $column = 'subdate'; } $values = array(); foreach ($listids as $listid) { if (empty($listid)) { continue; } if ($status > 0 && acymailing::level(3)) { if (!$app->isAdmin() && $this->checkAccess && $allResults[$listid]->access_sub != 'all') { if (!acymailing::isAllowed($allResults[$listid]->access_sub, $this->gid)) { continue; } } } $values[] = intval($listid) . ',' . $subid . ',' . $status . ',' . $time; } if (empty($values)) { continue; } $query = 'INSERT INTO ' . acymailing::table('listsub') . ' (listid,subid,`status`,' . $column . ') VALUES (' . implode('),(', $values) . ')'; $this->database->setQuery($query); $result = $this->database->query() && $result; if ($status == 1) { $listHelper->subscribe($subid, $listids); } } return $result; }
function store() { if (!$this->isAllowed('configuration', 'manage')) { return; } $app =& JFactory::getApplication(); JRequest::checkToken() or die('Invalid Token'); $formData = JRequest::getVar('config', array(), '', 'array'); $aclcats = JRequest::getVar('aclcat', array(), '', 'array'); if (!empty($aclcats)) { if (JRequest::getString('acl_configuration', 'all') != 'all' && !acymailing::isAllowed($formData['acl_configuration_manage'])) { $app->enqueueMessage(JText::_('ACL_WRONG_CONFIG'), 'notice'); unset($formData['acl_configuration_manage']); } $deleteAclCats = array(); $unsetVars = array('save', 'create', 'modify', 'delete', 'fields', 'export', 'import', 'view', 'send', 'schedule', 'bounce', 'test'); foreach ($aclcats as $oneCat) { if (JRequest::getString('acl_' . $oneCat) == 'all') { foreach ($unsetVars as $oneVar) { unset($formData['acl_' . $oneCat . '_' . $oneVar]); } $deleteAclCats[] = $oneCat; } } } $config =& acymailing::config(); $status = $config->save($formData); if (!empty($deleteAclCats)) { $db =& JFactory::getDBO(); $db->setQuery("DELETE FROM `#__acymailing_config` WHERE `namekey` LIKE 'acl_" . implode("%' OR `namekey` LIKE 'acl_", $deleteAclCats) . "%'"); $db->query(); } if ($status) { $app->enqueueMessage(JText::_('JOOMEXT_SUCC_SAVED'), 'message'); } else { $app->enqueueMessage(JText::_('ERROR_SAVING'), 'error'); } $config->load(); }
function form() { $tempid = acymailing::getCID('tempid'); $app =& JFactory::getApplication(); $config = acymailing::config(); if (!empty($tempid)) { $templateClass = acymailing::get('class.template'); $template = $templateClass->get($tempid); if (!empty($template->body)) { $template->body = acymailing::absoluteURL($template->body); } } else { $template->body = ''; $template->tempid = 0; $template->published = 1; } $editor = acymailing::get('helper.editor'); $editor->setTemplate($template->tempid); $editor->name = 'editor_body'; $editor->content = $template->body; $editor->prepareDisplay(); if (version_compare(JVERSION, '1.6.0', '<')) { $script = 'function submitbutton(pressbutton){ if (pressbutton == \'cancel\') { submitform( pressbutton ); return; }'; } else { $script = 'Joomla.submitbutton = function(pressbutton) { if (pressbutton == \'cancel\') { Joomla.submitform(pressbutton,document.adminForm); return; }'; } $script .= 'if(window.document.getElementById("name").value.length < 2){alert(\'' . JText::_('ENTER_TITLE', true) . '\'); return false;}'; $script .= "if(pressbutton == 'test' && window.document.getElementById('sendtest') && window.document.getElementById('sendtest').style.display == 'none'){ window.document.getElementById('sendtest').style.display = 'block'; return false;}"; $script .= $editor->jsCode(); if (version_compare(JVERSION, '1.6.0', '<')) { $script .= 'submitform( pressbutton );} '; } else { $script .= 'Joomla.submitform(pressbutton,document.adminForm);}; '; } $script .= "function insertTag(tag){ try{jInsertEditorText(tag,'editor_body'); return true;} catch(err){alert('Your editor does not enable AcyMailing to automatically insert the tag, please copy/paste it manually in your Newsletter'); return false;}}"; $script .= 'function addStyle(){ var myTable=window.document.getElementById("classtable"); var newline = document.createElement(\'tr\'); var column = document.createElement(\'td\'); var column2 = document.createElement(\'td\'); var input = document.createElement(\'input\'); var input2 = document.createElement(\'input\'); input.type = \'text\'; input2.type = \'text\'; input.size = \'30\'; input2.size = \'50\'; input.name = \'otherstyles[classname][]\'; input2.name = \'otherstyles[style][]\'; input.value = "' . JText::_('CLASS_NAME', true) . '"; input2.value = "' . JText::_('CSS_STYLE', true) . '"; column.appendChild(input); column2.appendChild(input2); newline.appendChild(column); newline.appendChild(column2); myTable.appendChild(newline); }'; $doc =& JFactory::getDocument(); $doc->addScriptDeclaration($script); $paramBase = ACYMAILING_COMPONENT . '.' . $this->getName(); $infos = null; $infos->receiver_type = $app->getUserStateFromRequest($paramBase . ".receiver_type", 'receiver_type', '', 'string'); $infos->test_email = $app->getUserStateFromRequest($paramBase . ".test_email", 'test_email', '', 'string'); acymailing::setTitle(JText::_('ACY_TEMPLATE'), 'acytemplate', 'template&task=edit&tempid=' . $tempid); $bar =& JToolBar::getInstance('toolbar'); if (acymailing::isAllowed($config->get('acl_tags_view', 'all'))) { $bar->appendButton('Acytags'); } JToolBarHelper::divider(); JToolBarHelper::custom('test', 'send', '', JText::_('SEND_TEST'), false); JToolBarHelper::spacer(); JToolBarHelper::save(); JToolBarHelper::apply(); JToolBarHelper::cancel(); JToolBarHelper::divider(); $bar->appendButton('Pophelp', 'template-form'); $this->assignRef('editor', $editor); $this->assignRef('receiverClass', acymailing::get('type.testreceiver')); $this->assignRef('template', $template); $this->assignRef('colorBox', acymailing::get('type.color')); $this->assignRef('infos', $infos); jimport('joomla.html.pane'); $tabs =& JPane::getInstance('tabs'); $this->assignRef('tabs', $tabs); }
<span class="acyeditbutton"><a href="<?php echo acymailing::completeLink('newsletter&task=edit&mailid=' . $row->mailid . '&listid=' . $this->list->listid); ?> " title="<?php echo JText::_('ACY_EDIT', true); ?> " ><img class="icon16" src="<?php echo ACYMAILING_IMAGES; ?> icons/icon-16-edit.png" alt="<?php echo JText::_('ACY_EDIT', true); ?> " /></a></span> <?php } if (!empty($row->senddate) && acymailing::isAllowed($this->config->get('acl_statistics_manage', 'all'))) { ?> <span class="acystatsbutton"><a class="modal" rel="{handler: 'iframe', size: {x: 800, y: 590}}" href="<?php echo acymailing::completeLink('newsletter&task=stats&mailid=' . $row->mailid . '&listid=' . $this->list->listid, true); ?> "><img src="<?php echo ACYMAILING_IMAGES; ?> icons/icon-16-stats.png" alt="<?php echo JText::_('STATISTICS', true); ?> " /></a></span> <?php } ?> <?php
JSubMenuHelper::addEntry(JText::_('USERS'), 'index.php?option=com_acymailing&ctrl=subscriber', $taskGroup == 'subscriber'); } if (acymailing::isAllowed($config->get('acl_lists_manage', 'all'))) { JSubMenuHelper::addEntry(JText::_('LISTS'), 'index.php?option=com_acymailing&ctrl=list', $taskGroup == 'list'); } if (acymailing::isAllowed($config->get('acl_newsletters_manage', 'all'))) { JSubMenuHelper::addEntry(JText::_('NEWSLETTERS'), 'index.php?option=com_acymailing&ctrl=newsletter', $taskGroup == 'newsletter'); } if (acymailing::level(2)) { if (acymailing::isAllowed($config->get('acl_autonewsletters_manage', 'all'))) { JSubMenuHelper::addEntry(JText::_('AUTONEWSLETTERS'), 'index.php?option=com_acymailing&ctrl=autonews', $taskGroup == 'autonews'); } } if (acymailing::level(3)) { if (acymailing::isAllowed($config->get('acl_campaign_manage', 'all'))) { JSubMenuHelper::addEntry(JText::_('CAMPAIGN'), 'index.php?option=com_acymailing&ctrl=campaign', $taskGroup == 'campaign'); } } if (acymailing::isAllowed($config->get('acl_templates_manage', 'all'))) { JSubMenuHelper::addEntry(JText::_('ACY_TEMPLATES'), 'index.php?option=com_acymailing&ctrl=template', $taskGroup == 'template'); } if (acymailing::isAllowed($config->get('acl_queue_manage', 'all'))) { JSubMenuHelper::addEntry(JText::_('QUEUE'), 'index.php?option=com_acymailing&ctrl=queue', $taskGroup == 'queue'); } if (acymailing::isAllowed($config->get('acl_statistics_manage', 'all'))) { JSubMenuHelper::addEntry(JText::_('STATISTICS'), 'index.php?option=com_acymailing&ctrl=stats', $taskGroup == 'stats'); } if (acymailing::isAllowed($config->get('acl_configuration_manage', 'all'))) { JSubMenuHelper::addEntry(JText::_('CONFIGURATION'), 'index.php?option=com_acymailing&ctrl=config', $taskGroup == 'config'); } }
$listsClass = acymailing::get('class.list'); if (empty($identifiedUser->subid)) { $allLists = $listsClass->getLists('listid'); } else { $allLists = $userClass->getSubscription($identifiedUser->subid, 'listid'); } if (acymailing::level(1)) { $allLists = $listsClass->onlyCurrentLanguage($allLists); } if (acymailing::level(3)) { $my = JFactory::getUser(); foreach ($allLists as $listid => $oneList) { if (!$allLists[$listid]->published) { continue; } if (!acymailing::isAllowed($oneList->access_sub)) { $allLists[$listid]->published = false; } } } if (strpos($visibleLists, ',') or is_numeric($visibleLists)) { $allvisiblelists = explode(',', $visibleLists); foreach ($allLists as $oneList) { if ($oneList->published and in_array($oneList->listid, $allvisiblelists)) { $visibleListsArray[] = $oneList->listid; } } } elseif (strtolower($visibleLists) == 'all') { foreach ($allLists as $oneList) { if ($oneList->published) { $visibleListsArray[] = $oneList->listid;
function view() { $app =& JFactory::getApplication(); $pathway =& $app->getPathway(); $my = JFactory::getUser(); $frontEndManagement = false; $listid = acymailing::getCID('listid'); if (!empty($listid)) { $listClass = acymailing::get('class.list'); $oneList = $listClass->get($listid); if (!empty($oneList->visible) and $oneList->published) { $pathway->addItem($oneList->name, acymailing::completeLink('archive&listid=' . $oneList->listid . ':' . $oneList->alias)); } if (!empty($oneList->listid) and acymailing::level(3)) { if (!empty($my->id) and (int) $my->id == (int) $oneList->userid) { $frontEndManagement = true; } if (!empty($my->id)) { if ($oneList->access_manage == 'all' or acymailing::isAllowed($oneList->access_manage)) { $frontEndManagement = true; } } } } $mailid = acymailing::getCID('mailid'); if (empty($mailid)) { $db =& JFactory::getDBO(); $query = 'SELECT m.`mailid` FROM `#__acymailing_list` as l LEFT JOIN `#__acymailing_listmail` as lm ON l.listid=lm.listid LEFT JOIN `#__acymailing_mail` as m on lm.mailid = m.mailid'; $query .= ' WHERE l.`visible` = 1 AND l.`published` = 1 AND m.`visible`= 1 AND m.`published` = 1'; if (!empty($listid)) { $query .= ' AND l.`listid` = ' . (int) $listid; } $query .= ' ORDER BY m.`mailid` DESC LIMIT 1'; $db->setQuery($query); $mailid = $db->loadResult(); if (empty($mailid)) { return JError::raiseError(404, 'Newsletter not found'); } } $access_sub = true; $mailClass = acymailing::get('helper.mailer'); $oneMail = $mailClass->load($mailid); if (empty($oneMail->mailid)) { return JError::raiseError(404, 'Newsletter not found : ' . $mailid); } if (!$frontEndManagement and (!$access_sub or !$oneMail->published or !$oneMail->visible)) { $key = JRequest::getString('key'); if (empty($key) or $key !== $oneMail->key) { $app->enqueueMessage('You can not have access to this e-mail', 'error'); $app->redirect(acymailing::completeLink('lists', false, true)); return false; } } $subkeys = JRequest::getString('subid', JRequest::getString('sub')); if (!empty($subkeys)) { $db =& JFactory::getDBO(); $subid = intval(substr($subkeys, 0, strpos($subkeys, '-'))); $subkey = substr($subkeys, strpos($subkeys, '-') + 1); $db->setQuery('SELECT * FROM ' . acymailing::table('subscriber') . ' WHERE `subid` = ' . $db->Quote($subid) . ' AND `key` = ' . $db->Quote($subkey) . ' LIMIT 1'); $receiver = $db->loadObject(); } if (empty($receiver) and !empty($my->email)) { $userClass = acymailing::get('class.subscriber'); $receiver = $userClass->get($my->email); } if (empty($receiver)) { $receiver = null; $receiver->name = JText::_('VISITOR'); } $oneMail->sendHTML = true; $mailClass->dispatcher->trigger('acymailing_replaceusertagspreview', array(&$oneMail, &$receiver)); $pathway->addItem($oneMail->subject); $document =& JFactory::getDocument(); $document->setTitle($oneMail->subject); if (!empty($oneMail->metadesc)) { $document->setDescription($oneMail->metadesc); } if (!empty($oneMail->metakey)) { $document->setMetadata('keywords', $oneMail->metakey); } $this->assignRef('mail', $oneMail); $this->assignRef('frontEndManagement', $frontEndManagement); $this->assignRef('list', $oneList); $this->assignRef('config', acymailing::config()); $this->assignRef('my', $my); }
function isAllowed($cat, $action) { if (acymailing::level(3)) { $config = acymailing::config(); if (!acymailing::isAllowed($config->get('acl_' . $cat . '_' . $action, 'all'))) { acymailing::display(JText::_('ACY_NOTALLOWED'), 'error'); return false; } } return true; }
function listing() { $app =& JFactory::getApplication(); $pageInfo = null; $config = acymailing::config(); JHTML::_('behavior.modal', 'a.modal'); $paramBase = ACYMAILING_COMPONENT . '.' . $this->getName() . $this->getLayout(); $pageInfo->filter->order->value = $app->getUserStateFromRequest($paramBase . ".filter_order", 'filter_order', 'a.senddate', 'cmd'); $pageInfo->filter->order->dir = $app->getUserStateFromRequest($paramBase . ".filter_order_Dir", 'filter_order_Dir', 'desc', 'word'); $pageInfo->search = $app->getUserStateFromRequest($paramBase . ".search", 'search', '', 'string'); $pageInfo->search = JString::strtolower($pageInfo->search); $pageInfo->limit->value = $app->getUserStateFromRequest($paramBase . '.list_limit', 'limit', $app->getCfg('list_limit'), 'int'); $pageInfo->limit->start = $app->getUserStateFromRequest($paramBase . '.limitstart', 'limitstart', 0, 'int'); $database =& JFactory::getDBO(); $filters = array(); if (!empty($pageInfo->search)) { $searchVal = '\'%' . $database->getEscaped($pageInfo->search, true) . '%\''; $filters[] = implode(" LIKE {$searchVal} OR ", $this->searchFields) . " LIKE {$searchVal}"; } $query = 'SELECT ' . implode(' , ', $this->selectFields); $query .= ' FROM ' . acymailing::table('stats') . ' as a'; $query .= ' LEFT JOIN ' . acymailing::table('mail') . ' as b on a.mailid = b.mailid'; if (!empty($filters)) { $query .= ' WHERE (' . implode(') AND (', $filters) . ')'; } if (!empty($pageInfo->filter->order->value)) { $query .= ' ORDER BY ' . $pageInfo->filter->order->value . ' ' . $pageInfo->filter->order->dir; } $database->setQuery($query, $pageInfo->limit->start, $pageInfo->limit->value); $rows = $database->loadObjectList(); $queryCount = 'SELECT COUNT(a.mailid) FROM ' . acymailing::table('stats') . ' as a'; if (!empty($pageInfo->search)) { $queryCount .= ' LEFT JOIN ' . acymailing::table('mail') . ' as b on a.mailid = b.mailid'; } if (!empty($filters)) { $queryCount .= ' WHERE (' . implode(') AND (', $filters) . ')'; } $database->setQuery($queryCount); $pageInfo->elements->total = $database->loadResult(); if (!empty($pageInfo->search)) { $rows = acymailing::search($pageInfo->search, $rows); } $pageInfo->elements->page = count($rows); jimport('joomla.html.pagination'); $pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value); acymailing::setTitle(JText::_('GLOBAL_STATISTICS'), 'stats', 'stats'); $bar =& JToolBar::getInstance('toolbar'); if (acymailing::level(1)) { $bar->appendButton('Link', 'stats', JText::_('CHARTS'), acymailing::completeLink('diagram')); } JToolBarHelper::spacer(); JToolBarHelper::spacer(); if (acymailing::isAllowed($config->get('acl_statistics_delete', 'all'))) { JToolBarHelper::deleteList(JText::_('ACY_VALIDDELETEITEMS')); } JToolBarHelper::divider(); $bar->appendButton('Pophelp', 'stats-listing'); if (acymailing::isAllowed($config->get('acl_cpanel_manage', 'all'))) { $bar->appendButton('Link', 'acymailing', JText::_('ACY_CPANEL'), acymailing::completeLink('dashboard')); } $this->assignRef('rows', $rows); $this->assignRef('pageInfo', $pageInfo); $this->assignRef('pagination', $pagination); }
<tr> <td width="45%" valign="top"> <div id="acymailingcpanel"> <?php foreach ($this->buttons as $oneButton) { echo $oneButton; } ?> </div> </td> <td valign="top"> <?php if (acymailing::isAllowed($this->config->get('acl_subscriber_manage', 'all')) || acymailing::isAllowed($this->config->get('acl_statistics_manage', 'all'))) { echo $this->tabs->startPane('dash_tab'); if (acymailing::isAllowed($this->config->get('acl_subscriber_manage', 'all'))) { echo $this->tabs->startPanel(JText::_('USERS'), 'dash_users'); include dirname(__FILE__) . DS . 'users.php'; echo $this->tabs->endPanel(); } if (acymailing::isAllowed($this->config->get('acl_statistics_manage', 'all'))) { echo $this->tabs->startPanel(JText::_('STATISTICS'), 'dash_stats'); include dirname(__FILE__) . DS . 'stats.php'; echo $this->tabs->endPanel(); } echo $this->tabs->endPane(); } ?> </td> </tr> </table> </div>
function listing() { $pageInfo = null; $app =& JFactory::getApplication(); $config = acymailing::config(); $paramBase = ACYMAILING_COMPONENT . '.' . $this->getName(); $pageInfo->filter->order->value = $app->getUserStateFromRequest($paramBase . ".filter_order", 'filter_order', 'a.subid', 'cmd'); $pageInfo->filter->order->dir = $app->getUserStateFromRequest($paramBase . ".filter_order_Dir", 'filter_order_Dir', 'desc', 'word'); $selectedList = $app->getUserStateFromRequest($paramBase . "filter_lists", 'filter_lists', 0, 'int'); $selectedStatus = $app->getUserStateFromRequest($paramBase . "filter_status", 'filter_status', 0, 'int'); $pageInfo->search = $app->getUserStateFromRequest($paramBase . ".search", 'search', '', 'string'); $pageInfo->search = JString::strtolower($pageInfo->search); $pageInfo->limit->value = $app->getUserStateFromRequest($paramBase . '.list_limit', 'limit', $app->getCfg('list_limit'), 'int'); $pageInfo->limit->start = $app->getUserStateFromRequest($paramBase . '.limitstart', 'limitstart', 0, 'int'); $database =& JFactory::getDBO(); $displayFields = array(); $displayFields['name'] = null; $displayFields['name']->fieldname = 'JOOMEXT_NAME'; $displayFields['email'] = null; $displayFields['email']->fieldname = 'JOOMEXT_EMAIL'; $displayFields['html'] = null; $displayFields['html']->fieldname = 'RECEIVE_HTML'; $filters = array(); if (!empty($pageInfo->search)) { foreach ($displayFields as $fieldname => $onfield) { if ($fieldname == 'html' or in_array('a.' . $fieldname, $this->searchFields)) { continue; } $this->searchFields[] = 'a.`' . $fieldname . '`'; } $searchVal = '\'%' . $database->getEscaped($pageInfo->search, true) . '%\''; $filters[] = implode(" LIKE {$searchVal} OR ", $this->searchFields) . " LIKE {$searchVal}"; } $leftJoinQuery = array(); if (empty($selectedList) || $selectedStatus == -2) { if (empty($selectedList) && $selectedStatus == -2) { $selectedStatus = 0; } $fromQuery = ' FROM ' . acymailing::table('subscriber') . ' as a '; $countField = "a.subid"; $leftJoinQuery[] = acymailing::table('users', false) . ' as b ON a.userid = b.id'; if ($selectedStatus == 1) { $filters[] = 'a.accept > 0'; } elseif ($selectedStatus == -1) { $filters[] = 'a.accept < 1'; } elseif ($selectedStatus == -2) { $leftJoinQuery[] = acymailing::table('listsub') . ' as c on a.subid = c.subid AND listid = ' . $selectedList; $filters[] = 'c.listid IS NULL'; } elseif ($selectedStatus == 2) { $filters[] = 'a.confirmed < 1'; } elseif ($selectedStatus == 3) { $filters[] = 'a.enabled > 0'; } elseif ($selectedStatus == -3) { $filters[] = 'a.enabled < 1'; } } else { $fromQuery = ' FROM ' . acymailing::table('listsub') . ' as c'; $countField = "c.subid"; $leftJoinQuery[] = acymailing::table('subscriber') . ' as a ON a.subid = c.subid'; $leftJoinQuery[] = acymailing::table('users', false) . ' as b ON a.userid = b.id'; $filters[] = 'c.listid = ' . intval($selectedList); if (!in_array($selectedStatus, array(-1, 1, 2))) { $selectedStatus = 1; } $filters[] = 'c.status = ' . $selectedStatus; } $query = 'SELECT ' . implode(',', $this->selectedFields) . $fromQuery; if (!empty($leftJoinQuery)) { $query .= ' LEFT JOIN ' . implode(' LEFT JOIN ', $leftJoinQuery); } if (!empty($filters)) { $query .= ' WHERE (' . implode(') AND (', $filters) . ')'; } if (!empty($pageInfo->filter->order->value)) { $query .= ' ORDER BY ' . $pageInfo->filter->order->value . ' ' . $pageInfo->filter->order->dir; } $database->setQuery($query, $pageInfo->limit->start, empty($pageInfo->limit->value) ? 500 : $pageInfo->limit->value); $rows = $database->loadObjectList('subid'); $pageInfo->elements->page = count($rows); if ($pageInfo->limit->value > $pageInfo->elements->page) { $pageInfo->elements->total = $pageInfo->limit->start + $pageInfo->elements->page; } else { $queryCount = 'SELECT COUNT(' . $countField . ') ' . $fromQuery; if (!empty($filters)) { if (!empty($leftJoinQuery)) { $queryCount .= ' LEFT JOIN ' . implode(' LEFT JOIN ', $leftJoinQuery); } $queryCount .= ' WHERE (' . implode(') AND (', $filters) . ')'; } $database->setQuery($queryCount); $pageInfo->elements->total = $database->loadResult(); } if (!empty($rows)) { $database->setQuery('SELECT * FROM `#__acymailing_listsub` WHERE `subid` IN (\'' . implode('\',\'', array_keys($rows)) . '\')'); $subscriptions = $database->loadObjectList(); if (!empty($subscriptions)) { foreach ($subscriptions as $onesub) { $sublistid = $onesub->listid; $rows[$onesub->subid]->subscription->{$sublistid} = $onesub; } } } if (!empty($pageInfo->search)) { $rows = acymailing::search($pageInfo->search, $rows); } if (empty($pageInfo->limit->value)) { $pageInfo->limit->value = 100; } jimport('joomla.html.pagination'); $pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value); $filters = null; if (empty($selectedList)) { $statusType = acymailing::get('type.statusfilter'); } else { $statusType = acymailing::get('type.statusfilterlist'); } $listsType = acymailing::get('type.lists'); $filters->status = $statusType->display('filter_status', $selectedStatus); $filters->lists = $listsType->display('filter_lists', $selectedList); acymailing::setTitle(JText::_('USERS'), 'user', 'subscriber'); $bar =& JToolBar::getInstance('toolbar'); if (acymailing::isAllowed($config->get('acl_lists_filter', 'all'))) { $bar->appendButton('Acyactions'); JToolBarHelper::divider(); } if (acymailing::isAllowed($config->get('acl_subscriber_import', 'all'))) { $bar->appendButton('Link', 'import', JText::_('IMPORT'), acymailing::completeLink('data&task=import')); } if (acymailing::isAllowed($config->get('acl_subscriber_export', 'all'))) { JToolBarHelper::custom('export', 'acyexport', '', JText::_('ACY_EXPORT'), false); } JToolBarHelper::divider(); if (acymailing::isAllowed($config->get('acl_subscriber_manage', 'all'))) { JToolBarHelper::addNew(); } if (acymailing::isAllowed($config->get('acl_subscriber_manage', 'all'))) { JToolBarHelper::editList(); } if (acymailing::isAllowed($config->get('acl_subscriber_delete', 'all'))) { JToolBarHelper::deleteList(JText::_('ACY_VALIDDELETEITEMS', true)); } JToolBarHelper::divider(); $bar->appendButton('Pophelp', 'subscriber-listing'); if (acymailing::isAllowed($config->get('acl_cpanel_manage', 'all'))) { $bar->appendButton('Link', 'acymailing', JText::_('ACY_CPANEL'), acymailing::completeLink('dashboard')); } $this->assignRef('lists', $listsType->getData()); $this->assignRef('toggleClass', acymailing::get('helper.toggle')); $this->assignRef('rows', $rows); $this->assignRef('filters', $filters); $this->assignRef('pageInfo', $pageInfo); $this->assignRef('pagination', $pagination); $this->assignRef('config', acymailing::config()); $this->assignRef('displayFields', $displayFields); $this->assignRef('customFields', acymailing::get('class.fields')); }
function display($tpl = null) { JHTML::_('behavior.modal', 'a.modal'); $toggleClass = acymailing::get('helper.toggle'); $config = acymailing::config(); $db =& JFactory::getDBO(); $doc =& JFactory::getDocument(); $app =& JFactory::getApplication(); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $lg =& JFactory::getLanguage(); $language = $lg->getTag(); $styleRemind = 'float:right;margin-right:30px;position:relative;'; $loadLink = '<a onclick="window.document.getElementById(\'acymailing_messages_warning\').style.display = \'none\';return true;" class="modal" rel="{handler: \'iframe\', size:{x:800, y:500}}" href="index.php?option=com_acymailing&tmpl=component&ctrl=file&task=latest&code=' . $language . '">' . JText::_('LOAD_LATEST_LANGUAGE') . '</a>'; if (!file_exists(ACYMAILING_ROOT . 'language' . DS . $language . DS . $language . '.com_acymailing.ini')) { if ($config->get('errorlanguagemissing', 1)) { $notremind = '<small style="' . $styleRemind . '">' . $toggleClass->delete('acymailing_messages_warning', 'errorlanguagemissing_0', 'config', false, JText::_('DONT_REMIND')) . '</small>'; acymailing::display(JText::_('MISSING_LANGUAGE') . ' ' . $loadLink . ' ' . $notremind, 'warning'); } } elseif (version_compare(JText::_('ACY_LANG_VERSION'), $config->get('version'), '<')) { if ($config->get('errorlanguageupdate', 1)) { $notremind = '<small style="' . $styleRemind . '">' . $toggleClass->delete('acymailing_messages_warning', 'errorlanguageupdate_0', 'config', false, JText::_('DONT_REMIND')) . '</small>'; acymailing::display(JText::_('UPDATE_LANGUAGE') . ' ' . $loadLink . ' ' . $notremind, 'warning'); } } acymailing::setTitle(JText::_('CONFIGURATION'), 'config', 'config'); $bar =& JToolBar::getInstance('toolbar'); if (acymailing::level(3)) { $bar->appendButton('Link', 'fields', JText::_('EXTRA_FIELDS'), acymailing::completeLink('fields')); JToolBarHelper::custom('bounce', 'process', '', JText::_('BOUNCE_PROCESS'), false); } JToolBarHelper::custom('test', 'send', '', JText::_('SEND_TEST'), false); JToolBarHelper::divider(); JToolBarHelper::save(); JToolBarHelper::apply(); JToolBarHelper::cancel('cancel', JText::_('ACY_CLOSE')); JToolBarHelper::divider(); $bar->appendButton('Pophelp', 'config'); if (acymailing::isAllowed($config->get('acl_cpanel_manage', 'all'))) { $bar->appendButton('Link', 'acymailing', JText::_('ACY_CPANEL'), acymailing::completeLink('dashboard')); } $elements = null; $elements->add_names = JHTML::_('select.booleanlist', "config[add_names]", '', $config->get('add_names', true)); $elements->embed_images = JHTML::_('select.booleanlist', "config[embed_images]", '', $config->get('embed_images', 0)); $elements->embed_files = JHTML::_('select.booleanlist', "config[embed_files]", '', $config->get('embed_files', 1)); $elements->multiple_part = JHTML::_('select.booleanlist', "config[multiple_part]", '', $config->get('multiple_part', 0)); $mailermethod = array(); $mailermethod[] = JHTML::_('select.option', 'phpmail', 'PHP Mail Function'); $mailermethod[] = JHTML::_('select.option', 'sendmail', 'SendMail'); $mailermethod[] = JHTML::_('select.option', 'qmail', 'QMail'); $mailermethod[] = JHTML::_('select.option', 'smtp', 'SMTP Server'); $js = "function updateMailer(){"; $js .= "mailermethod = window.document.getElementById('mailer_method').value;"; $js .= "if(mailermethod == 'phpmail') {window.document.getElementById('smtp_config').style.display = 'none'; window.document.getElementById('sendmail_config').style.display = 'none';}"; $js .= "if(mailermethod == 'smtp') {window.document.getElementById('smtp_config').style.display = 'block'; window.document.getElementById('sendmail_config').style.display = 'none';}"; $js .= "if(mailermethod == 'qmail') {window.document.getElementById('smtp_config').style.display = 'none'; window.document.getElementById('sendmail_config').style.display = 'none';}"; $js .= "if(mailermethod == 'sendmail') {window.document.getElementById('smtp_config').style.display = 'none'; window.document.getElementById('sendmail_config').style.display = 'block';}"; $js .= '}'; $js .= 'window.addEvent(\'domready\', function(){ updateMailer(); });'; $doc->addScriptDeclaration($js); $elements->mailer_method = JHTML::_('select.genericlist', $mailermethod, "config[mailer_method]", 'size="1" onchange="updateMailer()"', 'value', 'text', $config->get('mailer_method', 'phpmail'), 'mailer_method'); $encodingval = array(); $encodingval[] = JHTML::_('select.option', 'binary', 'Binary'); $encodingval[] = JHTML::_('select.option', 'quoted-printable', 'Quoted-printable'); $encodingval[] = JHTML::_('select.option', '7bit', '7 Bit'); $encodingval[] = JHTML::_('select.option', '8bit', '8 Bit'); $encodingval[] = JHTML::_('select.option', 'base64', 'Base 64'); $elements->encoding_format = JHTML::_('select.genericlist', $encodingval, "config[encoding_format]", 'size="1"', 'value', 'text', $config->get('encoding_format', 'base64')); $charset = acymailing::get('type.charset'); $elements->charset = $charset->display("config[charset]", $config->get('charset', 'UTF-8')); $securedVals = array(); $securedVals[] = JHTML::_('select.option', '', '- - -'); $securedVals[] = JHTML::_('select.option', 'ssl', 'SSL'); $securedVals[] = JHTML::_('select.option', 'tls', 'TLS'); $elements->smtp_secured = JHTML::_('select.genericlist', $securedVals, "config[smtp_secured]", 'size="1"', 'value', 'text', $config->get('smtp_secured')); $elements->smtp_auth = JHTML::_('select.booleanlist', "config[smtp_auth]", '', $config->get('smtp_auth', 0)); $elements->smtp_keepalive = JHTML::_('select.booleanlist', "config[smtp_keepalive]", '', $config->get('smtp_keepalive', 1)); $elements->allow_visitor = JHTML::_('select.booleanlist', "config[allow_visitor]", '', $config->get('allow_visitor', 1)); $editorType = acymailing::get('type.editor'); $elements->editor = $editorType->display('config[editor]', $config->get('editor')); $elements->subscription_message = JHTML::_('select.booleanlist', "config[subscription_message]", '', $config->get('subscription_message', 1)); $elements->confirmation_message = JHTML::_('select.booleanlist', "config[confirmation_message]", '', $config->get('confirmation_message', 1)); $elements->unsubscription_message = JHTML::_('select.booleanlist', "config[unsubscription_message]", '', $config->get('unsubscription_message', 1)); $elements->welcome_message = JHTML::_('select.booleanlist', "config[welcome_message]", '', $config->get('welcome_message', 1)); $elements->unsub_message = JHTML::_('select.booleanlist', "config[unsub_message]", '', $config->get('unsub_message', 1)); $elements->confirm_message = JHTML::_('select.booleanlist', "config[confirm_message]", '', $config->get('confirm_message', 0)); $elements->show_footer = JHTML::_('select.booleanlist', "config[show_footer]", '', $config->get('show_footer', 1)); if (acymailing::level(1)) { $elements->forward = JHTML::_('select.booleanlist', "config[forward]", '', $config->get('forward', false)); } else { $elements->forward = acymailing::getUpgradeLink('essential'); } if (acymailing::level(1)) { $js = "function updateDKIM(dkimval){if(dkimval == 1){document.getElementById('dkim_config').style.display = 'block';}else{document.getElementById('dkim_config').style.display = 'none';}}\r\n\t\t\t\t\twindow.addEvent('load', function(){ updateDKIM(" . $config->get('dkim', 0) . ");});"; $doc->addScriptDeclaration($js); if (function_exists('openssl_sign')) { $elements->dkim = JHTML::_('select.booleanlist', "config[dkim]", 'onclick="updateDKIM(this.value)"', $config->get('dkim', 0)); } else { $elements->dkim = '<input type="hidden" name="config[dkim]" value="0" />PHP Extension openssl not enabled'; } $js = "function updateQueueProcess(newvalue){"; $js .= "if(newvalue == 'onlyauto') {window.document.getElementById('method_auto').style.display = ''; window.document.getElementById('method_manual').style.display = 'none';}"; $js .= "if(newvalue == 'auto') {window.document.getElementById('method_auto').style.display = ''; window.document.getElementById('method_manual').style.display = '';}"; $js .= "if(newvalue == 'manual') {window.document.getElementById('method_auto').style.display = 'none'; window.document.getElementById('method_manual').style.display = '';}"; $js .= '}'; $js .= 'window.addEvent(\'domready\', function(){ updateQueueProcess(\'' . $config->get('queue_type', 'auto') . '\'); });'; $doc->addScriptDeclaration($js); $queueType = array(); $queueType[] = JHTML::_('select.option', 'onlyauto', JText::_('AUTO_ONLY')); $queueType[] = JHTML::_('select.option', 'auto', JText::_('AUTO_MAN')); $queueType[] = JHTML::_('select.option', 'manual', JText::_('MANUAL_ONLY')); $elements->queue_type = JHTML::_('select.radiolist', $queueType, "config[queue_type]", 'onclick="updateQueueProcess(this.value);"', 'value', 'text', $config->get('queue_type', 'auto')); } else { $elements->dkim = acymailing::getUpgradeLink('essential'); } $delayTypeManual = acymailing::get('type.delay'); $elements->queue_pause = $delayTypeManual->display('config[queue_pause]', $config->get('queue_pause'), 0); $delayTypeAuto = acymailing::get('type.delay'); $elements->cron_frequency = $delayTypeAuto->display('config[cron_frequency]', $config->get('cron_frequency'), 0); $cssval = array('css_frontend' => 'component', 'css_module' => 'module', 'css_backend' => 'component'); foreach ($cssval as $configval => $type) { $myvals = array(); $myvals[] = JHTML::_('select.option', '', JText::_('ACY_NONE')); $regex = '^' . $type . '_([-_a-z0-9]*)\\.css$'; $allCSSFiles = JFolder::files(ACYMAILING_MEDIA . 'css', $regex); foreach ($allCSSFiles as $oneFile) { preg_match('#' . $regex . '#i', $oneFile, $results); $myvals[] = JHTML::_('select.option', $results[1], $results[1]); } $js = 'onchange="updateCSSLink(\'' . $configval . '\',\'' . $type . '\',this.value);"'; $currentVal = $config->get($configval, 'default'); $aStyle = empty($currentVal) ? 'style="display:none"' : ''; $elements->{$configval} = JHTML::_('select.genericlist', $myvals, 'config[' . $configval . ']', 'class="inputbox" size="1" ' . $js, 'value', 'text', $config->get($configval, 'default'), $configval . '_choice'); $linkEdit = 'index.php?option=com_acymailing&tmpl=component&ctrl=file&task=css&file=' . $type . '_' . $config->get($configval, 'default') . '&var=' . $configval; $elements->{$configval} .= ' <a id="' . $configval . '_link" ' . $aStyle . ' class="modal" title="' . JText::_('ACY_EDIT', true) . '" href="' . $linkEdit . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><img class="icon16" src="' . ACYMAILING_IMAGES . 'icons/icon-16-edit.png" alt="' . JText::_('ACY_EDIT', true) . '"/></a>'; } $js = "function updateCSSLink(myid,type,newval){\r\n\t\t\tif(newval){document.getElementById(myid+'_link').style.display = '';}else{document.getElementById(myid+'_link').style.display = 'none'}\r\n\t\t\tdocument.getElementById(myid+'_link').href = 'index.php?option=com_acymailing&tmpl=component&ctrl=file&task=css&file='+type+'_'+newval+'&var='+myid;\r\n\t\t}"; $doc->addScriptDeclaration($js); $elements->colortype = acymailing::get('type.color'); $elements->use_sef = JHTML::_('select.booleanlist', "config[use_sef]", '', $config->get('use_sef', 0)); if (version_compare(JVERSION, '1.6.0', '<')) { $query = 'SELECT a.name, a.id as itemid, b.title FROM `#__menu` as a LEFT JOIN `#__menu_types` as b on a.menutype = b.menutype WHERE a.access = 0 ORDER BY b.title ASC,a.ordering ASC'; } else { $query = 'SELECT a.alias as name, a.id as itemid, b.title FROM `#__menu` as a LEFT JOIN `#__menu_types` as b on a.menutype = b.menutype WHERE a.client_id=0 AND a.parent_id != 0 ORDER BY b.title ASC,a.ordering ASC'; } $db->setQuery($query); $joomMenus = $db->loadObjectList(); $menuvalues = array(); $menuvalues[] = JHTML::_('select.option', '0', JText::_('ACY_NONE')); $lastGroup = ''; foreach ($joomMenus as $oneMenu) { if ($oneMenu->title != $lastGroup) { if (!empty($lastGroup)) { $menuvalues[] = JHTML::_('select.option', '</OPTGROUP>'); } $menuvalues[] = JHTML::_('select.option', '<OPTGROUP>', $oneMenu->title); $lastGroup = $oneMenu->title; } $menuvalues[] = JHTML::_('select.option', $oneMenu->itemid, $oneMenu->name); } $elements->acymailing_menu = JHTML::_('select.genericlist', $menuvalues, 'config[itemid]', 'size="1"', 'value', 'text', $config->get('itemid')); $link = 'index.php?option=com_acymailing&tmpl=component&ctrl=email&task=edit&mailid=confirmation'; $elements->editConfEmail = '<a class="modal" id="confirmemail" href="' . $link . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><button onclick="return false">' . JText::_('EDIT_CONF_MAIL') . '</button></a>'; $link = 'index.php?option=com_acymailing&tmpl=component&ctrl=email&task=edit&mailid=notification_created'; $elements->edit_notification_created = '<a class="modal" href="' . $link . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><button onclick="return false">' . JText::_('EDIT_NOTIFICATION_MAIL') . '</button></a>'; $link = 'index.php?option=com_acymailing&tmpl=component&ctrl=email&task=edit&mailid=notification_refuse'; $elements->edit_notification_refuse = '<a class="modal" href="' . $link . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><button onclick="return false">' . JText::_('EDIT_NOTIFICATION_MAIL') . '</button></a>'; $link = 'index.php?option=com_acymailing&tmpl=component&ctrl=email&task=edit&mailid=notification_unsuball'; $elements->edit_notification_unsuball = '<a class="modal" href="' . $link . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><button onclick="return false">' . JText::_('EDIT_NOTIFICATION_MAIL') . '</button></a>'; $link = 'index.php?option=com_acymailing&tmpl=component&ctrl=email&task=edit&mailid=notification_unsub'; $elements->edit_notification_unsub = '<a class="modal" href="' . $link . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><button onclick="return false">' . JText::_('EDIT_NOTIFICATION_MAIL') . '</button></a>'; $link = 'index.php?option=com_acymailing&tmpl=component&ctrl=email&task=edit&mailid=modif'; $elements->editModifEmail = '<a class="modal" id="modifemail" href="' . $link . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><button onclick="return false">' . JText::_('EDIT_NOTIFICATION_MAIL') . '</button></a>'; $path = JLanguage::getLanguagePath(JPATH_ROOT); $dirs = JFolder::folders($path); foreach ($dirs as $dir) { if (strlen($dir) != 5) { continue; } $xmlFiles = JFolder::files($path . DS . $dir, '^([-_A-Za-z]*)\\.xml$'); $xmlFile = reset($xmlFiles); if (empty($xmlFile)) { continue; } $data = JApplicationHelper::parseXMLLangMetaFile($path . DS . $dir . DS . $xmlFile); $oneLanguage = null; $oneLanguage->language = $dir; $oneLanguage->name = $data['name']; $languageFiles = JFolder::files($path . DS . $dir, '^(.*)\\.com_acymailing\\.ini$'); $languageFile = reset($languageFiles); if (!empty($languageFile)) { $linkEdit = 'index.php?option=com_acymailing&tmpl=component&ctrl=file&task=language&code=' . $oneLanguage->language; $oneLanguage->edit = ' <a class="modal" title="' . JText::_('EDIT_LANGUAGE_FILE', true) . '" href="' . $linkEdit . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><img id="image' . $oneLanguage->language . '" class="icon16" src="' . ACYMAILING_IMAGES . 'icons/icon-16-edit.png" alt="' . JText::_('EDIT_LANGUAGE_FILE', true) . '"/></a>'; } else { $linkEdit = 'index.php?option=com_acymailing&tmpl=component&ctrl=file&task=language&code=' . $oneLanguage->language; $oneLanguage->edit = ' <a class="modal" title="' . JText::_('ADD_LANGUAGE_FILE', true) . '" href="' . $linkEdit . '" rel="{handler: \'iframe\', size:{x:800, y:500}}"><img id="image' . $oneLanguage->language . '" class="icon16" src="' . ACYMAILING_IMAGES . 'icons/icon-16-add.png" alt="' . JText::_('ADD_LANGUAGE_FILE', true) . '"/></a>'; } $languages[] = $oneLanguage; } $js = "function updateConfirmation(newvalue){"; $js .= "if(newvalue == 0) {window.document.getElementById('confirmemail').style.display = 'none'; window.document.getElementById('confirm_redirect').disabled = true;}else{window.document.getElementById('confirmemail').style.display = 'inline'; window.document.getElementById('confirm_redirect').disabled = false;}"; $js .= '}'; $js .= "function updateModification(newvalue){ if(newvalue != 'none') {window.document.getElementById('modifemail').style.display = 'none';}else{window.document.getElementById('modifemail').style.display = 'inline';}} "; $js .= 'window.addEvent(\'load\', function(){ updateModification(\'' . $config->get('allow_modif', 'data') . '\'); updateConfirmation(' . $config->get('require_confirmation', 0) . '); });'; $doc->addScriptDeclaration($js); $elements->require_confirmation = JHTML::_('select.booleanlist', "config[require_confirmation]", 'onclick="updateConfirmation(this.value)"', $config->get('require_confirmation', 0)); $allowmodif = array(); $allowmodif[] = JHTML::_('select.option', "none", JText::_('JOOMEXT_NO')); $allowmodif[] = JHTML::_('select.option', "data", JText::_('ONLY_SUBSCRIPTION')); $allowmodif[] = JHTML::_('select.option', "all", JText::_('JOOMEXT_YES')); $elements->allow_modif = JHTML::_('select.radiolist', $allowmodif, "config[allow_modif]", 'size="1" onclick="updateModification(this.value)"', 'value', 'text', $config->get('allow_modif', 'data')); $delayType4 = acymailing::get('type.delay'); $elements->queue_delay = $delayType4->display('config[queue_delay]', $config->get('queue_delay', 0), 2); if (version_compare(JVERSION, '1.6.0', '<')) { $db->setQuery("SELECT name,published,id FROM `#__plugins` WHERE `folder` = 'acymailing' AND `element` NOT LIKE 'plg%' ORDER BY published DESC, ordering ASC"); } else { $db->setQuery("SELECT name,enabled as published,extension_id as id FROM `#__extensions` WHERE `folder` = 'acymailing' AND `type`= 'plugin' AND `element` NOT LIKE 'plg%' ORDER BY enabled DESC, ordering ASC"); } $plugins = $db->loadObjectList(); if (version_compare(JVERSION, '1.6.0', '<')) { $db->setQuery("SELECT name,published,id FROM `#__plugins` WHERE (`folder` != 'acymailing' OR `element` LIKE 'plg%') AND (`name` LIKE '%acymailing%' OR `element` LIKE '%acymailing%') ORDER BY published DESC, ordering ASC"); } else { $db->setQuery("SELECT name,enabled as published ,extension_id as id FROM `#__extensions` WHERE (`folder` != 'acymailing' OR `element` LIKE 'plg%') AND `type` = 'plugin' AND (`name` LIKE '%acymailing%' OR `element` LIKE '%acymailing%') ORDER BY enabled DESC, ordering ASC"); } $integrationplugins = $db->loadObjectList(); $this->assignRef('bounceaction', acymailing::get('type.bounceaction')); $this->assignRef('config', $config); $this->assignRef('languages', $languages); $this->assignRef('elements', $elements); $this->assignRef('plugins', $plugins); $this->assignRef('integrationplugins', $integrationplugins); jimport('joomla.html.pane'); $tabs =& JPane::getInstance('tabs'); $this->assignRef('tabs', $tabs); $this->assignRef('toggleClass', $toggleClass); $images = array('icon-32-apply.png', 'icon-32-save.png', 'icon-32-cancel.png', 'icon-32-send.png', 'icon-32-preview.png', 'icon-32-edit.png', 'icon-32-help.png'); foreach ($images as $oneImage) { $to = ACYMAILING_MEDIA . 'images' . DS . 'icons' . DS . $oneImage; if (version_compare(JVERSION, '1.6.0', '<')) { $from = rtrim(JPATH_ADMINISTRATOR, DS) . DS . 'templates' . DS . 'khepri' . DS . 'images' . DS . 'toolbar' . DS . $oneImage; } else { $from = rtrim(JPATH_ADMINISTRATOR, DS) . DS . 'templates' . DS . 'bluestork' . DS . 'images' . DS . 'toolbar' . DS . $oneImage; } if (!file_exists($to) and file_exists($from)) { if (!JFile::copy($from, $to)) { acymailing::display('Could not copy the file from ' . $from . ' to ' . $to, 'warning'); } } } if (version_compare(JVERSION, '1.6.0', '<') and !file_exists(rtrim(JPATH_SITE, DS) . DS . 'plugins' . DS . 'acymailing' . DS . 'tagsubscriber.php') or !version_compare(JVERSION, '1.6.0', '<') and !file_exists(rtrim(JPATH_SITE, DS) . DS . 'plugins' . DS . 'acymailing' . DS . 'tagsubscriber' . DS . 'tagsubscriber.php')) { acymailing::display(JText::sprintf('ERROR_PLUGINS', 'href="index.php?option=com_acymailing&ctrl=update&task=install"'), 'warning'); } return parent::display($tpl); }
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['config'] = '<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['config'] .= acymailing::getUpgradeLink('enterprise'); } $desc['config'] .= '</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' => 'user', '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' => 'config', 'level' => 0, 'image' => 'config', 'text' => JText::_('CONFIGURATION'), 'acl' => 'acl_configuration_manage'); $buttons[] = array('link' => 'update', 'level' => 0, 'image' => 'install', '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); $this->assignRef('toggleClass', acymailing::get('helper.toggle')); $db = JFactory::getDBO(); $db->setQuery('SELECT name,email,html,confirmed,subid,created FROM ' . acymailing::table('subscriber') . ' ORDER BY created DESC LIMIT 15'); $this->assignRef('users', $db->loadObjectList()); $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'); $this->assignRef('stats', $db->loadObjectList()); $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 preview() { $app =& JFactory::getApplication(); $mailid = acymailing::getCID('mailid'); $config = acymailing::config(); JHTML::_('behavior.modal', 'a.modal'); $mailerHelper = acymailing::get('helper.mailer'); $mail = $mailerHelper->load($mailid); $user =& JFactory::getUser(); $userClass = acymailing::get('class.subscriber'); $receiver = $userClass->get($user->email); $mail->sendHTML = true; $mailerHelper->dispatcher->trigger('acymailing_replaceusertagspreview', array(&$mail, &$receiver)); if (!empty($mail->altbody)) { $mail->altbody = $mailerHelper->textVersion($mail->altbody, false); } $listmailClass = acymailing::get('class.listmail'); $lists = $listmailClass->getReceivers($mail->mailid, true, false); $receiversClass = acymailing::get('type.testreceiver'); $paramBase = ACYMAILING_COMPONENT . '.' . $this->getName(); $infos = null; $infos->receiver_type = $app->getUserStateFromRequest($paramBase . ".receiver_type", 'receiver_type', '', 'string'); $infos->test_html = $app->getUserStateFromRequest($paramBase . ".test_html", 'test_html', 1, 'int'); $infos->test_email = $app->getUserStateFromRequest($paramBase . ".test_email", 'test_email', '', 'string'); acymailing::setTitle(JText::_('ACY_PREVIEW') . ' : ' . $mail->subject, $this->icon, $this->ctrl . '&task=preview&mailid=' . $mailid); $bar =& JToolBar::getInstance('toolbar'); if ($this->type == 'news') { if (acymailing::level(1) && acymailing::isAllowed($config->get('acl_newsletters_schedule', 'all'))) { if ($mail->published == 2) { JToolBarHelper::custom('unschedule', 'unschedule', '', JText::_('UNSCHEDULE'), false); } else { $bar->appendButton('Popsched', "index.php?option=com_acymailing&ctrl=send&task=scheduleready&tmpl=component&mailid=" . $mailid); } } if (acymailing::isAllowed($config->get('acl_newsletters_send', 'all'))) { $bar->appendButton('Popup', 'send', JText::_('SEND'), "index.php?option=com_acymailing&ctrl=send&task=sendready&tmpl=component&mailid=" . $mailid); } JToolBarHelper::divider(); } JToolBarHelper::custom('edit', 'edit', '', JText::_('ACY_EDIT'), false); JToolBarHelper::cancel('cancel', JText::_('ACY_CLOSE')); JToolBarHelper::divider(); $bar->appendButton('Pophelp', $this->ctrl . '-preview'); $this->assignRef('lists', $lists); $this->assignRef('infos', $infos); $this->assignRef('receiverClass', $receiversClass); $this->assignRef('mail', $mail); }
function listing() { $app =& JFactory::getApplication(); $config = acymailing::config(); $pageInfo = null; $paramBase = ACYMAILING_COMPONENT . '.' . $this->getName(); $pageInfo->filter->order->value = $app->getUserStateFromRequest($paramBase . ".filter_order", 'filter_order', 'a.ordering', 'cmd'); $pageInfo->filter->order->dir = $app->getUserStateFromRequest($paramBase . ".filter_order_Dir", 'filter_order_Dir', 'asc', 'word'); $pageInfo->search = $app->getUserStateFromRequest($paramBase . ".search", 'search', '', 'string'); $pageInfo->search = JString::strtolower($pageInfo->search); $selectedCreator = $app->getUserStateFromRequest($paramBase . "filter_creator", 'filter_creator', 0, 'int'); $pageInfo->limit->value = $app->getUserStateFromRequest($paramBase . '.list_limit', 'limit', $app->getCfg('list_limit'), 'int'); $pageInfo->limit->start = $app->getUserStateFromRequest($paramBase . '.limitstart', 'limitstart', 0, 'int'); $database =& JFactory::getDBO(); $filters = array(); if (!empty($pageInfo->search)) { $searchVal = '\'%' . $database->getEscaped($pageInfo->search, true) . '%\''; $filters[] = "a.name LIKE {$searchVal} OR a.description LIKE {$searchVal} OR a.listid LIKE {$searchVal}"; } $filters[] = "a.type = 'list'"; if (!empty($selectedCreator)) { $filters[] = 'a.userid = ' . $selectedCreator; } $query = 'SELECT a.*, d.name as creatorname, d.username, d.email'; $query .= ' FROM ' . acymailing::table('list') . ' as a'; $query .= ' LEFT JOIN ' . acymailing::table('users', false) . ' as d on a.userid = d.id'; $query .= ' WHERE (' . implode(') AND (', $filters) . ')'; $query .= ' GROUP BY a.listid'; if (!empty($pageInfo->filter->order->value)) { $query .= ' ORDER BY ' . $pageInfo->filter->order->value . ' ' . $pageInfo->filter->order->dir; } $database->setQuery($query, $pageInfo->limit->start, $pageInfo->limit->value); $rows = $database->loadObjectList(); $queryCount = 'SELECT COUNT(a.listid) FROM ' . acymailing::table('list') . ' as a'; $queryCount .= ' LEFT JOIN ' . acymailing::table('users', false) . ' as d on a.userid = d.id'; $queryCount .= ' WHERE (' . implode(') AND (', $filters) . ')'; $database->setQuery($queryCount); $pageInfo->elements->total = $database->loadResult(); $listids = array(); foreach ($rows as $oneRow) { $listids[] = $oneRow->listid; } if (!empty($listids)) { $querySelectSub = 'SELECT count(distinct subid) as nbsub,listid FROM ' . acymailing::table('listsub') . ' WHERE listid IN (' . implode(',', $listids) . ') AND status = 1 GROUP BY listid'; $querySelectUnsub = 'SELECT count(distinct subid) as nbunsub,listid FROM ' . acymailing::table('listsub') . ' WHERE listid IN (' . implode(',', $listids) . ') AND status = -1 GROUP BY listid'; $querySelectWaiting = 'SELECT count(distinct subid) as nbwait,listid FROM ' . acymailing::table('listsub') . ' WHERE listid IN (' . implode(',', $listids) . ') AND status = 2 GROUP BY listid'; $database->setQuery($querySelectSub); $subinfos = $database->loadObjectList('listid'); $database->setQuery($querySelectUnsub); $unsubinfos = $database->loadObjectList('listid'); $database->setQuery($querySelectWaiting); $waitinfos = $database->loadObjectList('listid'); } foreach ($rows as $i => $oneRow) { $rows[$i]->nbsub = empty($subinfos[$oneRow->listid]) ? 0 : $subinfos[$oneRow->listid]->nbsub; $rows[$i]->nbunsub = empty($unsubinfos[$oneRow->listid]) ? 0 : $unsubinfos[$oneRow->listid]->nbunsub; $rows[$i]->nbwait = empty($waitinfos[$oneRow->listid]) ? 0 : $waitinfos[$oneRow->listid]->nbwait; } if (!empty($pageInfo->search)) { $rows = acymailing::search($pageInfo->search, $rows); } $pageInfo->elements->page = count($rows); jimport('joomla.html.pagination'); $pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value); acymailing::setTitle(JText::_('LISTS'), 'acylist', 'list'); $bar =& JToolBar::getInstance('toolbar'); if (acymailing::isAllowed($config->get('acl_lists_filter', 'all'))) { $bar->appendButton('Link', 'filter', JText::_('ACY_FILTERS'), acymailing::completeLink('filter')); JToolBarHelper::divider(); } if (acymailing::isAllowed($config->get('acl_lists_manage', 'all'))) { JToolBarHelper::addNew(); } if (acymailing::isAllowed($config->get('acl_lists_manage', 'all'))) { JToolBarHelper::editList(); } if (acymailing::isAllowed($config->get('acl_lists_delete', 'all'))) { JToolBarHelper::deleteList(JText::_('ACY_VALIDDELETEITEMS')); } JToolBarHelper::divider(); $bar->appendButton('Pophelp', 'list-listing'); if (acymailing::isAllowed($config->get('acl_cpanel_manage', 'all'))) { $bar->appendButton('Link', 'acymailing', JText::_('ACY_CPANEL'), acymailing::completeLink('dashboard')); } $order = null; $order->ordering = false; $order->orderUp = 'orderup'; $order->orderDown = 'orderdown'; $order->reverse = false; if ($pageInfo->filter->order->value == 'a.ordering') { $order->ordering = true; if ($pageInfo->filter->order->dir == 'desc') { $order->orderUp = 'orderdown'; $order->orderDown = 'orderup'; $order->reverse = true; } } $filters = null; $listcreatorType = acymailing::get('type.listcreator'); $filters->creator = $listcreatorType->display('filter_creator', $selectedCreator); $this->assignRef('filters', $filters); $this->assignRef('order', $order); $this->assignRef('toggleClass', acymailing::get('helper.toggle')); $this->assignRef('rows', $rows); $this->assignRef('pageInfo', $pageInfo); $this->assignRef('pagination', $pagination); }