Location: PHPKode > projects > AcyMailing > back/helpers/import.php
<?php
/**
 * @copyright	Copyright (C) 2009-2011 ACYBA SARL - All rights reserved.
 * @license		http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
 */
defined('_JEXEC') or die('Restricted access');
?>
<?php
class importHelper{
	var $importUserInLists = array();
	var $totalInserted = 0;
	var $totalTry = 0;
	var $totalValid = 0;
	var $allSubid = array();
	var $db;
	var $forceconfirm = false;
	var $charsetConvert;
	var $generatename = true;
	var $overwrite = false;
	var $removeSep = 0;
	function importHelper(){
		acymailing::increasePerf();
		$this->db =& JFactory::getDBO();
	}
	function database(){
		$app =& JFactory::getApplication();
		$table = JRequest::getCmd('tablename');
		if(empty($table)){
			$listTables = $this->db->getTableList();
			$app->enqueueMessage(JText::sprintf('SPECIFYTABLE',implode(' | ',$listTables)),'notice');
			return false;
		}
		$fields = reset($this->db->getTableFields($table));
		if(empty($fields)){
			$listTables = $this->db->getTableList();
			$app->enqueueMessage(JText::sprintf('SPECIFYTABLE',implode(' | ',$listTables)),'notice');
			return false;
		}
		$fields = array_keys($fields);
		$equivalentFields = JRequest::getVar('fields',array());
		if(empty($equivalentFields['email'])){
			$app->enqueueMessage(JText::_('SPECIFYFIELDEMAIL'),'notice');
			return false;
		}
		$select = array();
		foreach($equivalentFields as $acyField => $tableField){
			if(empty($tableField)) continue;
			if(!in_array($tableField,$fields)){
				$app->enqueueMessage(JText::sprintf('SPECIFYFIELD',$tableField,implode(' | ',$fields)),'notice');
				return false;
			}
			$select[$acyField] = $tableField;
		}
		$this->db->setQuery('INSERT IGNORE INTO `#__acymailing_subscriber` (`'.implode('`,`',array_keys($select)).'`) SELECT `'.implode('`,`',$select).'` FROM '.$table.' WHERE `'.$select['email'].'` LIKE \'%@%\'');
		$this->db->query();
		$affectedRows = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$affectedRows));
		$query = 'SELECT b.subid FROM '.$table.' as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.`'.$select['email'].'` = b.`email` WHERE b.subid > 0';
		$this->db->setQuery($query);
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
	function textarea(){
		$this->forceconfirm = JRequest::getInt('import_confirmed_textarea');
		$this->generatename = JRequest::getInt('generatename_textarea');
		$this->overwrite = JRequest::getInt('overwriteexisting_textarea');
		$content = JRequest::getString('textareaentries');
		return $this->_handleContent($content);
	}
	function file(){
		$app =& JFactory::getApplication();
		$importFile =  JRequest::getVar( 'importfile', array(), 'files','array');
		if(empty($importFile['name'])){
			$app->enqueueMessage(JText::_('BROWSE_FILE'),'notice');
			return false;
		}
		$this->forceconfirm = JRequest::getInt('import_confirmed');
		$this->charsetConvert = JRequest::getString('charsetconvert','');
		$this->generatename = JRequest::getInt('generatename');
		$this->overwrite = JRequest::getInt('overwriteexisting');
		jimport('joomla.filesystem.file');
		$config =& acymailing::config();
		$allowedFiles = explode(',',strtolower($config->get('allowedfiles')));
		$uploadFolder = JPath::clean(html_entity_decode($config->get('uploadfolder')));
		$uploadFolder = trim($uploadFolder,DS.' ').DS;
		$uploadPath = JPath::clean(ACYMAILING_ROOT.$uploadFolder);
		acymailing::createDir($uploadPath);
		if(!is_writable($uploadPath)){
			@chmod($uploadPath,'0755');
			if(!is_writable($uploadPath)){
				$app->enqueueMessage(JText::sprintf( 'WRITABLE_FOLDER',$uploadPath), 'notice');
			}
		}
		$attachment = null;
		$attachment->filename = strtolower(JFile::makeSafe($importFile['name']));
		$attachment->size = $importFile['size'];
		$attachment->extension = strtolower(substr($attachment->filename,strrpos($attachment->filename,'.')+1));
		if(!in_array($attachment->extension,$allowedFiles)){
			$app->enqueueMessage(JText::sprintf( 'ACCEPTED_TYPE',$attachment->extension,$config->get('allowedfiles')), 'notice');
			return false;
		}
		if ( !move_uploaded_file($importFile['tmp_name'], $uploadPath . $attachment->filename)) {
			if(!JFile::upload($importFile['tmp_name'], $uploadPath . $attachment->filename)){
				$app->enqueueMessage(JText::sprintf( 'FAIL_UPLOAD',$importFile['tmp_name'],$uploadPath . $attachment->filename), 'error');
			}
		}
		$contentFile = file_get_contents($uploadPath . $attachment->filename);
		if(!$contentFile){
			$app->enqueueMessage(JText::sprintf( 'FAIL_OPEN',$uploadPath . $attachment->filename), 'error');
			return false;
		};
		unlink($uploadPath . $attachment->filename);
		return $this->_handleContent($contentFile);
	}
	function _handleContent($contentFile){
		$success = true;
		$app =& JFactory::getApplication();
		$contentFile = str_replace(array("\r\n","\r"),"\n",$contentFile);
		$importLines = explode("\n", $contentFile);
		$i = 0;
		while(empty($this->header)){
			$this->header = trim($importLines[$i]);
			$i++;
		}
		if(!$this->_autoDetectHeader()){
			$app->enqueueMessage(JText::sprintf('IMPORT_HEADER',$this->header),'error');
			$app->enqueueMessage(JText::_('IMPORT_EMAIL'),'error');
			$app->enqueueMessage(JText::_('IMPORT_EXAMPLE'),'error');
			return false;
		}
		$numberColumns = count($this->columns);
		$userHelper = acymailing::get('helper.user');
		$importUsers = array();
		$encodingHelper = acymailing::get('helper.encoding');
		while (isset($importLines[$i])) {
			$data = explode($this->separator,trim($importLines[$i]));
			if(!empty($this->removeSep)){
				for($b = $numberColumns+$this->removeSep-1;$b >= $numberColumns;$b-- ){
					if(isset($data[$b]) AND strlen($data[$b])==0){
						unset($data[$b]);
					}
				}
			}
			$i++;
			if(empty($importLines[$i-1])) continue;
			$this->totalTry++;
			if(count($data) > $numberColumns){
				$copy = $data;
				foreach($copy as $oneelem => $oneval){
					if($oneval[0] == '"' AND $oneval[strlen($oneval)-1] != '"' AND isset($copy[$oneelem+1]) AND $copy[$oneelem+1][strlen($copy[$oneelem+1])-1] == '"'){
						$data[$oneelem] = $copy[$oneelem].$this->separator.$copy[$oneelem+1];
						unset($data[$oneelem+1]);
					}
				}
				$data = array_values($data);
			}
			if(count($data) != $numberColumns){
				$success = false;
				static $errorcount = 0;
				if(empty($errorcount)){
					$app->enqueueMessage(JText::sprintf('IMPORT_ARGUMENTS',$numberColumns),'error');
				}
				$errorcount++;
				if($errorcount<20){
					$app->enqueueMessage(JText::sprintf('IMPORT_ERRORLINE',$importLines[$i-1]),'notice');
				}elseif($errorcount == 20){
					$app->enqueueMessage('...','notice');
				}
				if($this->totalTry == 1) return false;
				continue;
			}
			$newUser = null;
			foreach($data as $num => $value){
				$field = $this->columns[$num];
				if($field == 'listids'){
					$liststosub = explode('-',trim($value,'\'" '));
					foreach($liststosub as $onelistid){
						$this->importUserInLists[$onelistid][] = $this->db->Quote($newUser->email);
					}
					continue;
				}
				$newUser->$field = trim($value,'\'" ');
				if(!empty($this->charsetConvert)){
					$newUser->$field = $encodingHelper->change($newUser->$field,$this->charsetConvert,'UTF-8');
				}
			}
			$newUser->email = trim(str_replace(array(' ',"\t"),'',$encodingHelper->change($newUser->email,'UTF-8','ISO-8859-1')));
			if(!$userHelper->validEmail($newUser->email)){
				$success = false;
				static $errorcountfail = 0;
				$errorcountfail++;
				if($errorcountfail<20){
					$app->enqueueMessage(JText::sprintf('NOT_VALID_EMAIL',$newUser->email).' | '.($i-1).' : '.$importLines[$i-1],'notice');
				}elseif($errorcountfail == 20){
					$app->enqueueMessage('...','notice');
				}
				continue;
			}
			$this->_checkData($newUser);
			$importUsers[] = $newUser;
			$this->totalValid++;
			if( $this->totalValid%50 == 0){
				$this->_insertUsers($importUsers);
				$importUsers = array();
			}
		}
		$this->_insertUsers($importUsers);
		$app->enqueueMessage(JText::sprintf('IMPORT_REPORT',$this->totalTry,$this->totalInserted,$this->totalTry - $this->totalValid,$this->totalValid - $this->totalInserted));
		$this->_subscribeUsers();
		return $success;
	}
	function _subscribeUsers(){
		$app =& JFactory::getApplication();
		if(empty($this->allSubid)) return true;
		$subdate = time();
		$listClass= acymailing::get('class.list');
		if(empty($this->importUserInLists)){
			$lists = JRequest::getVar('importlists',array());
			$listsSubscribe = array();
			foreach($lists as $listid => $val){
				if(!empty($val)){
					$listid = (int) $listid;
					$query = 'INSERT IGNORE INTO '.acymailing::table('listsub').' (listid,subid,subdate,status) VALUES ';
					foreach($this->allSubid as $subid){
						$query .= "($listid,$subid,$subdate,1),";
					}
					$query = rtrim($query,',');
					$this->db->setQuery($query);
					$this->db->query();
					$nbsubscribed = $this->db->getAffectedRows();
					$myList = $listClass->get($listid);
					$app->enqueueMessage(JText::sprintf('IMPORT_SUBSCRIBE_CONFIRMATION',$nbsubscribed,$myList->name));
				}
			}
		}else{
			foreach($this->importUserInLists as $listid => $arrayEmails){
				if(!empty($listid)){
					$listid = (int) $listid;
					$query = 'INSERT IGNORE INTO '.acymailing::table('listsub').' (listid,subid,subdate,status) ';
					$query .= "SELECT $listid,`subid`,$subdate,1 FROM ".acymailing::table('subscriber')." WHERE `email` IN (";
					$query .= implode(',',$arrayEmails).')';
					$this->db->setQuery($query);
					$this->db->query();
					$nbsubscribed = $this->db->getAffectedRows();
					$myList = $listClass->get($listid);
					$app->enqueueMessage(JText::sprintf('IMPORT_SUBSCRIBE_CONFIRMATION',$nbsubscribed,$myList->name));
				}
			}
		}
		return true;
	}
	function _insertUsers($users){
		if(empty($users)) return true;
		if($this->overwrite){
			$emailstoload = array();
			foreach($users as $a => $oneUser){
				$emailstoload[] = $this->db->Quote($oneUser->email);
			}
			$this->db->setQuery('SELECT `subid`,`email`,`created` FROM `#__acymailing_subscriber` WHERE `email` IN ('.implode(',',$emailstoload).')');
			$subids = $this->db->loadObjectList('email');
			foreach($users as $a => $oneUser){
				$users[$a]->subid = (!empty($subids[$oneUser->email]->subid)) ? $subids[$oneUser->email]->subid : 'NULL';
				if(!empty($subids[$oneUser->email]->created)) $users[$a]->created = $subids[$oneUser->email]->created;
				if(isset($subids[$oneUser->email]->accept)) $users[$a]->accept = $subids[$oneUser->email]->accept;
			}
			$this->totalInserted -= (count($subids)*2);
		}
		$columns = reset($users);
		$query = $this->overwrite ? 'REPLACE' : 'INSERT IGNORE';
		$query .= ' INTO '.acymailing::table('subscriber').' (`'.implode('`,`',array_keys(get_object_vars($columns))).'`) VALUES (';
		$values = array();
		$allemails = array();
		foreach($users as $a => $oneUser){
			$value = array();
			foreach($oneUser as $map => $oneValue){
				if($map == 'created' AND !is_numeric($oneValue)){
					$oneValue = strtotime($oneValue);
				}
				if($map != 'subid'){
					$value[] = $this->db->Quote($oneValue);
				}else{
					$value[] = $oneValue;
				}
				if($map == 'email'){
					$allemails[] = $this->db->Quote($oneValue);
				}
			}
			$values[] = implode(',',$value);
		}
		$query .= implode('),(',$values).')';
		$this->db->setQuery($query);
		$this->db->query();
		$this->totalInserted += $this->db->getAffectedRows();
		$this->db->setQuery('SELECT subid FROM '.acymailing::table('subscriber').' WHERE email IN ('.implode(',',$allemails).')');
		$this->allSubid = array_merge($this->allSubid,$this->db->loadResultArray());
		return true;
	}
	function _checkData(&$user){
		if(empty($user->created)) $user->created = time();
		elseif(!is_numeric($user->created)) $user->created = strtotime($user->created);
		if(!isset($user->accept)) $user->accept = 1;
		if(empty($user->name) AND $this->generatename) $user->name = ucwords(str_replace(array('.','_','-'),' ',substr($user->email,0,strpos($user->email,'@'))));
		unset($user->subid); unset($user->userid);
		if(!isset($user->confirmed) AND $this->forceconfirm) $user->confirmed = 1;
		if(empty($user->key)) $user->key = md5(substr($user->email,0,strpos($user->email,'@')).rand(0,10000000));
	}
	function _autoDetectHeader(){
		$app =& JFactory::getApplication();
		$this->separator = ',';
		$this->header = str_replace("\xEF\xBB\xBF","",$this->header);
		$listSeparators = array("\t",';',',');
		foreach($listSeparators as $sep){
			if(strpos($this->header,$sep) !== false){
				$this->separator = $sep;
				break;
			}
		}
		$this->columns = explode($this->separator,$this->header);
		for($i=count($this->columns)-1;$i>=0;$i--){
			if(strlen($this->columns[$i]) == 0){
				unset($this->columns[$i]);
				$this->removeSep++;
			}
		}
		$columnsTable = $this->db->getTableFields(acymailing::table('subscriber'));
		$columns = reset($columnsTable);
		foreach($this->columns as $i => $oneColumn){
			$this->columns[$i] = strtolower(trim($oneColumn,'" '));
			if($this->columns[$i] == 'listids') continue;
			if(!isset($columns[$this->columns[$i]])){
				$app->enqueueMessage(JText::sprintf('IMPORT_ERROR_FIELD',$this->columns[$i],implode(' | ',array_diff(array_keys($columns),array('subid','userid','key')))),'error');
				return false;
			}
		}
		if(!in_array('email',$this->columns)) return false;
		return true;
	}
	function joomla(){
		$app =& JFactory::getApplication();
		$query = 'UPDATE IGNORE '.acymailing::table('users',false).' as b, '.acymailing::table('subscriber').' as a SET a.email = b.email, a.name = b.name, a.enabled = 1 - b.block WHERE a.userid = b.id AND a.userid > 0';
		$this->db->setQuery($query);
		$this->db->query();
		$nbUpdated = $this->db->getAffectedRows();
		$query = 'UPDATE IGNORE '.acymailing::table('users',false).' as b, '.acymailing::table('subscriber').' as a SET a.userid = b.id WHERE a.email = b.email';
		$this->db->setQuery($query);
		$this->db->query();
		$nbUpdated += $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_UPDATE',$nbUpdated));
		$query = 'SELECT subid FROM '.acymailing::table('subscriber').' as a LEFT JOIN '.acymailing::table('users',false).' as b on a.userid = b.id WHERE b.id IS NULL AND a.userid > 0';
		$this->db->setQuery($query);
		$deletedSubid = $this->db->loadResultArray();
		$query = 'SELECT subid FROM '.acymailing::table('subscriber').' as a LEFT JOIN '.acymailing::table('users',false).' as b on a.email = b.email WHERE b.id IS NULL AND a.userid > 0';
		$this->db->setQuery($query);
		$deletedSubid = array_merge($this->db->loadResultArray(),$deletedSubid);
		if(!empty($deletedSubid)){
			$userClass = acymailing::get('class.subscriber');
			$deletedUsers = $userClass->delete($deletedSubid);
			$app->enqueueMessage(JText::sprintf('IMPORT_DELETE',$deletedUsers));
		}
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (`email`,`name`,`confirmed`,`userid`,`created`,`enabled`,`accept`,`html`) SELECT `email`,`name`,1-`block`,`id`,UNIX_TIMESTAMP(`registerDate`),1-`block`,1,1 FROM '.acymailing::table('users',false);
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		$lists = JRequest::getVar('importlists',array());
		$listsSubscribe = array();
		foreach($lists as $listid => $val){
			if(!empty($val)) $listsSubscribe[] = (int) $listid;
		}
		if(empty($listsSubscribe)) return true;
		$query = 'INSERT IGNORE INTO '.acymailing::table('listsub').' (`listid`,`subid`,`subdate`,`status`) ';
		$query.= 'SELECT a.`listid`, b.`subid` ,'.$time.',1 FROM '.acymailing::table('list').' as a, '.acymailing::table('subscriber').' as b  WHERE a.`listid` IN ('.implode(',',$listsSubscribe).') AND b.`userid` > 0';
		$this->db->setQuery($query);
		$this->db->query();
		$nbsubscribed = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_SUBSCRIPTION',$nbsubscribed));
		return true;
	}
	function acajoom(){
		$app =& JFactory::getApplication();
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (email,name,confirmed,created,enabled,accept,html) SELECT email,name,confirmed,UNIX_TIMESTAMP(`subscribe_date`),1-blacklist,1,receive_html FROM '.acymailing::table('acajoom_subscribers',false);
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		if(JRequest::getInt('acajoom_lists',0) == 1) $this->_importAcajoomLists();
		$query = 'SELECT b.subid FROM '.acymailing::table('acajoom_subscribers',false).' as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.email = b.email WHERE b.subid > 0';
		$this->db->setQuery($query);
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
	function _importYancLists(){
		$app =& JFactory::getApplication();
		$query = 'SELECT `id`, `name`, `description`, `state` as `published` FROM `#__yanc_letters`';
		$this->db->setQuery($query);
		$yancLists = $this->db->loadObjectList('id');
		$user =& JFactory::getUser();
		$query = 'SELECT `listid`, `alias` FROM '.acymailing::table('list').' WHERE `alias` IN (\'yanclist'.implode('\',\'yanclist',array_keys($yancLists)).'\')';
		$this->db->setQuery($query);
		$joomLists = $this->db->loadObjectList('alias');
		$listClass = acymailing::get('class.list');
		$time = time();
		foreach($yancLists as $oneList){
			$oneList->alias = 'yanclist'.$oneList->id;
			$oneList->userid = $user->id;
			$yancListId = $oneList->id;
			if(isset($joomLists[$oneList->alias])){
				$joomListId = $joomLists[$oneList->alias]->listid;
			}else{
				unset($oneList->id);
				$joomListId = $listClass->save($oneList);
				$app->enqueueMessage(JText::sprintf('IMPORT_LIST',$oneList->name));
			}
			$querySelect = 'SELECT DISTINCT c.subid,'.$joomListId.','.$time.',1 FROM `#__yanc_subscribers` as a ';
			$querySelect .= 'LEFT JOIN '.acymailing::table('subscriber').' as c on a.email = c.email ';
			$querySelect .= 'WHERE a.lid = '.$yancListId.' AND a.state = 1 AND c.subid > 0';
			$queryInsert = 'INSERT IGNORE INTO '.acymailing::table('listsub').' (subid,listid,subdate,status) ';
			$this->db->setQuery($queryInsert.$querySelect);
			$this->db->query();
			$app->enqueueMessage(JText::sprintf('IMPORT_SUBSCRIBE_CONFIRMATION',$this->db->getAffectedRows(),$oneList->name));
		}
		return true;
	}
	function _importjnewsLists(){
		$app =& JFactory::getApplication();
		$query = 'SELECT `id`, `list_name` as `name`, `hidden` as `visible`, `list_desc` as `description`, `published`, `owner` as `userid` FROM '.acymailing::table('jnews_lists',false);
		$this->db->setQuery($query);
		$jnewsLists = $this->db->loadObjectList('id');
		$query = 'SELECT `listid`, `alias` FROM '.acymailing::table('list').' WHERE `alias` IN (\'jnewslist'.implode('\',\'jnewslist',array_keys($jnewsLists)).'\')';
		$this->db->setQuery($query);
		$joomLists = $this->db->loadObjectList('alias');
		$listClass = acymailing::get('class.list');
		foreach($jnewsLists as $oneList){
			$oneList->alias = 'jnewslist'.$oneList->id;
			$jnewsListId = $oneList->id;
			if(isset($joomLists[$oneList->alias])){
				$joomListId = $joomLists[$oneList->alias]->listid;
			}else{
				unset($oneList->id);
				$joomListId = $listClass->save($oneList);
				$app->enqueueMessage(JText::sprintf('IMPORT_LIST',$oneList->name));
			}
			$querySelect = 'SELECT DISTINCT c.subid,'.$joomListId.',a.subdate,a.unsubdate,1-(2*a.unsubscribe) FROM '.acymailing::table('jnews_listssubscribers',false).' as a ';
			$querySelect .= 'LEFT JOIN '.acymailing::table('jnews_subscribers',false).' as b on a.subscriber_id = b.id ';
			$querySelect .= 'LEFT JOIN '.acymailing::table('subscriber').' as c on b.email = c.email ';
			$querySelect .= 'WHERE a.list_id = '.$jnewsListId.' AND c.subid > 0';
			$queryInsert = 'INSERT IGNORE INTO '.acymailing::table('listsub').' (subid,listid,subdate,unsubdate,status) ';
			$this->db->setQuery($queryInsert.$querySelect);
			$this->db->query();
			$app->enqueueMessage(JText::sprintf('IMPORT_SUBSCRIBE_CONFIRMATION',$this->db->getAffectedRows(),$oneList->name));
		}
		return true;
	}
	function _importAcajoomLists(){
		$app =& JFactory::getApplication();
		$query = 'SELECT `id`, `list_name` as `name`, `hidden` as `visible`, `list_desc` as `description`, `published`, `owner` as `userid` FROM '.acymailing::table('acajoom_lists',false);
		$this->db->setQuery($query);
		$acaLists = $this->db->loadObjectList('id');
		$query = 'SELECT `listid`, `alias` FROM '.acymailing::table('list').' WHERE `alias` IN (\'acajoomlist'.implode('\',\'acajoomlist',array_keys($acaLists)).'\')';
		$this->db->setQuery($query);
		$joomLists = $this->db->loadObjectList('alias');
		$listClass = acymailing::get('class.list');
		$time = time();
		foreach($acaLists as $oneList){
			$oneList->alias = 'acajoomlist'.$oneList->id;
			$acaListId = $oneList->id;
			if(isset($joomLists[$oneList->alias])){
				$joomListId = $joomLists[$oneList->alias]->listid;
			}else{
				unset($oneList->id);
				$joomListId = $listClass->save($oneList);
				$app->enqueueMessage(JText::sprintf('IMPORT_LIST',$oneList->name));
			}
			$querySelect = 'SELECT DISTINCT c.subid,'.$joomListId.','.$time.',1 FROM '.acymailing::table('acajoom_queue',false).' as a ';
			$querySelect .= 'LEFT JOIN '.acymailing::table('acajoom_subscribers',false).' as b on a.subscriber_id = b.id ';
			$querySelect .= 'LEFT JOIN '.acymailing::table('subscriber').' as c on b.email = c.email ';
			$querySelect .= 'WHERE a.list_id = '.$acaListId.' AND c.subid > 0';
			$queryInsert = 'INSERT IGNORE INTO '.acymailing::table('listsub').' (subid,listid,subdate,status) ';
			$this->db->setQuery($queryInsert.$querySelect);
			$this->db->query();
			$app->enqueueMessage(JText::sprintf('IMPORT_SUBSCRIBE_CONFIRMATION',$this->db->getAffectedRows(),$oneList->name));
		}
		return true;
	}
	function letterman(){
		$app =& JFactory::getApplication();
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`) SELECT `subscriber_email`,`subscriber_name`,`confirmed`,UNIX_TIMESTAMP(`subscribe_date`),1,1,1 FROM '.acymailing::table('letterman_subscribers',false);
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		if($insertedUsers == -1){
			$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`) SELECT `email`,`name`,`confirmed`,'.$time.',1,1,1 FROM '.acymailing::table('letterman_subscribers',false);
			$this->db->setQuery($query);
			$this->db->query();
			$insertedUsers = $this->db->getAffectedRows();
			$query = 'SELECT b.subid FROM '.acymailing::table('letterman_subscribers',false).' as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.email = b.email WHERE b.subid > 0';
			$this->db->setQuery($query);
		}else{
			$query = 'SELECT b.subid FROM '.acymailing::table('letterman_subscribers',false).' as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.subscriber_email = b.email WHERE b.subid > 0';
			$this->db->setQuery($query);
		}
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
	function yanc(){
		$app =& JFactory::getApplication();
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`, `ip`) SELECT `email`,`name`,`confirmed`,UNIX_TIMESTAMP(`date`),`state`,1,`html`,`ip` FROM '.acymailing::table('yanc_subscribers',false);
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		if(JRequest::getInt('yanc_lists',0) == 1) $this->_importYancLists();
		$query = 'SELECT b.subid FROM '.acymailing::table('yanc_subscribers',false).' as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.email = b.email WHERE b.subid > 0';
		$this->db->setQuery($query);
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
	function vemod(){
		$app =& JFactory::getApplication();
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`) SELECT `email`,`name`,1,'.$time.',1,1,`mailformat` FROM `#__vemod_news_mailer_users` ';
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		$query = 'SELECT b.subid FROM `#__vemod_news_mailer_users` as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.email = b.email WHERE b.subid > 0';
		$this->db->setQuery($query);
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
	function contact(){
		$app =& JFactory::getApplication();
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber')." (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`) SELECT `email_to`,`name`,1,'.$time.',1,1,1 FROM `#__contact_details` WHERE email_to LIKE '%@%'";
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		$query = 'SELECT b.subid FROM `#__contact_details` as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.email_to = b.email WHERE b.subid > 0';
		$this->db->setQuery($query);
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
	function ccnewsletter(){
		$app =& JFactory::getApplication();
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`) SELECT `email`,`name`,`enabled`,UNIX_TIMESTAMP(`sdate`),`enabled`,1,1-`plainText` FROM '.acymailing::table('ccnewsletter_subscribers',false);
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		$query = 'SELECT b.subid FROM '.acymailing::table('ccnewsletter_subscribers',false).' as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.email = b.email WHERE b.subid > 0';
		$this->db->setQuery($query);
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
	function jnews(){
		$app =& JFactory::getApplication();
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`) SELECT `email`,`name`,`confirmed`,`subscribe_date`, 1-`blacklist`,1,`receive_html` FROM '.acymailing::table('jnews_subscribers',false);
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		if(JRequest::getInt('jnews_lists',0) == 1) $this->_importjnewsLists();
		$query = 'SELECT b.subid FROM '.acymailing::table('jnews_subscribers',false).' as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.email = b.email WHERE b.subid > 0';
		$this->db->setQuery($query);
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
	function communicator(){
		$app =& JFactory::getApplication();
		$time = time();
		$query = 'INSERT IGNORE INTO '.acymailing::table('subscriber').' (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`) SELECT `subscriber_email`,`subscriber_name`,`confirmed`,'.$time.',1,1,1 FROM '.acymailing::table('communicator_subscribers',false);
		$this->db->setQuery($query);
		$this->db->query();
		$insertedUsers = $this->db->getAffectedRows();
		$app->enqueueMessage(JText::sprintf('IMPORT_NEW',$insertedUsers));
		$query = 'SELECT b.subid FROM '.acymailing::table('communicator_subscribers',false).' as a LEFT JOIN '.acymailing::table('subscriber').' as b on a.subscriber_email = b.email WHERE b.subid > 0';
		$this->db->setQuery($query);
		$this->allSubid = $this->db->loadResultArray();
		$this->_subscribeUsers();
		return true;
	}
}
Return current item: AcyMailing