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.
1273 lines
49 KiB
1273 lines
49 KiB
1 year ago
|
<?php
|
||
|
|
||
|
/*===============================================*\
|
||
|
|| ############################################# ||
|
||
|
|| # JAKWEB.CH / Version 2.1.3 # ||
|
||
|
|| # ----------------------------------------- # ||
|
||
|
|| # 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_ADMIN_PREVENT_ACCESS')) die('You cannot access this file directly.');
|
||
|
|
||
|
// Check if the user has access to this file
|
||
|
if (!JAK_ADMINACCESS) jak_redirect(BASE_URL);
|
||
|
|
||
|
// Get the license file
|
||
|
require_once '../class/class.jaklic.php';
|
||
|
$jaklic = new JAKLicenseAPI();
|
||
|
|
||
|
// All the tables we need for this plugin
|
||
|
$errors = array();
|
||
|
$jaktable = 'user';
|
||
|
$jaktable1 = 'user_stats';
|
||
|
$jaktable2 = 'departments';
|
||
|
$jaktable3 = 'clients';
|
||
|
$jaktable4 = 'support_departments';
|
||
|
$jaktable5 = 'faq_categories';
|
||
|
$jaktable6 = 'customfields';
|
||
|
$jaktable7 = 'support_tickets';
|
||
|
$jaktable8 = 'ticket_answers';
|
||
|
$jaktable9 = 'customfields_data';
|
||
|
$jaktable10 = 'envato_codes';
|
||
|
$jaktable11 = 'envato_products';
|
||
|
|
||
|
$insert = '';
|
||
|
$updatepass = $addmuser = $addclient = false;
|
||
|
$newop = true;
|
||
|
$totalavops = (!empty($jakosub) ? $jakosub['operators'] + $jakosub['extraoperators'] : 0);
|
||
|
$totalclients = (!empty($jakosub) ? $jakosub['clients'] : 0);
|
||
|
|
||
|
use JAKWEB\JAKsql;
|
||
|
|
||
|
// Now start with the plugin use a switch to access all pages
|
||
|
switch ($page1) {
|
||
|
|
||
|
case 'clients':
|
||
|
// No permission to clients
|
||
|
if (!jak_get_access("client", $jakuser->getVar("permissions"), JAK_MAIN_OP)) jak_redirect(BASE_URL);
|
||
|
|
||
|
switch ($page2) {
|
||
|
case 'new':
|
||
|
|
||
|
// Let's check if we can add more users
|
||
|
$totalcl = $jakdb->count($jaktable3, ["opid" => JAK_USERID]);
|
||
|
if ($totalclients > $totalcl) $addclient = true;
|
||
|
|
||
|
// No special access, so what you doing here?
|
||
|
if (!$addclient) jak_redirect(BASE_URL);
|
||
|
|
||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||
|
$jkp = $_POST;
|
||
|
|
||
|
if (empty($jkp['jak_name'])) {
|
||
|
$errors['e1'] = $jkl['e7'];
|
||
|
}
|
||
|
|
||
|
if ($jkp['jak_email'] == '' || !filter_var($jkp['jak_email'], FILTER_VALIDATE_EMAIL)) {
|
||
|
$errors['e2'] = $jkl['e3'];
|
||
|
}
|
||
|
|
||
|
if (jak_field_not_exist(strtolower($jkp['jak_email']), $jaktable3, "email")) {
|
||
|
$errors['e2'] = $jkl['e18'];
|
||
|
}
|
||
|
|
||
|
if ($jkp['jak_password'] != $jkp['jak_confirm_password']) {
|
||
|
$errors['e5'] = $jkl['e10'];
|
||
|
} elseif (strlen($jkp['jak_password']) <= '7') {
|
||
|
$errors['e6'] = $jkl['e11'];
|
||
|
}
|
||
|
|
||
|
if (count($errors) == 0) {
|
||
|
|
||
|
// Chat departments
|
||
|
if (!isset($jkp['jak_depid'])) {
|
||
|
$depa = 0;
|
||
|
} else {
|
||
|
$depa = join(',', $jkp['jak_depid']);
|
||
|
}
|
||
|
|
||
|
// Support Departments
|
||
|
if (!isset($jkp['jak_depids'])) {
|
||
|
$depas = 0;
|
||
|
} else {
|
||
|
$depas = join(',', $jkp['jak_depids']);
|
||
|
}
|
||
|
|
||
|
// FAQ Categories
|
||
|
if (!isset($jkp['jak_depidf'])) {
|
||
|
$depaf = 0;
|
||
|
} else {
|
||
|
$depaf = join(',', $jkp['jak_depidf']);
|
||
|
}
|
||
|
|
||
|
$jakdb->insert($jaktable3, ["opid" => $opcacheid,
|
||
|
"chat_dep" => $depa,
|
||
|
"support_dep" => $depas,
|
||
|
"faq_cat" => $depaf,
|
||
|
"name" => $jkp['jak_name'],
|
||
|
"email" => $jkp['jak_email'],
|
||
|
"password" => hash_hmac('sha256', $jkp['jak_password'], DB_PASS_HASH),
|
||
|
"canupload" => ($jakosub['files'] ? $jkp['jak_upload'] : 0),
|
||
|
"language" => $jkp['jak_lang'],
|
||
|
"access" => 1,
|
||
|
"time" => $jakdb->raw("NOW()")]);
|
||
|
|
||
|
$lastid = $jakdb->id();
|
||
|
|
||
|
if (!$lastid) {
|
||
|
$_SESSION["errormsg"] = $jkl['i4'];
|
||
|
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");
|
||
|
}
|
||
|
|
||
|
// Now send the email to the customer if we wish so.
|
||
|
if (isset($jkp['send_email']) && $jkp['send_email'] == 1) {
|
||
|
|
||
|
// 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_ORIG, JAK_TITLE, $jkp['jak_name'], $jkp['jak_email'], $jkp['jak_password'], JAK_EMAIL);
|
||
|
$regtext = str_replace($phold, $replace, $v["message"]);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Get the email template
|
||
|
$nlhtml = file_get_contents(APP_PATH.'template/'.JAK_FRONT_TEMPLATE.'/email/index.html');
|
||
|
|
||
|
// Change fake vars into real ones.
|
||
|
$cssAtt = array('{emailcontent}', '{weburl}', '{title}', '{emailtpllogo}', '{emailtplcopy}');
|
||
|
$cssUrl = array($regtext, BASE_URL_ORIG, 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['jak_email'], "", "", JAK_TITLE.' - '.$jkl['g247'], $body, "")) $_SESSION["infomsg"] = $jkl['hd134'];
|
||
|
|
||
|
}
|
||
|
|
||
|
// Last but not least add the client id to the already opened chat sessions.
|
||
|
$jakdb->update("sessions", ["clientid" => $lastid], ["email" => $jkp['jak_email']]);
|
||
|
|
||
|
// Write the log file each time
|
||
|
JAK_base::jakWhatslog('', $opcacheid, JAK_USERID, $lastid, 12, $lastid, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $jkp['jak_email'], $_SERVER['REQUEST_URI'], $ipa, $valid_agent);
|
||
|
|
||
|
// Output the success message
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'clients', 'edit', $lastid));
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$errors['e'] = $jkl['e'];
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Get all departments
|
||
|
$JAK_DEPARTMENTS = $jakdb->select($jaktable2, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
$JAK_DEP_SUPPORT = $jakdb->select($jaktable4, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
$JAK_CAT_FAQ = $jakdb->select($jaktable5, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
|
||
|
// Ok we have an id from the chat
|
||
|
if ($page3 = "chat" && is_numeric($page4)) {
|
||
|
|
||
|
// Get the data
|
||
|
$datasett = $jakdb->get("sessions", ["name", "email"], ["AND" => ["id" => $page4, "opid" => $opcacheid]]);
|
||
|
|
||
|
// Write it into the vars if not set already
|
||
|
if (empty($_POST["jak_name"])) $_POST["jak_name"] = $datasett["name"];
|
||
|
if (empty($_POST["jak_email"])) $_POST["jak_email"] = $datasett["email"];
|
||
|
|
||
|
}
|
||
|
|
||
|
// Call the settings function
|
||
|
$lang_files = jak_get_lang_files();
|
||
|
|
||
|
// Title and Description
|
||
|
$SECTION_TITLE = $jkl["hd112"];
|
||
|
$SECTION_DESC = "";
|
||
|
|
||
|
// Include the javascript file for results
|
||
|
$js_file_footer = 'js_client.php';
|
||
|
|
||
|
// Call the template
|
||
|
$template = 'newclient.php';
|
||
|
break;
|
||
|
case 'edit':
|
||
|
|
||
|
if (isset($page3) && is_numeric($page3) && $jakdb->has($jaktable3, ["AND" => ["id" => $page3, "opid" => $opcacheid]])) {
|
||
|
|
||
|
|
||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||
|
$jkp = $_POST;
|
||
|
|
||
|
if (empty($jkp['jak_name'])) {
|
||
|
$errors['e1'] = $jkl['e7'];
|
||
|
}
|
||
|
|
||
|
if ($jkp['jak_email'] == '' || !filter_var($jkp['jak_email'], FILTER_VALIDATE_EMAIL)) {
|
||
|
$errors['e2'] = $jkl['e3'];
|
||
|
}
|
||
|
|
||
|
if (jak_field_not_exist_id($jkp['jak_email'], $page3, $jaktable3, "email")) {
|
||
|
$errors['e2'] = $jkl['e18'];
|
||
|
}
|
||
|
|
||
|
if (!empty($jkp['jak_password']) || !empty($jkp['jak_confirm_password'])) {
|
||
|
if ($jkp['jak_password'] != $jkp['jak_confirm_password']) {
|
||
|
$errors['e5'] = $jkl['e10'];
|
||
|
} elseif (strlen($jkp['jak_password']) <= '7') {
|
||
|
$errors['e6'] = $jkl['e11'];
|
||
|
} else {
|
||
|
$updatepass = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (count($errors) == 0) {
|
||
|
|
||
|
// Chat departments
|
||
|
if (!isset($jkp['jak_depid'])) {
|
||
|
$depa = 0;
|
||
|
} else {
|
||
|
$depa = join(',', $jkp['jak_depid']);
|
||
|
}
|
||
|
|
||
|
// Support Departments
|
||
|
if (!isset($jkp['jak_depids'])) {
|
||
|
$depas = 0;
|
||
|
} else {
|
||
|
$depas = join(',', $jkp['jak_depids']);
|
||
|
}
|
||
|
|
||
|
// FAQ Categories
|
||
|
if (!isset($jkp['jak_depidf'])) {
|
||
|
$depaf = 0;
|
||
|
} else {
|
||
|
$depaf = join(',', $jkp['jak_depidf']);
|
||
|
}
|
||
|
|
||
|
$result = $jakdb->update($jaktable3, ["chat_dep" => $depa,
|
||
|
"support_dep" => $depas,
|
||
|
"faq_cat" => $depaf,
|
||
|
"name" => $jkp['jak_name'],
|
||
|
"email" => $jkp['jak_email'],
|
||
|
"credits" => $jkp['jak_credits'],
|
||
|
"paid_until" => trim($jkp['jak_validtill']),
|
||
|
"custom_price" => trim($jkp['custom_price']),
|
||
|
"canupload" => $jkp['jak_upload'],
|
||
|
"language" => $jkp['jak_lang'],
|
||
|
"frontendadmin" => $jkp['jak_frontendadmin']], ["AND" => ["id" => $page3, "opid" => $opcacheid]]);
|
||
|
|
||
|
if (!$result) {
|
||
|
$_SESSION["errormsg"] = $jkl['i4'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
} else {
|
||
|
// Finally we update the password
|
||
|
if ($updatepass) $jakdb->update($jaktable3, ["password" => hash_hmac('sha256', $jkp['jak_password'], DB_PASS_HASH)], ["id" => $page3]);
|
||
|
|
||
|
// And we complete the custom fields
|
||
|
jak_save_custom_fields($opcacheid, $page3, 0, 0, $jkp, 1);
|
||
|
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$errors['e'] = $jkl['e'];
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Get all departments
|
||
|
$JAK_DEPARTMENTS = $jakdb->select($jaktable2, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
$JAK_DEP_SUPPORT = $jakdb->select($jaktable4, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
$JAK_CAT_FAQ = $jakdb->select($jaktable5, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
|
||
|
// Call the settings function
|
||
|
$lang_files = jak_get_lang_files(JAK_LANG);
|
||
|
|
||
|
// Get the data
|
||
|
$JAK_FORM_DATA = jak_get_data($page3, $opcacheid, $jaktable3);
|
||
|
|
||
|
// Get the custom fields
|
||
|
$custom_fields = jak_get_custom_fields($page3, 0, 1, $opcacheid, false, $JAK_FORM_DATA["language"], false, true, false, false, false);
|
||
|
|
||
|
// Load the registered licenses
|
||
|
if (JAK_BILLING_MODE == 3) {
|
||
|
$allLics = $jakdb->select($jaktable10, ["[>]".$jaktable11 => ["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" => $opcacheid, "envato_codes.clientid" => $page3], "ORDER" => ["envato_codes.support_expires" => "ASC"]]);
|
||
|
}
|
||
|
|
||
|
// Title and Description
|
||
|
$SECTION_TITLE = $jkl["g287"];
|
||
|
$SECTION_DESC = "";
|
||
|
|
||
|
// Include the javascript file for results
|
||
|
$js_file_footer = 'js_client.php';
|
||
|
|
||
|
// Call the template
|
||
|
$template = 'editclient.php';
|
||
|
|
||
|
} else {
|
||
|
$_SESSION["errormsg"] = $jkl['i3'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'clients'));
|
||
|
}
|
||
|
break;
|
||
|
case 'lic':
|
||
|
|
||
|
if (!JAK_SUPERADMINACCESS) jak_redirect(BASE_URL);
|
||
|
|
||
|
# code...
|
||
|
// Check if user exists and can be deleted
|
||
|
if (JAK_BILLING_MODE == 3 && is_numeric($page3)) {
|
||
|
|
||
|
// If you took $code from user input it's a good idea to trim it
|
||
|
$code = $jakdb->get($jaktable10, ["clientid", "purchase_code"], ["AND" => ["id" => $page3, "opid" => $opcacheid], "LIMIT" => 1]);
|
||
|
|
||
|
// Verify the key
|
||
|
$purchase_data = verify_envato_purchase_code($code["purchase_code"]);
|
||
|
|
||
|
if (isset($purchase_data['item']['name'])) {
|
||
|
|
||
|
// Now we will update the client table for the support expire if older
|
||
|
if ($jakdb->has($jaktable3, ["AND" => ["id" => $code["clientid"], "support_until[<]" => $purchase_data['supported_until']]])) {
|
||
|
|
||
|
$jakdb->update($jaktable3, ["support_until" => $purchase_data['supported_until']], ["id" => $code["clientid"]]);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'clients', 'edit', $code["clientid"]));
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$_SESSION["errormsg"] = $jkl['i3'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'clients', 'edit', $code["clientid"]));
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
case 'licdel':
|
||
|
|
||
|
if (!JAK_SUPERADMINACCESS) jak_redirect(BASE_URL);
|
||
|
|
||
|
# code...
|
||
|
// Check if user exists and can be deleted
|
||
|
if (JAK_BILLING_MODE == 3 && is_numeric($page3)) {
|
||
|
|
||
|
$clientid = $jakdb->get($jaktable10, "clientid", ["AND" => ["id" => $page3, "opid" => $opcacheid], "LIMIT" => 1]);
|
||
|
|
||
|
// Now let's delete the entry
|
||
|
$result = $jakdb->delete($jaktable10, ["AND" => ["id" => $page3, "opid" => $opcacheid]]);
|
||
|
|
||
|
if ($result->rowCount() != 1) {
|
||
|
$_SESSION["infomsg"] = $jkl['i'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'clients', 'edit', $clientid));
|
||
|
} else {
|
||
|
|
||
|
// Now let us delete the define cache file
|
||
|
$cachestufffile = APP_PATH.JAK_CACHE_DIRECTORY.'/stuff.php';
|
||
|
if (file_exists($cachestufffile)) {
|
||
|
unlink($cachestufffile);
|
||
|
}
|
||
|
|
||
|
// Write the log file each time someone tries to login before
|
||
|
JAK_base::jakWhatslog('', $opcacheid, JAK_USERID, 0, 104, $page3, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $jakuser->getVar("username"), $_SERVER['REQUEST_URI'], $ipa, $valid_agent);
|
||
|
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'clients', 'edit', $clientid));
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$_SESSION["errormsg"] = $jkl['i3'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'clients', 'edit', $clientid));
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
case 'newpass':
|
||
|
|
||
|
// Now send the email to the customer if we wish so.
|
||
|
if (isset($page3) && is_numeric($page3) && $jakdb->has($jaktable3, ["AND" => ["id" => $page3, "opid" => $opcacheid]])) {
|
||
|
|
||
|
// Get the client data
|
||
|
$JAK_FORM_DATA = jak_get_data($page3, $opcacheid, $jaktable3);
|
||
|
|
||
|
// create new password
|
||
|
$password = jak_password_creator();
|
||
|
$passcrypt = hash_hmac('sha256', $password, DB_PASS_HASH);
|
||
|
|
||
|
// update table
|
||
|
$result = $jakdb->update($jaktable3, ["password" => $passcrypt, "forgot" => 0], ["AND" => ["id" => $page3, "opid" => $opcacheid]]);
|
||
|
|
||
|
// Get the email template
|
||
|
$nlhtml = file_get_contents(APP_PATH.'template/'.JAK_FRONT_TEMPLATE.'/email/index.html');
|
||
|
|
||
|
// Change fake vars into real ones.
|
||
|
$cssAtt = array('{emailcontent}', '{weburl}', '{title}', '{emailtpllogo}', '{emailtplcopy}');
|
||
|
$cssUrl = array(sprintf($jkl['l16'], $JAK_FORM_DATA["name"], $password, JAK_TITLE), BASE_URL_ORIG, 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($JAK_FORM_DATA["email"], "", "", JAK_TITLE.' - '.$jkl['l15'], $body, "")) {
|
||
|
|
||
|
$_SESSION["successmsg"] = $jkl['hd348'];
|
||
|
|
||
|
// Write the log file each time someone tries to login before
|
||
|
JAK_base::jakWhatslog('', JAK_USERID, 0, 108, $page3, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $jakuser->getVar("username"), $_SERVER['REQUEST_URI'], $ipa, $valid_agent);
|
||
|
|
||
|
// Redirect
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'clients', 'edit', $page3));
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
default:
|
||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||
|
|
||
|
if (isset($_POST['jak_delock_all'])) {
|
||
|
$jkp = $_POST;
|
||
|
|
||
|
if (isset($jkp['action']) && $jkp['action'] == "lock") {
|
||
|
|
||
|
$lockuser = $jkp['jak_delock_all'];
|
||
|
$useridarray = explode(',', JAK_SUPERADMIN);
|
||
|
|
||
|
for ($i = 0; $i < count($lockuser); $i++) {
|
||
|
$locked = $lockuser[$i];
|
||
|
// Get the userid / access token
|
||
|
$uidacc = explode(":#:", $locked);
|
||
|
if ($uidacc[1] == 1) {
|
||
|
$query = $jakdb->update($jaktable3, ["access" => 0], ["AND" => ["id" => $uidacc[0], "opid" => $opcacheid]]);
|
||
|
} else {
|
||
|
$query = $jakdb->update($jaktable3, ["access" => 1], ["AND" => ["id" => $uidacc[0], "opid" => $opcacheid]]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($query) {
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
}
|
||
|
|
||
|
$_SESSION["infomsg"] = $jkl['i1'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
|
||
|
}
|
||
|
|
||
|
if (isset($jkp['action']) && $jkp['action'] == "delete") {
|
||
|
|
||
|
$lockuser = $jkp['jak_delock_all'];
|
||
|
|
||
|
for ($i = 0; $i < count($lockuser); $i++) {
|
||
|
$locked = $lockuser[$i];
|
||
|
// Get the userid / access token
|
||
|
$uidacc = explode(":#:", $locked);
|
||
|
$query = $jakdb->delete($jaktable3, ["AND" => ["id" => $uidacc[0], "opid" => $opcacheid]]);
|
||
|
|
||
|
// Delete Avatar and folder
|
||
|
$targetPath = APP_PATH.JAK_FILES_DIRECTORY.'/clients/'.$uidacc[0].'/';
|
||
|
$removedouble = str_replace("//","/",$targetPath);
|
||
|
foreach(glob($removedouble.'*.*') as $jak_unlink) {
|
||
|
|
||
|
// Delete the files
|
||
|
@unlink($jak_unlink);
|
||
|
|
||
|
}
|
||
|
|
||
|
// Delete the directory
|
||
|
@rmdir($targetPath);
|
||
|
|
||
|
// Find tickets from this user and set to 0
|
||
|
$jakdb->update($jaktable7, ["clientid" => 0], ["AND" => ["clientid" => $uidacc[0], "opid" => $opcacheid]]);
|
||
|
$jakdb->update($jaktable8, ["clientid" => 0], ["clientid" => $uidacc[0]]);
|
||
|
}
|
||
|
|
||
|
if ($query) {
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
}
|
||
|
|
||
|
$_SESSION["infomsg"] = $jkl['i1'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
$_SESSION["infomsg"] = $jkl['i'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
|
||
|
}
|
||
|
|
||
|
// Total client's
|
||
|
$totalAll = 0;
|
||
|
|
||
|
// Get the totals
|
||
|
$totalAll = $jakdb->count($jaktable3, ["opid" => $opcacheid]);
|
||
|
|
||
|
// Let's check if we can add more users
|
||
|
if ($totalclients > $totalAll) $addclient = true;
|
||
|
|
||
|
// Check and validate
|
||
|
if (!JAK_WILDCARD_SUBDOMAIN) {
|
||
|
$verify_response = $jaklic->verify_license(true);
|
||
|
if ($verify_response['status'] != true) {
|
||
|
if (JAK_SUPERADMINACCESS) {
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('maintenance'));
|
||
|
} else {
|
||
|
$_SESSION["errormsg"] = $jkl['e27'];
|
||
|
jak_redirect(BASE_URL);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Title and Description
|
||
|
$SECTION_TITLE = $jkl["hd6"];
|
||
|
$SECTION_DESC = "";
|
||
|
|
||
|
// Include the javascript file for results
|
||
|
$js_file_footer = 'js_clients.php';
|
||
|
|
||
|
// Call the template
|
||
|
$template = 'clients.php';
|
||
|
break;
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
// Create new user
|
||
|
case 'new':
|
||
|
|
||
|
// No special access, so what you doing here?
|
||
|
if (!jak_get_access("usrmanage", $jakuser->getVar("permissions"), JAK_MAIN_OP)) jak_redirect(BASE_URL);
|
||
|
|
||
|
// Let's check if we can add more users
|
||
|
$totalops = $jakdb->count($jaktable, ["opid" => JAK_USERID]);
|
||
|
if ($totalavops > $totalops) $addmuser = true;
|
||
|
|
||
|
// No special access, so what you doing here?
|
||
|
if (!$addmuser) jak_redirect(BASE_URL);
|
||
|
|
||
|
// Get all departments
|
||
|
$JAK_DEPARTMENTS = $jakdb->select($jaktable2, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
$JAK_DEP_SUPPORT = $jakdb->select($jaktable4, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
|
||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||
|
$jkp = $_POST;
|
||
|
|
||
|
if (empty($jkp['jak_name'])) {
|
||
|
$errors['e1'] = $jkl['e7'];
|
||
|
}
|
||
|
|
||
|
if ($jkp['jak_email'] == '' || !filter_var($jkp['jak_email'], FILTER_VALIDATE_EMAIL)) {
|
||
|
$errors['e2'] = $jkl['e3'];
|
||
|
}
|
||
|
|
||
|
if (jak_field_not_exist(strtolower($jkp['jak_email']), $jaktable, "email")) {
|
||
|
$errors['e2'] = $jkl['e18'];
|
||
|
}
|
||
|
|
||
|
if (!preg_match('/^([a-zA-Z0-9\-_])+$/', $jkp['jak_username'])) {
|
||
|
$errors['e3'] = $jkl['e8'];
|
||
|
}
|
||
|
|
||
|
if (jak_field_not_exist(strtolower($jkp['jak_username']), $jaktable, "username")) {
|
||
|
$errors['e4'] = $jkl['e9'];
|
||
|
}
|
||
|
|
||
|
if ($jkp['jak_password'] != $jkp['jak_confirm_password']) {
|
||
|
$errors['e5'] = $jkl['e10'];
|
||
|
} elseif (strlen($jkp['jak_password']) <= '7') {
|
||
|
$errors['e6'] = $jkl['e11'];
|
||
|
} else {
|
||
|
$updatepass = true;
|
||
|
}
|
||
|
|
||
|
if (count($errors) == 0) {
|
||
|
|
||
|
// Chat departments
|
||
|
if (!isset($jkp['jak_depid'])) {
|
||
|
$depa = 0;
|
||
|
} else {
|
||
|
$depa = join(',', $jkp['jak_depid']);
|
||
|
}
|
||
|
|
||
|
// Support Departments
|
||
|
if (!isset($jkp['jak_depids'])) {
|
||
|
$depas = 0;
|
||
|
} else {
|
||
|
$depas = join(',', $jkp['jak_depids']);
|
||
|
}
|
||
|
|
||
|
$tw_roles = '';
|
||
|
if (JAK_SUPERADMINACCESS && !empty($jkp['jak_roles'])) $tw_roles = join(',', $jkp['jak_roles']);
|
||
|
|
||
|
if (isset($jakhs['hostactive']) && $jakhs['hostactive']) {
|
||
|
$jkp['jak_files'] = $jakhs['files'];
|
||
|
}
|
||
|
|
||
|
// Reset
|
||
|
$validtill = '1980-05-06 00:00:00';
|
||
|
// what we have to add for the operator
|
||
|
if ($addmuser) {
|
||
|
$totaleops = $jakdb->count($jaktable, ["AND" => ["opid" => $opcacheid, "extraop" => 1]]);
|
||
|
|
||
|
if ($totaleops < $jakosub['extraoperators']) {
|
||
|
$date = new DateTime();
|
||
|
// Modify the date
|
||
|
$date->modify('+1 month');
|
||
|
$validtill = $date->format('Y-m-d H:i:s');
|
||
|
$extraop = 1;
|
||
|
} else {
|
||
|
$validtill = $jakosub['paidtill'];
|
||
|
$extraop = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$tw_roles = '';
|
||
|
if (($addmuser) && isset($jkp['jak_roles']) && !empty($jkp['jak_roles'])) $tw_roles = join(',', $jkp['jak_roles']);
|
||
|
|
||
|
$jakdb->insert($jaktable, ["opid" => $opcacheid,
|
||
|
"chat_dep" => $depa,
|
||
|
"support_dep" => $depas,
|
||
|
"password" => hash_hmac('sha256', $jkp['jak_password'], DB_PASS_HASH),
|
||
|
"username" => trim($jkp['jak_username']),
|
||
|
"name" => trim($jkp['jak_name']),
|
||
|
"email" => filter_var($jkp['jak_email'], FILTER_SANITIZE_EMAIL),
|
||
|
"responses" => $jkp['jak_responses'],
|
||
|
"files" => $jkp['jak_files'],
|
||
|
"operatorchat" => $jkp['jak_chat'],
|
||
|
"operatorchatpublic" => $jkp['jak_chatpublic'],
|
||
|
"operatorlist" => $jkp['jak_chatlist'],
|
||
|
"transferc" => $jkp['jak_transfer'],
|
||
|
"chat_latency" => $jkp['jak_latency'],
|
||
|
"useronlinelist" => $jkp['jak_uolist'],
|
||
|
"sound" => $jkp['jak_sound'],
|
||
|
"ringing" => $jkp['jak_ringing'],
|
||
|
"language" => $jkp['jak_lang'],
|
||
|
"invitationmsg" => $jkp['jak_inv'],
|
||
|
"navsidebar" => $jkp['jak_navside'],
|
||
|
"permissions" => $tw_roles,
|
||
|
"validtill" => $validtill,
|
||
|
"extraop" => $extraop,
|
||
|
"access" => $jkp['jak_access'],
|
||
|
"time" => $jakdb->raw("NOW()")]);
|
||
|
|
||
|
$lastid = $jakdb->id();
|
||
|
|
||
|
if (!$lastid) {
|
||
|
$_SESSION["errormsg"] = $jkl['i4'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
} else {
|
||
|
$newuserpath = APP_PATH.JAK_FILES_DIRECTORY.'/'.$lastid;
|
||
|
|
||
|
if (!is_dir($newuserpath)) {
|
||
|
mkdir($newuserpath, 0755);
|
||
|
copy(APP_PATH.JAK_FILES_DIRECTORY."/index.html", $newuserpath."/index.html");
|
||
|
}
|
||
|
|
||
|
// Write the log file each time someone login after to show success
|
||
|
JAK_base::jakWhatslog('', $opcacheid, JAK_USERID, 0, 13, $lastid, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), trim($jkp['jak_username']), $_SERVER['REQUEST_URI'], $ipa, $valid_agent);
|
||
|
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'edit', $lastid, $opcacheid));
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$errors['e'] = $jkl['e'];
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Call the settings function
|
||
|
$lang_files = jak_get_lang_files();
|
||
|
|
||
|
// Title and Description
|
||
|
$SECTION_TITLE = $jkl["m7"];
|
||
|
$SECTION_DESC = "";
|
||
|
|
||
|
// Include the javascript file for results
|
||
|
$js_file_footer = 'js_edituser.php';
|
||
|
|
||
|
// Call the template
|
||
|
$template = 'newuser.php';
|
||
|
|
||
|
break;
|
||
|
case 'stats':
|
||
|
|
||
|
// Let's go on with the script
|
||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['email_feedback'])) {
|
||
|
$jkp = $_POST;
|
||
|
|
||
|
// Errors in Array
|
||
|
$errors = array();
|
||
|
|
||
|
if ($jkp['email'] == '' || !filter_var($jkp['email'], FILTER_VALIDATE_EMAIL)) {
|
||
|
$errors['email'] = $jkl['e3'];
|
||
|
}
|
||
|
|
||
|
if (count($errors) > 0) {
|
||
|
|
||
|
/* Outputtng the error messages */
|
||
|
if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
|
||
|
|
||
|
header('Cache-Control: no-cache');
|
||
|
die('{"status":0, "errors":'.json_encode($errors).'}');
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$result = $jakdb->select($jaktable1, "*", ["userid" => $page2, "ORDER" => ["id" => "ASC"]]);
|
||
|
|
||
|
$total_vote = $jakdb->sum($jaktable1, "vote", ["userid" => $page2]);
|
||
|
$total_support = $jakdb->sum($jaktable1, "support_time", ["userid" => $page2]);
|
||
|
|
||
|
$subject = $jkl["g81"].' '.$page3;
|
||
|
|
||
|
$mailchat = '<div style="margin:10px 0px 0px 0px;padding:10px;border:1px solid #A8B9CB;font-family: Verdana, sans-serif;font-size: 13px;
|
||
|
font-weight: 500;letter-spacing: normal;line-height: 1.5em;"><h2>'.$subject.'</h2><ul style="list-style:none;">';
|
||
|
|
||
|
// Reset var
|
||
|
$count = 0;
|
||
|
if (isset($result) && !empty($result) && is_array($result)) foreach ($result as $row) {
|
||
|
// collect each record into $_data
|
||
|
$mailchat .= '<li style="border-bottom:1px solid #333"><span style="font-size:11px">'.$row['time'].' - '.$jkl['g86'].':</span><br /><span style="color:#c92e2e">'.$jkl['g85'].': </span>'.$row['vote'].'/5<br />'.$jkl['g54'].': '.$row['name'].'<br />'.$jkl['stat_s12'].': '.$row['comment'].'<br />'.$jkl['l5'].': '.$row['email'].'<br />'.$jkl['g87'].': '.gmdate('H:i:s', $row['support_time']).'</li>';
|
||
|
|
||
|
$count++;
|
||
|
}
|
||
|
|
||
|
$mailchat .= '</ul>';
|
||
|
|
||
|
$mailchat .= '<h2>'.$jkl["g89"].'</h2>
|
||
|
<p><strong>'.$jkl["g90"].':</strong> '.gmdate('H:i:s', $total_support).'<br /><strong>'.$jkl["g91"].':</strong> '.round(($total_vote / $count), 2).'/5</p></div>';
|
||
|
|
||
|
// Ok, we send the email // email address, cc email address, reply to, subject, message, attachment
|
||
|
if (jak_send_email($jkp['email'], "", "", $subject, $mailchat, "")) {
|
||
|
|
||
|
// Ajax Request
|
||
|
if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
|
||
|
|
||
|
header('Cache-Control: no-cache');
|
||
|
die(json_encode(array('status' => 1, 'html' => $jkl["g14"])));
|
||
|
|
||
|
} else {
|
||
|
|
||
|
jak_redirect($_SERVER['HTTP_REFERER']);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Check if the user exists
|
||
|
if (is_numeric($page2) && ($page2 == JAK_USERID || $page4 == $opcacheid)) {
|
||
|
|
||
|
// Reset some vars
|
||
|
$USER_FEEDBACK = array();
|
||
|
$ufcount = 0;
|
||
|
$USER_VOTES = $USER_SUPPORT = $USER_SUPPORT_TICKET_N = $USER_SUPPORT_TICKET = $USER_SUPPORT_TICKETS = 0;
|
||
|
|
||
|
// Get all chat feedbacks
|
||
|
$USER_FEEDBACK = $jakdb->select($jaktable1, "*", ["userid" => $page2, "ORDER" => ["id" => "DESC"]]);
|
||
|
// Let's check which one have vote 0 and exlcude them
|
||
|
if (isset($USER_FEEDBACK) && !empty($USER_FEEDBACK)) foreach ($USER_FEEDBACK as $uf) {
|
||
|
# code...
|
||
|
if ($uf["vote"] != 0) {
|
||
|
$ufcount++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Calculate the votes and support time for the chat
|
||
|
$USER_VOTES = $jakdb->sum($jaktable1, "vote", ["AND" => ["userid" => $page2, "vote[!]" => "0"]]);
|
||
|
$USER_SUPPORT = $jakdb->sum($jaktable1, "support_time", ["userid" => $page2]);
|
||
|
|
||
|
// Calculate the response time for the tickets (average)
|
||
|
$USER_SUPPORT_TICKET_N = $jakdb->count("support_tickets_response", ["AND" => ["opid" => $opcacheid, "operatorid" => $page2, "newticket" => 1]]);
|
||
|
$USER_SUPPORT_TIME_N = $jakdb->sum("support_tickets_response", "responsetime", ["AND" => ["opid" => $opcacheid, "operatorid" => $page2, "newticket" => 1]]);
|
||
|
|
||
|
$USER_SUPPORT_TICKET = $jakdb->count("support_tickets_response", ["AND" => ["opid" => $opcacheid, "operatorid" => $page2]]);
|
||
|
$USER_SUPPORT_TIME = $jakdb->sum("support_tickets_response", "responsetime", ["AND" => ["opid" => $opcacheid, "operatorid" => $page2]]);
|
||
|
|
||
|
// Average time spent on a ticket
|
||
|
$USER_SUPPORT_TICKETS = $jakdb->count("support_tickets", ["AND" => ["opid" => $opcacheid, "operatorid" => $page2, "ended[!]" => 0]]);
|
||
|
$USER_TICKETS_INI = $jakdb->sum("support_tickets", "initiated", ["AND" => ["opid" => $opcacheid, "operatorid" => $page2, "ended[!]" => 0]]);
|
||
|
$USER_TICKETS_ENDED = $jakdb->sum("support_tickets", "ended", ["AND" => ["opid" => $opcacheid, "operatorid" => $page2], "ended[!]" => 0]);
|
||
|
|
||
|
}
|
||
|
|
||
|
// Call the template
|
||
|
$template = 'userstats.php';
|
||
|
|
||
|
break;
|
||
|
case 'edit':
|
||
|
|
||
|
// No special access and not your userid, what you up to?
|
||
|
if (!jak_get_access("usrmanage", $jakuser->getVar("permissions"), JAK_MAIN_OP) && ($page2 != JAK_USERID || $page3 != $opcacheid)) jak_redirect(BASE_URL);
|
||
|
|
||
|
// Check if the user exists
|
||
|
if (is_numeric($page2) && ($page2 == JAK_USERID || $page3 == $opcacheid)) {
|
||
|
|
||
|
// Get all departments
|
||
|
$JAK_DEPARTMENTS = $jakdb->select($jaktable2, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
$JAK_DEP_SUPPORT = $jakdb->select($jaktable4, ["id", "title"], ["opid" => $opcacheid, "ORDER" => ["dorder" => "ASC"]]);
|
||
|
|
||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||
|
$jkp = $_POST;
|
||
|
|
||
|
if (empty($jkp['jak_name'])) {
|
||
|
$errors['e1'] = $jkl['e7'];
|
||
|
}
|
||
|
|
||
|
if ($jkp['jak_email'] == '' || !filter_var($jkp['jak_email'], FILTER_VALIDATE_EMAIL)) {
|
||
|
$errors['e2'] = $jkl['e3'];
|
||
|
}
|
||
|
|
||
|
if (jak_field_not_exist_id($jkp['jak_email'], $page2, $jaktable, "email")) {
|
||
|
$errors['e2'] = $jkl['e18'];
|
||
|
}
|
||
|
|
||
|
if (!preg_match('/^([a-zA-Z0-9\-_])+$/', $jkp['jak_username'])) {
|
||
|
$errors['e3'] = $jkl['e8'];
|
||
|
}
|
||
|
|
||
|
if (jak_field_not_exist_id($jkp['jak_username'], $page2, $jaktable, "username")) {
|
||
|
$errors['e4'] = $jkl['e9'];
|
||
|
}
|
||
|
|
||
|
if (!empty($jkp['jak_password']) || !empty($jkp['jak_confirm_password'])) {
|
||
|
if ($jkp['jak_password'] != $jkp['jak_confirm_password']) {
|
||
|
$errors['e5'] = $jkl['e10'];
|
||
|
} elseif (strlen($jkp['jak_password']) <= '7') {
|
||
|
$errors['e6'] = $jkl['e11'];
|
||
|
} else {
|
||
|
$updatepass = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Delete Avatar if yes
|
||
|
if (!empty($jkp['jak_delete_avatar'])) {
|
||
|
$avatarpi = APP_PATH.JAK_FILES_DIRECTORY.'/index.html';
|
||
|
$avatarpid = str_replace("//","/",$avatarpi);
|
||
|
$targetPath = APP_PATH.JAK_FILES_DIRECTORY.'/'.$page2.'/';
|
||
|
$removedouble = str_replace("//","/",$targetPath);
|
||
|
foreach(glob($removedouble.'*.*') as $jak_unlink){
|
||
|
unlink($jak_unlink);
|
||
|
copy($avatarpid, $targetPath . "/index.html");
|
||
|
}
|
||
|
|
||
|
$jakdb->update($jaktable, ["picture" => "/standard.jpg"], ["id" => $page2]);
|
||
|
|
||
|
}
|
||
|
|
||
|
if (!empty($_FILES['uploadpp']['name'])) {
|
||
|
|
||
|
if ($_FILES['uploadpp']['name'] != '') {
|
||
|
|
||
|
$filename = $_FILES['uploadpp']['name']; // original filename
|
||
|
// Fix explode when upload in 3.3
|
||
|
$ls_xtension = pathinfo($filename);
|
||
|
|
||
|
if ($ls_xtension['extension'] == "jpg" || $ls_xtension['extension'] == "jpeg" || $ls_xtension['extension'] == "png" || $ls_xtension['extension'] == "gif") {
|
||
|
|
||
|
// Get the maximum upload or set to 2
|
||
|
$postmax = (ini_get('post_max_size') ? filter_var(ini_get('post_max_size'), FILTER_SANITIZE_NUMBER_INT) : "2");
|
||
|
|
||
|
if ($_FILES['uploadpp']['size'] <= ($postmax * 1000000)) {
|
||
|
|
||
|
list($width, $height, $type, $attr) = getimagesize($_FILES['uploadpp']['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.'/'.$page2.'/';
|
||
|
$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['uploadpp']['tmp_name'];
|
||
|
$origName = substr($_FILES['uploadpp']['name'], 0, -4);
|
||
|
$name_space = strtolower($_FILES['uploadpp']['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 = '/'.$page2.'/';
|
||
|
$dbSmall = $origPath.$smallPhoto;
|
||
|
|
||
|
require_once '../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($jaktable, ["picture" => $dbSmall], ["id" => $page2]);
|
||
|
|
||
|
} else {
|
||
|
$errors['e7'] = $jkl['e24'].'<br>';
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
$errors['e7'] = $jkl['e46'].'<br>';
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
$errors['e7'] = $jkl['e24'].'<br>';
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
$errors['e7'] = $jkl['e24'].'<br>';
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if (count($errors) == 0) {
|
||
|
|
||
|
if (!isset($jkp['jak_access'])) $jkp['jak_access'] = '1';
|
||
|
|
||
|
// We cant deny access for superadmin
|
||
|
$useridarray = explode(',', JAK_SUPERADMIN);
|
||
|
|
||
|
if (!in_array($page2, $useridarray)) {
|
||
|
|
||
|
$result = $jakdb->update($jaktable, ["access" => $jkp['jak_access']], ["id" => $page2]);
|
||
|
}
|
||
|
|
||
|
// Chat departments
|
||
|
if (!isset($jkp['jak_depid'])) {
|
||
|
$depa = 0;
|
||
|
} else {
|
||
|
$depa = join(',', $jkp['jak_depid']);
|
||
|
}
|
||
|
|
||
|
// Support Departments
|
||
|
if (!isset($jkp['jak_depids'])) {
|
||
|
$depas = 0;
|
||
|
} else {
|
||
|
$depas = join(',', $jkp['jak_depids']);
|
||
|
}
|
||
|
|
||
|
$bhours = '';
|
||
|
$bhours = trim($_REQUEST["bhours"]);
|
||
|
|
||
|
// Reset the hours if they not set.
|
||
|
if ($bhours == '[{"isActive":false,"timeFrom":null,"timeTill":null,"timeFroma":null,"timeTilla":null},{"isActive":false,"timeFrom":null,"timeTill":null,"timeFroma":null,"timeTilla":null},{"isActive":false,"timeFrom":null,"timeTill":null,"timeFroma":null,"timeTilla":null},{"isActive":false,"timeFrom":null,"timeTill":null,"timeFroma":null,"timeTilla":null},{"isActive":false,"timeFrom":null,"timeTill":null,"timeFroma":null,"timeTilla":null},{"isActive":false,"timeFrom":null,"timeTill":null,"timeFroma":null,"timeTilla":null},{"isActive":false,"timeFrom":null,"timeTill":null,"timeFroma":null,"timeTilla":null}]') $bhours = '';
|
||
|
|
||
|
// No sibling update
|
||
|
$siblingupd = false;
|
||
|
|
||
|
$smsphone = '';
|
||
|
if (isset($jkp['jak_phone'])) $smsphone = $jkp['jak_phone'];
|
||
|
|
||
|
$whatsphone = '';
|
||
|
if (isset($jkp['jak_whatsphone'])) $whatsphone = $jkp['jak_whatsphone'];
|
||
|
|
||
|
if (jak_get_access("usrmanage", $jakuser->getVar("permissions"), JAK_MAIN_OP)) {
|
||
|
|
||
|
$result = $jakdb->update($jaktable, ["chat_dep" => $depa,
|
||
|
"support_dep" => $depas,
|
||
|
"username" => trim($jkp['jak_username']),
|
||
|
"name" => trim($jkp['jak_name']),
|
||
|
"aboutme" => trim($jkp['jak_aboutme']),
|
||
|
"phonenumber" => $smsphone,
|
||
|
"whatsappnumber" => $whatsphone,
|
||
|
"pusho_tok" => $jkp['jak_pushot'],
|
||
|
"pusho_key" => $jkp['jak_pushok'],
|
||
|
"responses" => $jkp['jak_responses'],
|
||
|
"files" => $jkp['jak_files'],
|
||
|
"operatorchat" => $jkp['jak_chat'],
|
||
|
"operatorchatpublic" => $jkp['jak_chatpublic'],
|
||
|
"operatorlist" => $jkp['jak_chatlist'],
|
||
|
"transferc" => $jkp['jak_transfer'],
|
||
|
"chat_latency" => $jkp['jak_latency'],
|
||
|
"useronlinelist" => $jkp['jak_uolist'],
|
||
|
"sound" => $jkp['jak_sound'],
|
||
|
"ringing" => $jkp['jak_ringing'],
|
||
|
"alwaysnot" => $jkp['jak_alwaysnot'],
|
||
|
"alwaysonline" => $jkp['jak_alwaysonline'],
|
||
|
"emailnot" => $jkp['jak_emailnot'],
|
||
|
"language" => $jkp['jak_lang'],
|
||
|
"invitationmsg" => $jkp['jak_inv'],
|
||
|
"hours_array" => $bhours,
|
||
|
"navsidebar" => $jkp['jak_navside'],
|
||
|
"themecolour" => $jkp['jak_themecolour'],
|
||
|
"menubg" => $jkp['jak_menubg'],
|
||
|
"email" => filter_var($jkp['jak_email'], FILTER_SANITIZE_EMAIL)], ["id" => $page2]);
|
||
|
|
||
|
} else {
|
||
|
|
||
|
$result = $jakdb->update($jaktable, ["username" => trim($jkp['jak_username']),
|
||
|
"name" => trim($jkp['jak_name']),
|
||
|
"aboutme" => trim($jkp['jak_aboutme']),
|
||
|
"phonenumber" => $smsphone,
|
||
|
"whatsappnumber" => $whatsphone,
|
||
|
"pusho_tok" => $jkp['jak_pushot'],
|
||
|
"pusho_key" => $jkp['jak_pushok'],
|
||
|
"chat_latency" => $jkp['jak_latency'],
|
||
|
"useronlinelist" => $jkp['jak_uolist'],
|
||
|
"sound" => $jkp['jak_sound'],
|
||
|
"ringing" => $jkp['jak_ringing'],
|
||
|
"alwaysnot" => $jkp['jak_alwaysnot'],
|
||
|
"alwaysonline" => $jkp['jak_alwaysonline'],
|
||
|
"emailnot" => $jkp['jak_emailnot'],
|
||
|
"language" => $jkp['jak_lang'],
|
||
|
"invitationmsg" => $jkp['jak_inv'],
|
||
|
"hours_array" => $bhours,
|
||
|
"navsidebar" => $jkp['jak_navside'],
|
||
|
"themecolour" => $jkp['jak_themecolour'],
|
||
|
"menubg" => $jkp['jak_menubg'],
|
||
|
"email" => filter_var($jkp['jak_email'], FILTER_SANITIZE_EMAIL)], ["id" => $page2]);
|
||
|
|
||
|
}
|
||
|
|
||
|
// Table to update usually the one belongs to the operator // Sibling update
|
||
|
if (isset($page3) && !empty($page3) && is_numeric($page3) && $jakdb->has($jaktable, ["AND" => ["id" => $page2, "opid" => $opcacheid]])) $siblingupd = true;
|
||
|
|
||
|
// Finally we update the password
|
||
|
if ($updatepass) $jakdb->update($jaktable, ["password" => hash_hmac('sha256', $jkp['jak_password'], DB_PASS_HASH)], ["id" => $page2]);
|
||
|
|
||
|
// Finally update the user permission
|
||
|
if (jak_get_access("usrmanage", $jakuser->getVar("permissions"), JAK_MAIN_OP)) {
|
||
|
|
||
|
if (!isset($jkp['jak_roles'])) {
|
||
|
$tw_roles = '';
|
||
|
} else {
|
||
|
$tw_roles = join(',', $jkp['jak_roles']);
|
||
|
}
|
||
|
|
||
|
$jakdb->update($jaktable, ["permissions" => $tw_roles], ["id" => $page2]);
|
||
|
|
||
|
}
|
||
|
|
||
|
if (!$result) {
|
||
|
$_SESSION["infomsg"] = $jkl['i'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
} else {
|
||
|
// We have a username change reset the sessions or we get logged out
|
||
|
if ($jkp['jak_username'] != $jkp['jak_username_old']) {
|
||
|
|
||
|
// Set the session
|
||
|
$_SESSION['jak_username'] = $jkp['jak_username'];
|
||
|
|
||
|
// Check if cookies are set previous (wrongly) and delete
|
||
|
if (isset($_COOKIE['jak_lcp_cookname'])) {
|
||
|
JAK_base::jakCookie('jak_lcp_cookname', $jkp['jak_username'], JAK_COOKIE_TIME, JAK_COOKIE_PATH);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!$siblingupd) {
|
||
|
|
||
|
// Now if we have multi site please update the main database.
|
||
|
if (!empty(JAKDB_MAIN_NAME) && JAK_MAIN_LOC) {
|
||
|
|
||
|
// Database connection to the main site
|
||
|
$jakdb1 = new JAKsql([
|
||
|
// required
|
||
|
'database_type' => JAKDB_MAIN_DBTYPE,
|
||
|
'database_name' => JAKDB_MAIN_NAME,
|
||
|
'server' => JAKDB_MAIN_HOST,
|
||
|
'username' => JAKDB_MAIN_USER,
|
||
|
'password' => JAKDB_MAIN_PASS,
|
||
|
'charset' => 'utf8',
|
||
|
'port' => JAKDB_MAIN_PORT,
|
||
|
'prefix' => JAKDB_MAIN_PREFIX,
|
||
|
|
||
|
// [optional] driver_option for connection, read more from http://www.php.net/manual/en/pdo.setattribute.php
|
||
|
'option' => [PDO::ATTR_CASE => PDO::CASE_NATURAL]
|
||
|
]);
|
||
|
|
||
|
$jakdb1->update("users", [
|
||
|
"email" => filter_var($jkp['jak_email'], FILTER_SANITIZE_EMAIL),
|
||
|
"username" => trim($jkp['jak_username']),
|
||
|
"lastedit" => $jakdb->raw("NOW()")], ["AND" => ["locationid" => JAK_MAIN_LOC, "opid" => $opcacheid]]);
|
||
|
|
||
|
if ($updatepass) $jakdb1->update("users", ["password" => hash_hmac('sha256', $jkp['jak_password'], DB_PASS_HASH)], ["AND" => ["locationid" => JAK_MAIN_LOC, "opid" => $opcacheid]]);
|
||
|
}
|
||
|
} // end siblings update
|
||
|
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
}
|
||
|
|
||
|
// Output the errors
|
||
|
} else {
|
||
|
|
||
|
$errors['e'] = $jkl['e'];
|
||
|
$errors = $errors;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Call the settings function
|
||
|
$lang_files = jak_get_lang_files();
|
||
|
|
||
|
$JAK_FORM_DATA = $jakdb->get($jaktable, "*", ["AND" => ["id" => $page2]]);
|
||
|
|
||
|
// Title and Description
|
||
|
$SECTION_TITLE = $jkl["m11"];
|
||
|
$SECTION_DESC = "";
|
||
|
|
||
|
// Include the javascript file for results
|
||
|
$js_file_footer = 'js_edituser.php';
|
||
|
|
||
|
$template = 'edituser.php';
|
||
|
|
||
|
} else {
|
||
|
$_SESSION["errormsg"] = $jkl['i3'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users'));
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
|
||
|
case 'resethours':
|
||
|
// Check if the user exists
|
||
|
if (is_numeric($page2) && ($page2 == JAK_USERID || $page3 == $opcacheid)) {
|
||
|
|
||
|
$result = $jakdb->update($jaktable, ["hours_array" => ""], ["id" => $page2]);
|
||
|
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users', 'edit', $page2, $page3));
|
||
|
|
||
|
} else {
|
||
|
$_SESSION["errormsg"] = $jkl['i2'];
|
||
|
jak_redirect(JAK_rewrite::jakParseurl('users'));
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
|
||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||
|
|
||
|
if (isset($_POST['jak_delock_all'])) {
|
||
|
$jkp = $_POST;
|
||
|
|
||
|
if (isset($jkp['action']) && $jkp['action'] == "lock") {
|
||
|
|
||
|
$lockuser = $jkp['jak_delock_all'];
|
||
|
$useridarray = explode(',', JAK_SUPERADMIN);
|
||
|
|
||
|
for ($i = 0; $i < count($lockuser); $i++) {
|
||
|
$locked = $lockuser[$i];
|
||
|
// Get the userid / access token
|
||
|
$uidacc = explode(":#:", $locked);
|
||
|
if (!in_array($uidacc[0], $useridarray)) {
|
||
|
if ($uidacc[1] == 1) {
|
||
|
$query = $jakdb->update($jaktable, ["access" => 0], ["id" => $uidacc[0]]);
|
||
|
} else {
|
||
|
$query = $jakdb->update($jaktable, ["access" => 1], ["id" => $uidacc[0]]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($query) {
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
}
|
||
|
|
||
|
$_SESSION["infomsg"] = $jkl['i1'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
|
||
|
}
|
||
|
|
||
|
if (isset($jkp['delete']) && $jkp['action'] == "delete") {
|
||
|
|
||
|
$lockuser = $jkp['jak_delock_all'];
|
||
|
$useridarray = explode(',', JAK_SUPERADMIN);
|
||
|
|
||
|
for ($i = 0; $i < count($lockuser); $i++) {
|
||
|
$locked = $lockuser[$i];
|
||
|
// Get the userid / access token
|
||
|
$uidacc = explode(":#:", $locked);
|
||
|
if (!in_array($uidacc[0], $useridarray)) {
|
||
|
$query = $jakdb->delete($jaktable, ["id" => $uidacc[0]]);
|
||
|
|
||
|
// Delete Avatar and folder
|
||
|
$targetPath = APP_PATH.JAK_FILES_DIRECTORY.'/'.$uidacc[0].'/';
|
||
|
$removedouble = str_replace("//","/",$targetPath);
|
||
|
foreach(glob($removedouble.'*.*') as $jak_unlink) {
|
||
|
|
||
|
// Delete the files
|
||
|
@unlink($jak_unlink);
|
||
|
|
||
|
}
|
||
|
|
||
|
@rmdir($targetPath);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($query) {
|
||
|
$_SESSION["successmsg"] = $jkl['g14'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
}
|
||
|
|
||
|
$_SESSION["infomsg"] = $jkl['i1'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
$_SESSION["infomsg"] = $jkl['i'];
|
||
|
jak_redirect($_SESSION['LCRedirect']);
|
||
|
|
||
|
}
|
||
|
|
||
|
if (jak_get_access("usrmanage", $jakuser->getVar("permissions"), JAK_MAIN_OP)) {
|
||
|
$JAK_USER_ALL = jak_get_user_all($jaktable, $opcacheid, "meandsibling");
|
||
|
|
||
|
// Let's check if we can add more users
|
||
|
$totalAll = count($JAK_USER_ALL);
|
||
|
if ($totalavops > $totalAll) $addmuser = true;
|
||
|
|
||
|
} else {
|
||
|
$JAK_USER_ALL = jak_get_user_all($jaktable, JAK_USERID, false);
|
||
|
}
|
||
|
|
||
|
// Title and Description
|
||
|
$SECTION_TITLE = $jkl["hd5"];
|
||
|
$SECTION_DESC = "";
|
||
|
|
||
|
// Include the javascript file for results
|
||
|
$js_file_footer = 'js_user.php';
|
||
|
|
||
|
// Call the template
|
||
|
$template = 'user.php';
|
||
|
}
|
||
|
?>
|