variables.logFilePrefix = 'ceRecordApi_gceRecord'; var retStruct = {}; var dataVals = variables.data.deepCopy(arguments.dataValues); var dataPageID = 0; if ( StructKeyExists(dataVals,'dataPageID') ) { dataPageID = dataVals.dataPageID; StructDelete(dataVals,'dataPageID'); } if ( dataPageID GT 0 ) retStruct = updateRecord(ceName=arguments.ceName,dataPageID=dataPageID,dataValues=dataVals,fieldSpecs=arguments.fieldSpecs); else retStruct = addRecord(ceName=arguments.ceName,dataValues=dataVals,fieldSpecs=arguments.fieldSpecs); if ( StructKeyExists(retStruct,'error_msg') AND TRIM(retStruct.error_msg) NEQ '' ) retStruct['msg'] = retStruct.error_msg; return retStruct; var retStruct = { 'error_msg': '', 'datapageid': '', 'status': false, 'contentUpdated': false, 'contentUpdateResponse': 'Success:0' }; var newPageID = 0; var newDataValues = {}; var fldKey = ''; var fldValStr = ''; var addRecord = true; var updFldsArr = []; var errFldsArr = []; var fldType = ''; var fldOptions = {}; var fldSetResult = {}; var fldError = ''; var addError = {}; var csVersion = server.ADF.csVersion; var requiredCSVersion = 11; // Note: ADF versionCompare: 0 OR Greater is True (-1 false) var requiredCSVersionCheck = application.ADF.utils.versionCompare(versionA=csVersion,versionB=requiredCSVersion); var errorPrefix = 'Global Custom Element Record Add Failed'; var loggingEnabled = getEnableLogging(); var logStruct = { 'msg': '', 'logFile': ''}; var logFileName = variables.logFilePrefix & "_addRecord.log"; var logErrorFileName = variables.logFilePrefix & "_addRecord_error.log"; // Init the UpdaterInstance for this Custom Element //var ceComponent = Server.CommonSpot.ObjectFactory.getObject("CustomElement"); //var ceObj = ceComponent.getUpdaterInstance(arguments.ceName); var ceObj = CreateObject("component", "commonspot.components.gce.gce-recordset"); if ( requiredCSVersionCheck LT 0 ) throw "The ceRecordAPI requires CommonSpot 11 or higher! For previous versions please use the CS CCAPI or the ADF apiElement for adding data to custom elements."; // Start the Record Add process try { // Load the custom element form definition //----------------------------- ceObj.loadFormDefinition(arguments.ceName); // Load new instance Record for the GCE //----------------------------- ceObj.newInstance(); // returns void // Prepare the dataValues for the GCE fields //----------------------------- arguments.dataValues = prepareFieldValues(ceObject=ceObj,fieldValues=arguments.dataValues,fieldSpecs=arguments.fieldSpecs); // Add the data to the GCE fields //----------------------------- for ( fldKey IN arguments.dataValues ) { fldValStr = arguments.dataValues[fldKey].fieldValueStr; fldType = arguments.dataValues[fldKey].fieldType; fldOptions = arguments.dataValues[fldKey].fieldOptions; fldError = arguments.dataValues[fldKey].error; // Handle field error if ( TRIM(fldError) NEQ '' ) { ArrayAppend(errFldsArr,fldKey); // Log the error message addError = {}; addError.msg = "#errorPrefix#: #ceObj['formtype']# [#arguments.ceName#]. Error [Message: #fldError#]"; addError.logFile = logErrorFileName; variables.log.logAppend(msg=addError.msg,logFile=addError.logFile); } else { // Set the value for the field fldSetResult = setFieldValue(ceObject=ceObj,fieldName=fldKey,fieldValue=fldValStr,fieldType=fldType,fieldOptions=fldOptions); // Track Updated fields ArrayAppend(updFldsArr,fldKey); } } // END: setSimpleValue() Fields Loop // If any field errors don't commit the instance // -- uncomment to NOT update the CE record on any field error if ( ArrayLen(errFldsArr) ) addRecord = false; if ( addRecord ) { newPageID = ceObj.commitInstance(); // Docs Needed: addRecord Data Permissions Required newDataValues = ceObj.getCurrentValues(); // Docs Needed: Select Data Data Permissions Required if ( newPageID GT 0 ) { retStruct['status'] = true; // Legacy CCAPI content updated result keys // - RETURNS: CONTENTUPDATED : true/false & CONTENTUPDATERESPONSE: Success:1 retStruct['contentUpdated'] = true; retStruct['contentUpdateResponse'] = 'Success:1'; } } retStruct['datapageid'] = newPageID; retStruct['data'] = newDataValues; retStruct['errorfields'] = errFldsArr; retStruct['updatefields'] = updFldsArr; if ( retStruct['status'] EQ true ) { // Update Success Logging if ( loggingEnabled ) { logStruct.msg = "Global Custom Element Record Added: #ceObj['formtype']# [#arguments.ceName#]. DataPageID: #retStruct['datapageid']#. ContentUpdateResponse: #retStruct['contentUpdateResponse']#."; if ( ArrayLen(errFldsArr) ) logStruct.msg = logStruct.msg & ' - With Custom Field Type errors. See Custom Field Type Error Log...'; logStruct.logFile = logFileName; } } else { // Error logging retStruct['error_msg'] = errorPrefix; // -- Does this need to log the field type errors to a different file?? logStruct.msg = "#retStruct.error_msg#: #ceObj['formtype']# [#arguments.ceName#]. DataPageID: #retStruct['datapageid']#."; if ( ArrayLen(errFldsArr) ) { retStruct['error_msg'] = retStruct.error_msg & ' due to Custom Field Type errors. See the Custom Element Record AddRecord Error Log...'; } logStruct.logFile = logErrorFileName; } } catch ( any ex ) { retStruct['datapageid'] = 0; retStruct['status'] = false; // Error logging retStruct['error_msg'] = ex.message; retStruct['error'] = ex; // Log the error message logStruct.msg = "#errorPrefix#: #ceObj['formtype']# [#arguments.ceName#]. Error [Message: #ex.message#]"; if ( StructKeyExists(ex,'detail') AND TRIM(ex.detail) NEQ '' ) logStruct.msg = logStruct.msg & " [Details: #ex.detail#]"; logStruct.logFile = logErrorFileName; // Add log entry to CommonSpot error logs variables.log.addLogEntry(message='Error occurred in command gceRecord_1_0.addRecord (#DateTimeFormat(Now(),"short")#): #ex.message# - #Server.CommonSpot.UDF.util.structToText(arguments)#',CFCatch=ex,forceStackTrace=true,useDatePrefix=true); } if ( TRIM(logStruct.msg) NEQ '' ) variables.log.logAppend(msg=logStruct.msg,logFile=logStruct.logFile); //,addTimeStamp,logDir,label,useUTC,addEntryTimeStampPrefix return retStruct; var retStruct = { 'error_msg': '', 'datapageid': arguments.datapageid, 'status': false, 'contentUpdated': false, 'contentUpdateResponse': 'Success:0' }; var updPageID = 0; var currValuesQry = ''; var updDataValues = {}; var fldKey = ''; var fldValStr = ''; var updRecord = true; var updFldsArr = []; var errFldsArr = []; var fldType = ''; var fieldOptions = {}; var fldSetResult = {}; var fldError = ''; var updError = {}; var csVersion = server.ADF.csVersion; var requiredCSVersion = 11; // Note: ADF versionCompare: 0 OR Greater is True (-1 false) var requiredCSVersionCheck = application.ADF.utils.versionCompare(versionA=csVersion,versionB=requiredCSVersion); var errorPrefix = 'Global Custom Element Record Update Failed'; var loggingEnabled = getEnableLogging(); var logStruct = { 'msg': '', 'logFile': ''}; var logFileName = variables.logFilePrefix & "_updateRecord.log"; var logErrorFileName = variables.logFilePrefix & "_updateRecord_error.log"; // Init the gce-recordset instance for this Custom Element var ceObj = CreateObject("component", "commonspot.components.gce.gce-recordset"); //var ceComponent = Server.CommonSpot.ObjectFactory.getObject("CustomElement"); //var ceObj = ceComponent.getUpdaterInstance(arguments.ceName); if ( VAL(arguments.dataPageID) EQ 0 AND StructKeyExists(arguments.dataValues,'dataPageID') ) arguments.dataPageID = arguments.dataValues.dataPageID; if ( requiredCSVersionCheck LT 0 ) throw "The ceRecordAPI requires CommonSpot 11 or higher! For previous CS versions please use the CS CCAPI populateCustomElement method or the ADF apiElement for updating custom elements data."; // Start the Record Add process try { if ( VAL(arguments.dataPageID) EQ 0 ) throw(message='#errorPrefix#. The provided dataPageID must be greater than 0!'); // Load the custom element form definition //----------------------------- ceObj.loadFormDefinition(arguments.ceName); // Load the updater instance Record for the GCE //----------------------------- ceObj.loadExistingInstance(arguments.dataPageID); // returns void // Check if the datapageid belongs to an Existing (prev) version if ( StructKeyExists(ceObj,'PrevVersionRecord') ) currValuesQry = ceObj.PrevVersionRecord; if ( NOT IsQuery(currValuesQry) OR currValuesQry.recordCount EQ 0 ) throw(message='#errorPrefix#. A record for the provided dataPageID (#arguments.dataPageID#) does not exist!'); retStruct['datapageid'] = arguments.datapageid; // Prepare the dataVales for the GCE fields //----------------------------- arguments.dataValues = prepareFieldValues(ceObject=ceObj,fieldValues=arguments.dataValues,fieldSpecs=arguments.fieldSpecs); // Add the data to the GCE fields //----------------------------- for ( fldKey IN arguments.dataValues ) { fldValStr = arguments.dataValues[fldKey].fieldValueStr; fldType = arguments.dataValues[fldKey].fieldType; fldOptions = arguments.dataValues[fldKey].fieldOptions; fldError = arguments.dataValues[fldKey].error; // Handle field error if ( TRIM(fldError) NEQ '' ) { ArrayAppend(errFldsArr,fldKey); // Log the error message updError = {}; updError.msg = "#errorPrefix#: #ceObj['formtype']# [#arguments.ceName#]. Error [Message: #fldError#]"; updError.logFile = logErrorFileName; variables.log.logAppend(msg=updError.msg,logFile=updError.logFile); } else { // Set the value for the field fldSetResult = setFieldValue(ceObject=ceObj,fieldName=fldKey,fieldValue=fldValStr,fieldType=fldType,fieldOptions=fldOptions); // Track Updated fields ArrayAppend(updFldsArr,fldKey); } } // END: setSimpleValue() Fields Loop // If any field errors don't commit the instance // -- uncomment to not update the record on any field error if ( ArrayLen(errFldsArr) ) updRecord = false; if ( updRecord ) { updPageID = ceObj.commitInstance(); // Docs Needed: UpdateData Data Permissions Required updDataValues = ceObj.getCurrentValues(); // Docs Needed: Select Data Permissions Required if ( updPageID GT 0 ) { retStruct['status'] = true; // Legacy CCAPI content updated result keys // - RETURNS: CONTENTUPDATED : true/false & CONTENTUPDATERESPONSE: Success:1 retStruct['contentUpdated'] = true; retStruct['contentUpdateResponse'] = 'Success:1'; } } retStruct['datapageid'] = updPageID; retStruct['data'] = updDataValues; retStruct['errorfields'] = errFldsArr; retStruct['updatefields'] = updFldsArr; if ( retStruct['status'] EQ true ) { // Update Success Logging if ( loggingEnabled ) { logStruct.msg = "Custom Element Record Updated: #ceObj['formtype']# [#arguments.ceName#]. DataPageID: #retStruct['datapageid']#. ContentUpdateResponse: #retStruct['contentUpdateResponse']#."; if ( ArrayLen(errFldsArr) ) logStruct.msg = logStruct.msg & ' - With Custom Field Type errors. See Custom Field Type Error Log...'; logStruct.logFile = logFileName; } } else { // Error Message retStruct['error_msg'] = errorPrefix; // Log the error message logStruct.msg = "#retStruct.error_msg#: #ceObj['formtype']# [#arguments.ceName#]. DataPageID: #retStruct['datapageid']#."; if ( ArrayLen(errFldsArr) ) { retStruct['error_msg'] = retStruct.error_msg & ' due to Custom Field Type errors. See the Custom Element Record UpdateData Error Log...'; } logStruct.logFile = logErrorFileName; } } catch ( any ex ) { retStruct['status'] = false; // Error logging retStruct['error_msg'] = ex.message; retStruct['error'] = ex; // Log the error message logStruct.msg = "#errorPrefix#: #ceObj['formtype']# [#arguments.ceName#]. Error [Message: #ex.message#]"; if ( StructKeyExists(ex,'detail') AND TRIM(ex.detail) NEQ '' ) logStruct.msg = logStruct.msg & " [Details: #ex.detail#]"; logStruct.logFile = logErrorFileName; // Add log entry to CommonSpot error logs variables.log.addLogEntry(message='Error occurred in command gceRecord_1_0.updateRecord (#DateTimeFormat(Now(),"short")#): #ex.message# - #Server.CommonSpot.UDF.util.structToText(arguments)#',CFCatch=ex,forceStackTrace=true,useDatePrefix=true); } if ( TRIM(logStruct.msg) NEQ '' ) variables.log.logAppend(msg=logStruct.msg,logFile=logStruct.logFile); //,addTimeStamp,logDir,label,useUTC,addEntryTimeStampPrefix return retStruct;