<?php
	//error_reporting(E_ERROR | E_WARNING | E_PARSE);
	//error_reporting(E_ERROR | E_PARSE);
	//error_reporting(E_ALL);
	error_reporting(E_ALL & ~E_NOTICE);

	if(isset($argv)){
		for ($i=1; $i<count($argv); $i++) {
			list($key, $val) = explode('=', $argv[$i]);
			$_REQUEST[$key] = urldecode($val);
		}
	}
	//print_r($_REQUEST); die('done!');

	if(!isset($_REQUEST['test'])){ $_REQUEST['test'] = 0; }
	if($_REQUEST['test']==1){
		ini_set('display_errors', 1);
	}else{
		ini_set('display_errors', 0);
	}
	//The php option mysql.connect_timeout is the reason for this. It's not only used for connect timeout, but as well as waiting for the first answer from the server. You can increase it like this:
	// ini_set('mysql.connect_timeout', 300);
	// ini_set('default_socket_timeout', 300); 
	
	ob_start();
	// set_error_handler("exception_error_handler");
	// set_exception_handler('catchException');

	if(!isset($_SERVER['HTTP_ORIGIN']) || empty($_SERVER['HTTP_ORIGIN'])){
		if(empty($_SERVER['HTTP_HOST'])){ $_SERVER['HTTP_HOST'] = str_ireplace("www.","",$_SERVER['SERVER_NAME']); }
		if(empty($_SERVER['HTTP_HOST'])){ $_SERVER['HTTP_HOST'] = str_ireplace("www.","",$_SERVER['REQUEST_URI']); }
		if(empty($_SERVER['HTTP_HOST'])){ $_SERVER['HTTP_HOST'] = "prophog2.com"; }
		$_SERVER['HTTP_ORIGIN'] = 'https://'.$_SERVER['HTTP_HOST'];
	}
	$http_origin            = $_SERVER['HTTP_ORIGIN'];
	$allowed_http_origins   = array(
		"https://highlevelguru.cloud",
		"https://hlgld.highlevelguru.cloud",
		"https://nad.highlevelguru.cloud",
		"https://ocbn.cloud",
		"https://prophog.ai",
		"https://agent-recruiting.prophog.ai",
		"https://mortgage.api.prophog.ai",
		"https://realtor.api.prophog.ai",
		"https://agency.api.prophog.ai",
		"https://agent-recruiting.prophog2.com"
	);
	if (in_array($http_origin, $allowed_http_origins)){  
		@header("Access-Control-Allow-Origin: " . $http_origin);
	}
	//header('Access-Control-Allow-Origin: *');
	header('Access-Control-Allow-Headers: Origin, key, X-Api-Key, Api_Key, api_key, pcm_api_key, pcm_secret_key, account_type, restricted_cities, X-Requested-With, Content-Type, Accept, Authorization');

	session_start();
	//ob_start();
	//Before 29/11/2021 the timezone was US/Eastern. Now onwards, it is America/Chicago.
	define('TIMEZONE', 'America/New_York');//'US/Eastern');//'America/Chicago');//'America/Los_Angeles');
	date_default_timezone_set(TIMEZONE);
	libxml_use_internal_errors(true);	
	set_time_limit(0);	
	
	define('PAGE_LIMIT', '24');
	define('NOT_BILLED', '**Not Billed** ');
	
	$domain = 'https://'.$_SERVER['HTTP_HOST'];
	$path = $_SERVER['SCRIPT_NAME'];

	$str = explode("/",$_SERVER['SCRIPT_NAME']);
	$myfilename = $str[count($str)-1];
	$str = explode('.php',$myfilename);
	$mypage = strtolower(str_replace('#','',$str[0]));
	$page_link = $mypage=='index' ? '.' : $mypage;

	define('myHost', $domain);
	define('myPath', $domain.dirname($_SERVER['PHP_SELF']));
	define('myTimeLimit', 120);//90000
	define('myMemoryLimit', '512M');
	define('maxInputVars', 1000);
	
	if(stripos($_SERVER['SCRIPT_NAME'],"/admin/")!==false){//|| IS_NEW_UI
		define('SITE_ROOT', "../");
		define('SESSION_USER', $_SESSION['admin_login_user']);//$chkSesUser =$_SESSION['Username'];
		define('SESSION_USER_ID', doubleval($_SESSION['admin_userid']));
		define('SESSION_LOGIN_USER', $_SESSION['admin_login_user']);
		define('SESSION_USER_TYPE', doubleval($_SESSION['admin_usertype']));
		define('SESSION_PASSWORD', $_SESSION['admin_password']);
		define('REMEMBER_ME_COOKIE', "admin_rememberme");
	}else{
		define('SITE_ROOT', "");
		define('SESSION_USER', $_SESSION['login_user']);//$chkSesUser =$_SESSION['Username'];
		define('SESSION_USER_ID', $_SESSION['userid']);
		define('SESSION_LOGIN_USER', $_SESSION['login_user']);
		define('SESSION_USER_TYPE', $_SESSION['usertype']);
		define('SESSION_PASSWORD', $_SESSION['password']);
		define('REMEMBER_ME_COOKIE', "rememberme");
	}

	ini_set('memory_limit', myMemoryLimit);//1024M
	ini_set('max_input_vars', maxInputVars);

	//Emulating Chrome Browser:
	define('Agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/A.B (KHTML, like Gecko) Chrome/X.Y.Z.W Safari/A.B.');
	define('mySeperator','<br>');
	define('myEmailSeperator','; ');
	define('ENCRYPTION_KEY', "!@#$%^&*");
	
	$GLOBALS['QRY_VIA_API_KEY'] = array("getUserDetails", "getPhoneLineType", "getCounty", "getGender");
	$GLOBALS['VALID_KEYS'] = array("wrH71keQw8Tr23KzSp3m");

	if (!function_exists('getallheaders')) {
		function getallheaders() {
			$headers = [];
			foreach ($_SERVER as $name => $value) {
				if (substr($name, 0, 5) == 'HTTP_') {
					$headers[str_replace(' ', '_', strtolower(str_replace('_', ' ', substr($name, 5))))] = $value;
				}
			}
			return $headers;
		}
	}

	function exception_error_handler($errno, $errstr, $errfile, $errline ){
		if (error_reporting(E_ERROR | E_PARSE) === 0){ return; }
		throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
	}
	
	function catchException($e){
		// Do some stuff
		if($_REQUEST['test']==1){ print_r($e->errorMessage()); return; }
		return "The development updation is running. Please try again in some times!";
	}

	function replaceQuotes($str){
		return trim(str_replace('"','&quot;',str_replace("'","&acute;",$str)));
	}
	
	function check_login_status(){
		if (SESSION_LOGIN_USER!=""){
			return true;//SESSION_LOGIN_USER;
		}
		return false;
	}
	
	function redirect($page){
		header('Location: ' . $page);
		exit();
	}

	/**
	 * Safe post-login destination from ?url= / login form (e.g. user, leads_stage).
	 * Same-site relative pages only — blocks open redirects.
	 * Pass $fallback='' when “no destination” should stay empty (kick → login).
	 */
	function ar_login_redirect_target($fallback = '.') {
		$url = isset($_REQUEST['url']) ? trim((string) $_REQUEST['url']) : '';
		if ($url === '' || $url === '.' || $url === './' || $url === 'index') {
			return $fallback;
		}
		if (preg_match('#^(https?:)?//#i', $url) || strpos($url, '..') !== false) {
			return $fallback;
		}
		if (!preg_match('#^[A-Za-z0-9_./-]+(\?[A-Za-z0-9_&=%./-]*)?$#', $url)) {
			return $fallback;
		}
		return $url;
	}

	/** Page to return to after session expire / kick / remember-me: ?url= first, else current $mypage. */
	function ar_login_return_path() {
		$fromUrl = ar_login_redirect_target('');
		if ($fromUrl !== '') {
			return $fromUrl;
		}
		global $mypage;
		$page = isset($mypage) ? strtolower(trim((string) $mypage)) : '';
		if ($page === '' || $page === 'index' || $page === '.') {
			return '';
		}
		if (!preg_match('#^[A-Za-z0-9_-]+$#', $page)) {
			return '';
		}
		return $page;
	}
	
	function includeFile($myFile){
		$newLine = "<br>\r\n";
		if(file_exists(SITE_ROOT.'includes/'.$myFile.'.php')){
			if($_REQUEST['test']==1){ echo "added ".$myFile." via SITE_ROOT & includes".$newLine; }
			require_once(SITE_ROOT.'includes/'.$myFile.'.php');
		}elseif(file_exists(SITE_ROOT.$myFile.'.php')){
			if($_REQUEST['test']==1){ echo "added ".$myFile." via SITE_ROOT & direct".$newLine; }
			require_once(SITE_ROOT.$myFile.'.php');
		}elseif(file_exists($myFile.'.php')){
			if($_REQUEST['test']==1){ echo "added ".$myFile." via direct".$newLine; }
			require_once($myFile.'.php');
		}elseif(file_exists('includes/'.$myFile.'.php')){
			if($_REQUEST['test']==1){ echo "added ".$myFile." via includes".$newLine; }
			require_once('includes/'.$myFile.'.php');
		}elseif(file_exists(dirname(__FILE__).'/'.$myFile.'.php')){
			if($_REQUEST['test']==1){ echo "added ".$myFile." via ".dirname(__FILE__).$newLine; }
			require_once(dirname(__FILE__).'/'.$myFile.'.php');
		}else{
			if($_REQUEST['test']==1){ echo "".$myFile." not found!".$newLine; }
		}
	}

	if($_REQUEST['test']==1){ echo "i'm in test mode.......<hr>\r\n"; }
	$newLine = "<br>\r\n";
	if($_REQUEST['test']==1){ echo "SITE_ROOT ".SITE_ROOT.$newLine; }//print_r($_SERVER); echo $newLine;

	define('APP_DOMAIN', $_SERVER['HTTP_HOST']);
	define('APP_TITLE', "Agent Recruiting Tool");
	
	define('DB_HOSTNAME', '10.116.0.2');//localhost
	define('DB_USERNAME', 'hlguru_leads_db');
	define('DB_PASSWORD', 'wRdGdsh4r;v~');
	define('DB_DATABASE', 'hlguru_leads_db');
	define('DB_PREFIX', 'ar_');//agent recruiting
	define('DB_PORT', 3306);                // MySQL port

	define('IUL_SSO_URL', 'https://iul.prophog2.com');
	define('FORECLOSURE_SSO_URL', 'https://foreclosure.prophog2.com');
	define('TRACKER_SSO_URL', 'https://agent-tracker.prophog2.com');
	define('IUL_SSO_SECRET', '2d547532289401fad579163c12a225974f1025c85be500a30a5f3a27600b555d');
	
	//require_once('db.php');
	//require_once('actions.php');
	includeFile("db");
	includeFile("ip_intel");
	includeFile("LeadsExportStorage");
	includeFile("actions");
	includeFile("branding");

	$main = new Main();
	//$start_from = ($page-1) * PAGE_LIMIT;
	//$x=$start_from + 1;	
	//$timezone= $gnrl->getTimeZone();
	//date_default_timezone_set($timezone);
	//echo "conn";
	//conn();	
