<?php
session_start();
require('./includes/prepare.php');
require('./includes/libs/http.php');
require('./includes/libs/http_functions.php');


	$GLOBALS['groups'] = GetTradeGroups();

	$GLOBALS['ga_categories'] = db_load_table('ga_categories');
	$GLOBALS['ga_sites'] = db_load_table('ga_sites');
	$GLOBALS['settings'] = $settings;

	if ($_GET['ticket'] and !$settings["auto_signup"]) {
		if ($settings['signup_ticket_' . $_GET['ticket']]) $settings["auto_signup"] = true;
	}

	while (true) {

		if ($_REQUEST['operation'] == 'webmaster' and $settings["auto_signup"]) {
			add_wm();
			break;
		} 

		if ($_REQUEST['operation'] == 'stats' and $settings['allow_wm_stats']) {
			show_stats();
			break;
		} 

		if ($_REQUEST['operation'] == 'contact_wm' and $settings['wm_contact_form']) {
			contact_wm();
		} 

		show_signup_form();
        break;
	}

	require('./includes/end.php');


function contact_wm() {
	global $settings, $error;

	while (true) {
	    
	   	if (!isset($_REQUEST['contact_answer']) or $_REQUEST['contact_answer'] == '') {
    		$GLOBALS['error'] = 'Type in captcha answer';
    		break;
    	}

    	if (strtolower($_REQUEST['contact_answer']) != $_SESSION['scj_contact_answer']) {
    		$GLOBALS['error'] = 'Captcha error';
    		break;
    	}

		if (!mail($settings["system_email"], 
		"Contact form ", 
		"Someone from : ". addslashes($_REQUEST['wm_email']) . " \n 
		Message: ".addslashes($_REQUEST['message'])." \n", 
		"From: SmartCj\r\nReply-To: ".addslashes($_REQUEST['wm_email'])."\r\n")) {
    		$GLOBALS['error'] = 'Can not send mail';
    		break;
		}


   		$GLOBALS['error'] = 'Your message has been sent.';
    	
    	break;

	}

}

	function show_signup_form() {
		global $settings, $groups, $error, $fields;

		if (!$_REQUEST['fields']) {
		$fields = array();
		$fields['tni'] = 'Your NickName';
	    $fields['ti'] = 'ICQ #';
    	$fields['te'] = 'Email@address.com';
	    $fields['td'] = 'domain.com';
    	$fields['tu'] = 'http://www.yourhost.com/';
	    $fields['tn'] = 'Cool Site';
    	$fields['tdesc'] = 'The Best Site';
	    $fields['tpassword'] = 'password';
	    } else $fields = $_REQUEST['fields'];

	    if ($settings['signup_textcaptcha']) {
		    $tmp = explode("\n", trim($settings['signup_textcaptcha_questions']));
		    list($question, $answer) = explode('|', trim($tmp[rand(0, count($tmp) - 1)]));
		    $_SESSION['scj_signup_answer'] = strtolower($answer);
		}

	    if ($settings['wm_contact_form']) {
		    $tmp = explode("\n", trim($settings['signup_textcaptcha_questions']));
		    list($contact_question, $contact_answer) = explode('|', trim($tmp[rand(0, count($tmp) - 1)]));
		    $_SESSION['scj_contact_answer'] = strtolower($contact_answer);
		}


	    include("./templates/wm_signup.tpl");
	}

