Example #1
0
 function listing()
 {
     global $Itemid;
     $app = JFactory::getApplication();
     $config = acymailing_config();
     $jsite = JFactory::getApplication('site');
     $menus = $jsite->getMenu();
     $menu = $menus->getActive();
     if (empty($menu) and !empty($Itemid)) {
         $menus->setActive($Itemid);
         $menu = $menus->getItem($Itemid);
     }
     $selectedLists = 'all';
     if (is_object($menu)) {
         jimport('joomla.html.parameter');
         $menuparams = new acyParameter($menu->params);
         $this->assign('listsintrotext', $menuparams->get('listsintrotext'));
         $this->assign('listsfinaltext', $menuparams->get('listsfinaltext'));
         $selectedLists = $menuparams->get('lists', 'all');
         $document = JFactory::getDocument();
         if ($menuparams->get('menu-meta_description')) {
             $document->setDescription($menuparams->get('menu-meta_description'));
         }
         if ($menuparams->get('menu-meta_keywords')) {
             $document->setMetadata('keywords', $menuparams->get('menu-meta_keywords'));
         }
         if ($menuparams->get('robots')) {
             $document->setMetadata('robots', $menuparams->get('robots'));
         }
         if ($menuparams->get('page_title')) {
             acymailing_setPageTitle($menuparams->get('page_title'));
         }
     }
     if (empty($menuparams)) {
         $pathway = $app->getPathway();
         $pathway->addItem(JText::_('MAILING_LISTS'));
     }
     $document = JFactory::getDocument();
     $link = '&format=feed&limitstart=';
     if ($config->get('acyrss_format') == 'rss' || $config->get('acyrss_format') == 'both') {
         $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0');
         $document->addHeadLink(JRoute::_($link . '&type=rss'), 'alternate', 'rel', $attribs);
     }
     if ($config->get('acyrss_format') == 'atom' || $config->get('acyrss_format') == 'both') {
         $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0');
         $document->addHeadLink(JRoute::_($link . '&type=atom'), 'alternate', 'rel', $attribs);
     }
     $listsClass = acymailing_get('class.list');
     $allLists = $listsClass->getLists('', $selectedLists);
     if (acymailing_level(1)) {
         $allLists = $listsClass->onlyCurrentLanguage($allLists);
     }
     $myItem = empty($Itemid) ? '' : '&Itemid=' . $Itemid;
     $this->assignRef('rows', $allLists);
     $this->assignRef('item', $myItem);
 }
