Jakweb.ch stuff
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1212 lines
48 KiB

<?php
/*===============================================*\
|| ############################################# ||
|| # JAKWEB.CH / Version 2.1.2 # ||
|| # ----------------------------------------- # ||
|| # Copyright 2023 JAKWEB All Rights Reserved # ||
|| ############################################# ||
\*===============================================*/
// Check if the file is accessed only via index.php if not stop the script from running
if (!defined('JAK_PREVENT_ACCESS')) die('No direct access!');
use YooKassa\Client;
if (JAK_BILLING_MODE != 0) {
// Include the payment class
include_once(APP_PATH.'class/class.payment.php');
// Now we finally initate the payment module
$JAK_payment = new JAK_payment();
}
// Get the important database table
$jaktable1 = 'support_tickets';
$jaktable2 = 'clients';
$jaktable3 = 'departments';
$jaktable4 = 'support_departments';
$jaktable5 = 'faq_categories';
$jaktable6 = 'billing_packages';
$jaktable7 = 'envato_codes';
$jaktable8 = 'envato_products';
$jaktable9 = 'cms_pages';
$jkp = "";
$errors = $errorsp = $errorsreg = array();
// Valid Agent
$valid_agent = filter_var($_SERVER['HTTP_USER_AGENT'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
// Now do the dirty work with the post vars
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$jkp = $_POST;
// Rating the ticket
if (!empty($jkp['action']) && $jkp['action'] == 'support_rating') {
if (isset($page2) && isset($page3) && is_numeric($page2) && is_numeric($page3) && $jakdb->has($jaktable1, ["AND" => ["id" => $page2, "opid" => $_SESSION['opid'], "initiated" => $page3, "reminder" => 2]])) {
$row = $jakdb->get($jaktable1, ["clientid", "initiated", "ended"], ["id" => $page2]);
// Sanitzise input
$name = filter_var($jkp['name'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$email = filter_var($jkp['email'], FILTER_SANITIZE_EMAIL);
$message = filter_var($jkp['message'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
// Calculate support timet
$total_supporttime = $row['ended'] - $row['initiated'];
$jakdb->insert("ticket_rating", ["opid" => $_SESSION['opid'],
"ticketid" => $page2,
"clientid" => $row["clientid"],
"vote" => $jkp["fbvote"],
"name" => $name,
"email" => $email,
"comment" => $message,
"support_time" => $total_supporttime,
"time" => $jakdb->raw("NOW()")]);
// Update the table so it cannot be rated again
$jakdb->update($jaktable1, ["reminder" => 3], ["AND" => ["id" => $page2, "opid" => $_SESSION['opid']]]);
// Finally forward to the client area
$_SESSION["successmsg"] = $jkl['hd71'];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
} else {
$_SESSION["infomsg"] = $jkl['not'];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
// Login IN
elseif (!empty($jkp['action']) && $jkp['action'] == 'login') {
// recaptcha check
$recaptcha = false;
// 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) {
$errors['recaptcha'] = $jkl['e12'].'<br>';
$recaptcha = true;
$client_check = false;
}
}
if (!$recaptcha) {
$lcookies = false;
$email = filter_var($jkp['email'], FILTER_SANITIZE_EMAIL);
$userpass = $jkp['password'];
if (isset($jkp['lcookies'])) $lcookies = $jkp['lcookies'];
// Security fix
$valid_ip = filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP);
// Write the log file each time someone tries to login before
JAK_base::jakWhatslog('', $_SESSION['opid'], 0, 0, 4, 0, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $email, $_SERVER['REQUEST_URI'], $valid_ip, $valid_agent);
// Check that everything is OK
$client_check = $jakclientlogin->jakCheckuserdata($email, $userpass);
}
if ($client_check == true) {
// Now login in the user
$jakclientlogin->jakLogin($email, $userpass, $lcookies);
// Write the log file each time someone login after to show success
JAK_base::jakWhatslog('', $_SESSION['opid'], 0, $client_check, 5, 0, '', $email, '', $valid_ip, '');
// Unset the recover message
if (isset($_SESSION['password_recover'])) unset($_SESSION['password_recover']);
if (isset($_SESSION['LCRedirect'])) {
jak_redirect($_SESSION['LCRedirect']);
} else {
jak_redirect(BASE_URL);
}
} else {
if (isset($errors['recaptcha'])) {
$errorsl = $errors;
} else {
$ErrLogin = $jkl['l'];
}
}
}
// Forgot password
elseif (!empty($jkp['action']) && $jkp['action'] == 'forgot-password') {
if (isset($jkp['lsE']) && ($jkp['lsE'] == '' || !filter_var($jkp['lsE'], FILTER_VALIDATE_EMAIL))) {
$errors['e'] = $jkl['e1'];
}
// 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) {
$errors['recaptcha'] = $jkl['e12'].'<br>';
}
}
// transform user email
$femail = filter_var($jkp['lsE'], FILTER_SANITIZE_EMAIL);
$fwhen = time();
// Check if this user exist
$client_check = $jakclientlogin->jakForgotpassword($femail, $fwhen);
if (!$client_check) {
$errors['e'] = $jkl['e1'];
}
if (count($errors) == 0) {
// Get user details
$oname = $jakdb->get($jaktable2, ["id", "name"], ["AND" => ["email" => $femail, "access" => 1]]);
// Ok, we send the email // email address, cc email address, reply to, subject, message, attachment
if (jak_send_email($femail, "", "", JAK_TITLE.' - '.$jkl['hd21'], sprintf($jkl['hd28'], $oname["name"], '<a href="'.JAK_rewrite::jakParseurl('forgot-password', $fwhen).'">'.JAK_rewrite::jakParseurl('forgot-password', $fwhen).'</a>', JAK_TITLE), "")) {
// Write the log file each time someone login after to show success
JAK_base::jakWhatslog('', $_SESSION['opid'], 0, $oname["id"], 9, 0, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $femail, $_SERVER['REQUEST_URI'], $ipa, $valid_agent);
$_SESSION["infomsg"] = $jkl["hd29"];
jak_redirect($_SESSION['LCRedirect']);
}
} else {
$errorfp = $errors;
}
}
// Register
elseif (!empty($jkp['action']) && $jkp['action'] == 'register') {
if (empty($jkp["reg_name"])) {
$errors['e'] = $jkl['e'].'<br>';
}
if (empty($jkp["reg_email"]) || !filter_var($jkp["reg_email"], FILTER_VALIDATE_EMAIL)) {
$errors['e1'] = $jkl['e1'].'<br>';
}
if (jak_field_not_exist(strtolower($jkp['reg_email']), $jaktable2, "email")) {
$errors['e1'] = $jkl['hd35'].'<br>';
}
// 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) {
$errors['recaptcha'] = $jkl['e12'].'<br>';
}
}
// And we check the custom fields
$formfields = $jakdb->select('customfields', ["title", "val_slug"], ["AND" => ["fieldlocation" => 1, "mandatory" => 1, "onregister" => 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"]).'<br>';
}
}
}
if (count($errors) == 0) {
// create new password
$password = jak_password_creator();
$passcrypt = hash_hmac('sha256', $password, DB_PASS_HASH);
$jakdb->insert($jaktable2, ["opid" => $_SESSION['opid'],
"chat_dep" => JAK_STANDARD_CHAT_DEP,
"support_dep" => JAK_STANDARD_SUPPORT_DEP,
"faq_cat" => JAK_STANDARD_FAQ_CAT,
"name" => filter_var($jkp["reg_name"], FILTER_SANITIZE_FULL_SPECIAL_CHARS),
"email" => $jkp['reg_email'],
"password" => $passcrypt,
"canupload" => 1,
"access" => 1,
"time" => $jakdb->raw("NOW()")]);
$lastid = $jakdb->id();
if (!$lastid) {
$_SESSION["errormsg"] = $jkl['not'];
jak_redirect($_SESSION['LCRedirect']);
} else {
$newuserpath = APP_PATH.JAK_FILES_DIRECTORY.'/clients/'.$lastid;
if (!is_dir($newuserpath)) {
mkdir($newuserpath, 0755);
copy(APP_PATH.JAK_FILES_DIRECTORY."/index.html", $newuserpath."/index.html");
}
// And we complete the custom fields jak_save_custom_fields($opid, $clientid, $ticketid, $contactid, $jkp, $fieldloc)
jak_save_custom_fields($_SESSION['opid'], $lastid, 0, 0, $jkp, 1);
// Get the email template
$nlhtml = file_get_contents(APP_PATH.'template/'.JAK_FRONT_TEMPLATE.'/email/index.html');
// Change fake vars into real ones.
if (!empty($HD_ANSWERS) && is_array($HD_ANSWERS)) foreach ($HD_ANSWERS as $v) {
if ($v["msgtype"] == 14 && $v["lang"] == JAK_LANG) {
$phold = array('{url}', '{title}', '{cname}', '{cemail}', '{cpassword}', '{email}');
$replace = array(BASE_URL, JAK_TITLE, $jkp['reg_name'], $jkp['reg_email'], $password, JAK_EMAIL);
$regtext = str_replace($phold, $replace, $v["message"]);
break;
}
}
// Change fake vars into real ones.
$cssAtt = array('{emailcontent}', '{weburl}', '{title}', '{emailtpllogo}', '{emailtplcopy}');
$cssUrl = array($regtext, BASE_URL, JAK_TITLE, JAK_EMAILTPLLOGO, JAK_EMAILTPLCOPY);
$nlcontent = str_replace($cssAtt, $cssUrl, $nlhtml);
$body = str_ireplace("[\]", "", $nlcontent);
// Ok, we send the email // email address, cc email address, reply to, subject, message, attachment
if (jak_send_email($jkp['reg_email'], "", "", JAK_TITLE.' - '.$jkl['hd33'], $body, "")) $_SESSION["infomsg"] = $jkl['hd32'];
$_SESSION["successmsg"] = $jkl["hd34"];
jak_redirect($_SESSION['LCRedirect']);
}
} else {
$errorsreg = $errors;
}
}
// Save Client
elseif (!empty($jkp['action']) && $jkp['action'] == 'save_client') {
$updatepass = false;
if (empty($jkp["name"])) {
$errors['e'] = $jkl['e'].'<br>';
}
if (empty($jkp["email"]) || !filter_var($jkp["email"], FILTER_VALIDATE_EMAIL)) {
$errors['e1'] = $jkl['e1'].'<br>';
}
if (jak_field_not_exist_id($jkp['email'], JAK_CLIENTID, $jaktable2, "email")) {
$errors['e1'] = $jkl['hd35'].'<br>';
}
// And we check the custom fields
$formfields = $jakdb->select('customfields', ["title", "val_slug"], ["AND" => ["fieldlocation" => 1, "mandatory" => 1]]);
if (isset($formfields) && !empty($formfields)) {
foreach ($formfields as $v) {
if (isset($jkp[$v["val_slug"]])) {
if (empty($jkp[$v["val_slug"]])) {
$errors[$v["val_slug"]] = sprintf($jkl['hd31'], $v["title"]).'<br>';
}
}
}
}
if (!empty($jkp['jak_newpassword']) || !empty($jkp['jak_cpassword'])) {
if ($jkp['jak_newpassword'] != $jkp['jak_cpassword']) {
$errors['e2'] = $jkl['hd62'];
} elseif (strlen($jkp['jak_newpassword']) <= '7') {
$errors['e3'] = $jkl['hd63'];
} else {
$updatepass = true;
}
}
if (isset($jkp['deleteavatar']) && $jkp['deleteavatar'] == 1) {
// first get the target path
$targetPathd = APP_PATH.JAK_FILES_DIRECTORY.'/clients/'.JAK_CLIENTID.'/';
$targetPath = str_replace("//","/",$targetPathd);
// if old avatars exist delete it
foreach(glob($targetPath.'*.*') as $jak_unlink){
unlink($jak_unlink);
}
// Remove the directory as we do not need it anymore. (+1 for a clean system)
rmdir($targetPath);
// SQL update
$jakdb->update($jaktable2, ["picture" => "/standard.jpg"], ["id" => JAK_CLIENTID]);
}
if (!empty($_FILES['avatar']['name'])) {
if ($_FILES['avatar']['name'] != '') {
$filename = $_FILES['avatar']['name']; // original filename
// Fix explode when upload in 1.2
$tmpf = explode(".", $filename);
$jak_xtension = end($tmpf);
if ($jak_xtension == "jpg" || $jak_xtension == "jpeg" || $jak_xtension == "png" || $jak_xtension == "gif") {
if ($_FILES['avatar']['size'] <= 2000000) {
list($width, $height, $type, $attr) = getimagesize($_FILES['avatar']['tmp_name']);
$mime = image_type_to_mime_type($type);
if (($mime == "image/jpeg") || ($mime == "image/pjpeg") || ($mime == "image/png") || ($mime == "image/gif")) {
// first get the target path
$targetPathd = APP_PATH.JAK_FILES_DIRECTORY.'/clients/'.JAK_CLIENTID.'/';
$targetPath = str_replace("//","/",$targetPathd);
// Create the target path
if (!is_dir($targetPath)) {
mkdir($targetPath, 0755);
copy(APP_PATH.JAK_FILES_DIRECTORY."/index.html", $targetPath . "/index.html");
}
// if old avatars exist delete it
foreach(glob($targetPath.'*.*') as $jak_unlink){
unlink($jak_unlink);
copy(APP_PATH.JAK_FILES_DIRECTORY."/index.html", $targetPath . "/index.html");
}
$tempFile = $_FILES['avatar']['tmp_name'];
$origName = substr($_FILES['avatar']['name'], 0, -4);
$name_space = strtolower($_FILES['avatar']['name']);
$middle_name = str_replace(" ", "_", $name_space);
$middle_name = str_replace(".jpeg", ".jpg", $name_space);
$glnrrand = rand(10, 99);
$bigPhoto = str_replace(".", "_" . $glnrrand . ".", $middle_name);
$smallPhoto = str_replace(".", "_t.", $bigPhoto);
$targetFile = str_replace('//','/',$targetPath) . $bigPhoto;
$origPath = '/clients/'.JAK_CLIENTID.'/';
$dbSmall = $origPath.$smallPhoto;
require_once APP_PATH.'include/functions_thumb.php';
// Move file and create thumb
move_uploaded_file($tempFile,$targetFile);
create_thumbnail($targetPath, $targetFile, $smallPhoto, JAK_USERAVATWIDTH, JAK_USERAVATHEIGHT, 80);
// SQL update
$jakdb->update($jaktable2, ["picture" => $dbSmall], ["id" => JAK_CLIENTID]);
} else {
$errors['e4'] = $jkl['hd60'].'<br>';
}
} else {
$errors['e4'] = $jkl['hd60'].'<br>';
}
} else {
$errors['e4'] = $jkl['hd60'].'<br>';
}
} else {
$errors['e4'] = $jkl['hd60'].'<br>';
}
}
if (count($errors) == 0) {
$result = $jakdb->update($jaktable2, [
"name" => filter_var($jkp["name"], FILTER_SANITIZE_FULL_SPECIAL_CHARS),
"email" => $jkp['email'],
"language" => $jkp['jak_lang']], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
if (!$result) {
$_SESSION["errormsg"] = $jkl['not'];
jak_redirect($_SESSION['LCRedirect']);
} else {
// Finally we update the password
if ($updatepass) $jakdb->update($jaktable2, ["password" => hash_hmac('sha256', $jkp['jak_newpassword'], DB_PASS_HASH)], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// And we complete the custom fields jak_save_custom_fields($opid, $clientid, $ticketid, $contactid, $jkp, $fieldloc)
jak_save_custom_fields($_SESSION['opid'], JAK_CLIENTID, 0, 0, $jkp, 1);
$_SESSION["successmsg"] = $jkl["hd61"];
jak_redirect($_SESSION['LCRedirect']);
}
} else {
$_SESSION["errormsg"] = $jkl["e20"];
$errorsp = $errors;
}
} elseif (!empty($jkp['action']) && $jkp['action'] == 'payment') {
// Get the package
$pack = $jakdb->get("billing_packages", ["id", "title", "content", "previmg", "credits", "paidtill", "chat_dep", "support_dep", "faq_cat", "amount", "currency"], ["AND" => ["id" => $jkp["pid"], "opid" => $_SESSION['opid'], "active" => 1],
"ORDER" => ["dorder" => "DESC"]]);
// Now let's get the current subscription
$subs = $jakdb->get("subscriptions_client", ["id", "paidhow", "package", "subscribed", "planid", "paidtill"], ["AND" => ["opid" => $_SESSION['opid'], "clientid" => JAK_CLIENTID, "active" => 1]]);
if (isset($pack) && isset($pack["id"])) {
// Let's check if we have a subscription
$subscribed = 0;
$planid = $pack["title"].'-'.$pack["id"];
if ($_POST["subscribe"] == 1) {
// We subscribing
$subscribed = 1;
// Ok we need to figure out the intervals for charging the customer
$intervalc = 1;
$intervalm = "month";
if ($pack['paidtill'] == "1 WEEK") {
$intervalm = "week";
} elseif ($pack['paidtill'] == "1 MONTH") {
$intervalm = "month";
} elseif ($pack['paidtill'] == "6 MONTHS") {
$intervalc = 6;
$intervalm = "month";
} elseif ($pack['paidtill'] == "1 YEAR") {
$intervalm = "year";
}
// plan name
$planid = $pack["title"].'-PackageID:'.$pack["id"].'-'.$intervalc.'-'.$intervalm;
}
// We have now a downgrade but we are not allowed to have a downgrade or we have a payment in a different currency
if (isset($subs["subscribed"]) && $subs["subscribed"] == 1 && !empty($subs["planid"])) {
if ($_SERVER['HTTP_X_REQUESTED_WITH']) {
header('Cache-Control: no-cache');
die(json_encode(array("status" => 0, "infomsg" => $jkl["hd173"])));
} else {
// redirect back to home
$_SESSION["errormsg"] = $jkl["hd173"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
// Ok, we have no errors we need to create a payidnow for checking that the payment was legal
$payidnow = base64_url_encode(JAK_CLIENTID.':#:'.$pack["id"].':#:'.$jkp["paidhow"].':#:'.$jkp["amount"].':#:'.microtime().':#:'.$planid.':#:'.$subscribed);
// We will need to enter the information into a temporary database
$jakdb->insert("payment_security_client", ["opid" => $opcacheid, "clientid" => JAK_CLIENTID, "payidnow" => $payidnow, "created" => $jakdb->raw("NOW()")]);
switch ($jkp["paidhow"]) {
case 'stripe':
// code...
if (isset($subscribed) && $subscribed == 1) {
// Now we need to either get the plan id from the database or create one
if (isset($planid) && $jakdb->has("payment_plans_client", ["AND" => ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packageid" => $pack["id"]]])) {
$subscription_id = $jakdb->get("payment_plans_client", "planid", ["AND" => ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packageid" => $pack["id"]]]);
} else {
$subscription_id = $JAK_payment->JAK_pay("stripe", $jkp["amount"], $pack["currency"], $intervalm, $planid, "recurring", "create_plan", $intervalc, "", JAK_STRIPE_SECRET_KEY, JAK_STRIPE_PUBLISH_KEY, JAK_SANDBOX_MODE);
if (isset($subscription_id) && !empty($subscription_id)) {
// We insert the subscription id for later use
$jakdb->insert("payment_plans_client", ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packageid" => $pack["id"], "planid" => $subscription_id, "created" => $jakdb->raw("NOW()")]);
} else {
// redirect back to home
$_SESSION["errormsg"] = $jkl["hd111"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
// We have a subscription plan
$JAK_payment->JAK_pay("stripe", "", "", $subscription_id, "", "recurring", "buy", JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow, $subscription_id), JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'cancel', $payidnow), JAK_STRIPE_SECRET_KEY, JAK_STRIPE_PUBLISH_KEY, JAK_SANDBOX_MODE);
} else {
// Single payment, make sure there is no subscription
$JAK_payment->JAK_pay("stripe", $jkp["amount"], $pack["currency"], $pack["id"], $planid, "single", "", JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow), JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'cancel', $payidnow), JAK_STRIPE_SECRET_KEY, JAK_STRIPE_PUBLISH_KEY, JAK_SANDBOX_MODE);
}
break;
case 'paypal':
// code...
if (isset($subscribed) && $subscribed == 1) {
// Now we need to either get the plan id from the database or create one
if (isset($planid) && $jakdb->has("payment_plans_client", ["AND" => ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packageid" => $pack["id"]]])) {
$subscription_id = $jakdb->get("payment_plans_client", "planid", ["AND" => ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packageid" => $pack["id"]]]);
} else {
$subscription_id = $JAK_payment->JAK_pay("paypal", $jkp["amount"], $pack["currency"], "PackageID-".$pack["id"], $planid, "recurring", "create_plan", $intervalm, $intervalc, JAK_PAYPAL_CLIENT, JAK_PAYPAL_SECRET, JAK_SANDBOX_MODE);
if (isset($subscription_id) && !empty($subscription_id)) {
// We insert the subscription id for later use
$jakdb->insert("payment_plans_client", ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packageid" => $pack["id"], "planid" => $subscription_id, "created" => $jakdb->raw("NOW()")]);
} else {
// redirect back to home
$_SESSION["errormsg"] = $jkl["hd111"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
// We have a subscription plan
$subscribeToken = $JAK_payment->JAK_pay("paypal", $jkp["amount"], $pack["currency"], $subscription_id, "", "recurring", "buy", JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow, $subscription_id), JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'cancel', $payidnow), JAK_PAYPAL_CLIENT, JAK_PAYPAL_SECRET, JAK_SANDBOX_MODE);
if ($subscribeToken) {
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow, $subscription_id, $subscribeToken));
} else {
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'cancel', $payidnow));
}
} else {
// Single payment, make sure there is no subscription
$JAK_payment->JAK_pay("paypal", $jkp["amount"], $pack["currency"], $pack["id"], $planid, "single", "", JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow), JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'cancel', $payidnow), JAK_PAYPAL_CLIENT, JAK_PAYPAL_SECRET, JAK_SANDBOX_MODE);
}
break;
case 'verifone':
// code...
$_SESSION["infomsg"] = $jkl["hd174"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
// More infos
/* $usrinfo = array(
'name'=>$jakuser->getVar("name"),
'email'=> $jakuser->getVar("email")
); */
break;
case 'authorize.net':
// code...
$_SESSION["infomsg"] = $jkl["hd174"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
break;
case 'yoomoney':
// code...
if (isset($subscribed) && $subscribed == 1) {
// YooKassa is strange with handling payments we just run it
$subscription_id = $JAK_payment->JAK_pay("yoomoney", $jkp["amount"], $pack["currency"], "PackageID-".$pack["id"], $planid, "recurring", "buy", JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow), "", JAK_YOOKASSA_ID, JAK_YOOKASSA_SECRET, JAK_SANDBOX_MODE);
} else {
// Single payment, make sure there is no subscription
$JAK_payment->JAK_pay("yoomoney", $jkp["amount"], $pack["currency"], "", $planid, "single", "", JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow), JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'cancel', $payidnow), JAK_YOOKASSA_ID, JAK_YOOKASSA_SECRET, JAK_SANDBOX_MODE);
}
break;
case 'paystack':
// code...
if (isset($subscribed) && $subscribed == 1) {
// Now we need to either get the plan id from the database or create one
if (isset($planid) && $jakdb->has("payment_plans_client", ["AND" => ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packageid" => $pack["id"]]])) {
$subscription_id = $jakdb->get("payment_plans_client", "planid", ["AND" => ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packegid" => $pack["id"]]]);
} else {
$subscription_id = $JAK_payment->JAK_pay("paystack", $jkp["amount"], $pack["currency"], "PackageID-".$pack["id"], $planid, "create_plan", "", $intervalm, $intervalc, JAK_PAYSTACK_SECRET, "", JAK_SANDBOX_MODE);
if (isset($subscription_id) && !empty($subscription_id)) {
// We insert the subscription id for later use
$jakdb->insert("payment_plans_client", ["opid" => $_SESSION['opid'], "paidhow" => $jkp["paidhow"], "amount" => $jkp["amount"], "currency" => $pack["currency"], "interval" => $intervalm, "interval_count" => $intervalc, "packageid" => $pack["id"], "planid" => $subscription_id, "created" => $jakdb->raw("NOW()")]);
} else {
// redirect back to home
$_SESSION["errormsg"] = $jkl["hd111"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
// We have a subscription plan
$subscribeToken = $JAK_payment->JAK_pay("paystack", $jkp["amount"], $pack["currency"], $subscription_id, "", "buy_plan", $jakuser->getVar("email"), "",
"", JAK_PAYSTACK_SECRET, "", JAK_SANDBOX_MODE);
if ($subscribeToken) {
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow, $subscription_id, $subscribeToken));
} else {
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'cancel', $payidnow));
}
} else {
// Single payment, make sure there is no subscription
$JAK_payment->JAK_pay("paystack", $jkp["amount"], $pack["currency"], $pack["id"], $planid, "single", $jakuser->getVar("email"), JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'success', $payidnow), JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'cancel', $payidnow), JAK_PAYSTACK_SECRET, "", JAK_SANDBOX_MODE);
}
break;
}
} else {
// redirect back to home
$_SESSION["errormsg"] = $jkl["hd111"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
}
// Rate the ticket
if ($page1 == "rt") {
if (isset($page2) && isset($page3) && is_numeric($page2) && is_numeric($page3) && $jakdb->has($jaktable1, ["AND" => ["id" => $page2, "opid" => $_SESSION['opid'], "initiated" => $page3, "reminder" => 2]])) {
$row = $jakdb->get($jaktable1, ["id", "name", "email", "subject"], ["AND" => ["id" => $page2, "opid" => $_SESSION['opid']]]);
// Include the javascript file for results
$js_file_footer = 'js_rating.php';
// Load the template
include_once APP_PATH.'template/'.JAK_FRONT_TEMPLATE.'/tplblocks/rateticket.php';
exit();
} else {
$_SESSION["infomsg"] = $jkl['not'];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
// When client/user is logged in
if (JAK_USERISLOGGED) {
// We edit some client details
if ($page1 == "edit") {
// Get the data
$JAK_FORM_DATA = jak_get_data(JAK_CLIENTID, $_SESSION['opid'], $jaktable2);
// Call the settings function
$lang_files = $jakdb->select($jaktable9, "lang", ["GROUP" => "lang"]);
// Get the custom fields jak_get_custom_fields($location, $opid, $depid, $clientid, $ticketid, $contactid, $lang, $readonly, $admin, $table, $registerform, $errors = NULL)
$custom_fields = jak_get_custom_fields(1, $_SESSION['opid'], 0, JAK_CLIENTID, 0, 0, $JAK_FORM_DATA["language"], false, false, false, false, $errorsp);
// Get the customer name
$JAK_FORM_DATA["title"] = $JAK_FORM_DATA["name"];
// Load the template
include_once APP_PATH.'template/business/tplblocks/clientedit.php';
} elseif ($page1 == "envato") {
if (JAK_BILLING_MODE == 3) {
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action']) && $_POST['action'] == "add_license") {
// If you took $code from user input it's a good idea to trim it
$code = trim($_POST["purchase_code"]);
// Make sure the code is valid before sending it to Envato
if (!preg_match("/^(\w{8})-((\w{4})-){3}(\w{12})$/", $code)) {
$errors['e'] = $jkl['e21'];
}
if (count($errors) == 0) {
// Verify the key
$purchase_data = verify_envato_purchase_code($code);
if (isset($purchase_data['item']['name'])) {
// We have a valid purchase is it also registered in the system
if ($jakdb->has($jaktable8, ["envato_item_id" => $purchase_data['item']['id']])) {
// Great now let's have a final check if the license is already registered
if (!$jakdb->has($jaktable7, ["purchase_code" => $code])) {
// Ok, all seems to be fine, let's add the code
$result = $jakdb->insert($jaktable7, ["opid" => $_SESSION['opid'],
"clientid" => JAK_CLIENTID,
"productid" => $purchase_data['item']['id'],
"purchase_name" => $purchase_data['buyer'],
"purchase_code" => $code,
"purchased" => $purchase_data['sold_at'],
"support_expires" => $purchase_data['supported_until'],
"created" => $jakdb->raw("NOW()")]);
$lastid = $jakdb->id();
// Now we will update the client table for the support expire if older
if ($jakdb->has($jaktable2, ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid'], "support_until[<]" => $purchase_data['supported_until']]])) {
$jakdb->update($jaktable2, ["support_until" => $purchase_data['supported_until']], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
}
// Write the log file each time someone login after to show success
JAK_base::jakWhatslog('', $_SESSION['opid'], 0, JAK_CLIENTID, 103, $lastid, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $jakclient->getVar("email"), $_SERVER['REQUEST_URI'], $ipa, $valid_agent);
$_SESSION["infomsg"] = $jkl["hd152"];
jak_redirect($_SESSION['LCRedirect']);
} else {
$errors['e2'] = $jkl['e24'];
}
} else {
$errors['e2'] = $jkl['e23'];
}
} else {
$errors['e1'] = $jkl['e22'];
}
}
}
// Load the registered licenses
$allLics = $jakdb->select($jaktable7, ["[>]".$jaktable8 => ["productid" => "envato_item_id"]], ["envato_codes.id", "envato_codes.purchase_name", "envato_codes.purchase_code", "envato_codes.purchased", "envato_codes.support_expires", "envato_products.product_name"], ["AND" => ["envato_codes.opid" => $_SESSION['opid'], "envato_codes.clientid" => JAK_CLIENTID], "ORDER" => ["envato_codes.support_expires" => "ASC"]]);
// Load the template
include_once APP_PATH.'template/business/tplblocks/envato.php';
// Envato Mode is turned off, nothing to do here
} else {
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
} elseif (isset($page1) && $page1 == "success" && isset($page2)) {
// Happy days Payment has been succesful and no one has cheated
$page2d = base64_url_decode($page2);
// clientid, packageid, paidhow, amount, time, planid (title, packageid, interval, week, month, year), subscribed
$custom = explode(":#:", $page2d);
// Reset
$subscription_id = $subscribe_id = $subscribeToken = 0;
// Now let's check if we are still on track
if (isset($custom) && $custom[0] == JAK_CLIENTID && $jakdb->has("payment_security_client", ["AND" => ["payidnow" => $page2, "success" => 0]])) {
// Update the payment security
if (isset($_GET["session_id"]) && !empty($_GET["session_id"])) {
$jakdb->update("payment_security_client", ["subscribe_id" => $_GET["session_id"]], ["payidnow" => $page2]);
$subscribe_id = $_GET["session_id"];
$subscribeToken = $subscribe_id;
}
// We have the subscription id in the URL
if (isset($page3) && !empty($page3)) {
$subscription_id = $jakdb->get("payment_plans_client", "id", ["planid" => $page3]);
}
// Paystack needs a emailToken
if (isset($page4) && !empty($page4)) {
$subscribeToken = $page4;
if (!isset($_GET["session_id"])) {
$jakdb->update("payment_security_client", ["subscribe_id" => $subscribeToken], ["payidnow" => $page2]);
}
}
$jakdb->update("payment_security_client", ["success" => 1], ["payidnow" => $page2]);
// Get the package
$pack = $jakdb->get("billing_packages", ["id", "title", "content", "previmg", "credits", "paidtill", "chat_dep", "support_dep", "faq_cat", "amount", "currency"], ["AND" => ["id" => $custom[1], "opid" => $_SESSION['opid'], "active" => 1],
"ORDER" => ["dorder" => "DESC"]]);
// We will need to check if the user has paid
if (isset($custom[2]) && $custom[2] == "yoomoney" && isset($_SESSION["yoomoney"])) {
// Now we need to check if the payment has been paid.
$yooclient = new Client();
$yooclient->setAuth($paga["secretkey_one"], $paga["secretkey_two"]);
$yoopayment = $yooclient->getPaymentInfo($_SESSION["yoomoney"]);
if (isset($yoopayment->_status) && $yoopayment->_status == "succeeded" && isset($yoopayment->_paid) && $yoopayment->_paid == true) {
} else {
$_SESSION["errormsg"] = $jkl["hd111"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
$jakdb->insert("payment_ipn", ["opid" => $_SESSION['opid'],
"clientid" => JAK_CLIENTID,
"status" => "success",
"amount" => $custom[3],
"currency" => $pack["currency"],
"txn_id" => $page2,
"receiver_email" => JAK_EMAIL,
"payer_email" => $jakclient->getVar("email"),
"paid_with" =>$custom[2],
"time" => $jakdb->raw("NOW()")]);
// check that txn_id has not been previously processed
$onepay = $jakdb->count("payment_ipn", ["txn_id" => $page2]);
// Current time
$timenow = time();
if ($onepay == 1) {
// We have Yoomoney we need to do some extra stuff
if (isset($custom[2]) && $custom[2] == "yoomoney" && isset($_SESSION["yoomoney"])) {
// We insert the subscription id for later use
if (isset($custom[6]) && $custom[6] == 1) {
$custom1 = explode("-", $custom[5]);
$jakdb->insert("payment_plans_client", ["opid" => $_SESSION['opid'], "packageid" => $pack['id'], "paidhow" => $custom[2], "amount" => $custom[3], "currency" => $pack["currency"], "interval" => $custom1[3], "interval_count" => $custom1[2], "planid" => $_SESSION["yoomoney"], "created" => $jakdb->raw("NOW()")]);
// And set the token for charging the customer again
$subscribeToken = $_SESSION["yoomoney"];
$jakdb->update("payment_security_client", ["subscribe_id" => $subscribeToken], ["payidnow" => $page2]);
}
// Unset the session yoomoney
unset($_SESSION["yoomoney"]);
}
// Credit based system
if (JAK_BILLING_MODE == 1) {
// Update the credits
$jakdb->update($jaktable2, ["credits[+]" => $pack["credits"]], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// Update the chat departments
if ($pack["chat_dep"] != 0) $jakdb->update($jaktable2, ["chat_dep" => $pack["chat_dep"]], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// Update the support departments
if ($pack["support_dep"] != 0) $jakdb->update($jaktable2, ["support_dep" => $pack["support_dep"]], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// Update the faq categories
if ($pack["faq_cat"] != 0) $jakdb->update($jaktable2, ["faq_cat" => $pack["faq_cat"]], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// Memberschip based system
} elseif (JAK_BILLING_MODE == 2) {
// Get the new date
if (strtotime($jakuser->getVar("paid_until")) > time()) {
$paidunix = strtotime($pack["paidtill"], strtotime($jakuser->getVar("paid_until")));
} else {
$paidunix = strtotime($pack["paidtill"]);
}
// Now if we have a subscription we add 48 hours to the client table to make sure it get's not expired
if (isset($custom[6]) && $custom[6] == 1) {
$paidunix2 = strtotime('+2 days', $paidunix);
$paidtill2 = date('Y-m-d H:i:s', $paidunix2);
}
$paidtill = date('Y-m-d H:i:s', $paidunix);
// Update the credits
$jakdb->update($jaktable2, ["paid_until" => $paidtill2], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// Update the chat departments
if ($pack["chat_dep"] != 0) $jakdb->update($jaktable2, ["chat_dep" => $pack["chat_dep"]], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// Update the support departments
if ($pack["support_dep"] != 0) $jakdb->update($jaktable2, ["support_dep" => $pack["support_dep"]], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// Update the faq categories
if ($pack["faq_cat"] != 0) $jakdb->update($jaktable2, ["faq_cat" => $pack["faq_cat"]], ["AND" => ["id" => JAK_CLIENTID, "opid" => $_SESSION['opid']]]);
// Payment details insert
$jakdb->insert("subscriptions_client", ["opid" => $_SESSION['opid'],
"clientid" => JAK_CLIENTID,
"amount" => $custom[3],
"paidhow" => $custom[2],
"currency" => $pack["currency"],
"package" => $pack["id"],
"subscribed" => $custom[6],
"planid" => $subscribeToken,
"paidwhen" => $jakdb->raw("NOW()"),
"paidtill" => $paidtill,
"success" => 1,
"active" => 1]);
}
}
$_SESSION["successmsg"] = $jkl["hd177"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
$_SESSION["errormsg"] = $jkl["hd111"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
} elseif (isset($page1) && $page1 == "cancel") {
$_SESSION["errormsg"] = $jkl["hd111"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
} elseif (isset($page1) && $page1 == "withdrawal") {
// We cancel the subscription
if (isset($page2) && isset($page3) && $page3 == JAK_CLIENTID) {
// Now let's get the current subscription
$subs = $jakdb->get("subscriptions_client", ["id", "paidhow", "package", "subscribed", "planid", "paidtill"], ["AND" => ["id" => $page2, "opid" => $_SESSION['opid'], "clientid" => JAK_CLIENTID]]);
// Confirm from the main admin panel
if (isset($subs) && !empty($subs)) {
// Get the left days
$datenow = new DateTime(); //current date or any date
$paidtill = new DateTime($subs["paidtill"]); //Future date
$diffdates = $paidtill->diff($datenow)->format("%a"); //find difference
$daysleft = intval($diffdates); //rounding days
// Canceled success?
$subcanceled = false;
// Go trought the payment gateways
switch ($subs['paidhow']) {
case 'stripe':
// code...
$subcanceled = $JAK_payment->JAK_pay("stripe", "", "", $subs["planid"], "", "recurring", "cancel_period_end", "", "", JAK_STRIPE_SECRET_KEY, JAK_STRIPE_PUBLISH_KEY, JAK_SANDBOX_MODE);
break;
case 'paypal':
// code...
$subcanceled = $JAK_payment->JAK_pay("paypal", "", "", $subs["planid"], "User canceled subscription.", "recurring", "cancel", "", "", JAK_PAYPAL_CLIENT, JAK_PAYPAL_SECRET, JAK_SANDBOX_MODE);
break;
case 'verifone':
// code...
$_SESSION["infomsg"] = $jkl["i78"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
break;
case 'authorize.net':
// code...
$_SESSION["infomsg"] = $jkl["i78"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
break;
case 'yoomoney':
// code...
// This is not a real cancelation as YooMoney does not charge the user automatically. We just stop charging the user by cron job.
$subcanceled = true;
break;
case 'paystack':
// code...
$subcanceled = $JAK_payment->JAK_pay("paystack", "", "", $subs["planid"], "", "cancel_plan", "", "", "", JAK_PAYSTACK_SECRET, "", JAK_SANDBOX_MODE);
break;
}
// All safe and sound
if ($subcanceled) {
// Now we need to update the subscribed table
$jakdb->update("subscriptions_client", ["subscribed" => 0, "planid" => "", "active" => 0], ["AND" => ["id" => $page2, "opid" => $_SESSION['opid'], "clientid" => JAK_CLIENTID]]);
$_SESSION["successmsg"] = sprintf($jkl["hd175"], $daysleft);
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
} else {
$_SESSION["errormsg"] = $jkl["hd176"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
} else {
$_SESSION["errormsg"] = $jkl["hd176"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
} else {
$_SESSION["errormsg"] = $jkl["hd176"];
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
} else {
// Some Resets
$getTotal = 0;
$allcsupport = $last5pay = $allpackages = array();
// Let's go on with the script
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['action']) && $_POST['action'] == "filter") {
if (isset($_POST['jak_depid']) && is_numeric($_POST['jak_depid']) && $_POST['jak_depid'] != 0) {
if (JAK_CLIENTID && ($jakclient->getVar("support_dep") == 0 || in_array($_POST['jak_depid'], explode(",", $jakclient->getVar("support_dep"))))) {
$_SESSION["sortdepid"] = $_POST['jak_depid'];
} elseif (JAK_USERID && ($jakuser->getVar("support_dep") == 0 || in_array($_POST['jak_depid'], explode(",", $jakuser->getVar("support_dep"))))) {
$_SESSION["sortdepid"] = $_POST['jak_depid'];
} else {
if (isset($HD_SUPPORT_DEPARTMENTS) && !empty($HD_SUPPORT_DEPARTMENTS)) foreach ($HD_SUPPORT_DEPARTMENTS as $d) {
if ($d["id"] == $_POST['jak_depid'] && $d["guesta"] == 1) {
$_SESSION["sortdepid"] = $_POST['jak_depid'];
}
}
}
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL, 'c', $_SESSION["sortdepid"]));
} else {
unset($_SESSION["sortdepid"]);
jak_redirect(JAK_rewrite::jakParseurl(JAK_CLIENT_URL));
}
}
// Get the last 5 payments
if (JAK_CLIENTID) {
// Let's rock with the payment module.
// Get the last 5 payments
$last5pay = $jakdb->select("subscriptions_client", ["[>]billing_packages" => ["package" => "id"]], ["subscriptions_client.id", "subscriptions_client.amount", "subscriptions_client.currency", "subscriptions_client.paidhow", "subscriptions_client.paidwhen", "subscriptions_client.paidtill", "subscriptions_client.subscribed", "subscriptions_client.success", "subscriptions_client.active", "billing_packages.title"], ["AND" => ["subscriptions_client.opid" => $_SESSION['opid'], "subscriptions_client.clientid" => JAK_CLIENTID],
"ORDER" => ["subscriptions_client.paidwhen" => "DESC"],
"LIMIT" => 5
]);
// Get all packages
$allpackages = $jakdb->select("billing_packages", ["id", "title", "content", "previmg", "credits", "paidtill", "chat_dep", "support_dep", "faq_cat", "amount", "currency"], ["AND" => ["opid" => $_SESSION['opid'], "active" => 1],
"ORDER" => ["dorder" => "DESC"]
]);
// Get the correct departments
$dep_filter = array();
if (JAK_CLIENTID) {
if (isset($HD_SUPPORT_DEPARTMENTS) && !empty($HD_SUPPORT_DEPARTMENTS)) foreach ($HD_SUPPORT_DEPARTMENTS as $d) {
if ($d["guesta"] == 1 || $jakclient->getVar("support_dep") == 0 || in_array($d["id"], explode(",", $jakclient->getVar("support_dep")))) {
$dep_filter[] = $d;
}
}
}
// Include the javascript file for results
$js_file_footer = 'js_dashboard.php';
// Load the template
include_once APP_PATH.'template/business/tplblocks/dashboard.php';
} // End clientid
if (JAK_USERID) {
jak_redirect(JAK_rewrite::jakParseurl(JAK_OPERATOR_LOC, 'support'));
}
}
// Get the stuff when user is not logged in
} else {
// Get the custom fields jak_get_custom_fields($location, $opid, $depid, $clientid, $ticketid, $contactid, $lang, $readonly, $admin, $table, $registerform, $errors = NULL)
$custom_fields = jak_get_custom_fields(1, $_SESSION['opid'], 0, 0, 0, 0, $BT_LANGUAGE, false, false, false, true, $errorsreg);
// Include the javascript file for results
$js_file_footer = 'js_client.php';
// Load the template
include_once APP_PATH.'template/business/tplblocks/client.php';
}
?>