HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/confeduphaar/backip-old-files/administrator/components/com_jnews/controllers/lists.jnews.php
<?php
defined('_JEXEC') OR die('Access Denied!');
### © 2006-2020 Joobi. All rights reserved.
### license GNU GPLv3 , link https://joobi.org

 function lists( $action, $task, $listId, $listType ){
	$db = JFactory::getDBO();
	$my	= JFactory::getUser();
	$css = '.icon-48-lists { background-image:url('.JNEWS_PATH_ADMIN_IMAGES2 .'header/lists.png)}';
	$doc = JFactory::getDocument();
	$doc->addStyleDeclaration($css, $type = 'text/css');
	$img = 'lists.png';
	$listsearch = jnews::getVar('listsearch', '', '', 'STRING' );
	$message ='' ;
	$xf = new jNews_Config();

	$showLists = true;
	$checkToggle = false;

	// defined toggle for publish and unpublish of mailings
	if( !empty($task) && ( $task == 'togle' ) ){
		$checkToggle= true;
		$id = JRequest::getInt('listid',0);
		$col = jnews::getVar('col' );

		$listId = ( !empty( $id ) && !empty($col) ) ? $id : $listId;
		$task = ( !empty( $listId ) && !empty($col) ) ? $col : $task;
	}

	switch ($task) {

		case ('new'):
		case ('add'):
			$subscriber = jNews_Subscribers::getSubscriberInfoFromUserId($my->id);

			if(version_compare(JVERSION,'1.6.0','<')){
				$acl = JFactory::getACL();
				$groups = $acl->get_group_children_tree( null, 'USERS', false );
			}else{
				$db = JFactory::getDBO();
				$db->setQuery('SELECT a.*, a.title as text, a.id as value  FROM #__usergroups AS a ORDER BY a.lft ASC');
				$groups = $db->loadObjectList();
			}

			$allGroupIds = array();
			foreach($groups as $oneGroup){
				$allGroupIds[] = $oneGroup->value;
			}

			$newList = new stdClass();
			$showLists = false;
			$newList->id = '';
			$newList->html = 1;
			$newList->new_letter = 1;
			$newList->list_name = '';
			$newList->list_desc = '';
			$newList->template = '';

			if(empty($subscriber)){
				$newList->sendername = '';
				$newList->senderemail = '';
				$newList->bounceadres = '';
			}else{
				$newList->sendername = '';
				$newList->senderemail = '';
				$newList->bounceadres = '';
			}

			$newList->hidden = 1;
			$newList->auto_add = 0;
			$newList->list_type = $listType;
			$newList->delay_min = 1;
			$newList->delay_max = 7;
			$newList->user_choose = 0;
			$newList->cat_id = '0:0';
			$newList->follow_up ='';
			$newList->notify_id =0;
			$newList->owner = $my->id;
			$newList->acc_level = '24,25,7,8';
			$newList->acc_id = implode(',',$allGroupIds);
			$newList->published = 1;
			$newList->start_date = date( 'Y-m-d',  time() );
			$newList->next_date = jnews::getNow();
			$newList->subscribemessage = _JNEWS_DEFAULT_SUBSCRIBE_MESS;
			$newList->unsubscribemessage =  _JNEWS_DEFAULT_UNSUBSCRIBE_MESS;
			$newList->notifyadminmsg =  _JNEWS_UNSUBSCRIBE_ADMIN_NOTIFICATION;
			$newList->subnotifymsg = _JNEWS_SUBSDEFAULT_NOTIFYMSG;
			$newList->subnotifysend = 1;
			$newList->unsubscribesend = 1;
			$newList->unsubscribenotifyadmin = 1;
			$newList->footer = 1;
		    $forms['main'] = " <form action='index.php' method='post' name='adminForm' id=\"adminForm\">" ;
			$show = jNews_ListType::showType($newList->list_type , 'editlist');

			if($listType==1) backHTML::_header( _JNEWS_NEW.' '._JNEWS_LIST , $img , $message , $task, $action  );
			else backHTML::_header( _JNEWS_NEW.' '._JNEWS_AUTORESP. ' '._JNEWS_LIST , $img , $message , $task, $action  );

			backHTML::formStart('editlist', $newList->html, '' );
       		jNews_ListsHTML::editList($newList, $forms, $show, $listType);
			$go[] = jnews::makeObj('act', $action);
			$go[] = jnews::makeObj('listid', $newList->id);
			backHTML::formEnd($go);
			break;

		case ('doNew'):
			JSession::checkToken() or die( 'Invalid Token' );
			$listname = jnews::getVar('list_name', '');
			if(empty($listname))
			{
				echo "<script> alert(' List name must be filled out. '); window.history.go(-1);</script>\n";
				return false;
			}
			$now = jnews::getNow();
   			$query = "SELECT `id` FROM `#__jnews_lists` WHERE `list_name`= '". $db->escape($listname) . "' ";
	     	$db->setQuery($query);
			$lId = $db->loadResult();
			if ($lId>0) {
				echo "<script> alert(' This list already exist, please choose another name. '); window.history.go(-1);</script>\n";
				return false;
			} else {
				$query = "INSERT INTO `#__jnews_lists` (`list_name`,`createdate`) VALUES ( '" . $db->escape($listname) . "'  , '$now' )" ;
				$db->setQuery($query);
				$db->query();
			}

   			$query = "SELECT * FROM `#__jnews_lists` WHERE `list_name`= '". $db->escape($listname) . "' ";
	     	$db->setQuery($query);

					$mynewlist = $db->loadObject();

			$mynewlist->list_name = stripslashes($mynewlist->list_name);
			$mynewlist->list_desc = stripslashes($mynewlist->list_desc);
			$mynewlist->template = $mynewlist->template;
			$mynewlist->layout = stripslashes($mynewlist->layout);
			$mynewlist->subscribemessage = stripslashes($mynewlist->subscribemessage);
			$mynewlist->unsubscribemessage = stripslashes($mynewlist->unsubscribemessage);
			$mynewlist->notifyadminmsg = stripslashes($mynewlist->notifyadminmsg);
			$mynewlist->subnotifysend = stripslashes($mynewlist->subnotifysend);
			$mynewlist->subnotifymsg = stripslashes($mynewlist->subnotifymsg);

	     	$listId = $mynewlist->id;
	     	$message = jnews::printYN( jNews_Lists::updateListFromEdit($listId, '', true, $listType) ,  _JNEWS_LIST_ADDED , _JNEWS_ERROR );
			$xf->plus('totallist0', 1);
			$xf->plus('act_totallist0', 1);
			$xf->plus('totallist'. $listType , 1);
			$xf->plus('act_totallist'. $listType , 1);
			break;

		case ('edit'):
			if ($listId == 0) {
				echo "<script> alert('".addslashes(_JNEWS_SELECT_LIST)."'); window.history.go(-1);</script>\n";
				return false;
			} else {
				$showLists = false;

				$query = 'SELECT * FROM `#__jnews_lists` WHERE `id` = ' . intval($listId);
				$db->setQuery($query);
				$listEdit = $db->loadObject();

				if($listEdit->acc_id == 'all'){
					if(version_compare(JVERSION,'1.6.0','<')){
						$acl = JFactory::getACL();
						$groups = $acl->get_group_children_tree( null, 'USERS', false );
					}else{
						$db = JFactory::getDBO();
						$db->setQuery('SELECT a.*, a.title as text, a.id as value  FROM #__usergroups AS a ORDER BY a.lft ASC');
						$groups = $db->loadObjectList();
					}

					$allGroupIds = array();
					foreach($groups as $oneGroup){
						$allGroupIds[] = $oneGroup->value;
					}

					$listEdit->acc_id = implode(',',$allGroupIds);

				}

				$listEdit->list_name = stripslashes($listEdit->list_name);
				$listEdit->list_desc = stripslashes($listEdit->list_desc);
				$listEdit->template = $listEdit->template;
				$listEdit->layout = stripslashes($listEdit->layout);
				$listEdit->subscribemessage = stripslashes($listEdit->subscribemessage);
				$listEdit->unsubscribemessage = stripslashes($listEdit->unsubscribemessage);
				$listEdit->notifyadminmsg = stripslashes($listEdit->notifyadminmsg);
				$listEdit->subnotifysend = stripslashes($listEdit->subnotifysend);
				$listEdit->subnotifymsg = stripslashes($listEdit->subnotifymsg);
         		$listEdit->new_letter = 0;
			    $forms['main'] = " <form action='index.php' method='post' name='adminForm' id=\"adminForm\">" ;
				$show = jNews_ListType::showType($listEdit->list_type , 'editlist');
	         	backHTML::_header( _JNEWS_EDIT_A. @constant( $GLOBALS[JNEWS.'listname'.$listEdit->list_type] ).' '._JNEWS_LIST , $img , $message , $task, $action );
				backHTML::formStart('listedit', $listEdit->html, '' );
	       		jNews_ListsHTML::editList($listEdit, $forms, $show, $listType);
				$go[] = jnews::makeObj('act', $action);
				$go[] = jnews::makeObj('listid', $listEdit->id);
				backHTML::formEnd($go);
			}
			break;

		case ('update'):
				JSession::checkToken() or die( 'Invalid Token' );
		     	$message = jnews::printYN( jNews_Lists::updateListFromEdit($listId, '', false,$listType) ,  _JNEWS_LIST_UPDATED , _JNEWS_ERROR );
			break;

		case ('delete'):
				JSession::checkToken() or die( 'Invalid Token' );
				$query = "SELECT list_name FROM #__jnews_lists WHERE id=" . (int)$listId;
				$db->setQuery($query);
				$listName = $db->loadResult();
           		$message = jnews::printYN( jNews_Lists::deleteList($listId) ,  '"' .$listName .'"'. _JNEWS_LIST. _JNEWS_SUCCESS_DELETED , _JNEWS_ERROR );
			break;

	   	case ('copy'):
	   			JSession::checkToken() or die( 'Invalid Token' );
	         	$message = jnews::printYN( jNews_Lists::copyList($listId) ,  _JNEWS_LIST_COPY , _JNEWS_ERROR );
			 break;

	   	case ('publish'):
	   			if(!$checkToggle) JSession::checkToken() or die( 'Invalid Token' );
	      		$message = jnews::printYN( jNews_Lists::updateListFromList($listId, true, false) ,  _JNEWS_PUBLISHED , _JNEWS_ERROR );
				if($listType==1)
					jNews_Tools::redirect( 'index.php?option='.JNEWS_OPTION.'&act=list&listype='.$listType );
				else
					jNews_Tools::redirect( 'index.php?option='.JNEWS_OPTION.'&act=arlist&listype='.$listType );
			break;

	   	case ('unpublish'):
	   		if(!$checkToggle) JSession::checkToken() or die( 'Invalid Token' );
			$message = jnews::printYN( jNews_Lists::updateListFromList($listId, false, false) ,  _JNEWS_UNPUBLISHED , _JNEWS_ERROR );
			if($listType==1)
				jNews_Tools::redirect( 'index.php?option='.JNEWS_OPTION.'&act=list&listype='.$listType.'&listid='. $listId );
			else
				jNews_Tools::redirect( 'index.php?option='.JNEWS_OPTION.'&act=arlist&listype='.$listType.'&listid='. $listId );
			break;

		case ('forms'):
		case ('make'):
			if (class_exists('jNews_CreateForm')) {
				jNews_CreateForm::taskOptions($task);
				$showLists = false;
			} else {
				$showLists = true;
			}
			break;

	  case ('cpanel'):
			backHTML::controlPanel();
			return true;
			break;

		case ('toggle'):
				$listid = JRequest::getInt('listid',0);
				$column = jnews::getVar('col' );

				if( !empty($listid) && !empty($column) ){
					$passObj = new stdClass();
					$passObj->tableName = '#__jnews_lists';
					$passObj->columnName = $column;
					$passObj->whereColumn = 'id';
					$passObj->whereColumnValue = $listid;
					jnews::toggle( $passObj );
				}

				if($listType==1)jNews_Tools::redirect( 'index.php?option='.JNEWS_OPTION.'&act=list&listype=1' );
				else jNews_Tools::redirect( 'index.php?option='.JNEWS_OPTION.'&act=arlist&listype=2' );
				break;
	}

	if ($showLists) {
		$limit = -1;
		//Title header
		if($listType==1)
   			backHTML::_header( _JNEWS_MENU_LIST , $img , $message , $task, $action );
   		else
   			backHTML::_header( _JNEWS_ARLIST , $img , $message , $task, $action );

   		$show = jNews_ListType::showType(0 , 'showListsBack');
		$forms['main'] = "<form action='index.php' method='post' name='adminForm' id=\"adminForm\">" ;

		backHTML::formStart('show_mailing' , ''  ,'' );
		$paginationStart = jnews::getVar('pg' );

		$app = JFactory::getApplication();

		if( !empty($paginationStart) ){
			$limitstart = 0;
			$limitend = $paginationStart;
		}else{
			$limitstart = $app->getUserStateFromRequest( 'limitstart', 'limitstart', 0, 'int' );
			$limitend = $app->getUserStateFromRequest( 'limit', 'limit', 0, 'int' );
		}

		$limittotal = jNews_Lists::getListCount( $listType );
		$limittotal = $limittotal[0];
		$setLimit = new stdClass();
		$setLimit->total = ( !empty($limittotal) ) ? $limittotal : 0;
		$setLimit->start = ( !empty( $limitstart ) ) ? $limitstart : 0;
		$setLimit->end = ( !empty($limitend) ) ? $limitend : $limittotal;

		// recheck start
		if( $setLimit->total == $setLimit->end ) $setLimit->start = 0;

		$setSort = new stdClass();

		if($listType=='2'){ //autoresponder
			$key= JNEWS_OPTION . '.arlist';
			$column='id';
			$direction='desc';
		}else{ //newsletter
			$key= JNEWS_OPTION . '.list';
			$column='list_name';
			$direction='asc';
		}

		$setSort->orderValue = $app->getUserStateFromRequest( $key.'filter_order', 'filter_order', $column,'cmd' );
		$setSort->orderDir	= $app->getUserStateFromRequest( $key.'filter_order_Dir', 'filter_order_Dir', $direction,'word' );

		if($listType==2){
?>
<script language="javascript" type="text/javascript">
	function submitbutton(pressbutton) {
		var form = document.adminForm;
		if (pressbutton == 'delete') {
			var $ok = confirm('Are you sure you want to delete?\r\nAll of the mailings attached in this auto-responder will be deleted as well.');
			if ( $ok == true ){
				form.action = 'index.php?option=<?php echo JNEWS_OPTION; ?>&act=arlist&task=delete';
			}else{
				return;
			}
		}
		submitform( pressbutton );
	}
</script>
<?php 
		}

		$listing = jNews_Lists::getLists(0, $listType, 1, '', false, false, false, false, false, $listsearch, $setLimit, $setSort);

		if( isset($setLimit->total) && !empty($listsearch) ){
			$lists = jNews_Lists::getLists(0, $listType, 1, '', false, false,  false, false, false, $listsearch,$setSort );
			$setLimit->total = ( !empty($lists) ) ? count( $lists ) : $setLimit->total;
		}

	 	$totalSubs = array();
	 	$totalUnSubs = array();
	 	$db = JFactory::getDBO();

		if ( !empty($listing) ) {
			foreach($listing as $list){
				$totalSubs[] = jNews_Subscribers::getSubscribersCount( $list->id, true );
				$totalUnSubs[] = jNews_Subscribers::getSubscribersCount( $list->id, 2 );
			}
		}

		jNews_ListsHTML::showListingLists( $listing, $action , 'edit' , $forms, $show, $listsearch, $setLimit->end, $setLimit , $totalSubs, $setSort, $totalUnSubs );

		$go[] = jnews::makeObj('act', $action);
		$go[] = jnews::makeObj('filter_order', $setSort->orderValue);
		$go[] = jnews::makeObj('filter_order_Dir', $setSort->orderDir);
		backHTML::formEnd($go);
		return true;
		
	}

 }