Example #2
0
	function view(){

		global $Itemid;

		$app = JFactory::getApplication();

		$document = JFactory::getDocument();

		$this->addFeed();



		$pathway = $app->getPathway();
		$my = JFactory::getUser();

		$frontEndManagement = false;
		$listid = acymailing_getCID('listid');

		$values = new stdClass();
		$values->suffix = '';
		$jsite = JFactory::getApplication('site');
		$menus = $jsite->getMenu();
		$menu	= $menus->getActive();

		if(empty($menu) AND !empty($Itemid)){
			$menus->setActive($Itemid);
			$menu	= $menus->getItem($Itemid);
		}

		if (is_object( $menu )) {
			jimport('joomla.html.parameter');
			$menuparams = new acyParameter( $menu->params );
		}

		if(!empty($menuparams)){
			$values->suffix = $menuparams->get('pageclass_sfx','');
		}

		if(empty($listid) && !empty($menuparams)){
			$listid = $menuparams->get('listid');
			if ($menuparams->get('menu-meta_description')) $document->setDescription($menuparams->get('menu-meta_description'));
			if ($menuparams->get('menu-meta_keywords')) $document->setMetadata('keywords',$menuparams->get('menu-meta_keywords'));
			if ($menuparams->get('robots')) $document->setMetadata('robots',$menuparams->get('robots'));
			if ($menuparams->get('page_title')) acymailing_setPageTitle($menuparams->get('page_title'));
		}

		$config = acymailing_config();
		$indexFollow = $config->get('indexFollow', '');
		$tagIndFol = array();
		if(strpos($indexFollow, 'noindex') !== false) $tagIndFol[] = 'noindex';
		if(strpos($indexFollow, 'nofollow') !== false) $tagIndFol[] = 'nofollow';
		if(!empty($tagIndFol)) $document->setMetadata('robots',implode(',',$tagIndFol));

		if(!empty($listid)){
			 $listClass = acymailing_get('class.list');
			 $oneList = $listClass->get($listid);
			 if(!empty($oneList->visible) AND $oneList->published AND (empty($menuparams) || !$menuparams->get('listid'))){
				 $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 = JRequest::getString('mailid','nomailid');
		if(empty($mailid)){
			die('This is a Newsletter-template... and you can not access the online version of a Newsletter-template!<br />Please <a href="administrator/index.php?option=com_acymailing&ctrl=newsletter&task=edit" >create a Newsletter</a> using your template and then try again your "view it online" link!');
			exit;
		}

		if($mailid == 'nomailid'){
			$db = JFactory::getDBO();
			$query = 'SELECT m.`mailid` FROM `#__acymailing_list` as l JOIN `#__acymailing_listmail` as lm ON l.listid=lm.listid 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 AND m.`type` = "news" AND l.`type` = "list"';
			if(!empty($listid)) $query .= ' AND l.`listid` = '.(int) $listid;
			$query .= ' ORDER BY m.`senddate` DESC, m.`mailid` DESC LIMIT 1';
			$db->setQuery($query);
			$mailid = $db->loadResult();
		}
		$mailid = intval($mailid);
		if(empty($mailid)) return JError::raiseError( 404, 'Newsletter not found');

		$access_sub = true;
		 if(acymailing_level(3)){
			$listmail = acymailing_get('class.listmail');
			$allLists = $listmail->getLists($mailid);
			$access_sub = false;
			if(!empty($allLists)){
				foreach($allLists as $alist){
					if(empty($alist->mailid)) continue;
					if(!$alist->published OR !$alist->visible OR $alist->access_sub == 'none') continue;
					if(acymailing_isAllowed($alist->access_sub)){
						$access_sub = true;
						break;
					}

				}
			}
		}

		$mailClass = acymailing_get('helper.mailer');
		$mailClass->loadedToSend = false;
		$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::getCmd('key');
			if(empty($key) OR $key !== $oneMail->key){
				$reason = (!$oneMail->published) ? 'Newsletter not published' : (!$oneMail->visible ? 'Newsletter not visible' : (!$access_sub ? 'Access not allowed' : ''));
				$app->enqueueMessage('You can not have access to this e-mail : '.$reason,'error');
				$app->redirect(acymailing_completeLink('lists',false,true));
				return false;
			}
		}

		$fshare = '';
		if(preg_match('#<img[^>]*id="pictshare"[^>]*>#i',$oneMail->body,$pregres) && preg_match('#src="([^"]*)"#i',$pregres[0],$pict)){
			$fshare = $pict[1];
		}elseif(preg_match('#<img[^>]*class="[^"]*pictshare[^"]*"[^>]*>#i',$oneMail->body,$pregres) && preg_match('#src="([^"]*)"#i',$pregres[0],$pict)){
			$fshare = $pict[1];
		}elseif(preg_match('#class="acymailing_content".*(<img[^>]*>)#is',$oneMail->body,$pregres) && preg_match('#src="([^"]*)"#i',$pregres[1],$pict)){
			if(strpos($pregres[1],JText::_('JOOMEXT_READ_MORE')) === false) $fshare = $pict[1];
		}

		if(!empty($fshare)){
			$document->setMetadata('og:image', $fshare);
		}

		$document->setMetadata('og:url',acymailing_frontendLink('index.php?option=com_acymailing&ctrl=archive&task=view&mailid='.$oneMail->mailid,JRequest::getCmd('tmpl') == 'component' ? true : false));
		$document->setMetadata('og:title',$oneMail->subject);
		if(!empty($oneMail->metadesc))$document->setMetadata('og:description',$oneMail->metadesc);

		$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 = new stdClass();
			$receiver->name = JText::_('VISITOR');
		}

		$oneMail->sendHTML = true;
		$mailClass->dispatcher->trigger('acymailing_replaceusertags',array(&$oneMail,&$receiver,false));

		$pathway->addItem($oneMail->subject);

		$document	= JFactory::getDocument();
		acymailing_setPageTitle($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);
		$config =& acymailing_config();
		$this->assignRef('config',$config);
		$this->assignRef('my',$my);
		$this->assignRef('receiver',$receiver);
		$this->assignRef('values',$values);

		if($oneMail->html){
			$templateClass = acymailing_get('class.template');
			$templateClass->archiveSection = true;
			$templateClass->displayPreview('newsletter_preview_area',$oneMail->tempid,$oneMail->subject);
		}
	}
