196 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			196 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <?php | ||
|  | @session_start(); | ||
|  | @error_reporting(7); | ||
|  | @ini_set('display_errors', true); | ||
|  | @ini_set('html_errors', false); | ||
|  | 
 | ||
|  | define('DATALIFEENGINE', true); | ||
|  | define( 'ROOT_DIR', substr( dirname(  __FILE__ ), 0, -12 ) ); | ||
|  | define( 'SYSTEM_DIR', ROOT_DIR . '/system' ); | ||
|  | 
 | ||
|  | include SYSTEM_DIR.'/data/config.php'; | ||
|  | require_once SYSTEM_DIR.'/classes/mysql.php'; | ||
|  | require_once SYSTEM_DIR.'/data/dbconfig.php'; | ||
|  | 
 | ||
|  | require_once ROOT_DIR.'/language/'.$config['langs'].'/website.lng'; | ||
|  | 
 | ||
|  | $config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset']; | ||
|  | 
 | ||
|  | require_once SYSTEM_DIR.'/modules/functions.php'; | ||
|  | 
 | ||
|  | $user_group = $cache->get ( "usergroup" ); | ||
|  | if (! $user_group) { | ||
|  | 	$user_group = array (); | ||
|  | 	$db->query ( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" ); | ||
|  | 	while ( $row = $db->get_row () ) { | ||
|  | 		$user_group[$row['id']] = array (); | ||
|  | 		foreach ( $row as $key => $value ) { | ||
|  | 			$user_group[$row['id']][$key] = $value; | ||
|  | 		}} | ||
|  |     $cache->set ( "usergroup", $user_group ); | ||
|  | 	$db->free (); | ||
|  | } | ||
|  | 
 | ||
|  | require_once SYSTEM_DIR.'/modules/sitelogin.php'; | ||
|  | 
 | ||
|  | if (!$is_logged OR $member_id['user_group'] != 1) die ("error"); | ||
|  | 
 | ||
|  | $startfrom = intval($_POST['startfrom']); | ||
|  | if ($_POST['empfanger'] != "all") $empfanger = intval($_POST['empfanger']); | ||
|  | $type = $_POST['type']; | ||
|  | $a_mail = intval($_POST['a_mail']); | ||
|  | $limit = intval($_POST['limit']); | ||
|  | $step = 0; | ||
|  | 
 | ||
|  | $title = convert_unicode($_POST['title'], $config['charset']); | ||
|  | $message = convert_unicode($_POST['message'], $config['charset']); | ||
|  | 
 | ||
|  | $find = array ('/data:/i', '/about:/i', '/vbscript:/i', '/onclick/i', '/onload/i', '/onunload/i', '/onabort/i', '/onerror/i', '/onblur/i', '/onchange/i', '/onfocus/i', '/onreset/i', '/onsubmit/i', '/ondblclick/i', '/onkeydown/i', '/onkeypress/i', '/onkeyup/i', '/onmousedown/i', '/onmouseup/i', '/onmouseover/i', '/onmouseout/i', '/onselect/i', '/javascript/i', '/javascript/i' ); | ||
|  | $replace = array ("data:", "about:", "vbscript<b></b>:", "onclick", "onload", "onunload", "onabort", "onerror", "onblur", "onchange", "onfocus", "onreset", "onsubmit", "ondblclick", "onkeydown", "onkeypress", "onkeyup", "onmousedown", "onmouseup", "onmouseover", "onmouseout", "onselect", "javascript" ); | ||
|  | 
 | ||
|  | $message = preg_replace( $find, $replace, $message ); | ||
|  | $message = preg_replace( "#<iframe#i", "<iframe", $message ); | ||
|  | $message = preg_replace( "#<script#i", "<script", $message ); | ||
|  | $message = str_replace( "<?", "<?", $message ); | ||
|  | $message = str_replace( "?>", "?>", $message ); | ||
|  | 
 | ||
|  | if (!$title OR !$message OR !$limit) die ("error"); | ||
|  | 
 | ||
|  | if ($type == "pm") { | ||
|  | 
 | ||
|  | $time = time()+($config['date_adjust']*60); | ||
|  | $title = $db->safesql($title); | ||
|  | $message = $db->safesql($message); | ||
|  | 
 | ||
|  | if ($empfanger != "all") | ||
|  | $result = $db->query("SELECT user_id, name, fullname FROM " . USERPREFIX . "_users where user_group = '$empfanger' LIMIT ".$startfrom.",".$limit); | ||
|  | else | ||
|  | $result = $db->query("SELECT user_id, name, fullname FROM " . USERPREFIX . "_users LIMIT ".$startfrom.",".$limit); | ||
|  | 
 | ||
|  | while($row = $db->get_row($result)) | ||
|  |   { | ||
|  | 	if ( $row['fullname'] ) | ||
|  | 		$message_send = str_replace("{%user%}", $row['fullname'], $message); | ||
|  | 	else | ||
|  | 		$message_send = str_replace("{%user%}", $row['name'], $message); | ||
|  | 
 | ||
|  | 	$db->query("INSERT INTO " . USERPREFIX . "_pm (subj, text, user, user_from, date, pm_read, folder) values ('$title', '$message_send', '$row[user_id]', '$member_id[name]', '$time', 'no', 'inbox')"); | ||
|  | 	$db->query("UPDATE " . USERPREFIX . "_users set pm_all=pm_all+1, pm_unread=pm_unread+1  where user_id='$row[user_id]'"); | ||
|  |     $step++; | ||
|  |   } | ||
|  | $db->free($result); | ||
|  | } | ||
|  | elseif ($type == "email") { | ||
|  | 
 | ||
|  | $message = stripslashes( $message ); | ||
|  | $title = stripslashes( $title ); | ||
|  | 
 | ||
|  | $message = <<<HTML | ||
|  | <html><title>{$title}</title> | ||
|  | <meta content="text/html; charset={$config['charset']}" http-equiv=Content-Type> | ||
|  | <style type="text/css"> | ||
|  | html,body{ | ||
|  | font-size: 11px; | ||
|  | font-family: verdana; | ||
|  | } | ||
|  | 
 | ||
|  | a:active, | ||
|  | a:visited, | ||
|  | a:link { | ||
|  | 	color: #4b719e;
 | ||
|  | 	text-decoration:none; | ||
|  | 	} | ||
|  | 
 | ||
|  | a:hover { | ||
|  | 	color: #4b719e;
 | ||
|  | 	text-decoration: underline; | ||
|  | 	} | ||
|  | </style> | ||
|  | <body> | ||
|  | {$message} | ||
|  | </body> | ||
|  | </html> | ||
|  | HTML; | ||
|  | 
 | ||
|  | 
 | ||
|  | include_once SYSTEM_DIR.'/classes/mail.class.php'; | ||
|  | $mail = new dle_mail ($config, true); | ||
|  | 
 | ||
|  | $where = array(); | ||
|  | 
 | ||
|  | if ($empfanger != "all") $where[] = "user_group = '{$empfanger}'"; | ||
|  | if ($a_mail) $where[] = "allow_mail = '1'"; | ||
|  | 
 | ||
|  | if (count($where)) $where = " WHERE ".implode (" AND ", $where); | ||
|  | else $where = ""; | ||
|  | 
 | ||
|  | 	if ($config['mail_bcc']) { | ||
|  | 		$limit = $limit * 6; | ||
|  | 		$i = 0; | ||
|  | 		$h_mail = array(); | ||
|  | 		$bcc = array(); | ||
|  | 
 | ||
|  | 		$db->query("SELECT email FROM " . USERPREFIX . "_users".$where." LIMIT ".$startfrom.",".$limit); | ||
|  | 
 | ||
|  | 		$db->close(); | ||
|  | 
 | ||
|  | 		  while($row = $db->get_row()) | ||
|  | 		  { | ||
|  | 				if ($i == 0) { $h_mail[$t] = $row['email'];} | ||
|  | 				else {$bcc[$t][] = $row['email'];} | ||
|  | 
 | ||
|  | 				$i++; | ||
|  | 
 | ||
|  | 				if ($i == 6) { | ||
|  | 					$i=0; | ||
|  | 					$t++; | ||
|  | 				} | ||
|  | 
 | ||
|  | 			$step++; | ||
|  |           } | ||
|  | 
 | ||
|  | 		$db->free(); | ||
|  | 
 | ||
|  | 		foreach ($h_mail as $key => $email) { | ||
|  | 			$mail->bcc = $bcc[$key]; | ||
|  | 			$message_send = str_replace("{%user%}", $lang['nl_info_2'], $message); | ||
|  | 
 | ||
|  | 			$mail->send ($email, $title, $message_send); | ||
|  | 		} | ||
|  | 
 | ||
|  | 	} | ||
|  | 	else  | ||
|  | 	{ | ||
|  | 
 | ||
|  | 		$db->query("SELECT email, name, fullname FROM " . USERPREFIX . "_users".$where." LIMIT ".$startfrom.",".$limit); | ||
|  | 
 | ||
|  | 		$db->close(); | ||
|  | 
 | ||
|  | 		  while($row = $db->get_row()) | ||
|  | 		  { | ||
|  | 
 | ||
|  | 			if ( $row['fullname'] ) | ||
|  | 				$message_send = str_replace("{%user%}", $row['fullname'], $message); | ||
|  | 			else | ||
|  | 				$message_send = str_replace("{%user%}", $row['name'], $message); | ||
|  | 
 | ||
|  | 		   $mail->send ($row['email'], $title, $message_send); | ||
|  | 	 | ||
|  | 		   $step++; | ||
|  | 		  } | ||
|  | 
 | ||
|  | 		$db->free(); | ||
|  | 	} | ||
|  | 
 | ||
|  | } | ||
|  | else | ||
|  | { | ||
|  | die ("error"); | ||
|  | } | ||
|  | 
 | ||
|  | $count = $startfrom + $step; | ||
|  | $buffer = "{\"status\": \"ok\",\"count\": {$count}}"; | ||
|  | 
 | ||
|  | @header( "Content-type: text/html; charset=" . $config['charset'] ); | ||
|  | echo $buffer; | ||
|  | ?>
 |