var writeStatus = ""; var allowedFileTypes = "css"; arguments.FilePath = fixFilePathSlashes(filePath=arguments.FilePath); if ( ListFindNoCase(allowedFileTypes,ListLast(ListLast(arguments.FilePath,"."),"/")) EQ 0 ) return "not-css-file"; writeStatus = writeDataFile(filePath=arguments.filePath,dataString=arguments.dataString,overwrite=arguments.overwrite,charSet=arguments.charSet); return writeStatus; var writeStatus = ""; var allowedFileTypes = "ini"; arguments.FilePath = fixFilePathSlashes(filePath=arguments.FilePath); if ( ListFindNoCase(allowedFileTypes,ListLast(ListLast(arguments.FilePath,"."),"/")) EQ 0 ) return "not-ini-file"; writeStatus = writeDataFile(filePath=arguments.filePath,dataString=arguments.dataString,overwrite=arguments.overwrite,charSet=arguments.charSet); return writeStatus; var writeStatus = ""; var dirCreate = StructNew(); var allowedFileTypes = "ini,xml,wddx,txt,css,log,json,bak,tmp"; if ( ListFindNoCase(allowedFileTypes,ListLast(arguments.FilePath,".")) EQ 0 ) return "invalid-file-type"; var retStr = arguments.filePath; var dblChars = arguments.charToReplace & arguments.charToReplace; if ( FindNoCase(arguments.charToFind,retStr,1) ) retStr = ReplaceNoCase(retStr,arguments.charToFind,arguments.charToReplace,arguments.scope); if ( arguments.cleanDoubledChars ) retStr = replace(retStr, dblChars, arguments.charToReplace, 'all'); return retStr; var fullPath = fixFilePathSlashes(arguments.filePath); var folderPath = GetDirectoryFromPath(fullPath); var retStatus = StructNew(); // If folder exists the we are done here... move on if ( DirectoryExists(folderPath) ) retStatus.status = "dir-exists"; else { try { CreateObject("java", "java.io.File").init(folderPath).mkdirs(); retStatus.status = "dir-created"; } catch (any e) { retStatus.status = "dir-create-failed"; } } return retStatus; var fullPath = fixFilePathSlashes(arguments.dirPath); var folderPath = ExpandPath(fullPath); var retStatus = StructNew(); retStatus.status = "no-dir"; retStatus.exists = false; // If folder exists the we are done here... move on if ( DirectoryExists(folderPath) ) { retStatus.status = "dir-exists"; retStatus.exists = true; } return retStatus; var isCompatVersion = false; var minCompatVer = ""; var maxCompatVer = ""; var maxVersionMinorCap = 9999; var maxVersionPatchCap = 9999; var minVersionCheck = -1; var maxVersionCheck = -1; var v = 1; // Check the list for duplicates and resort largest to smallest arguments.minimumVersionsList = variables.data.listRemoveDuplicates(arguments.minimumVersionsList); arguments.minimumVersionsList = sortVersionList(versionList=arguments.minimumVersionsList,sortorder="desc"); for ( v=1; v LTE ListLen(arguments.minimumVersionsList,",");v=v+1) { isCompatVersion = false; minCompatVer = ListGetAt(arguments.minimumVersionsList,v,","); // Check MIN compatible version minVersionCheck = versionCompare(versionA=arguments.version,versionB=minCompatVer); if ( minVersionCheck GTE 0 ) { // Passed the MIN version compatible check if ( v EQ 1 ) { // First Item in the list (so we can assume compatible with all higher versions isCompatVersion = true; break; } else { // Now check MAX compatible version // - Build (Max version of current Major version) if ( ListLen(minCompatVer,'.') GT 2 ) maxCompatVer = ListFirst(minCompatVer,".") & "." & ListGetAt(minCompatVer,2,".") & "." & maxVersionPatchCap; else maxCompatVer = ListFirst(minCompatVer,".") & "." & maxVersionMinorCap & "." & maxVersionPatchCap; maxVersionCheck = versionCompare(versionA=arguments.version,versionB=maxCompatVer); // Check MAX compatible version if ( maxVersionCheck LT 0 ) { // Passed the MIN version compatible check, set to true and finish isCompatVersion = true; break; } else { // did NOT pass the MAX version check (check next item, if none... done and not compatible) isCompatVersion = false; } } } else { // did NOT pass the MIN version check (check next item, if none... done and not compatible) isCompatVersion = false; } if ( isCompatVersion ) break; } return isCompatVersion; var retStr = ""; var vArray = buildVersionArray(versionList=arguments.versionList); var i = 1; var s = 1; var versionStr = ""; var newArray = ArrayNew(1); if ( ArrayLen(vArray) ) { vArray = variables.data.arrayOfStructsSortMultiKeys(aOfS=vArray,orderByKeyList="Major,Minor,Patch"); //Product, if ( arguments.sortorder EQ "desc" ) { for ( i = arrayLen(vArray); i >= 1; i-- ) { arrayAppend(newArray,vArray[i]); } } else { newArray = vArray; } } for ( s=1; s LTE ArrayLen(newArray); s=s+1 ) { versionStr = ""; versionStr = ListAppend(versionStr,newArray[s].major,"."); versionStr = ListAppend(versionStr,newArray[s].minor,"."); if ( IsNumeric(newArray[s].patch) AND newArray[s].patch GT 0 ) versionStr = ListAppend(versionStr,newArray[s].patch,"."); //versionStr = newArray[s].Product & " " & versionStr & " " & newArray[s].vname; versionStr = versionStr & " " & newArray[s].vname; retStr = ListAppend(retStr,TRIM(versionStr),","); } retStr = ListChangeDelims(retStr, ", ",","); return retStr; var retArray = ArrayNew(1); var dArray = ListToArray(arguments.versionList); var vData = StructNew(); var versionStr = ""; var vArray = ArrayNew(1); var i = 1; for ( i=1; i LTE ArrayLen(dArray); i=i+1 ) { vData = StructNew(); vData.product = ""; versionStr = dArray[i]; if ( REFindNoCase("[a-zA-Z]",ListFirst(versionStr," "),1) ) { vData.product = ListFirst(dArray[i]," "); versionStr = ListRest(dArray[i]," "); } vArray = ListToArray(versionStr,"."); vData.major = "0"; if ( ArrayLen(vArray) GTE 1 ) vData.major = vArray[1]; vData.minor = "0"; vData.vname = ""; if ( ArrayLen(vArray) GTE 2 ) { vData.minor = ListFirst(vArray[2]," "); vData.vname = ListRest(vArray[2]," "); } vData.patch = "0"; if ( ArrayLen(vArray) GTE 3 ) { vData.patch = ListFirst(vArray[3]," "); if ( LEN(TRIM(vData.vname)) EQ 0 ) vData.vname = ListRest(vArray[3]," "); } arrayAppend(retArray,vData); } return retArray; // If RelPath has a protocol... then we are done. No need to append the hostURL. if ( REFindNoCase("^(?:[a-z]+:)?//",arguments.relPath) ) return arguments.relPath; // trailing slashes if( Right( arguments.hostURL,1) EQ "/" ) arguments.hostURL = MID(arguments.hostURL, 1, Len( arguments.hostURL)-1); // remove leading slashes if( Left(arguments.relPath, 1) EQ "/" ) arguments.relPath = MID(arguments.relPath, 2, Len(arguments.relPath)); if ( arguments.encodePath ) return arguments.hostURL & "/" & URLEncodedFormat(arguments.relPath); else return arguments.hostURL & "/" & arguments.relPath; var retStr = ''; if ( arguments.slash NEQ '\' OR arguments.slash NEQ '/' ) arguments.slash = '/'; // Normalize all slashes to be / (forward) arguments.dirPath = fixFilePathSlashes(filePath=arguments.dirPath, charToFind = '\', charToReplace='/', scope='all'); arguments.filePath = fixFilePathSlashes(filePath=arguments.filePath, charToFind = '\', charToReplace='/', scope='all'); // trailing slashes if( Right( arguments.dirPath,1) EQ "/" ) arguments.dirPath = MID(arguments.dirPath, 1, Len( arguments.dirPath)-1); // remove leading slashes if( Left(arguments.filePath, 1) EQ "/" ) arguments.filePath = MID(arguments.filePath, 2, Len(arguments.filePath)); retStr = arguments.dirPath & "/" & arguments.filePath; // Convert all slashes to be \ (back) if ( arguments.slash EQ '\' ) arguments.filePath = fixFilePathSlashes(filePath=arguments.filePath, charToFind = '/', charToReplace='\',scope='all'); return retStr; if ( NOT StructKeyExists(request,"enableADFtimerInfo") ) request.enableADFtimerInfo = true; // Copy this line to use as a global on/off request variable if ( NOT arguments.disable AND LEN(TRIM(arguments.timerVar)) AND request.enableADFtimerInfo EQ true ) { // Init Timer Object if this is the FIRST call to addTimerEvent() for this timerVar if ( NOT StructKeyExists(request,arguments.timerVar) OR NOT IsObject(request[arguments.timerVar]) ) initTimer(timerVar=arguments.timerVar); if ( LEN(TRIM(arguments.timerMsg)) ) request[arguments.timerVar].addEvent(arguments.timerMsg); } var timerMsg = ""; if ( NOT StructKeyExists(request,"enableADFtimerInfo") ) request.enableADFtimerInfo = true; // Copy this line to use as a global on/off request variable if ( NOT arguments.disable AND LEN(TRIM(arguments.timerVar)) AND request.enableADFtimerInfo EQ true ) { WriteOutput("
"); WriteOutput("
"); // Log Last Timer Event timerMsg = "after process completes"; addTimerEvent(timerMsg=timerMsg,timeVar=arguments.timerVar); WriteOutput("
"); if ( LEN(TRIM(arguments.timerHeading)) ) WriteOutput(arguments.timerHeading & ": "); if ( arguments.showTimerVar ) WriteOutput("
TimerVar: #arguments.timerVar#
"); WriteOutput("
"); WriteOutput(request[arguments.timerVar].getResultsHTML()); //WriteOutput(request[arguments.timerVar].getResultsText()); WriteOutput("
"); }
if ( NOT StructKeyExists(request,"enableADFtimerInfo") ) request.enableADFtimerInfo = true; // Copy this line to use as a global on/off request variable if ( LEN(TRIM(arguments.timerVar)) AND request.enableADFtimerInfo EQ true ) request[arguments.timerVar] = CreateObject("component", "commonspot.components.util.debug-timing").init(); var retStr = ''; savecontent variable="retStr" { _doSimpleDumpData(argumentCollection=arguments); } if ( arguments.returnInVar ) return retStr; else { WriteOutput(retStr); return ""; } if ( IsArray(arguments.var) ) _doSimpleDumpArray(argumentCollection=arguments); else if ( IsStruct(arguments.var) ) _doSimpleDumpStruct(argumentCollection=arguments); else if ( IsQuery(arguments.var) ) _doSimpleDumpQuery(argumentCollection=arguments); else if ( IsSimpleValue(arguments.var) ) _doSimpleDumpString(argumentCollection=arguments); else { arguments.var = "[[Complex Object]]"; variables.simpleDumpHasParent = 1; _doSimpleDumpString(argumentCollection=arguments); } var dumpLabel = ""; var data = ''; if ( LEN(TRIM(arguments.label)) ) dumpLabel = arguments.label; if ( IsSimpleValue(arguments.var) AND LEN(TRIM(arguments.var)) ) { data = arguments.var; WriteOutput(''); WriteOutput(''); if ( LEN(TRIM(dumpLabel)) AND !StructKeyExists(variables,"simpleDumpHasLabel") ) WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput('
#dumpLabel#: #data#
'); }
var data = arguments.var; var dataCnt = 0; var fullCnt = 0; var dataValue = ""; var i = 1; var dumpLabel = "Array"; if ( LEN(TRIM(arguments.label)) ) { dumpLabel = arguments.label & " - " & dumpLabel; variables.simpleDumpHasLabel = 1; } if ( IsArray(data) ) { dataCnt = ArrayLen(data); if ( IsNumeric(arguments.top) AND arguments.top LT dataCnt ) { fullCnt = ArrayLen(data); dataCnt = arguments.top; dumpLabel = dumpLabel & ' - Records: #dataCnt# of #fullCnt#'; } else dumpLabel = dumpLabel & ' - Records: #dataCnt#'; if ( dataCnt GT 0 ) { WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); for ( i=1; i <= dataCnt; i++ ) { dataValue = data[i]; WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); } WriteOutput('
#dumpLabel#
'); WriteOutput(i); WriteOutput(''); _doSimpleDumpData(var=dataValue,label=arguments.label,returnInVar=arguments.returnInVar,showSql=arguments.showSql,top=arguments.top); WriteOutput('
'); } }
var data = arguments.var; var key = ''; var dataValue = ""; var dumpLabel = "Struct"; if ( LEN(TRIM(arguments.label)) ) { dumpLabel = arguments.label & " - " & dumpLabel; variables.simpleDumpHasLabel = 1; } if ( IsStruct(data) ) { WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); for ( key IN data ) { dataValue = data[key]; WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); } WriteOutput(''); WriteOutput('
#dumpLabel#
'); WriteOutput(key); WriteOutput(''); _doSimpleDumpData(var=dataValue,label=arguments.label,returnInVar=arguments.returnInVar,showSql=arguments.showSql,top=arguments.top); WriteOutput('
'); }
var data = arguments.var; var dataCnt = 0; var fullCnt = 0; var colList = ''; var colName = ''; var colCnt = ''; var dataValue = ""; var i = 1; var c = 1; var d = 1; var cfmlEngineType = server.coldfusion.productname; var sqlQry = QueryNew('tmp'); var r = ""; var sqlLabel = ''; var sqlAttrs = ''; var dumpLabel = 'Query'; var cName = ''; var cType = ''; var cTypeList = ''; var dataTemp = ''; if ( LEN(TRIM(arguments.label)) ) { dumpLabel = arguments.label & " - " & dumpLabel; variables.simpleDumpHasLabel = 1; } if ( IsQuery(data) ) { dataCnt = data.RecordCount; colList = data.columnlist; colCnt = ListLen(colList); if ( arguments.showSql ) { if ( FindNoCase(cfmlEngineType,'ColdFusion Server') ) { /* ACF ONLY: */ sqlLabel = '
SQL: #data.getMetadata().getExtendedMetaData().sql#
'; // Fails on Lucee //sqlLabel = '
SQL: #serialize(r.sql,"json")#
'; } else { // The QofQ kills the SQL code (so no reason to do it this way) /* sqlQry = queryExecute( "SELECT * FROM data", {}, {dbtype = "query", result="r"} ); */ // sqlLabel = '
SQL: #Replace(serializeJSON(r.sql),"""","","ALL")#
'; // Fails on ACF //sqlLabel = '
SQL: #serialize(r.sql)#
'; } } if ( IsNumeric(arguments.top) AND dataCnt GT arguments.top ) { fullCnt = data.RecordCount; topQofQfilterFailed = false; // Filter the query down to the TOP quantity records // - Added Try/Catch to workaround 'Unsupported SQL type java.sql.Types.UNKNOWN' error try { data = queryExecute( "SELECT #colList# FROM data", { }, { dbtype="query", maxRows=arguments.top } ); } catch (any ex) { topQofQfilterFailed = true; } // Build TOP fitlered query, if QorQ TOP filter failed if ( topQofQfilterFailed ) { // Build Column Type List for (var t=1; t <= ListLen(colList); t++){ cName = ListGetAt(colList,t); cType = 'INTEGER'; // Default as Integer var tcVal = ''; // Loop over this columns values for ( var tc=1; data.RecordCount; tc++ ){ tcVal = data[cName][tc]; // First value that is not numeric or is greater than the max int value set the type to VARCHAR if ( NOT IsNumeric(tcVal) OR tcVal GT 2147483647 ) // MAX Integer value (2,147,483,647) { cType = 'VARCHAR'; break; } } cTypeList = ListAppend(cTypeList,cType); } // Build dataTemp query dataTemp = QueryNew('#colList#','#cTypeList#'); for (var r=1; r <= arguments.top; r++){ queryAddRow(dataTemp); for (var s=1; s <= ListLen(colList); s++){ cName = ListGetAt(colList,s); querySetCell(dataTemp, cName, data[cName][r]); } } data = dataTemp; } dataCnt = data.RecordCount; dumpLabel = dumpLabel & ' - Records: #dataCnt# of #fullCnt#'; } else dumpLabel = dumpLabel & ' - Records: #dataCnt#'; if ( dataCnt GT 0 ) { WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); WriteOutput(''); if ( LEN(TRIM(sqlLabel)) ) { WriteOutput(''); WriteOutput(''); WriteOutput(''); } WriteOutput(''); WriteOutput(''); for ( c=1; c <= colCnt; c++ ) { colName = ListGetAt(colList,c); WriteOutput(''); } WriteOutput(''); WriteOutput(''); WriteOutput(''); for ( i=1; i <= dataCnt; i++ ) { colName = ''; dataValue = ''; WriteOutput(''); WriteOutput(''); for ( d=1; d <= ListLen(colList); d++ ) { colName = ListGetAt(colList,d); dataValue = data[colName][i]; WriteOutput(''); } WriteOutput(''); } WriteOutput(''); WriteOutput('
#dumpLabel#
#sqlLabel#
'); WriteOutput(' '); WriteOutput(''); WriteOutput(colName); WriteOutput('
'); WriteOutput(i); WriteOutput(''); _doSimpleDumpData(var=dataValue,label=arguments.label,returnInVar=arguments.returnInVar,showSql=arguments.showSql,top=arguments.top); WriteOutput('
'); } }
var redirectHtml = ''; Server.CommonSpot.udf.resources.addHeaderHTML(redirectHtml, 'PRIMARY'); window.location.href = '#arguments.url#'; // window.location.replace('#arguments.url#'); Server.CommonSpot.udf.resources.addFooterJS(redirectHtml, 'PRIMARY');