function StoreFile($_browserId, $_partner, $_fullname)
 {
     $filename = namebase($_FILES['userfile']['name']);
     if (!isValidUploadFile($filename)) {
         return false;
     }
     $fileid = md5($filename . $this->UserId . $_browserId);
     $fileurid = EX_FILE_UPLOAD_REQUEST . "_" . $fileid;
     $filemask = $this->UserId . "_" . $fileid;
     $request = new FileUploadRequest($fileurid, $_partner);
     $request->Load();
     if ($request->Permission == PERMISSION_FULL) {
         if (move_uploaded_file($_FILES["userfile"]["tmp_name"], PATH_UPLOADS . $request->FileMask)) {
             createFileBaseFolders($_partner, false);
             processResource($_partner, $this->UserId, $_fullname, 0, $_fullname, 0, 5, 3);
             processResource($_partner, $fileid, $filemask, 4, $_FILES["userfile"]["name"], 0, $this->UserId, 4, $_FILES["userfile"]["size"]);
             $request->Download = true;
             $request->Save();
             return true;
         } else {
             $request->Error = true;
             $request->Save();
         }
     }
     return false;
 }
function receiveFile($id = FILE_ACTION_NONE)
{
    global $RESPONSE, $INTERNAL;
    if (isset($_POST[POST_INTERN_FILE_TYPE]) && $_POST[POST_INTERN_FILE_TYPE] == FILE_TYPE_USERFILE) {
        $fid = md5($_FILES["file"]["name"] . CALLER_SYSTEM_ID . time());
        $filemask = CALLER_SYSTEM_ID . "_" . $fid;
        if (empty($_SERVER["HTTP_QRD_PARENT_ID"])) {
            createFileBaseFolders(CALLER_SYSTEM_ID, true);
            processResource(CALLER_SYSTEM_ID, CALLER_SYSTEM_ID, $INTERNAL[CALLER_SYSTEM_ID]->Fullname, 0, $INTERNAL[CALLER_SYSTEM_ID]->Fullname, 0, 4, 3);
            $parentId = CALLER_SYSTEM_ID;
            $rank = 4;
        } else {
            $parentId = $_SERVER["HTTP_QRD_PARENT_ID"];
            $rank = $_SERVER["HTTP_QRD_RANK"];
        }
        processResource(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;
        }
    }
    $RESPONSE->SetStandardResponse($id, base64_encode($fid));
}
function up_3183_3184($_prefix, $_link)
{
    global $INTERNAL, $GROUPS;
    $result = @mysql_query("ALTER TABLE `" . @mysql_real_escape_string($_prefix) . "info` ADD `chat_id` INT NOT NULL DEFAULT '11700'", $_link);
    if (!$result && mysql_errno() != 1060) {
        return mysql_errno() . ": " . mysql_error();
    }
    $result = @mysql_query("ALTER TABLE `" . @mysql_real_escape_string($_prefix) . "info` ADD `ticket_id` INT NOT NULL DEFAULT '11700'", $_link);
    if (!$result && mysql_errno() != 1060) {
        return mysql_errno() . ": " . mysql_error();
    }
    $result = @mysql_query("ALTER TABLE `" . @mysql_real_escape_string($_prefix) . "chats` ADD `transcript_sent` tinyint(1) unsigned NOT NULL default '1'", $_link);
    if (!$result && mysql_errno() != 1060) {
        return mysql_errno() . ": " . mysql_error();
    }
    $result = @mysql_query("ALTER TABLE `" . @mysql_real_escape_string($_prefix) . "res` CHANGE `html` `value` longtext character set utf8 collate utf8_bin NOT NULL", $_link);
    if (!$result && mysql_errno() != 1054) {
        return mysql_errno() . ": " . mysql_error();
    }
    $result = @mysql_query("ALTER TABLE `" . @mysql_real_escape_string($_prefix) . "res` ADD `size` bigint(20) unsigned NOT NULL default '0'", $_link);
    if (!$result && mysql_errno() != 1060) {
        return mysql_errno() . ": " . mysql_error();
    }
    $dirs = array(PATH_UPLOADS_INTERNAL, PATH_UPLOADS_EXTERNAL);
    $baseFolderInternal = $baseFolderExternal = false;
    foreach ($dirs as $tdir) {
        $subdirs = getDirectory($tdir, false, true);
        foreach ($subdirs as $dir) {
            if (@is_dir($tdir . $dir . "/")) {
                if ($tdir == PATH_UPLOADS_INTERNAL) {
                    $owner = getInternalSystemIdByUserId($dir);
                } else {
                    $owner = CALLER_SYSTEM_ID;
                }
                if (!isset($INTERNAL[$owner])) {
                    continue;
                }
                $files = getDirectory($tdir . $dir . "/", false, true);
                foreach ($files as $file) {
                    if ($file != FILE_INDEX && $file != FILE_INDEX_OLD) {
                        if ($tdir == PATH_UPLOADS_INTERNAL) {
                            $parentId = $owner;
                            $type = 3;
                            if (!$baseFolderInternal) {
                                createFileBaseFolders($owner, true);
                                $baseFolderInternal = true;
                            }
                            processResource($owner, $owner, $INTERNAL[$owner]->Fullname, 0, $INTERNAL[$owner]->Fullname, 0, 4, 3);
                        } else {
                            $parentId = 5;
                            $owner = CALLER_SYSTEM_ID;
                            $type = 4;
                            if (!$baseFolderExternal) {
                                createFileBaseFolders($owner, false);
                                $baseFolderExternal = true;
                            }
                        }
                        $cfile = $tdir != PATH_UPLOADS_INTERNAL ? base64_decode($file) : $file;
                        $size = filesize($tdir . $dir . "/" . $file);
                        $fid = md5($file . $owner . $size);
                        $filename = $owner . "_" . $fid;
                        copy($tdir . $dir . "/" . $file, PATH_UPLOADS . $filename);
                        processResource($owner, $fid, $filename, $type, $cfile, 0, $parentId, 4, $size);
                    }
                }
            }
        }
    }
    $sql = "CREATE TABLE `" . @mysql_real_escape_string($_prefix) . "predefined` (`id` int(11) unsigned NOT NULL,`internal_id` varchar(32) character set utf8 collate utf8_bin NOT NULL,`group_id` varchar(32) character set utf8 collate utf8_bin NOT NULL,`lang_iso` varchar(2) character set utf8 collate utf8_bin NOT NULL,`invitation` mediumtext character set utf8 collate utf8_bin NOT NULL,`welcome` mediumtext character set utf8 collate utf8_bin NOT NULL,`website_push` mediumtext character set utf8 collate utf8_bin NOT NULL,`browser_ident` tinyint(1) unsigned NOT NULL default '0',`is_default` tinyint(1) unsigned NOT NULL default '0', `auto_welcome` tinyint(1) unsigned NOT NULL default '0',PRIMARY KEY  (`id`)) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin;";
    $result = mysql_query($sql, $_link);
    if (!$result && mysql_errno() != 1050) {
        return mysql_errno() . ": " . mysql_error();
    } else {
        if ($result) {
            $counter = 0;
            foreach ($GROUPS as $gid => $group) {
                @mysql_query("INSERT INTO `" . @mysql_real_escape_string($_prefix) . "predefined` (`id` ,`internal_id`, `group_id` ,`lang_iso` ,`invitation` ,`welcome` ,`website_push` ,`browser_ident` ,`is_default` ,`auto_welcome`) VALUES ('" . @mysql_real_escape_string($counter++) . "', '', '" . @mysql_real_escape_string($gid) . "', 'EN', 'Hello, my name is %name%. Do you need help? Start Live-Chat now to get assistance.', 'Hello %external_name%, my name is %name%, how may I help you?', 'Website Operator %name% would like to redirect you to this URL:\r\n\r\n%url%', '1', '1', '1');", $_link);
                @mysql_query("INSERT INTO `" . @mysql_real_escape_string($_prefix) . "predefined` (`id` ,`internal_id`, `group_id` ,`lang_iso` ,`invitation` ,`welcome` ,`website_push` ,`browser_ident` ,`is_default` ,`auto_welcome`) VALUES ('" . @mysql_real_escape_string($counter++) . "', '', '" . @mysql_real_escape_string($gid) . "', 'DE', '" . utf8_encode("Guten Tag, meine Name ist %name%. Benötigen Sie Hilfe? Gerne berate ich Sie in einem Live Chat") . "', 'Guten Tag %external_name%, mein Name ist %name% wie kann ich Ihnen helfen?', '" . utf8_encode("Ein Betreuer dieser Webseite (%name%) möchte Sie auf einen anderen Bereich weiterleiten:\\r\\n\\r\\n%url%") . "', '1', '0', '1');", $_link);
            }
        }
    }
    $sql = "CREATE TABLE `" . @mysql_real_escape_string($_prefix) . "rooms` (`id` int(11) NOT NULL,`time` int(11) NOT NULL,`last_active` int(11) NOT NULL,`status` tinyint(1) NOT NULL default '0',`target_group` varchar(64) NOT NULL, PRIMARY KEY  (`id`)) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin;";
    $result = mysql_query($sql, $_link);
    if (!$result && mysql_errno() != 1050) {
        return mysql_errno() . ": " . mysql_error();
    }
    $sql = "CREATE TABLE `" . @mysql_real_escape_string($_prefix) . "posts` (`id` varchar(32) character set utf8 collate utf8_bin NOT NULL,`time` int(10) unsigned NOT NULL default '0',`micro` int(10) unsigned NOT NULL default '0',`sender` varchar(32) character set utf8 collate utf8_bin NOT NULL,`receiver` varchar(32) character set utf8 collate utf8_bin NOT NULL,`receiver_group` varchar(32) character set utf8 collate utf8_bin NOT NULL,`text` mediumtext character set utf8 collate utf8_bin NOT NULL,`received` tinyint(1) unsigned NOT NULL default '0',`persistent` tinyint(1) unsigned NOT NULL default '0', PRIMARY KEY  (`id`)) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin;";
    $result = mysql_query($sql, $_link);
    if (!$result && mysql_errno() != 1050) {
        return mysql_errno() . ": " . mysql_error();
    }
    $sql = "CREATE TABLE `" . @mysql_real_escape_string($_prefix) . "tickets` (`id` varchar(32) character set utf8 collate utf8_bin NOT NULL,`user_id` varchar(32) character set utf8 collate utf8_bin NOT NULL,`target_group_id` varchar(32) character set utf8 collate utf8_bin NOT NULL, PRIMARY KEY  (`id`)) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin;";
    $result = mysql_query($sql, $_link);
    if (!$result && mysql_errno() != 1050) {
        return mysql_errno() . ": " . mysql_error();
    }
    $sql = "CREATE TABLE `" . @mysql_real_escape_string($_prefix) . "ticket_editors` (`ticket_id` int(10) unsigned NOT NULL,`internal_fullname` varchar(32) character set utf8 collate utf8_bin NOT NULL,`status` tinyint(1) unsigned NOT NULL default '1',`time` int(10) unsigned NOT NULL,PRIMARY KEY  (`ticket_id`)) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin;";
    $result = mysql_query($sql, $_link);
    if (!$result && mysql_errno() != 1050) {
        return mysql_errno() . ": " . mysql_error();
    }
    $sql = "CREATE TABLE `" . @mysql_real_escape_string($_prefix) . "ticket_messages` (`id` int(11) unsigned NOT NULL auto_increment,`time` int(11) unsigned NOT NULL,`ticket_id` varchar(32) character set utf8 collate utf8_bin NOT NULL,`text` mediumtext character set utf8 collate utf8_bin NOT NULL,`fullname` varchar(32) character set utf8 collate utf8_bin NOT NULL,`email` varchar(50) character set utf8 collate utf8_bin NOT NULL,`company` varchar(50) character set utf8 collate utf8_bin NOT NULL,`ip` varchar(15) character set utf8 collate utf8_bin NOT NULL, PRIMARY KEY  (`id`)) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=1;";
    $result = mysql_query($sql, $_link);
    if (!$result && mysql_errno() != 1050) {
        return mysql_errno() . ": " . mysql_error();
    }
    $sql = "CREATE TABLE `" . @mysql_real_escape_string($_prefix) . "ratings` (`id` varchar(32) character set utf8 collate utf8_bin NOT NULL, `time` int(11) unsigned NOT NULL, `user_id` varchar(32) character set utf8 collate utf8_bin NOT NULL, `internal_id` varchar(32) character set utf8 collate utf8_bin NOT NULL, `fullname` varchar(32) character set utf8 collate utf8_bin NOT NULL, `email` varchar(50) character set utf8 collate utf8_bin NOT NULL, `company` varchar(50) character set utf8 collate utf8_bin NOT NULL, `qualification` tinyint(1) unsigned NOT NULL, `politeness` tinyint(1) unsigned NOT NULL, `comment` varchar(400) character set utf8 collate utf8_bin NOT NULL, `ip` varchar(15) character set utf8 collate utf8_bin NOT NULL, PRIMARY KEY  (`id`)) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin;";
    $result = mysql_query($sql, $_link);
    if (!$result && mysql_errno() != 1050) {
        return mysql_errno() . ": " . mysql_error();
    }
    return TRUE;
}