function StoreFile($_visitor, $_browserId, $_partner, $_fullname, $_chatId) { $filename = IOStruct::GetNamebase($_FILES['form_userfile']['name']); Logging::GeneralLog($filename); if (!IOStruct::IsValidUploadFile($filename)) { return false; } if (empty($_fullname)) { $_fullname = Visitor::GetNoName($_visitor->UserId . Communication::GetIP()); } $fileid = md5($filename . $_visitor->UserId . $_browserId); $fileurid = EX_FILE_UPLOAD_REQUEST . "_" . $fileid; $filemask = $_visitor->UserId . "_" . $fileid; $request = new FileUploadRequest($fileurid, $_partner, $_chatId); $request->Load(); if ($request->Permission == PERMISSION_FULL) { if (move_uploaded_file($_FILES["form_userfile"]["tmp_name"], PATH_UPLOADS . $request->FileMask)) { KnowledgeBase::CreateFolders($_partner, false); KnowledgeBase::Process($_partner, $_visitor->UserId, $_fullname, 0, $_fullname, 0, 5, 3); KnowledgeBase::Process($_partner, $fileid, $filemask, 4, $_FILES["form_userfile"]["name"], 0, $_visitor->UserId, 4, $_FILES["form_userfile"]["size"]); $request->Download = true; $request->Save(); return true; } else { $request->Error = true; $request->Save(); } } return false; }
static function DatabaseLog($_log) { Logging::GeneralLog($_log, FILE_SQL_ERROR_LOG); }
if ($ticket != null) { $feedback->UserId = $ticket->SenderUserId; $feedback->TicketId = $ticket->Id; if (!empty($ticket->Editor)) { $feedback->OperatorId = $ticket->Editor->Editor; $feedback->GroupId = $ticket->Editor->GroupId; } $feedback->UserData = UserData::FromTicketMessage($ticket->Messages[0]); } } $isSpam = !empty(Server::$Configuration->File["gl_sfc"]) && Visitor::CreateSPAMFilter($userid, false); if (!$isSpam) { $feedback->AddCriteriaDataFromServerInput(); $feedback->Save(); } else { Logging::GeneralLog("Feedback matches SPAM filter rule."); } $fb_html = str_replace("<!--sub_title-->", "<br>" . LocalizationManager::$TranslationStrings["client_feedback_success"] . "<script>parent.parent.lz_chat_feedback_result();</script>", $fb_html); $fb_html = str_replace("<!--title-->", "<br><br><br>" . LocalizationManager::$TranslationStrings["client_thank_you"], $fb_html); $fb_html = str_replace("<!--visible-->", "none", $fb_html); } else { $inputs_html = $js_id_list = ""; foreach (Server::$Configuration->Database["gl_fb"] as $id => $criteria) { if (!empty($js_id_list)) { $js_id_list .= ","; } $js_id_list .= "'" . $id . "'"; $inputs_html .= $criteria->GetHTML(); } $fb_html = str_replace("<!--criteria-->", $inputs_html, $fb_html); $fb_html = str_replace("<!--ids-->", $js_id_list, $fb_html);
function processFilters() { if (isset($_POST[POST_INTERN_PROCESS_FILTERS . "_va"])) { $creators = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_va"]); $createds = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vb"]); $editors = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vc"]); $ips = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vd"]); $expiredates = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_ve"]); $userids = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vf"]); $filternames = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vg"]); $reasons = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vh"]); $filterids = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vi"]); $activestates = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vj"]); $actiontypes = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vk"]); $exertions = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vl"]); $languages = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vm"]); $countries = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vp"]); $allowchats = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vq"]); $allowtickets = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vr"]); $allowtracking = explode(POST_ACTION_VALUE_SPLITTER, $_POST[POST_INTERN_PROCESS_FILTERS . "_vs"]); foreach ($filterids as $key => $id) { $filter = new Filter($filterids[$key]); $filter->Creator = $creators[$key]; $filter->Created = $createds[$key] != "0" ? $createds[$key] : time(); $filter->Editor = $editors[$key]; $filter->Edited = time(); $filter->IP = $ips[$key]; $filter->Expiredate = $expiredates[$key]; $filter->Userid = $userids[$key]; $filter->Reason = $reasons[$key]; $filter->Filtername = $filternames[$key]; $filter->Activestate = $activestates[$key]; $filter->Exertion = $exertions[$key]; $filter->Languages = $languages[$key]; $filter->Countries = $countries[$key]; $filter->AllowChats = !empty($allowchats[$key]); $filter->AllowTickets = !empty($allowtickets[$key]); $filter->AllowTracking = !empty($allowtracking[$key]); if ($actiontypes[$key] == POST_ACTION_ADD || $actiontypes[$key] == POST_ACTION_EDIT) { $filter->Save(); } else { if ($actiontypes[$key] == POST_ACTION_REMOVE) { $filter->Destroy(); } else { Logging::GeneralLog("unknown command f1"); } } } CacheManager::FlushKey(DATA_CACHE_KEY_FILTERS); } }
private function ZENDParseEmails(&$_reload, $mails, $_delete, $_test) { $list = array(); $message = null; $starttime = time(); $executiontime = Server::SetTimeLimit(CALLER_TIMEOUT - 10); $delete = array(); $subject = ""; try { $counter = 0; foreach ($mails as $mnum => $message) { if ($_test) { return count($mails); } try { $temail = new TicketEmail(); if ($message->headerExists("subject")) { $subject = $temail->Subject = mimeHeaderDecode($message->Subject); } if ($message->headerExists("message-id")) { $temail->Id = str_replace(array("<", ">"), "", $message->MessageId); } if (empty($temail->Id)) { $temail->Id = getId(32); } if ($_delete) { $delete[$mnum] = $temail->Id; } if (strpos($message->From, "<") !== false) { $fromparts = explode("<", str_replace(">", "", $message->From)); if (!empty($fromparts[0])) { $temail->Name = str_replace(array("\""), "", mimeHeaderDecode(trim($fromparts[0]))); } $temail->Email = trim($fromparts[1]); } else { $temail->Email = trim($message->From); } if (strpos($message->To, "<") !== false) { $toparts = explode("<", str_replace(">", "", $message->To)); $temail->ReceiverEmail = trim($toparts[1]); } else { $temail->ReceiverEmail = trim($message->To); } if ($message->headerExists("reply-to")) { if (strpos($message->ReplyTo, "<") !== false) { $rtoparts = explode("<", str_replace(">", "", $message->ReplyTo)); $temail->ReplyTo = trim($rtoparts[1]); } else { $temail->ReplyTo = trim($message->ReplyTo); } } $parts = array(); if ($message->isMultipart()) { foreach (new RecursiveIteratorIterator($message) as $part) { $parts[] = $part; } } else { $parts[] = $message; } foreach ($parts as $part) { try { if ($part->headerExists("content-type")) { $ctype = $part->contentType; } else { $ctype = 'text/html'; } if ($part->headerExists("content-disposition")) { $ctype .= "; " . $part->contentDisposition; } $charset = ""; $hparts = explode(";", str_replace(" ", "", $ctype)); foreach ($hparts as $hpart) { if (strpos(strtolower($hpart), "charset=") === 0) { $charset = trim(str_replace(array("charset=", "'", "\""), "", strtolower($hpart))); } } $isatt = strpos(strtolower($ctype), "name=") !== false || strpos(strtolower($ctype), "filename=") !== false; if (DEBUG_MODE) { Logging::GeneralLog(" PROCESSING EMAIL / charset:" . $ctype . " - " . $charset . " - " . $subject . " - " . $isatt); } if (!$isatt && (($html = strpos(strtolower($ctype), 'text/html') !== false) || strpos(strtolower($ctype), 'text/plain') !== false)) { $content = $part->getContent(); foreach ($part->getHeaders() as $name => $value) { if (strpos(strtolower($name), 'content-transfer-encoding') !== false && strpos(strtolower($value), 'quoted-printable') !== false) { $content = quoted_printable_decode($content); } else { if (strpos(strtolower($name), 'content-transfer-encoding') !== false && strpos(strtolower($value), 'base64') !== false) { $content = base64_decode($content); } } } if ($html) { $temail->BodyHTML = max($temail->BodyHTML, $content); $content = MailSystem::DownConvertHTML($content); } if ((!$html || empty($temail->Body)) && !empty($content)) { if (strpos(strtolower($charset), 'utf-8') === false && !empty($charset)) { if (DEBUG_MODE) { Logging::GeneralLog(" PROCESSING EMAIL / iconv | " . strtoupper($charset) . " | " . 'UTF-8' . " | " . $subject); } $temail->Body = @iconv(strtoupper($charset), 'UTF-8', $content); } else { if ($html && empty($charset)) { $temail->Body = utf8_encode($content); } else { $temail->Body = $content; } } } } else { $filename = ""; $fileid = getId(32); $unknown = getId(32); $filesid = Server::$Configuration->File["gl_lzid"] . "_" . $fileid; foreach ($hparts as $hpart) { $hpart = mimeHeaderDecode($hpart); if (strpos(strtolower(trim($hpart)), "name=") === 0 || strpos(strtolower(trim($hpart)), "filename=") === 0) { $filename = trim(str_replace(array("filename=", "name=", "'", "\""), "", strtolower($hpart))); } else { if ($part->headerExists("content-id") && empty($filename)) { $filename = trim(str_replace(array("<", ">", "'", "\""), "", strtolower($part->contentId))); } else { if (strpos(strtolower($ctype), 'message/rfc822') !== false && $part->headerExists("subject") && empty($filename)) { $filename = trim($part->Subject) . ".eml"; } else { if (strpos(strtolower($ctype), 'message/rfc822') !== false) { $unknown = "unknown.eml"; } } } } } $base64dec = !(strpos(strtolower($ctype), 'message/rfc822') !== false || strpos(strtolower($ctype), 'text/plain') !== false); foreach ($part->getHeaders() as $name => $value) { if (strpos(strtolower($name), 'content-transfer-encoding') !== false && strpos(strtolower($value), 'base64') !== false) { $base64dec = true; } } $filename = empty($filename) ? $unknown : str_replace(array("\\", ":", "?", "*", "<", ">", "|", "/", "\""), "", $filename); $content = !$base64dec ? $part->getContent() : base64_decode($part->getContent()); $temail->Attachments[$fileid] = array($filesid, $filename, $content); if (DEBUG_MODE) { Logging::GeneralLog("ADD ATT: " . $filesid . " - " . $filename . " - " . $ctype); } } } catch (Exception $e) { handleError("112", "IMAP Email Part Error: " . $e->getMessage() . ", email: " . $subject, "functions.global.inc.php", 0); } } $temail->Created = strtotime($message->Date); if ((!is_numeric($temail->Created) || empty($temail->Created)) && $message->headerExists("delivery-date")) { $temail->Created = strtotime($message->DeliveryDate); } if (!is_numeric($temail->Created) || empty($temail->Created)) { $temail->Created = time(); } $list[] = $temail; if (time() - $starttime >= $executiontime / 2 || $counter++ > DATA_ITEM_LOADS) { $_reload = true; break; } } catch (Exception $e) { if ($_test) { throw $e; } else { handleError("115", "Email Error: " . $e->getMessage() . ", email: " . $subject, "functions.global.inc.php", 0); } } } try { krsort($delete); foreach ($delete as $num => $id) { $mails->removeMessage($num); } } catch (Exception $e) { if ($_test) { throw $e; } else { handleError("114", "Email delete error: " . $e->getMessage() . ", email: " . $subject, "functions.global.inc.php", 0); } } } catch (Exception $e) { if ($_test) { throw $e; } else { handleError("113", "Email Error: " . $e->getMessage() . ", email: " . $subject, "functions.global.inc.php", 0); } } return $list; }
static function ImportButtons($_folder, $_prefix, $_connection) { try { Logging::SecurityLog("ServerManager::ImportButtons", "", CALLER_SYSTEM_ID); $buttons = IOStruct::ReadDirectory($_folder, ".php", true); foreach ($buttons as $button) { $parts = explode("_", $button); if (count($parts) == 3) { $type = $parts[0] == "overlay" ? $parts[0] : "inlay"; $id = intval($parts[1]); $online = explode(".", $parts[2]); $online = $online[0]; $parts = explode(".", $button); $itype = $parts[1]; $_connection->Query(false, "INSERT INTO `" . DBManager::RealEscape($_prefix) . DATABASE_IMAGES . "` (`id`,`online`,`button_type`,`image_type`,`data`) VALUES ('" . DBManager::RealEscape($id) . "','" . DBManager::RealEscape($online) . "','" . DBManager::RealEscape($type) . "','" . DBManager::RealEscape($itype) . "','" . DBManager::RealEscape(IOStruct::ToBase64($_folder . $button)) . "');"); } } } catch (Exception $e) { Logging::GeneralLog(serialize($e)); } }