function add_wm() {
	global $settings, $groups, $error;

	foreach ((array)$_REQUEST['fields'] as $k => $v) $_REQUEST[$k] = $v;

	while (true) {

		$tmp = load_list("./includes/conf/banned_words.txt");
		$q = db_query("select bl from blacklist");
		while ($d = db_fetch_assoc($q)) {
			if (strstr($d['bl'], '*')) continue;
			$tmp[] = $d['bl'];
		}

		$a = "whois {$trader['td']}";
		$res = `$a`;

		foreach ((array)$tmp as $z => $word) {
			if (stristr($res, $word)) {
	    		$GLOBALS['error'] = "Banned word in WHOIS info";
	    		break;
			}
		}


	    if ($settings['signup_textcaptcha']) {
	    	if ($_REQUEST['security_answer'] == '') {
	    		$GLOBALS['error'] = 'Type in captcha answer';
	    		break;
	    	}
	    	if (strtolower($_REQUEST['security_answer']) != $_SESSION['scj_signup_answer']) {
	    		$GLOBALS['error'] = 'Captcha error';
	    		break;
	    	}
		}

		
		if (!$tmp = parse_url($_REQUEST['tu'])) {
			$GLOBALS['error'] = "Can not parse your url";
			break;
		}
		
		$td = strtolower($tmp["host"]);
        if (substr($td, 0, 4) == 'www.') $td = substr($td, 4);

		if (($td == '') || ($_REQUEST['tu'] == '')) {
			$GLOBALS['error'] = 'Please go back and fill all required fields';
			break;
		}

		if (!check_domainname($td)) {
			$GLOBALS['error'] = 'Domain name error';
			break;
		}

		if ( strlen($td) > 200 || strlen($_REQUEST['tu']) > 200 || 
		strlen($_REQUEST['te']) > 50 || strlen($_REQUEST['tni']) > 15 || strlen($_REQUEST['tdesc']) > 100) {
			$GLOBALS['error'] = 'Entries too long, go back and fix';
			break;
		}


		// check ip
		$tmp = gethostbyname($td);
		$f = file("./includes/conf/banned_ips.txt");
		foreach ($f as $str) {
			$str = str_replace(".", '\.', $str);
			$str = str_replace("*", "(.*?)", $str);
			if (preg_match("|$str|i", $tmp, $out)) {
				$GLOBALS['error'] = 'Server IP is blacklisted';
				break 2;
			}
			if (preg_match("|$str|i", $_SERVER['REMOTE_ADDR'], $out)) {
				$GLOBALS['error'] = 'Your IP is blacklisted';
				break 2;
			}
		}
		
		// member exists
		if (db_value('count(*)', "select count(*) from traders where td = '".addslashes($td)."'")) {
			$GLOBALS['error'] = 'Domain already exists in the database';
			break;
		}

		if ($settings['signup_title_max_length'] and strlen($_REQUEST['tn']) > $settings['signup_title_max_length']) {
			$GLOBALS['error'] = 'Site title is too long';
			break;
		}

		if ($settings['signup_description_max_length'] and strlen($_REQUEST['tdesc']) > $settings['signup_description_max_length']) {
			$GLOBALS['error'] = 'Site description is too long';
			break;
		}

		$r = db_query("select * from blacklist");
		while ($d = db_fetch_assoc($r)) {
			$bl = str_replace(".", '\.', $d["bl"]);
			$bl = str_replace("*", "(.*?)", $bl);
			if (preg_match("|$bl|i", $td, $out)) { 
				$GLOBALS['error'] = 'Your domain is blacklisted';
				break 2;
		   	}
		}

        if ($settings['signup_upload_logo'] and $_FILES['userfile']['tmp_name']) {
        	move_uploaded_file($_FILES['userfile']['tmp_name'], "./tmp/wm_logo.jpg");
            list($width, $height, $type, $attr) = getimagesize("./tmp/wm_logo.jpg");
            if ($width <= 0 or $width > $settings['signup_logo_max_x']) {
				$GLOBALS['error'] = 'Image width error';
				break;
            }
            if ($height <= 0 or $height > $settings['signup_logo_max_y']) {
				$GLOBALS['error'] = 'Image height error';
				break;
            }

            rename("./tmp/wm_logo.jpg", "./top/tt/{$td}.jpg");
        }

		break;

	} // while 



	if ($GLOBALS['error']) {
		show_signup_form();
		exit;
	}

	if ($settings['smail'] and $settings['system_email']) {
		$parsed_url = $settings['site_url'];
		mail($settings["system_email"], 
		"New Trade at {$settings['site_url']} ", 
		"New trade added: $td (".addslashes($_REQUEST['tu']).")  at {$settings['site_url']}<br>
		<a href='{$settings['site_url']}/scj/admin/?operation=trade'>{$settings['site_url']}/scj/admin/?operation=trade</a><br>
		Info: <br>
		Nick: ".addslashes($_REQUEST['tni'])." <br>
		Email: ".addslashes($_REQUEST['te'])." <br>
		Group: ".addslashes($_REQUEST['group'])." <br>
		Description: " . addslashes($_REQUEST['tdesc']), 
		"From: SmartCj\r\nContent-type: text/html\r\n");
	}

	$stime = time();
	$tmp = db_get_row("select * from traders where td = 'new_trader'");

	if (@in_array($_REQUEST['group'], $groups)) $tmp['tgroup'] = $_REQUEST['group'] . '_';

	$tmp['system_trade'] = 0;
	$tmp['td'] = $td;
	$tmp['tn'] = strip_tags($_REQUEST['tn']);
	$tmp['tu'] = strip_tags($_REQUEST['tu']);
	$tmp['ti'] = strip_tags($_REQUEST['ti']);
	$tmp['tni'] = strip_tags($_REQUEST['tni']);
	$tmp['te'] = strip_tags($_REQUEST['te']);
	$tmp['tdesc'] = strip_tags($_REQUEST['tdesc']);
	$tmp['tpassword'] = strip_tags($_REQUEST['tpassword']);

	if ($tmp["tstart_limit"] > 0) { 
		$tmp['ta'] = 3; 
	}

	if (!$_SERVER["REMOTE_ADDR"]) { 
		$tmp['signup_ip'] = ip2long($HTTP_SERVER_VARS["REMOTE_ADDR"]);
		} else $tmp['signup_ip'] = ip2long($_SERVER["REMOTE_ADDR"]);

	$tmp['tnew'] = 1;
	$tmp['signuptime'] = time();


	// if trade activation system is on - set TA to 'Need approve'
	// if ($settings['ta_system']) $tmp['ta'] = 6;

	db_perform('traders', $tmp);
	db_query("insert into day (h) values('".addslashes($td)."')");


	// add to GA
    if (is_array($_POST['site_ids'])) {
    	require_once('./includes/libs/mysql_backup.php');
		require_once('./includes/libs/http_functions.php');

    	$d = db_get_row("SELECT * FROM traders WHERE td = '".addslashes($tmp['td'])."' ");
    	if ($d) {
			$insert = "INSERT IGNORE INTO traders (`".join("`,`", array_keys($d))."`) VALUES ('".mt_implode("','", $d, '', true)."') ";
            $insert .= ";#%%\n";
            $insert .= "INSERT IGNORE INTO day (`h`) VALUES ('".addslashes($d["td"])."') ";

	        $q = db_query("SELECT * FROM ga_sites WHERE site_id IN ('".mt_implode("','", $_POST['site_ids'], '', true)."') ");
    	    while ($d = db_fetch_assoc($q)) {
		    	cj_message("Adding to {$d['domain']} ... ");
        		if (!GA_send_sql($d, $insert)) {
		        	cj_message(last_error());
        		} else {
        			cj_message($d['domain'] . ' : OK');
        		}
        	}
    	}

    }





	if ($_GET['ticket']) {
		$name = 'signup_ticket_' . $_GET['ticket'];
		db_query("delete from settings where name = '".addslashes($name)."' ");
	}


	// support old templates
	$dt = $settings;

	$group_url = db_value('group_url', "select group_url from trader_groups where group_name = '".addslashes($_REQUEST['group'])."'");
	if ($group_url)	$settings["site_url"] = $group_url;

    $scj_url_parsed =  parse_url($settings['site_url']);
    if (substr($scj_url_parsed['host'], 0, 4) == 'www.') $scj_url_parsed['host'] = substr($scj_url_parsed['host'], 4);

	$settings["ftt_info"] = "Domain:{$scj_url_parsed['host']}
Url:{$settings["site_url"]}
Title:{$settings['site_title']}
Description:{$settings['site_description']}
Nickname:{$settings['admin_nick']}
ICQ:{$settings['admin_icq']}
Email:{$settings['admin_email']}";


	include("./templates/wm_signup_done.tpl");

}


