Thursday, March 17, 2011 at 10:04 AM.
scripting2Suite.writeStaticFile
on writeStaticFile (username, filepath, filetext) {
<<Changes
<<3/16/11; 6:28:54 PM by DW
<<If this is not the user who blogs in the root directory, add the username at the beginning of the path.
<<3/16/11; 12:22:49 PM by DW
<<Rewrite to use builtins.staticText if it's enabled. Otherwise use the original method. Provides an easy way to transition.
<<3/8/11; 6:45:44 PM by DW
<<Optionally write to S3.
<<8/25/10; 9:58:09 AM by DW
<<Add code for writing to a local folder.
<<8/20/10; 9:13:48 AM by DW
<<Don't fail if the closeConnection call fails.
<<5/29/10; 4:41:09 PM by DW
<<Created.
local (adrdata = scripting2Suite.init (), now = clock.now ());
if adrdata^.prefs.statictext.prefs.enabled { //new method -- 3/16/11 by DW
local (adruser = scripting2Suite.initUser (username));
if not adruser^.prefs.flBlogInRootDirectory {
if filepath beginswith "/" {
filepath = string.delete (filepath, 1, 1)};
filepath = username + "/" + filepath};
return (staticText.write (@adrdata^.prefs.statictext, filepath, filetext))}
else {
local (adrdata = scripting2Suite.init (), url, now = clock.now ());
local (adruserdata = scripting2Suite.initUser (username));
<<scratchpad.wsusername = username; scratchpad.wsfilepath = filepath; scratchpad.wsfiletext = filetext;
if not (filepath beginswith "/") {
filepath = "/" + filepath};
if adruserdata^.prefs.localFolder.enabled {
local (basefolder);
bundle { //set basefolder
if adruserdata^.prefs.localFolder.enabled {
basefolder = adruserdata^.prefs.localFolder.folder;
url = adruserdata^.prefs.localFolder.url}
else {
basefolder = adrdata^.prefs.localFolder.folder + username;
url = adrdata^.prefs.localFolder.folder + username + "/"}};
if filepath beginswith "/" {
filepath = string.delete (filepath, 1, 1)};
local (f = basefolder + string.replaceall (filepath, "/", file.getpathchar ()));
file.surefilepath (f);
file.writewholefile (f, filetext);
url = url + filepath};
if adruserdata^.prefs.s3.enabled { //3/8/11 by DW
local (s3path = filepath);
if s3path beginswith "/" {
s3path = string.delete (s3path, 1, 1)};
s3path = adruserdata^.prefs.s3.path + s3path;
try {
adruserdata^.stats.s3.lastUrlWritten = s3.newobject (s3path, filetext)}
else {
adruserdata^.stats.s3.ctErrors++;
adruserdata^.stats.s3.whenLastError = now;
adruserdata^.stats.s3.lastError = tryerror};
adruserdata^.stats.s3.whenLastWrite = now;
adruserdata^.stats.s3.ctWrites++};
if adrdata^.prefs.ftp.enabled {
local (server = adrdata^.prefs.ftp.server);
local (ftpusername = adrdata^.prefs.ftp.username);
local (ftppassword = adrdata^.prefs.ftp.password, path);
bundle { //set path
if adruserdata^.prefs.ftp.enabled {
path = adruserdata^.prefs.ftp.path}
else {
path = adrdata^.prefs.ftp.path + username};
path = path + filepath};
<<bundle //old code
<<path = adrdata^.prefs.ftp.path + username + filepath
local (connection = tcp.ftp.openConnection (server, ftpusername, ftppassword, false));
if path beginswith "/" {
path = string.delete (path, 1, 1)}; //6/9/10 by DW
tcp.ftp.writefile (connection, filetext, path);
thread.callscript (@tcp.ftp.closeConnection, {connection});
bundle { //build the url
if adruserdata^.prefs.ftp.enabled {
url = adruserdata^.prefs.ftp.url;
if url endswith "/" {
url = string.mid (url, 1, sizeof (url) - 1)};
url = url + filepath}
else {
url = adrdata^.prefs.ftp.baseurl + username + filepath}}};
return (url)}}; //8/25/10 by DW
bundle { //test code
<<url = writeStaticFile (scratchpad.wsusername, scratchpad.wsfilepath, scratchpad.wsfiletext)
url = writeStaticFile ("davewiner", "testing/letshavefun.txt", clock.now ());
webbrowser.openurl (url)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.