Example #3
0
 function display($tpl = null)
 {
     global $Itemid;
     $db = JFactory::getDBO();
     $app = JFactory::getApplication();
     $doc = JFactory::getDocument();
     $jsite = JFactory::getApplication('site');
     $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 acyParameter($menu->params);
     }
     $listid = acymailing_getCID('listid');
     if (empty($listid) and !empty($menuparams)) {
         $listid = $menuparams->get('listid');
     }
     $doc->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'));
     }
     $config = acymailing_config();
     $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.' . $config->get('acyrss_order', 'senddate') . ' ' . ($config->get('acyrss_order', 'senddate') == 'subject' ? 'ASC' : 'DESC');
     $query .= ' LIMIT ' . $config->get('acyrss_element', '20');
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     $doc->title = $config->get('acyrss_name', '');
     $doc->description = $config->get('acyrss_description', '');
     $receiver = new stdClass();
     $receiver->name = JText::_('VISITOR');
     $receiver->subid = 0;
     $mailClass = acymailing_get('helper.mailer');
     foreach ($rows as $row) {
         $mailClass->loadedToSend = false;
         $oneMail = $mailClass->load($row->mailid);
         $oneMail->sendHTML = true;
         $mailClass->dispatcher->trigger('acymailing_replaceusertags', array(&$oneMail, &$receiver, false));
         $title = $this->escape($oneMail->subject);
         $title = html_entity_decode($title);
         $link = JRoute::_('index.php?option=com_acymailing&amp;ctrl=archive&amp;task=view&amp;listid=' . $oneList->listid . '-' . $oneList->alias . '&amp;mailid=' . $row->mailid . '-' . $row->alias);
         $author = $oneMail->userid;
         $item = new JFeedItem();
         $item->title = $title;
         $item->link = $link;
         $item->description = $oneMail->body;
         $item->date = $oneMail->created;
         $item->category = $oneMail->type;
         $item->author = $author;
         $doc->addItem($item);
     }
 }