function show_stats() {
global $settings;

	if (isset($settings['allow_wm_stats']) and $settings['allow_wm_stats'] != 1) die("This function is disabled by admin");

	$td = addslashes($_REQUEST['td']);
	$tpassword = addslashes($_REQUEST['tpassword']);

	$r = db_query("select * from traders where td = '$td' and tpassword = '$tpassword' ");
	if (db_num_rows($r) == 0) die("Wrong domain name or password.");
	$trader = db_fetch_assoc($r);



	if ($settings['allow_wm_edit']) {
	
		if ($_FILES['userfile']['tmp_name']) {
			if (move_uploaded_file($_FILES['userfile']['tmp_name'], "./thumbs/trader_image_tmp/{$td}.jpg")) {
				list($x, $y, ) = getimagesize("./thumbs/trader_image_tmp/{$td}.jpg");
				if ($x == 0 or $y == 0) {
					unlink("./thumbs/trader_image_tmp/{$td}.jpg");
					die("Trader image error, click Back button and select another one");
				}
				$updates_flag = true;
			}
		}
		
		$changes = array();
		if (strlen(strip_tags($_POST['tn'])) > 0 and $_POST['tn'] != $trader['tn']) $changes['tn'] = strip_tags($_POST['tn']);
		if (strlen(strip_tags($_POST['tdesc'])) > 0 and $_POST['tdesc'] != $trader['tdesc']) $changes['tdesc'] = strip_tags($_POST['tdesc']);

		if (count($changes) != 0) {
			db_query("UPDATE traders SET change_requests = '".addslashes(serialize($changes))."' WHERE td = '{$td}' ");
            $updates_flag = true;
		}

        
		if ($updates_flag) {
			mail($settings["system_email"], 
			"Changes request", 
			"{$td} request for changes, please, visit admin area to see changes\n", "From: SmartCJ");
		}


	}



	$day_q = db_query("select * from day where h = '".$trader['td']."'");
        
		while ($d_day = db_fetch_assoc($day_q)) {
			for ($i = 0; $i <= 23; $i++) {
				$day['rd'] += $d_day["hr$i"];
				$day['ud'] += $d_day["hu$i"];
				$day['od'] += $d_day["ho$i"];
				$day['ctd'] += $d_day["hc_trade$i"];
				$day['cud'] += $d_day["hc_url$i"];
				$day['quality'] += $d_day["hcq$i"]/100;
				$day['quality_url'] += $d_day["hcq_url$i"]/100;
				$day['pr'] += $d_day["pr$i"];
				$day['pr_out'] += $d_day["pr_out$i"];
				$day['ch'] += $d_day["ch$i"];
				$day['ncd'] += $d_day["next_click$i"];
				$day['user_count'] += $d_day["user_count$i"];
				$day['user_dis'] += $d_day["user_dis$i"];
				$day['last_click'] += $d_day["last_click$i"];
			}
			$day['thishouru'] = $d_day["hu$hour"];
			$day['thishourr'] = $d_day["hr$hour"];
			$day['thishouro'] = $d_day["ho$hour"];
			$day['thishourct'] = $d_day["hc_trade$hour"];
			$day['thishourcu'] = $d_day["hc_url$hour"];
			$day['thishourcq'] = $d_day["hcq$hour"]/100;
			$day['thishourcq_url'] = $d_day["hcq_url$hour"]/100;
			$day['thishournc'] += $d_day["next_click$hour"];
			$day['thishour_user_count'] = $d_day["user_count$hour"];
			$day['thishour_user_dis'] = $d_day["user_dis$hour"];
		}

	$stats = $day;
	$du = $stats['ud'];
	$dr = $stats['rd'];
	$do = $stats['od'];
	$dct = $stats['ctd'];
	$dcu = $stats['cud'];

	$stats['prod'] = @round( ($stats['ctd'] + $stats['cud'])/$stats['ud'] * 10000)/100 ;

	foreach ($settings as $k => $v) {
		$tr['<?=$settings['.$k.']?>'] = $v;
	}

	foreach ($stats as $k => $v) {
		$tr['<?=$stats['.$k.']?>'] = $v;
	}

	foreach ($trader as $k => $v) {
		$tr['<?=$trader['.$k.']?>'] = $v;
		$tr['<?=$trader["'.$k.'"]?>'] = $v;
	}


	echo eval('?>' . strtr(file_get_contents("./templates/wm_stats.tpl"), $tr));
}

