HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.34
System: Linux atalantini.com 3.10.0-1127.13.1.el7.x86_64 #1 SMP Tue Jun 23 15:46:38 UTC 2020 x86_64
User: root (0)
PHP: 7.2.34
Disabled: NONE
Upload Files
File: //opt/simple-ajax-chat/simple-ajax-chat-form.php
<?php // Simple Ajax Chat > Chat Form

if (!defined('ABSPATH')) exit;

if (sac_is_session_started() === false) {
	
	$simple_ajax_chat_domain = sanitize_text_field($_SERVER['HTTP_HOST']);
	
	session_set_cookie_params('21600', '/', $simple_ajax_chat_domain, false, true);
	
	session_start(array('read_and_close' => true));
	
}

function sac_is_session_started() {
	
	if (php_sapi_name() !== 'cli') {
		
		if (version_compare(phpversion(), '5.4.0', '>=')) {
			
			return session_status() === PHP_SESSION_ACTIVE ? true : false;
			
		} else {
			
			return session_id() === '' ? false : true;
			
		}
		
	}
	
	return false;
	
}

function sac_get_logged_class($chat_name) {
	
	$chat_name = urldecode($chat_name);
	
	$class = '';
	
	$users = get_users(array('fields' => array('ID', 'display_name')));
	
	if ($users) {
		
		foreach ($users as $user) {
			
			$online = '';
			
			if ($user->display_name === $chat_name) {
				
				$online = sac_get_logged_users($user->ID);
				
				$class = $online ? ' sac-online' : '';
				
			}
			
			if (!empty($online)) break;
			
		}
		
	}
	
	return $class;
	
}

