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 UploadFile($id = FILE_ACTION_NONE)
 {
     if (isset($_POST[POST_INTERN_FILE_TYPE]) && $_POST[POST_INTERN_FILE_TYPE] == FILE_TYPE_USERFILE) {
         if (!empty($_GET["QRD_TFILE"])) {
             $_FILES["file"]["name"] = base64_decode($_GET["QRD_TFILE"]);
         }
         if (empty($_GET["QRD_TRESID"])) {
             $fid = md5($_FILES["file"]["name"] . CALLER_SYSTEM_ID . time());
         } else {
             $fid = base64_decode($_GET["QRD_TRESID"]);
         }
         $filemask = CALLER_SYSTEM_ID . "_" . $fid;
         if (empty($_GET["QRD_PARENT_ID"])) {
             KnowledgeBase::CreateFolders(CALLER_SYSTEM_ID, true);
             KnowledgeBase::Process(CALLER_SYSTEM_ID, CALLER_SYSTEM_ID, Server::$Operators[CALLER_SYSTEM_ID]->Fullname, 0, Server::$Operators[CALLER_SYSTEM_ID]->Fullname, 0, 4, 3);
             $parentId = CALLER_SYSTEM_ID;
             $rank = 4;
         } else {
             $parentId = $_GET["QRD_PARENT_ID"];
             $rank = $_GET["QRD_RANK"];
         }
         KnowledgeBase::Process(CALLER_SYSTEM_ID, $fid, $filemask, 3, $_FILES["file"]["name"], 0, $parentId, $rank, $_FILES["file"]["size"]);
         if (@move_uploaded_file($_FILES["file"]["tmp_name"], PATH_UPLOADS . $filemask)) {
             $id = FILE_ACTION_SUCCEEDED;
         } else {
             $id = FILE_ACTION_ERROR;
         }
     }
     Server::$Response->SetStandardResponse($id, base64_encode($fid));
 }