variables.logFilePrefix = 'ceRecordApi_mdfRecord'; var retStruct = { 'error_msg': '', 'pageid': arguments.pageid, '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 = 'Metadata Form Record Update Failed'; var loggingEnabled = getEnableLogging(); var logStruct = { 'msg': '', 'logFile': ''}; var logFileName = variables.logFilePrefix & "_updateRecord.log"; var logErrorFileName = variables.logFilePrefix & "_updateRecord_error.log"; var ceObj = CreateObject("component", "commonspot.components.mdform.mdform-recordset"); if ( requiredCSVersionCheck LT 0 ) throw "The ceRecordAPI requires CommonSpot 11 or higher! For previous CS versions please use the CS CMD API 'Content' component or the ADF apiMetadata for updating metadata forms."; // To UPDATE an MDF record on a page that already exists... // 1) From the provided PageID // 2) loadFormDefinition(mdFormName) // 3) loadExistingInstance(page_id); // 4) loop over setValue() // 5) commitInstance(); try { if ( VAL(arguments.pageid) LTE 0 ) throw(message='#errorPrefix#. The provided pageid must be a valid value be greater than 0!'); // Load the metadata form definition //----------------------------------------------- ceObj.loadFormDefinition(arguments.mdFormName); // Load the updater instance Record of metadata form record //----------------------------------------------- ceObj.loadExistingInstance(arguments.pageid); retStruct['pageid'] = arguments.pageid; // Prepare the dataVales for the MDF fields //----------------------------- arguments.dataValues = prepareFieldValues(ceObject=ceObj,fieldValues=arguments.dataValues,fieldSpecs=arguments.fieldSpecs); // Add the data to the MDF 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.mdFormName#]. 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: CMD setValue() Fields Loop // If any field errors don't commit the instance // -- uncomment to not update the record if any field errors occur if ( ArrayLen(errFldsArr) ) updRecord = false; if ( updRecord ) { ceObj.commitInstance(); updPageID = arguments.pageid; updDataValues = ceObj.getCurrentValues(); 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['pageid'] = updPageID; retStruct['data'] = updDataValues; retStruct['errorfields'] = errFldsArr; retStruct['updatefields'] = updFldsArr; if ( retStruct['status'] EQ true ) { // Update Success Logging if ( loggingEnabled ) { logStruct.msg = "Metadata Form Record Updated: #ceObj['formtype']# [#arguments.mdFormName#]. PageID: #retStruct['pageid']#. 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.mdFormName#]. PageID: #retStruct['pageid']#."; if ( ArrayLen(errFldsArr) ) { retStruct['error_msg'] = retStruct.error_msg & ' due to Custom Field Type errors. See the Metadata From 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.mdFormName#]. 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 mdfRecord_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;