Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.thread.agents.trialVersion
<<Changes <<12/21/02; 3:25:12 PM by JES <<Added support for serial number renewals. <<12/2/01; 7:22:19 PM by JES <<Clear the menu bar if user.radio.prefs.flExpired is true. Close all windows. Minimize to system-tray (Windows) or hide the app (MacOS). When user.radio.prefs.flExpired changes back to true, rebuild the menubar, and open the About window if user.prefs.openAboutWindow is true. <<12/2/01; 8:45:27 AM by DW <<Created. bundle { //trial checks if user.radio.settings.flTrialVersion { if (clock.now () - user.radio.settings.whenInstalled) > (30 * 24 * 60 * 60) { if not user.radio.settings.flExpired { radio.menuCommands.openPage (radio.data.systemUrls.serialNumber); temp.radio.misc.flWasExpired = true; user.radio.settings.flExpired = true}}}; if user.radio.settings.flExpired { //disable UI elements if flExpired is true temp.radio.misc.flWasExpired = true; on closeIt (adr) { if defined (adr^) { if table.getRootAddress (adr) == adr { //hide the window window.hide (adr); return (true)}}; try { window.close (adr)}}; window.visit (@closeIt); if defined (Frontier.hideApplication) { Frontier.hideApplication ()}; menu.clearMenuBar ()} else { //restore UI elements if flExpired is false local (flRestoreUi = false); if not user.radio.settings.flTrialVersion { if defined (temp.radio.misc.flWasExpired) { if temp.radio.misc.flWasExpired { flRestoreUi = true}}; if not menu.isInstalled (@Frontier.tools.menu) { flRestoreUi = true}}; if flRestoreUi { menu.noSuite (); if user.prefs.openAboutWindow { window.about ()}; temp.radio.misc.flWasExpired = false}}}; bundle { //get SN expiration date local (sn = string.upper (user.radio.prefs.serialNumber)); local (domain = "superhonker.userland.com"); if sizeof (sn) > 0 { //the user has entered a serial number if userland.isValidSerialNumber (sn) { //and it's valid if not defined (user.radio.settings.currentSerialNumber) { //remember it in case they change it user.radio.settings.currentSerialNumber = sn}; if user.radio.settings.currentSerialNumber != sn { //user has entered a new serial number, clear exp date if defined (user.radio.settings.whenSNExpires) { delete (@user.radio.settings.whenSNExpires)}; user.radio.settings.currentSerialNumber = sn}; local (now = clock.now ()); if not defined (user.radio.settings.whenSNExpires) { //call userland and get the expiration date on getExpirationDateFromUserLand (adrExpDate) { try { local (params = {sn}, whenExpires); whenExpires = xml.rpc (domain, 80, "digitalRiver.whenSerialNumberExpires", @params, rpcPath:"/RPC2", flShowMessages:false); adrExpDate^ = number (whenExpires); return (true)}; return (false)}; if defined (user.radio.settings.whenToGetSNExpireDate) { //we only try once every 3 days if user.radio.settings.whenToGetSNExpireDate <= now { if getExpirationDateFromUserLand (@user.radio.settings.whenSNExpires) { //true == success if defined (user.radio.settings.whenToGetSNExpireDate) { //no need for this once we have a date delete (@user.radio.settings.whenToGetSNExpireDate)}} else { //there was an error -- try again in 3 days while user.radio.settings.whenToGetSNExpireDate <= now { user.radio.settings.whenToGetSNExpireDate = user.radio.settings.whenToGetSNExpireDate + (60 * 60 * 24 * 3)}}}} //3 days else { //schedule a call to userland to get the expiration date at midnight on one of the next 3 days if not defined (user.radio.settings.whenSNExpires) { local (day, month, year, hour, minute, second); local (randomday = (60 * 60 * 24 * random (0, 2))); date.get (now + randomday, @day, @month, @year, @hour, @minute, @second); user.radio.settings.whenToGetSNExpireDate = date.set (day, month, year, 0, 0, 0)}}}}}}
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.