<%@ LANGUAGE = JavaScript %>
<%  Server.ScriptTimeout=6000; %>
<% /*
    $Revision$
    $Id$

    File:               imp_inlezen.asp
    Description:        Onzichtbaar uitvoeren van de opgedragen inleesactie van file 'file' volgens importfunctie 'import_app_key'
    Parameters:
        import_app_key  Importfunctie key
    Context:
    Note:               ========= LET OP LET OP =========
                        Dit bestand mixt serverside VBScript en JavaScript
                        Dat betekent dat (ongeacht hoe het hieronder staat) altijd eerst
                        *alle* VBScript wordt uitgevoerd en daarna *alle* JavaScript
                        JavaScript kan (dus) wel variabelen van VBScript gebruiken
                        maar VBScript kan bijvoorbeeld niets uit de database achterhalen
                        ========= LET OP LET OP =========
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../shared/upload.inc" -->
<!-- #include file="imp.inc" -->
<script language="javascript" src="imp_shared.js" runat="server"></script>

  <script language='VBScript' runat='Server'>
    Dim UploadRequest
    Dim fileStream
    Dim safefilename
    Public Function VB_getfile()
        Dim myErr

        byteCount = Request.TotalBytes
        on error resume next
        RequestBin = Request.BinaryRead(byteCount)
        myErr = Err.Description
        on error goto 0
        If myErr <> "" Then '' Waarschijnlijk te groot
            VB_getfile = myErr
            Exit Function
        End If

        Set UploadRequest = CreateObject("Scripting.Dictionary")

        BuildUploadRequest RequestBin

        contentType =  UploadRequest.Item("imp_file").Item("ContentType")
        fileData = UploadRequest.Item("imp_file").Item("Value")
        filepathname = UploadRequest.Item("imp_file").Item("FileName")

        If fileData = "" Then
            VB_getfile = L("lcl_imp_fileempty")
            Exit Function
        End If

        safefilename = safe.filename(Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\")))
        '' Extensie controle, ook al slaan we het nooit op
        Set re = new regexp
        re.Pattern = S("flexAllowedExt")
        re.IgnoreCase = true
        If Not re.test(safefilename) Then
            VB_getfile = L("lcl_shared_file_ext_not_allowed")
            Exit Function
        End If
        '' Specifieke imp-controle
        Set re = new regexp
        re.Pattern = S("impAllowedExt")
        re.IgnoreCase = true
        If Not re.test(safefilename) Then
            VB_getfile = L("lcl_shared_file_ext_not_allowed")
            Exit Function
        End If

        ''***** Zet de binary string eerst om naar een Binary STREAMzodat deze gebruikt kan worden in javascript
        Set fileStream = Server.CreateObject("ADODB.Stream")
        fileStream.Type = 1 '' adTypeBinary vooralsnog
        fileStream.Open

        fileStream.Write MultiByteToBinary(fileData)
    End Function
  </script>

  <script language='javascript' runat='Server'>
    var err = VB_getfile();
    if (err)
    {
        warn = L("lcl_shared_upload_error_start") + err + L("lcl_shared_upload_error_end");
        res = {};
    }
    else
    {
        var import_app_key = getQParamInt("import_app_key"); // Importfunctiekey

        // Heb ik rechten voor deze importfunctie
        // VB heeft het bestand al wel ingelezen in de (memory)fileStream maar dat is niet erg
        var this_imp = imp.func_enabled_import_app(import_app_key);
        user.auth_required_or_abort(this_imp.canReadAny);

        try
        {
            var res = impReadStream(fileStream, import_app_key,
                                                { fac_home: Server.MapPath(rooturl + "/") + "/",
                                                  filepathname: safefilename,
                                                  customerId: customerId,
                                                  user_key: user_key,
                                                  keep_backup: true // mits fac_import_app_folder gezet
                                                });
        }
        catch (e)
        {
            res = { success: false, warning: e.description };
        }
        if (res.success)
            var warn = L("lcl_imp_read_lines") + res.read_lines;
        else
            var warn = res.warning;
    }

    // PAS OP: Als je onderstaand fragment buiten de < / script> haalt zit je in VBScript ipv. JScript en is warn undefined!
    Response.Write("<html>");
    Response.Write("  <head>");
    FCLTHeader.Generate();
    Response.Write("  </head>");
        Response.Write("<body onLoad=\"javascript:FcltMgr.closeDetail(window, { warning: '" + safe.jsstring(warn) + "' })\">");
        Response.Write("\n<!-"+"- import_key=" + res.import_key + " -->");
    Response.Write("  </body>");
    Response.Write("</html>");
  </script>
