Files
Facilitor/APPL/API2/model_files.inc
Jos Groot Lipman 8cc5ddfe92 FCLT#81254 Native Excel XLSX savepoint
svn path=/Website/trunk/; revision=62928
2023-12-11 16:40:45 +00:00

110 lines
3.9 KiB
PHP

<% /*
$Revision$
$Id$
File: model_files.inc
Description: Files model.
Parameters:
Context: Dit model staat toe diverse bestanden met codes van flexfiles.inc
via API2 op te vragen en eventueel toe te voegen
Notes:
*/
function model_files(pmodule)
{
this.module = pmodule;
this.table = "files";
this.records_name = "files";
this.record_name = "file";
this.autfunction = "WEB_FACTAB";
this.fields = { "name": { typ: "varchar", label: "Name" },
"date": { typ: "date", label: "Module" },
"size": { typ: "number", label: "Size" }
}
this.REST_GET = function _GET(params)
{
// TODO: meer autorisatie?
// TODO:
var getProps = { api2name: "files", module: this.module, nodigest: !params.dataonly }; // alleen bij dataonly doen we iets met de digest
if (params.filter.filename)
getProps.getFile = params.filter.filename;
else
{
getProps.getFiles = true;
}
if (params.filter.iecode)
getProps.iecode = params.filter.iecode
var fileprops = flexProps(this.module, null, null, null, getProps);
user.checkAutorisation(fileprops.autfunctionapiread || this.autfunction);
if (getProps.getFiles) // dan moet je wel browse rechten hebben
user.checkAutorisation(fileprops.autfunctionapibrowse || this.autfunction);
if (params.filter.filename)
{
if (!fileprops.files.length)
{
Response.Status = "404 Not Found";
Response.End;
}
if (params.dataonly)
{
var file = fileprops.files[0];
return [{ "name": file.name,
"date": file.date,
"size": file.size,
"content_url": file.deepurl,
"digest": file.digest // kan aanroeper controleren of het goed is overgekomen
}];
}
StreamFile(fileprops.AttachPath,
params.filter.filename,
{ mime: fileprops.files[0].mimetype,
pcontentdp: "none"}); // geen content disposition
}
else
{
var result = [];
for (var i = 0; i < fileprops.files.length; i++)
{
var file = fileprops.files[i];
result.push({ "name": file.name,
"date": file.date,
"size": file.size,
"content_url": file.deepurl
});
}
return result;
}
}
this.REST_PUT = this.REST_POST = function _PUTPOST(params, bodyStream)
{
var getProps = { api2name: "files", module: this.module };
if (params.filter.iecode)
getProps.iecode = params.filter.iecode
var flexparams = flexProps(this.module, null, null, null, getProps);
user.checkAutorisation(flexparams.autfunctionapiwrite || this.autfunction);
var safefilename = safe.filename(params.filter.filename);
if (!flexparams.isAllowedName(safefilename))
api2.error(422, L("lcl_shared_file_ext_not_allowed"));
__Log("Creating folder {0}".format(flexparams.AttachPath));
CreateFullPath(flexparams.AttachPath);
__Log("Saving datastream file to {0}".format(flexparams.AttachPath + safefilename));
bodyStream.SaveToFile(safe.UNC(flexparams.AttachPath + safefilename), 2); // adSaveCreateOverWrite
return { filename: safefilename };
}
this.disabled_REST_DELETE = function (params, the_key) /* remove file */
{
// TODO?
}
}
%>