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 = '

'.$subject.'

'; $mailchat .= '

'.$jkl["g89"].'

'.$jkl["g90"].': '.gmdate('H:i:s', $total_support).'
'.$jkl["g91"].': '.round(($total_vote / $count), 2).'/5

'; // 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'].'
'; $errors = $errors; } } else { $errors['e7'] = $jkl['e46'].'
'; $errors = $errors; } } else { $errors['e7'] = $jkl['e24'].'
'; $errors = $errors; } } else { $errors['e7'] = $jkl['e24'].'
'; $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'; } ?>