Example #4
0
 function modify()
 {
     global $Itemid;
     $app = JFactory::getApplication();
     $pathway = $app->getPathway();
     $document = JFactory::getDocument();
     $values = new stdClass();
     $values->show_page_heading = 0;
     $listsClass = acymailing_get('class.list');
     $subscriberClass = acymailing_get('class.subscriber');
     $jsite = JFactory::getApplication('site');
     $menus = $jsite->getMenu();
     $menu = $menus->getActive();
     if (empty($menu) and !empty($Itemid)) {
         $menus->setActive($Itemid);
         $menu = $menus->getItem($Itemid);
     }
     if (is_object($menu)) {
         jimport('joomla.html.parameter');
         $menuparams = new acyParameter($menu->params);
         if (!empty($menuparams)) {
             $this->assign('introtext', $menuparams->get('introtext'));
             $this->assign('finaltext', $menuparams->get('finaltext'));
             if ($menuparams->get('menu-meta_description')) {
                 $document->setDescription($menuparams->get('menu-meta_description'));
             }
             if ($menuparams->get('menu-meta_keywords')) {
                 $document->setMetadata('keywords', $menuparams->get('menu-meta_keywords'));
             }
             if ($menuparams->get('robots')) {
                 $document->setMetadata('robots', $menuparams->get('robots'));
             }
             if ($menuparams->get('page_title')) {
                 acymailing_setPageTitle($menuparams->get('page_title'));
             }
             $values->suffix = $menuparams->get('pageclass_sfx', '');
             $values->page_heading = ACYMAILING_J16 ? $menuparams->get('page_heading') : $menuparams->get('page_title');
             $values->show_page_heading = ACYMAILING_J16 ? $menuparams->get('show_page_heading', 0) : $menuparams->get('show_page_title', 0);
         }
     }
     $subscriber = $subscriberClass->identify(true);
     if (empty($subscriber)) {
         $subscription = $listsClass->getLists('listid');
         $subscriber = new stdClass();
         $subscriber->html = 1;
         $subscriber->subid = 0;
         $subscriber->key = 0;
         if (!empty($subscription)) {
             foreach ($subscription as $id => $onesub) {
                 $subscription[$id]->status = 1;
                 if (!empty($menuparams) and strtolower($menuparams->get('listschecked', 'all')) != 'all' and !in_array($id, explode(',', $menuparams->get('listschecked', 'all')))) {
                     $subscription[$id]->status = 0;
                 }
             }
         }
         $pathway->addItem(JText::_('SUBSCRIPTION'));
         if (empty($menu)) {
             acymailing_setPageTitle(JText::_('SUBSCRIPTION'));
         }
     } else {
         $subscription = $subscriberClass->getSubscription($subscriber->subid, 'listid');
         $pathway->addItem(JText::_('MODIFY_SUBSCRIPTION'));
         if (empty($menu)) {
             acymailing_setPageTitle(JText::_('MODIFY_SUBSCRIPTION'));
         }
     }
     acymailing_initJSStrings();
     if (!empty($menuparams) and strtolower($menuparams->get('lists', 'all')) != 'all') {
         $visibleLists = strtolower($menuparams->get('lists', 'all'));
         if ($visibleLists == 'none') {
             $subscription = array();
         } else {
             $newSubscription = array();
             $visiblesListsArray = explode(',', $visibleLists);
             foreach ($subscription as $id => $onesub) {
                 if (in_array($id, $visiblesListsArray)) {
                     $newSubscription[$id] = $onesub;
                 }
             }
             $subscription = $newSubscription;
         }
     }
     if (!acymailing_level(3)) {
         if (!empty($menuparams) && strtolower($menuparams->get('customfields', 'default')) != 'default') {
             $fieldsToDisplay = strtolower($menuparams->get('customfields', 'default'));
             $this->assignRef('fieldsToDisplay', $fieldsToDisplay);
         } else {
             $this->assign('fieldsToDisplay', 'default');
         }
     }
     $displayLists = false;
     foreach ($subscription as $oneSub) {
         if (!empty($oneSub->published) and $oneSub->visible) {
             $displayLists = true;
             break;
         }
     }
     $this->assignRef('values', $values);
     $this->assign('status', acymailing_get('type.festatus'));
     $this->assignRef('subscription', $subscription);
     $this->assignRef('subscriber', $subscriber);
     $this->assignRef('displayLists', $displayLists);
     $this->assign('config', acymailing_config());
 }
