isRobot()) die(json_encode(array('status' => false, 'error' => "Robots do not need a live chat.")));
// Is mobile
if ($ua->isMobile()) {
$_SESSION["clientismobile"] = true;
} else {
unset($_SESSION["clientismobile"]);
}
// Set time on site in session so we can fire the pro active at the right time
if (!isset($_SESSION['jkchatontime'])) $_SESSION['jkchatontime'] = time();
// Set the cookie
if (!isset($_COOKIE["activation"])) JAK_base::jakCookie('activation', 'visited', JAK_COOKIE_TIME, JAK_COOKIE_PATH);
if (isset($_COOKIE["activation"]) || session_id()) {
if (!isset($_SESSION['rlbid'])) {
if (isset($_COOKIE['rlbid'])){
$_SESSION['rlbid'] = $_COOKIE['rlbid'];
} else {
$salt = rand(100, 99999);
$rlbid = $salt.time();
JAK_base::jakCookie('rlbid', $rlbid, 31536000, JAK_COOKIE_PATH);
$_SESSION['rlbid'] = $rlbid;
}
}
// Now get the hits and referrer into sessions
$_SESSION['jkchathits'] = (isset($_SESSION['jkchathits']) ? $_SESSION['jkchathits'] + 1 : 1);
$_SESSION['jkchatref'] = $referrer;
$btstat = $jakdb->update("buttonstats", ["opid" => $_SESSION['opid'], "clientid" => JAK_CLIENTID, "hits[+]" => 1, "referrer" => $referrer, "ip" => $ipa, "lasttime" => $jakdb->raw("NOW()")], ["session" => $_SESSION['rlbid']]);
// Update database first to see who is online!
if (!$btstat->rowCount()) {
// get client information
$clientsystem = $ua->getPlatform().' - '.$ua->getBrowser(). " " . $ua->getVersion();
// Country Stuff
$country_name = 'Disabled';
$country_code = 'xx';
$city = 'Disabled';
$country_lng = $country_lat = '';
// A "geoData" cookie has been previously set by the script, so we will use it
if (isset($_COOKIE['WIOgeoData'])) {
// Always escape any user input, including cookies:
list($city, $country_name, $country_code, $country_lat, $country_lng) = explode('|', strip_tags(base64_decode($_COOKIE['WIOgeoData'])));
} else {
// Now let's check if the ip is ipv4
if (JAK_SHOW_IPS && $ipa && !$ua->isRobot()) {
$ipc = curl_init();
curl_setopt($ipc, CURLOPT_URL, "https://ipgeo.jakweb.ch/api/".$ipa);
curl_setopt($ipc, CURLOPT_HEADER, false);
curl_setopt($ipc, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ipc);
curl_close($ipc);
$getinfo = json_decode($response, true);
if (isset($getinfo) && !empty($getinfo)) {
$country_name = ucwords(strtolower(filter_var($getinfo["country"]["name"], FILTER_SANITIZE_FULL_SPECIAL_CHARS)));
$country_code = strtolower(filter_var($getinfo["country"]["code"], FILTER_SANITIZE_FULL_SPECIAL_CHARS));
$city = filter_var($getinfo["city"], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$country_lng = filter_var($getinfo["location"]["longitude"], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$country_lat = filter_var($getinfo["location"]["latitude"], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
}
}
// Setting a cookie with the data, which is set to expire in a week:
JAK_base::jakCookie('WIOgeoData', base64_encode($city.'|'.$country_name.'|'.$country_code.'|'.$country_lat.'|'.$country_lng), 604800, JAK_COOKIE_PATH);
}
$jakdb->insert("buttonstats", ["opid" => $_SESSION['opid'], "depid" => 0, "opid" => 0, "clientid" => JAK_CLIENTID, "referrer" => $referrer, "firstreferrer" => $referrer, "agent" => $clientsystem, "hits" => 1, "ip" => $ipa, "country" => $country_name, "countrycode" => $country_code, "latitude" => $country_lat, "longitude" => $country_lng, "session" => $_SESSION["rlbid"], "time" => $jakdb->raw("NOW()"), "lasttime" => $jakdb->raw("NOW()")]);
}
if (isset($_SESSION['jrc_userid']) && isset($_SESSION['convid'])) {
// insert new referrer
$jakdb->insert("transcript", ["name" => $jkl["g56"], "message" => $jkl["g55"].$referrer, "convid" => $_SESSION['convid'], "time" => $jakdb->raw("NOW()"), "class" => "notice", "plevel" => 2]);
$jakdb->update("checkstatus", ["newo" => 1, "typec" => 0], ["convid" => $_SESSION['convid']]);
}
// We have already updated certain things
if (!isset($_SESSION['jkwio']) || $_SESSION['jkwio'] == false) $_SESSION['jkwio'] = true;
}
// Get the database stuff
$JAK_CMS_PAGE = $jakdb->get($jaktable, "*", ["AND" => ["id" => $pageid, "opid" => $_SESSION['opid'], "lang" => $BT_LANGUAGE]]);
// Errors in Array
$errors = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$jkp = $_POST;
if (isset($_POST['send_email'])) {
if (empty($jkp['gname']) || strlen(trim($jkp['gname'])) <= 2) {
$errors['gname'] = $jkl['e'];
}
if (JAK_EMAIL_BLOCK) {
$blockede = explode(',', JAK_EMAIL_BLOCK);
if (in_array($jkp['gemail'], $blockede) || in_array(strrchr($jkp['gemail'], "@"), $blockede)) {
$errors['gemail'] = $jkl['e10'];
}
}
if (!empty(JAK_DSGVO_CONTACT)) {
if (!isset($jkp['gdsgvo'])) {
$errors['gdsgvo'] = $jkl['e19'];
}
}
if ($jkp['gemail'] == '' || !filter_var($jkp['gemail'], FILTER_VALIDATE_EMAIL)) {
$errors['gemail'] = $jkl['e1'];
}
if (empty($jkp['gmessage']) || strlen(trim($jkp['gmessage'])) <= 2) {
$errors['gmessage'] = $jkl['e2'];
}
// ReCaptcha Verify if key exist.
if (!empty(JAK_RECAP_CLIENT) && !empty(JAK_RECAP_SERVER)) {
$rcurl = 'https://www.google.com/recaptcha/api/siteverify';
$rcdata = array(
'secret' => JAK_RECAP_SERVER,
'response' => $_POST["g-recaptcha-response"]
);
$rcoptions = array(
'http' => array (
'method' => 'POST',
'content' => http_build_query($rcdata)
)
);
$rccontext = stream_context_create($rcoptions);
$rcverify = file_get_contents($rcurl, false, $rccontext);
$captcha_success = json_decode($rcverify);
if ($captcha_success->success == false) {
$errorsA['recaptcha'] = $jkl['e12'].'
';
}
}
// And we check the custom fields
$formfields = $jakdb->select('customfields', ["title", "val_slug"], ["AND" => ["fieldlocation" => 3, "mandatory" => 1]]);
if (isset($formfields) && !empty($formfields)) {
foreach ($formfields as $v) {
if (!isset($jkp[$v["val_slug"]]) || empty($jkp[$v["val_slug"]])) {
$errors[$v["val_slug"]] = sprintf($jkl['hd31'], $v["title"]).'
';
}
}
}
if (count($errors) > 0) {
/* Outputtng the error messages */
if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
header('Cache-Control: no-cache');
die(json_encode(array('status' => 0, 'errors' => $errors, 'html' => $jkl["e3"])));
} else {
$errors = $errors;
}
} else {
// Country stuff
$countryName = 'Disabled';
$countryAbbrev = 'xx';
$city = 'Disabled';
$countryLong = $countryLat = '';
// if ip is valid do the whole thing
if ($ipa && !$ua->isRobot()) {
if (isset($_COOKIE['WIOgeoData'])) {
// A "geoData" cookie has been previously set by the script, so we will use it
// Always escape any user input, including cookies:
list($city, $countryName, $countryAbbrev, $countryLat, $countryLong) = explode('|', strip_tags(base64_decode($_COOKIE['WIOgeoData'])));
}
}
// Get the referrer
$rowref = '';
if (!isset($_SESSION['rlbid'])) {
if (isset($_COOKIE['rlbid'])){
$_SESSION['rlbid'] = $_COOKIE['rlbid'];
} else {
$salt = rand(100, 99999);
$rlbid = $salt.time();
JAK_base::jakCookie('rlbid', $rlbid, 31536000, JAK_COOKIE_PATH);
$_SESSION['rlbid'] = $rlbid;
}
} else {
$rowref = $jakdb->get("buttonstats", "referrer", ["session" => $_SESSION['rlbid']]);
}
// Get the department for the contact form if set
$op_email = JAK_SMTP_SENDER;
$depid = 0;
// We save the data
$jakdb->insert("contacts", ["opid" => $_SESSION['opid'],
"depid" => $depid,
"name" => $jkp['gname'],
"email" => $jkp['gemail'],
"message" => $jkp['gmessage'],
"ip" => $ipa,
"city" => $city,
"country" => $countryName,
"countrycode" => $countryAbbrev,
"longitude" => $countryLong,
"latitude" => $countryLat,
"referrer" => $rowref,
"sent" => $jakdb->raw("NOW()")]);
$lastid = $jakdb->id();
$listform = $jkl["g27"].': '.$jkp['gname'].'
';
$listform .= $jkl["g47"].': '.$jkp['gemail'].'
';
// And we complete the custom fields jak_save_custom_fields($opid, $clientid, $ticketid, $contactid, $jkp, $fieldloc)
jak_save_custom_fields($_SESSION['opid'], 0, 0, $lastid, $jkp, 3);
$listform .= 'IP: '.$ipa.'
';
$listform .= $jkl["g28"].': '.$jkp['gmessage'];
// Ok, we send the email // email address, cc email address, reply to, subject, message, attachment
if (jak_send_email($op_email, explode(',', JAK_EMAILCC), $jkp['gemail'], JAK_TITLE, $listform, "")) {
unset($_SESSION['jrc_captcha']);
unset($_SESSION['chatbox_redirected']);
// Ajax Request
if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
header('Cache-Control: no-cache');
die(json_encode(array('status' => 1, 'html' => $jkl["g65"])));
} else {
jak_redirect($_SERVER['HTTP_REFERER']);
}
}
}
}
if (isset($jkp['search_now'])) {
if (empty($page1) && $jkp['smart_search'] == '' || $jkp['smart_search'] == $jkl['hd']) {
$errors['e'] = $jkl['hd2'];
}
if (empty($page1) && strlen($jkp['smart_search']) < '3') {
$errors['e1'] = $jkl['hd3'];
}
if (count($errors) > 0) {
$errors = $errors;
} else {
}
}
}
// Get the custom contact fields
$custom_fields_contact = jak_get_custom_fields(3, $_SESSION['opid'], false, false, false, false, $BT_LANGUAGE, false, false, false, true, $errors);
// Now let's check the hits cookie
if (!jak_cookie_voted_hits($jaktable, $JAK_CMS_PAGE['id'], 'hits')) {
jak_write_vote_hits_cookie($jaktable, $JAK_CMS_PAGE['id'], 'hits');
// Update hits each time we have a new customer only
$jakdb->update($jaktable, ["hits[+]" => 1], ["AND" => ["id" => $pageid, "opid" => $_SESSION['opid']]]);
}
// Get the url session
$_SESSION['jak_lastURL'] = JAK_rewrite::jakParseurl($page);
// Get the header navigation
$mheader = array(
'items' => array(),
'parents' => array()
);
// Builds the array lists with data from the menu table
foreach ($jakpages as $items) {
if ($items["showheader"] == 1) {
if ($items["ishome"] == 1) $items["url_slug"] = "";
// Creates entry into items array with current menu item id ie. $menu['items'][1]
$mheader['items'][$items['id']] = $items;
// Creates entry into parents array. Parents array contains a list of all items with children
$mheader['parents'][0][] = $items['id'];
}
}
// Get the footer navigation
$mfooter = array(
'items' => array(),
'parents' => array()
);
// Builds the array lists with data from the menu table
foreach ($jakpages as $itemf) {
if ($itemf["showfooter"] == 1) {
$itemf['title'] = $itemf['title'];
// Creates entry into items array with current menu item id ie. $menu['items'][1]
$mfooter['items'][$itemf['id']] = $itemf;
// Creates entry into parents array. Parents array contains a list of all items with children
$mfooter['parents'][0][] = $itemf['id'];
}
}
// Get the translations
$cms_text = $jakdb->select($jaktable1, ["id", "cmsid", "cmsslug", "description"], ["AND" => ["opid" => $_SESSION['opid'], "cmsid" => $pageid, "lang" => $BT_LANGUAGE, "cmsid[!]" => 0]]);
if (JAK_CLIENTID && empty($cms_text)) $cms_text = $jakdb->select($jaktable1, ["id", "cmsid", "cmsslug", "description"], ["AND" => ["cmsid" => $pageid, "lang" => JAK_LANG, "cmsid[!]" => 0]]);
// We will get certain stuff once
if (JAK_USERISLOGGED) {
// The avatar
$avatar_img = BASE_URL.JAK_FILES_DIRECTORY.'standard.jpg';
if (JAK_USERID) {
$avatar_img = BASE_URL.JAK_FILES_DIRECTORY.$jakuser->getVar("picture");
} else {
$avatar_img = BASE_URL.JAK_FILES_DIRECTORY.$jakclient->getVar("picture");
}
} else {
// Get the custom fields
$custom_fields_register_modal = jak_get_custom_fields(1, $_SESSION['opid'], false, false, false, false, $BT_LANGUAGE, false, false, false, true, false);
}
// 404 needs to be covered
if ($page == '404') {
include_once APP_PATH.'template/business/404.php';
// User is banned
} elseif ($page == 'banned') {
include_once APP_PATH.'template/business/banned.php';
} else {
// Make sure the page is available for everyone.
if ($JAK_CMS_PAGE["access"] == 3 && !JAK_USERISLOGGED) {
include_once APP_PATH.'template/business/client.php';
} elseif (isset($JAK_CMS_PAGE["external_url"]) && !empty($JAK_CMS_PAGE["external_url"])) {
jak_redirect($JAK_CMS_PAGE["external_url"]);
} else {
// Get the correct page
if ($JAK_CMS_PAGE["prepage"] == JAK_CLIENT_URL) {
include_once APP_PATH.'template/business/client.php';
} elseif ($JAK_CMS_PAGE["prepage"] == JAK_SEARCH_URL) {
include_once APP_PATH.'template/business/search.php';
} elseif ($JAK_CMS_PAGE["prepage"] == JAK_SUPPORT_URL) {
include_once APP_PATH.'template/business/support.php';
} elseif ($JAK_CMS_PAGE["prepage"] == JAK_FAQ_URL) {
include_once APP_PATH.'template/business/faq.php';
} elseif ($JAK_CMS_PAGE["prepage"] == JAK_BLOG_URL) {
include_once APP_PATH.'template/business/blog.php';
} elseif ($JAK_CMS_PAGE["prepage"] == JAK_CONTACT_URL) {
// Load the template
include_once APP_PATH.'template/business/tplblocks/contact_tpl/contact.php';
} else {
// Load the template
if (isset($JAK_CMS_PAGE["main_tpl"]) && !empty($JAK_CMS_PAGE["main_tpl"])) {
include_once APP_PATH.'template/business/tplblocks/page_tpl/'.$JAK_CMS_PAGE["main_tpl"];
} else {
include_once APP_PATH.'template/business/tplblocks/page_tpl/page.php';
}
}
}
}
?>