getVar("permissions"), JAK_MAIN_OP)) jak_redirect(BASE_URL); // All the tables we need for this plugin $errors = array(); $jaktable = 'groupchat'; $jaktable1 = 'groupchatmsg'; $jaktable2 = 'groupchatuser'; $jaktable3 = 'user'; // We reset some vars $newwidg = true; $totalChange = 0; $lastChange = ''; // Now start with the plugin use a switch to access all pages switch ($page1) { case 'lock': // Check if widget exists and can be locked if (is_numeric($page2) && jak_row_exist($page2, $opcacheid, $jaktable)) { // Check what we have to do $datausrac = $jakdb->get($jaktable, "active", ["AND" => ["id" => $page2, "opid" => $opcacheid]]); // update the table if ($datausrac) { // we turn off the public chat means we save the log into the database and remove the file. // The chat file $groupchatfile = APP_PATH.JAK_CACHE_DIRECTORY.'/groupchat'.$page2.'.txt'; // Get the file if (file_exists($groupchatfile)) $chatfile = file_get_contents($groupchatfile); // we have a chatfile if (isset($chatfile) && !empty($chatfile)) { // Insert into the database $jakdb->insert($jaktable1, ["groupchatid" => $page2, "opid" => $opcacheid, "chathistory" => $chatfile, "operatorid" => JAK_USERID, "created" => $jakdb->raw("NOW()")]); // Finally remove the file and start fresh unlink($groupchatfile); } $result = $jakdb->update($jaktable, ["active" => 0], ["AND" => ["id" => $page2, "opid" => $opcacheid]]); } else { $result = $jakdb->update($jaktable, ["active" => 1], ["AND" => ["id" => $page2, "opid" => $opcacheid]]); } if (!$result) { $_SESSION["infomsg"] = $jkl['i']; jak_redirect(JAK_rewrite::jakParseurl('groupchat')); } else { // Now let us delete the group chat cache file $cachewidget = APP_PATH.JAK_CACHE_DIRECTORY.'/opcache'.$opcacheid.'.php'; if (file_exists($cachewidget)) { unlink($cachewidget); } $_SESSION["successmsg"] = $jkl['g14']; jak_redirect($_SESSION['LCRedirect']); } } else { $_SESSION["errormsg"] = $jkl['i3']; jak_redirect(JAK_rewrite::jakParseurl('groupchat')); } break; case 'delete': // We want to delete a chat log if (is_numeric($page2) && $page3 == "chatlog" && jak_row_exist($page2, $opcacheid, $jaktable)) { $result = $jakdb->delete($jaktable1, ["AND" => ["id" => $page2, "opid" => $opcacheid]]); if (!$result) { $_SESSION["infomsg"] = $jkl['i']; jak_redirect(JAK_rewrite::jakParseurl('groupchat')); } else { // Write the log file each time someone tries to login before JAK_base::jakWhatslog('', $opcacheid, JAK_USERID, 0, 60, $page2, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $jakuser->getVar("username"), $_SERVER['REQUEST_URI'], $ipa, $valid_agent); $_SESSION["successmsg"] = $jkl['g14']; jak_redirect($_SESSION['LCRedirect']); } // We want to delete a chat } elseif (is_numeric($page2) && $page2 != 1) { $count = $jakdb->count($jaktable, ["AND" => ["opid" => $opcacheid]]); // Now check how many departments we have and do the dirty work if ($count > 1) { // Delete the chat $result = $jakdb->delete($jaktable, ["AND" => ["id" => $page2, "opid" => $opcacheid]]); // Delete all the chat logs $jakdb->delete($jaktable1, ["AND" => ["groupchatid" => $page2, "opid" => $opcacheid]]); } if (!$result) { $_SESSION["infomsg"] = $jkl['i']; jak_redirect($_SESSION['LCRedirect']); } else { // Now let us delete the group chat cache file $cachewidget = APP_PATH.JAK_CACHE_DIRECTORY.'/opcache'.$opcacheid.'.php'; if (file_exists($cachewidget)) { unlink($cachewidget); } // Write the log file each time someone tries to login before JAK_base::jakWhatslog('', $opcacheid, JAK_USERID, 0, 57, $page2, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $jakuser->getVar("username"), $_SERVER['REQUEST_URI'], $ipa, $valid_agent); $_SESSION["successmsg"] = $jkl['g14']; jak_redirect($_SESSION['LCRedirect']); } } else { $_SESSION["errormsg"] = $jkl['i3']; jak_redirect(JAK_rewrite::jakParseurl('groupchat')); } break; case 'edit': // Check if the user has access to this file if (!jak_get_access("widget", $jakuser->getVar("permissions"), JAK_MAIN_OP)) jak_redirect(JAK_rewrite::jakParseurl('groupchat')); // Check if the user exists if (is_numeric($page2) && jak_row_exist($page2, $opcacheid, $jaktable)) { if ($_SERVER['REQUEST_METHOD'] == 'POST') { $jkp = $_POST; if (empty($jkp['title'])) { $errors['e'] = $jkl['e2']; } if (count($errors) == 0) { if (!isset($jkp['jak_opid']) OR in_array("0", $jkp['jak_opid'])) { $opids = 0; } else { $opids = join(',', $jkp['jak_opid']); } if (!isset($jkp['jak_float'])) $jkp['jak_float'] = 0; $gcpass = ""; if (isset($jkp['jak_password'])) $gcpass = $jkp['jak_password']; $result = $jakdb->update($jaktable, ["password" => $gcpass, "title" => $jkp['title'], "description" => $jkp['description'], "opids" => $opids, "maxclients" => $jkp['jak_maxclients'], "lang" => $jkp['jak_lang'], "buttonimg" => $jkp['jak_buttonimg'], "floatpopup" => $jkp['jak_float'], "floatcss" => $jkp['jak_floatcss']], ["AND" => ["id" => $page2, "opid" => $opcacheid]]); if (!$result) { $_SESSION["infomsg"] = $jkl['i']; jak_redirect($_SESSION['LCRedirect']); } else { $cachewidget = APP_PATH.JAK_CACHE_DIRECTORY.'/opcache'.$opcacheid.'.php'; if (file_exists($cachewidget)) { unlink($cachewidget); } // Write the log file each time someone tries to login before JAK_base::jakWhatslog('', $opcacheid, JAK_USERID, 0, 58, $page2, (isset($_COOKIE['WIOgeoData']) ? $_COOKIE['WIOgeoData'] : ''), $jakuser->getVar("username"), $_SERVER['REQUEST_URI'], $ipa, $valid_agent); $_SESSION["successmsg"] = $jkl['g14']; jak_redirect($_SESSION['LCRedirect']); } // Output the errors } else { $errors = $errors; } } // Title and Description $SECTION_TITLE = $jkl["m30"]; $SECTION_DESC = ""; // Get all operators $JAK_OPERATORS = $jakdb->select($jaktable3, ["id", "username"], ["ORDER" => ["username" => "ASC"]]); // Call the settings function $lang_files = jak_get_lang_files(); // Get all buttons $BUTTONS_ALL = jak_get_files('../'.JAK_FILES_DIRECTORY.'/buttons'); // Get the data $JAK_FORM_DATA = jak_get_data($page2, $opcacheid, $jaktable); // Get the 10 latest chat histories $JAK_GCHISTORY = $jakdb->select($jaktable1, ["id", "created"], ["AND" => ["groupchatid" => $page2, "opid" => $opcacheid], "ORDER" => ["created" => "DESC"], "LIMIT" => 10]); // Include the javascript file for results $js_file_footer = 'js_editwidget.php'; $template = 'editgroupchat.php'; } else { $_SESSION["errormsg"] = $jkl['i2']; jak_redirect(JAK_rewrite::jakParseurl('groupchat')); } break; case 'view': // Check if the user exists if (is_numeric($page2) && jak_row_exist($page2, $opcacheid, $jaktable1)) { $datagc = $jakdb->get($jaktable1, ["groupchatid", "chathistory", "created"], ["AND" => ["id" => $page2, "opid" => $opcacheid]]); // Each line $chatfile = explode(":!n:", $datagc["chathistory"]); $chatmsg = ""; // include the PHP library (if not autoloaded) require('../class/class.emoji.php'); // Get the absolute url for the image $ava_url = str_replace('operator/', '', BASE_URL); if (isset($chatfile) && is_array($chatfile)) foreach ($chatfile as $v) { $chatline = jak_string_encrypt_decrypt($v, false); // We will go trough each file $chatline = explode(":#!#:", $chatline); // Message format: time:#!#:userid:#!#:name:#!#:avatar:#!#:message:#!#:quote; // We want everything except mod if ($chatline[0] && $chatline[2] != "*mod*") { // Convert urls $messagedisp = nl2br(replace_urls($chatline[4])); // Convert emotji $messagedisp = Emojione\Emojione::toImage($messagedisp); // We have a quoted message $quoted = ""; if (isset($chatline[5]) && !empty($chatline[5])) { // Convert urls $quotemsg = nl2br(replace_urls($chatline[5])); // Convert emotji $quotemsg = Emojione\Emojione::toImage($quotemsg); $quoted = '
'.$quotemsg.''; } $chatmsg .= '
'.$quoted.stripcslashes($messagedisp).'