Example #5
0
 function display($tpl = null)
 {
     global $Itemid;
     $db = JFactory::getDBO();
     $app = JFactory::getApplication();
     $doc = JFactory::getDocument();
     $feedEmail = @$app->getCfg('feed_email') ? $app->getCfg('feed_email') : 'author';
     $siteEmail = $app->getCfg('mailfrom');
     $jsite = JFactory::getApplication('site');
     $menus = $jsite->getMenu();
     $menu = $menus->getActive();
     $listed = array();
     if (empty($menu) and !empty($Itemid)) {
         $menus->setActive($Itemid);
         $menu = $menus->getItem($Itemid);
     }
     $myItem = empty($Itemid) ? '' : '&Itemid=' . $Itemid;
     $selectedLists = 'all';
     if (is_object($menu)) {
         jimport('joomla.html.parameter');
         $menuparams = new acyParameter($menu->params);
         $selectedLists = $menuparams->get('lists', 'all');
     }
     $listsClass = acymailing_get('class.list');
     $allLists = $listsClass->getLists('listid', $selectedLists);
     foreach ($allLists as $oneList) {
         if ($oneList->published && $oneList->visible && acymailing_isAllowed($oneList->access_sub)) {
             $listed[] = $oneList->listid;
         }
     }
     $config = acymailing_config();
     $filters = array();
     $filters[] = 'a.type = \'news\'';
     $filters[] = 'a.published = 1';
     $filters[] = 'a.visible = 1';
     $filters[] = 'c.listid IN (' . implode(',', $listed) . ')';
     $query = 'SELECT a.*,c.listid';
     $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 .= ' GROUP BY a.mailid ORDER BY a.' . $config->get('acyrss_order', 'senddate') . ' ' . ($config->get('acyrss_order', 'senddate') == 'subject' ? 'ASC' : 'DESC');
     $query .= ' LIMIT ' . $config->get('acyrss_element', '20');
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     $doc->title = $config->get('acyrss_name', '');
     $doc->description = $config->get('acyrss_description', '');
     $receiver = new stdClass();
     $receiver->name = JText::_('VISITOR');
     $receiver->subid = 0;
     $mailClass = acymailing_get('helper.mailer');
     $mailClass->loadedToSend = false;
     foreach ($rows as $row) {
         $oneMail = $mailClass->load($row->mailid);
         $oneMail->sendHTML = true;
         $mailClass->dispatcher->trigger('acymailing_replaceusertags', array(&$oneMail, &$receiver, false));
         $title = $this->escape($oneMail->subject);
         $title = html_entity_decode($title);
         $oneList = $allLists[$row->listid];
         $link = JRoute::_('index.php?option=com_acymailing&amp;ctrl=archive&amp;task=view&amp;listid=' . $oneList->listid . '-' . $oneList->alias . '&amp;mailid=' . $row->mailid . '-' . $row->alias);
         $description = $oneMail->body;
         $author = $oneMail->userid;
         $item = new JFeedItem();
         $item->title = $title;
         $item->link = $link;
         $item->description = $description;
         $item->date = acymailing_getDate($oneMail->senddate, '%Y-%m-%d %H:%M:%S');
         $item->category = JText::_('NEWSLETTER');
         $doc->addItem($item);
     }
 }