function simple_ajax_chat() {
	
	global $wpdb, $table_prefix, $sac_options;
	
	$use_url         = isset($sac_options['sac_use_url'])         ? $sac_options['sac_use_url']         : true;
	$use_textarea    = isset($sac_options['sac_use_textarea'])    ? $sac_options['sac_use_textarea']    : true;
	$registered_only = isset($sac_options['sac_registered_only']) ? $sac_options['sac_registered_only'] : false;
	$read_only       = isset($sac_options['display_mode'])        ? $sac_options['display_mode']        : false;
	$enable_styles   = isset($sac_options['sac_enable_style'])    ? $sac_options['sac_enable_style']    : true;
	$play_sound      = isset($sac_options['sac_play_sound'])      ? $sac_options['sac_play_sound']      : true;
	$chat_order      = isset($sac_options['sac_chat_order'])      ? $sac_options['sac_chat_order']      : false;
	$use_username    = isset($sac_options['sac_logged_name'])     ? $sac_options['sac_logged_name']     : false;
	
	$custom_chat_pre = isset($sac_options['sac_content_chat']) ? $sac_options['sac_content_chat'] : '';
	$custom_form_pre = isset($sac_options['sac_content_form']) ? $sac_options['sac_content_form'] : '';
	$custom_chat_app = isset($sac_options['sac_chat_append'])  ? $sac_options['sac_chat_append']  : '';
	$custom_form_app = isset($sac_options['sac_form_append'])  ? $sac_options['sac_form_append']  : '';
	
	$max_chats = isset($sac_options['max_chats']) ? intval($sac_options['max_chats']) : 999;
	
	$display_order = $chat_order ? 'ASC' : 'DESC';
	
	$custom_styles = $enable_styles ? '<style type="text/css">'. $sac_options['sac_custom_styles'] .'</style>' : '';
	
	echo '<div id="simple-ajax-chat">';
	
	if (($registered_only && current_user_can('read')) || (!$registered_only)) {
		
		$current_user    = wp_get_current_user();
		$logged_username = sanitize_text_field($current_user->display_name);
		$logged_username = apply_filters('sac_logged_username', $logged_username, $current_user);
		
		$results = $wpdb->get_results($wpdb->prepare("SELECT * FROM ". $table_prefix ."ajax_chat ORDER BY id DESC LIMIT %d", $max_chats));
		
		echo $custom_chat_pre;
		
		echo '<div id="sac-content"></div>';
		echo '<div id="sac-output">';
		
		$sac_first_time = true;
		$sac_output     = '';
		$sac_lastout    = '';
		$lastID         = null;
			
		if ($results) {
			
			foreach ($results as $r) {
				
				$chat_text = sanitize_text_field($r->text);
				$chat_time = sanitize_text_field($r->time);
				$chat_id   = sanitize_text_field($r->id);
				$chat_url  = sanitize_text_field($r->url);
				$chat_name = sanitize_text_field($r->name);
				
				$online_class = sac_get_logged_class($chat_name);
				
				$name_class = preg_replace('/[\s\.#]+/', '-', $chat_name);
				
				$pattern = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
				$chat_text = preg_replace($pattern, '<a rel="external" href="\\0" title="Open link in new tab">\\0</a>', $chat_text);
				
				if ($sac_first_time === true) $lastID = $chat_id;
				
				if (empty($chat_url) || $chat_url == 'http://' || $chat_url == 'https://') {
					
					$url = $chat_name;
					
				} else {
					
					$url = '<a rel="external" href="'. $chat_url .'">'. $chat_name .'</a>';
					
				}
				
				if ($sac_first_time == true) {
					
					$sac_lastout  = '<div id="sac-latest-message"><span>'. esc_html__('Latest Message:', 'simple-ajax-chat') .'</span> ';
					$sac_lastout .= '<em id="responseTime">'. sprintf(esc_html__('%s ago', 'simple-ajax-chat'), sac_time_since($chat_time)) .'</em></div>'. "\n";
					
				}
				
				$sac_out  = '<li class="sac-chat-message sac-static sac-user-'. $name_class . $online_class .'" data-time="'. apply_filters('sac_chat_time', date('Y-m-d,H:i:s', $chat_time)) .'">'. "\n";
				$sac_out .= '<span class="sac-chat-name" title="'. sprintf(esc_attr__('Posted %s ago', 'simple-ajax-chat'), sac_time_since($chat_time)) .'">'. $url .' : </span> ';
				$sac_out .= convert_smilies(' '. $chat_text) . '<br><span style="color:#2a2daa">' . date('d-m-Y,H:i:s', $chat_time). '</span></li>'. "\n";
				
				if ($chat_order) $sac_output  = $sac_out . $sac_output;
				else             $sac_output .= $sac_out;
				
				$sac_first_time = false;
				
			}
			
		} else {
			
			$sac_output .= '<li>'. esc_html__('You need at least one entry in the chat forum!', 'simple-ajax-chat') .'</li>';
			
		}
		
		echo $sac_lastout .'<ul id="sac-messages">'. "\n" . $sac_output .'</ul>'. "\n";
		
		echo '</div>';
		
		echo $custom_chat_app;
		
		if (!$read_only || ($read_only && current_user_can('read'))) :
		
		echo $custom_form_pre; 
		
		?>
		
		<div id="sac-panel">
			<form id="sac-form" method="post" action="<?php echo plugins_url('/simple-ajax-chat/simple-ajax-chat-core.php'); ?>">
				
				<?php if ($use_username && !empty($logged_username)) : ?>
				
				<fieldset id="sac-user-info">
					<label for="sac_name"><?php esc_html_e('Name', 'simple-ajax-chat'); ?>: <span><?php echo $logged_username; ?></span></label>
					<input type="hidden" name="sac_name" id="sac_name" value="<?php echo $logged_username; ?>" />
				</fieldset>
				
				<?php else : 
					$cookie_username = '';
					if (isset($_COOKIE['sacUserName']) && !empty($_COOKIE['sacUserName'])) $cookie_username = sanitize_text_field(stripslashes($_COOKIE['sacUserName'])); 
				?>
				
				<fieldset id="sac-user-info">
					<label for="sac_name"><?php esc_html_e('Name', 'simple-ajax-chat'); ?></label> 
					<input type="text" name="sac_name" id="sac_name" value="<?php echo $cookie_username; ?>" placeholder="<?php esc_attr_e('Name', 'simple-ajax-chat'); ?>" />
				</fieldset>
				
				<?php endif;
				
				$cookie_url = 'https://';
				if (isset($_COOKIE['sacUrl']) && !empty($_COOKIE['sacUrl'])) $cookie_url = sanitize_text_field($_COOKIE['sacUrl']); 
				
				if (!$use_url) echo '<div style="display:none;">'; ?>
				
				<fieldset id="sac-user-url">
					<label for="sac_url"><?php esc_html_e('URL', 'simple-ajax-chat'); ?></label> 
					<input type="text" name="sac_url" id="sac_url" value="<?php echo $cookie_url; ?>" placeholder="<?php esc_attr_e('URL', 'simple-ajax-chat'); ?>" />
				</fieldset>
				
				<?php if (!$use_url) echo '</div>'; ?>
				
				<fieldset id="sac-user-chat">
					<label for="sac_chat"><?php esc_html_e('Message', 'simple-ajax-chat') ?></label> 
					<?php if ($use_textarea) : ?>
					
					<textarea name="sac_chat" id="sac_chat" rows="5" cols="50" onkeypress="if (typeof pressedEnter == 'function') return pressedEnter(this,event);" placeholder="<?php esc_attr_e('Message', 'simple-ajax-chat') ?>"></textarea>
					<?php else : ?>
					
					<input type="text" name="sac_chat" id="sac_chat" />
					<?php endif; ?>
					
				</fieldset>
				
				<fieldset id="sac_verify" style="display:none;height:0;width:0;">
					<label for="sac_verify"><?php esc_html_e('Human verification: leave this field empty.', 'simple-ajax-chat'); ?></label>
					<input name="sac_verify" type="text" size="33" maxlength="99" value="" />
				</fieldset>
				
				<div id="sac-user-submit">
					<div class="sac_js_nonce"></div>
					<input type="submit" id="submitchat" name="submit" class="submit" value="<?php esc_attr_e('Submit', 'simple-ajax-chat'); ?>" />
					<input type="hidden" id="sac_lastID" value="<?php echo $lastID + 1; ?>" name="sac_lastID" />
					<input type="hidden" name="sac_no_js" value="true" />
					<input type="hidden" name="PHPSESSID" value="<?php echo session_id(); ?>" />
					<?php wp_nonce_field('sac_nonce', 'sac_nonce', false); ?>
					
				</div>
			</form>
			<script>(function(){var e = document.getElementById("sac_verify");e.parentNode.removeChild(e);})();</script>
			<!-- Simple Ajax Chat @ https://perishablepress.com/simple-ajax-chat/ -->
		</div>
		
		<?php echo $custom_form_app;
		
		endif;
		
		if ($play_sound == true) : 
			
			$res_path = plugins_url('/simple-ajax-chat/resources/audio/'); ?>
			
			<audio id="TheBox">
				<source src="<?php echo $res_path; ?>msg.mp3"></source>
				<source src="<?php echo $res_path; ?>msg.ogg"></source>
				<!-- your browser does not support audio -->
			</audio>
			
		<?php endif;
		
	} else { // login required
		
		echo $custom_form_pre; ?>
		
		<div id="sac-output" class="sac-reg-req">
			<p>
				<?php 
					$login_required_message = esc_html__('You must be a registered user to participate in this chat.', 'simple-ajax-chat');
					echo apply_filters('sac_require_login_message', $login_required_message); 
				?>
			</p>
			<!--p>Please <a href="<?php wp_login_url(get_permalink()); ?>">Log in</a> to chat.</p-->
		</div>
		
		<?php echo $custom_form_app;
		
	}
	
	echo '</div>';
	
	echo $custom_styles;
	
}