Example #6
0
	function modify(){
		global $Itemid;

		$app = JFactory::getApplication();
		$pathway	= $app->getPathway();
		$document	= JFactory::getDocument();
		$values = new stdClass();
		$values->show_page_heading = 0;

		$listsClass = acymailing_get('class.list');
		$subscriberClass = acymailing_get('class.subscriber');

		$jsite = JFactory::getApplication('site');
		$menus = $jsite->getMenu();
		$menu	= $menus->getActive();

		if(empty($menu) AND !empty($Itemid)){
			$menus->setActive($Itemid);
			$menu	= $menus->getItem($Itemid);
		}

		if (is_object( $menu )) {
			jimport('joomla.html.parameter');
			$menuparams = new acyParameter( $menu->params );

			if(!empty($menuparams)){
				$this->assign('introtext',$menuparams->get('introtext'));
				$this->assign('finaltext',$menuparams->get('finaltext'));

				if ($menuparams->get('menu-meta_description')) $document->setDescription($menuparams->get('menu-meta_description'));
				if ($menuparams->get('menu-meta_keywords')) $document->setMetadata('keywords',$menuparams->get('menu-meta_keywords'));
				if ($menuparams->get('robots')) $document->setMetadata('robots',$menuparams->get('robots'));
				if ($menuparams->get('page_title')) acymailing_setPageTitle($menuparams->get('page_title'));

				$values->suffix = $menuparams->get('pageclass_sfx','');
				$values->page_heading = ACYMAILING_J16 ? $menuparams->get('page_heading') : $menuparams->get('page_title');
				$values->show_page_heading = ACYMAILING_J16 ? $menuparams->get('show_page_heading',0) : $menuparams->get('show_page_title',0);
			}
		}

		$subscriber = $subscriberClass->identify(true);
		if(empty($subscriber)){
			$subscription = $listsClass->getLists('listid');
			$subscriber = new stdClass();
			$subscriber->html = 1;
			$subscriber->subid = 0;
			$subscriber->key = 0;

			if(!empty($subscription)){
				foreach($subscription as $id => $onesub){
					$subscription[$id]->status = 1;
					if(!empty($menuparams) && strtolower($menuparams->get('listschecked','all')) != 'all' && !in_array($id,explode(',',$menuparams->get('listschecked','all')))){
						$subscription[$id]->status = 0;
					}
				}
			}

			$pathway->addItem(JText::_('SUBSCRIPTION'));
			if(empty($menu)) acymailing_setPageTitle(JText::_('SUBSCRIPTION'));
		}else{
			$subscription = $subscriberClass->getSubscription($subscriber->subid,'listid');

			$pathway->addItem(JText::_('MODIFY_SUBSCRIPTION'));
			if(empty($menu)) acymailing_setPageTitle(JText::_('MODIFY_SUBSCRIPTION'));
		}

		acymailing_initJSStrings();

		if(!empty($menuparams) AND strtolower($menuparams->get('lists','all')) != 'all'){
			$visibleLists = strtolower($menuparams->get('lists','all'));
			if($visibleLists == 'none') $subscription = array();
			else{
				$newSubscription = array();
				$visiblesListsArray = explode(',',$visibleLists);
				foreach($subscription as $id => $onesub){
					if(in_array($id,$visiblesListsArray)) $newSubscription[$id] = $onesub;
				}
				$subscription = $newSubscription;
			}
		}

		if(acymailing_level(1)){
			$subscription = $listsClass->onlyCurrentLanguage($subscription);

			$js = "function refreshCaptcha(){
					var captchaLink = document.getElementById('captcha_picture').src;
					myregexp = new RegExp('val[-=]([0-9]+)');
					valToChange=captchaLink.match(myregexp)[1];
					document.getElementById('captcha_picture').src = captchaLink.replace(valToChange,valToChange+'0');
				}";
			$document->addScriptDeclaration( $js );
		}

		if(acymailing_level(3)){
			$fieldsClass = acymailing_get('class.fields');
			$fieldsClass->origin = 'subform';
			if(!empty($menuparams) && strtolower($menuparams->get('customfields','default')) != 'default'){
				$extraFields = $fieldsClass->getFields(strtolower($menuparams->get('customfields')),$subscriber);
			} else{
				$extraFields = $fieldsClass->getFields('frontcomp',$subscriber);
			}
			$this->assignRef('fieldsClass',$fieldsClass);
			$this->assignRef('extraFields',$extraFields);
			$js = $fieldsClass->prepareConditionalDisplay($extraFields, 'data[subscriber]', 'modifyForm');
			if(!empty($js)) $document->addScriptDeclaration($js);

			$requiredFields = array();
			$validMessages = array();
			$checkFields = array();
			$checkFieldsType = array();
			$checkFieldsRegexp = array();
			$validCheckMsg = array();

			foreach($extraFields as $oneField){
				if(in_array($oneField->namekey,array('name','email'))) continue;
				if(!empty($oneField->required)){
					$requiredFields[] = $oneField->namekey;
					if(!empty($oneField->options['errormessage'])){
						$validMessages[] = addslashes($fieldsClass->trans($oneField->options['errormessage']));
					}else{
						$validMessages[] = addslashes(JText::sprintf('FIELD_VALID',$fieldsClass->trans($oneField->fieldname)));
					}
				}
				if($oneField->type == 'text' && !empty($oneField->options['checkcontent'])){
					$checkFields[] = $oneField->namekey;
					$checkFieldsType[] = $oneField->options['checkcontent'];
					if($oneField->options['checkcontent'] == 'regexp') $checkFieldsRegexp[] = $oneField->options['regexp'];
					if(!empty($oneField->options['errormessagecheckcontent'])){
						$validCheckMsg[] = addslashes($fieldsClass->trans($oneField->options['errormessagecheckcontent']));
					}elseif(!empty($oneField->options['errormessage'])){
						$validCheckMsg[] = addslashes($fieldsClass->trans($oneField->options['errormessage']));
					} else{
						$validCheckMsg[] = addslashes(JText::sprintf('FIELD_CONTENT_VALID',$fieldsClass->trans($oneField->fieldname)));
					}
				}
			}

			$doc = JFactory::getDocument();
			if(!empty($requiredFields)){
				$js = "
				acymailing['reqFieldsComp'] = Array('".implode("','",$requiredFields)."');
				acymailing['validFieldsComp'] = Array('".implode("','",$validMessages)."');
				";
				$doc->addScriptDeclaration( $js );
			}
			if(!empty($checkFields)){
				$js = "acymailing['checkFields'] = Array('".implode("','",$checkFields)."');
				acymailing['checkFieldsType'] = Array('".implode("','",$checkFieldsType)."');
				acymailing['validCheckFields'] = Array('".implode("','",$validCheckMsg)."');";
				if(!empty($checkFieldsRegexp)) $js .= "acymailing['checkFieldsRegexp'] = Array('".implode("','",$checkFieldsRegexp)."');";
				$js .= "
				";
				$doc->addScriptDeclaration( $js );
			}

			$my = JFactory::getUser();
			foreach($subscription as $listid => $oneList){
				if(!acymailing_isAllowed($oneList->access_sub)){
					$subscription[$listid]->published = false;
					continue;
				}
			}
		}


		if(!acymailing_level(3)){
			if(!empty($menuparams) && strtolower($menuparams->get('customfields','default')) != 'default'){
				$fieldsToDisplay = strtolower($menuparams->get('customfields','default'));
				$this->assignRef('fieldsToDisplay',$fieldsToDisplay);
			} else{
				$this->assign('fieldsToDisplay','default');
			}
		}

		$hiddenLists = '';
		if(!empty($menuparams)){
			$hiddenLists = trim($menuparams->get('hiddenlists','None'));
			if(empty($subscriber)) $allLists = $listsClass->getLists('listid');
			else $allLists = $subscriberClass->getSubscription($subscriber->subid,'listid');
			if(acymailing_level(1)) $allLists = $listsClass->onlyCurrentLanguage($allLists);
			if(acymailing_level(3)) $allLists = $listsClass->onlyAllowedLists($allLists);

			$hiddenListsArray = array();
			if(strpos($hiddenLists,',') || is_numeric($hiddenLists)){
				$allhiddenlists = explode(',',$hiddenLists);
				foreach($allLists as $oneList){
					if(!$oneList->published || !in_array($oneList->listid,$allhiddenlists)) continue;
					$hiddenListsArray[] = $oneList->listid;
					unset($subscription[$oneList->listid]);
				}
			}elseif(strtolower($hiddenLists) == 'all'){
				$subscription = array();
				foreach($allLists as $oneList){
					if(!empty($oneList->published)) $hiddenListsArray[] = $oneList->listid;
				}
			}
			$hiddenLists = implode(',',$hiddenListsArray);
		}

		$displayLists = false;
		foreach($subscription as $oneSub){
			if(!empty( $oneSub->published) AND $oneSub->visible){
				$displayLists = true;
				break;
			}
		}

		$this->assignRef('hiddenlists',$hiddenLists);
		$this->assignRef('values',$values);
		$this->assign('status',acymailing_get('type.festatus'));
		$this->assignRef('subscription',$subscription);
		$this->assignRef('subscriber',$subscriber);
		$this->assignRef('displayLists',$displayLists);
		$this->assign('config',acymailing_config());
	}
Example #7
0
 function view()
 {
     global $Itemid;
     $app = JFactory::getApplication();
     $document = JFactory::getDocument();
     $currentBase = $document->getBase();
     if (!empty($currentBase)) {
         if (isset($_SERVER["REQUEST_URI"])) {
             $requestUri = $_SERVER["REQUEST_URI"];
         } else {
             $requestUri = $_SERVER['PHP_SELF'];
             if (!empty($_SERVER['QUERY_STRING'])) {
                 $requestUri = rtrim($requestUri, '/') . '?' . $_SERVER['QUERY_STRING'];
             }
         }
         $currenturl = ((empty($_SERVER['HTTPS']) or strtolower($_SERVER['HTTPS']) != "on") ? 'http://' : 'https://') . $_SERVER["HTTP_HOST"] . $requestUri;
         $document->setBase($currenturl);
     }
     $pathway = $app->getPathway();
     $my = JFactory::getUser();
     $frontEndManagement = false;
     $listid = acymailing_getCID('listid');
     if (empty($listid)) {
         $jsite = JFactory::getApplication('site');
         $menus = $jsite->getMenu();
         $menu = $menus->getActive();
         if (empty($menu) and !empty($Itemid)) {
             $menus->setActive($Itemid);
             $menu = $menus->getItem($Itemid);
         }
         if (is_object($menu)) {
             jimport('joomla.html.parameter');
             $menuparams = new acyParameter($menu->params);
         }
         if (!empty($menuparams)) {
             $listid = $menuparams->get('listid');
             $document = JFactory::getDocument();
             if ($menuparams->get('menu-meta_description')) {
                 $document->setDescription($menuparams->get('menu-meta_description'));
             }
             if ($menuparams->get('menu-meta_keywords')) {
                 $document->setMetadata('keywords', $menuparams->get('menu-meta_keywords'));
             }
             if ($menuparams->get('robots')) {
                 $document->setMetadata('robots', $menuparams->get('robots'));
             }
             if ($menuparams->get('page_title')) {
                 $document->setTitle($menuparams->get('page_title'));
             }
         }
     }
     if (!empty($listid)) {
         $listClass = acymailing_get('class.list');
         $oneList = $listClass->get($listid);
         if (!empty($oneList->visible) and $oneList->published and empty($menuparams) || !$menuparams->get('listid')) {
             $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 = JRequest::getString('mailid', 'nomailid');
     if (empty($mailid)) {
         return JError::raiseError(404, 'You can not preview a Newsletter-template, please create a Newsletter from your template');
     }
     if ($mailid == 'nomailid') {
         $db = JFactory::getDBO();
         $query = 'SELECT m.`mailid` FROM `#__acymailing_list` as l JOIN `#__acymailing_listmail` as lm ON l.listid=lm.listid 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 AND l.`type` = "list"';
         if (!empty($listid)) {
             $query .= ' AND l.`listid` = ' . (int) $listid;
         }
         $query .= ' ORDER BY m.`senddate` DESC, m.`mailid` DESC LIMIT 1';
         $db->setQuery($query);
         $mailid = $db->loadResult();
     }
     $mailid = intval($mailid);
     if (empty($mailid)) {
         return JError::raiseError(404, 'Newsletter not found');
     }
     $access_sub = true;
     $mailClass = acymailing_get('helper.mailer');
     $mailClass->loadedToSend = false;
     $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) {
             $reason = !$oneMail->published ? 'Newsletter not published' : (!$oneMail->visible ? 'Newsletter not visible' : (!$access_sub ? 'Access not allowed' : ''));
             $app->enqueueMessage('You can not have access to this e-mail : ' . $reason, '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 = new stdClass();
         $receiver->name = JText::_('VISITOR');
     }
     $oneMail->sendHTML = true;
     $mailClass->dispatcher->trigger('acymailing_replaceusertags', array(&$oneMail, &$receiver, false));
     $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);
     $config =& acymailing_config();
     $this->assignRef('config', $config);
     $this->assignRef('my', $my);
     $this->assignRef('receiver', $receiver);
 }