fclose($auditChangeLogFile); echo date('H:i:s') . " Done writing change log file \"{$auditChangeLogFileName}.\"\n"; } /* end CACF_CreateChangeLogAuditDataAndWriteToCsv() */ /**************************************************************** * ENTRY POINT ****************************************************************/ /* Make sure we're not flagged that we should skip executing this main program code (eg. this script has been included by another .php script). */ if ($suppress_create_audit_csv_files_main_program != 1) { /** Configure error reporting **/ error_reporting(E_ALL); /* Specify that we will need a lot of memory to run this. */ ini_set("memory_limit", "256M"); /* Call CACF_Init() to perform all initialization. */ /* Note: All the parameters are outputs from this function! */ CACF_Init(&$db, &$CACFconstants, &$altiumParmsByComponentLines, &$auditComponentsByType, &$auditComponentsByTypeUnmatched, &$altiumUserNamesByGuid, &$altiumAclUserPermissions); /* Dump all raw database tables to individual .csv files. */ CACF_DumpAllRawDatabaseTablesToCsv(&$db, &$CACFconstants); /* Analyze all Vault folders and extract all linkages so that we understand folder trees. */ CACF_AnalyzeVaultFolders(&$db, &$CACFconstants, &$altiumFoldersByGuid); /* Analyze all Vault items and cache certain fields, indexed by GUID. */ CACF_AnalyzeVaultItems(&$db, &$CACFconstants, &$altiumItemsByGuid); /* Analyze all Vault item revisions and cache certain fields, indexed by GUID. */ CACF_AnalyzeVaultItemRevisions(&$db, &$CACFconstants, &$altiumItemRevsByGuid); /* Create ACL audit data and write to csv file. */ CACF_CreateAclAuditDataAndWriteToCsv(&$db, &$CACFconstants, &$altiumUserNamesByGuid, &$altiumFoldersByGuid, &$altiumItemsByGuid, &$altiumItemRevsByGuid, &$altiumAclUserPermissions, &$altiumAclDataByObjectGuid); /* Analyze all Vault folder user parameters and store for later use. */ CACF_AnalyzeVaultFolderUserParameters(&$db, &$CACFconstants, &$altiumUserParmNames, &$altiumFolderUserParmValuesByGuid); /* Analyze all Vault item user parameters and store for later use. */ CACF_AnalyzeVaultItemUserParameters(&$db, &$CACFconstants, &$altiumUserParmNames, &$altiumItemUserParmValuesByGuid); /* Create model audit data and write to csv file. */
function UCTCF_InitAndGetVaultData(&$CACFconstants, &$auditComponentsByType, &$auditComponentsByTypeUnmatched, &$UCTCFconstants, $CmpLibFileName, &$altiumFoldersByGuid, &$altiumItemsByGuid, &$altiumItemRevsByGuid, &$altiumModelDataByItemRevHrid, &$altiumUserParmNames, &$altiumItemUserParmValuesByGuid, &$altiumItemSysParmValuesByGuid, &$altiumObsoleteCompsByGuid) { /* Setup some constants for use by this script. */ $UCTCFconstants = array(); /* Column widths for new tags in CmpLib XML file. */ $UCTCFconstants["cNewUserParmColumnWidth"] = "25"; $UCTCFconstants["cNewModelTypeColumnWidth"] = "50"; /* Name of default Altium Vault. */ /* Note: Company-specific info! */ $UCTCFconstants["defaultVaultHrid"] = "TRT Satellite Vault"; /* Name of default Altium Revision Naming Scheme. */ /* Note: Company-specific info! */ $UCTCFconstants["defaultRevisionNamingSchemeHrid"] = "TRT 1-Level Rev Scheme"; /* Name of default Altium LifeCycle Definition. */ /* Note: Company-specific info! */ $UCTCFconstants["defaultLifeCycleDefinitionHrid"] = "TRT Component Lifecycle"; /* Constants related to the "StateIndex" CmpLib XML attribute. */ $UCTCFconstants["cXmlStateName"] = "StateIndex"; $UCTCFconstants["cXmlStateEnabled"] = "2"; // Set this to enable a component to be released to Vault $UCTCFconstants["cXmlStateSemiEnabled"] = "1"; // Set this for all folders that are parents of a component in above state. $UCTCFconstants["cXmlStateDisabled"] = "0"; // Set this to disable a component/folder being released to Vault. /* Constants related to the "Collapsed" CmpLib XML attribute. */ $UCTCFconstants["cXmlCollapsedName"] = "Collapsed"; $UCTCFconstants["cXmlCollapsedDisabled"] = "true"; // Set this to collapse (hide) folders/components that are disabled. $UCTCFconstants["cXmlCollapsedEnabled"] = "false"; // Set this to un-collapse (show) folders/components that are enabled. // echo "Hello world. Attempting to generate .csv files.\n"; /** Initialize and run various CACF_*() functions to get low level Vault data. **/ /* Call CACF_Init() to perform all initialization needed for CACF_*() functions. */ /* Note: All the parameters are outputs from this function! */ CACF_Init($db, $CACFconstants, $altiumParmsByComponentLines, $auditComponentsByType, $auditComponentsByTypeUnmatched, $altiumUserNamesByGuid, $altiumAclUserPermissions); /** Alter certain constants setup by CACF_Init() **/ /* Flag that we DO NOT wish to keep 0 length output files that we generate. */ $CACFconstants["doKeepZeroLengthOutputFiles"] = false; /* Flag that we will not generate the per-component audit files. */ $CACFconstants["auditComponentsFileName"] = ""; /* Retrieve necessary global constants. */ $auditFileExt = $CACFconstants["auditFileExt"]; $auditComponentsByTypeFileName = $CACFconstants["auditComponentsByTypeFileName"]; /* Strip off the extension from $CmpLibFileName to get a base name. */ $CmpLibBaseName = preg_replace("/\\.[^.]+/", "", $CmpLibFileName); // echo "CmpLibFileName is \"$CmpLibFileName\".\n"; // echo "CmpLibBaseName is \"$CmpLibBaseName\".\n"; /* Change the $auditComponentsByTypeFileName to remove reference to "_vault_database". */ $auditComponentsByTypeFileName = preg_replace("/_vault_database/", "", $auditComponentsByTypeFileName); /* Change the $auditComponentsByTypeFileName to append the name of our CmpLib basename. */ $auditComponentsByTypeFileName = preg_replace("/{$auditFileExt}/", "_" . $CmpLibBaseName . $auditFileExt, $auditComponentsByTypeFileName); /* Create a version of this with a "_Vault" suffix. */ $auditComponentsByTypeFileNameVault = preg_replace("/{$auditFileExt}/", "_Vault" . $auditFileExt, $auditComponentsByTypeFileName); /* Create a version of this with a "_CmpLib" suffix. */ $auditComponentsByTypeFileNameCmpLib = preg_replace("/{$auditFileExt}/", "_CmpLib" . $auditFileExt, $auditComponentsByTypeFileName); /* Create a version of this with a "_Excel" suffix. */ $auditComponentsByTypeFileNameExcel = preg_replace("/{$auditFileExt}/", "_Excel" . $auditFileExt, $auditComponentsByTypeFileName); /* Store back to CACFconstants */ $CACFconstants["auditComponentsByTypeFileName"] = $auditComponentsByTypeFileName; $CACFconstants["auditComponentsByTypeFileNameVault"] = $auditComponentsByTypeFileNameVault; $CACFconstants["auditComponentsByTypeFileNameCmpLib"] = $auditComponentsByTypeFileNameCmpLib; $CACFconstants["auditComponentsByTypeFileNameExcel"] = $auditComponentsByTypeFileNameExcel; /** Get the GUID of our default Vault. **/ /* Analyze all Vault Vaults. */ CACF_AnalyzeVaultVaults($db, $CACFconstants, $altiumVaultsByHrid); /* Look up the GUID of our default Vault. */ $defaultVaultHrid = $UCTCFconstants["defaultVaultHrid"]; $defaultVaultGuid = $altiumVaultsByHrid[$defaultVaultHrid]["GUID"]; echo "defaultVaultGuid is \"{$defaultVaultGuid}\"\n"; $UCTCFconstants["defaultVaultGuid"] = $defaultVaultGuid; /** Get the GUID of our default Revision Naming Scheme. **/ /* Analyze all Vault Revision Naming Schemes. */ CACF_AnalyzeVaultRevisionNamingSchemes($db, $CACFconstants, $altiumRevisionNamingSchemesByHrid); /* Look up the GUID of our default Revision Naming Scheme. */ $defaultRevisionNamingSchemeHrid = $UCTCFconstants["defaultRevisionNamingSchemeHrid"]; $defaultRevisionNamingSchemeGuid = $altiumRevisionNamingSchemesByHrid[$defaultRevisionNamingSchemeHrid]["GUID"]; echo "defaultRevisionNamingSchemeGuid is \"{$defaultRevisionNamingSchemeGuid}\"\n"; $UCTCFconstants["defaultRevisionNamingSchemeGuid"] = $defaultRevisionNamingSchemeGuid; /** Get the GUID of our default LifeCycle Definition. **/ /* Analyze all Vault LifeCycle Definitions. */ CACF_AnalyzeVaultLifeCycleDefinitions($db, $CACFconstants, $altiumLifeCycleDefinitionsByHrid); /* Look up the GUID of our default LifeCycle Definition. */ $defaultLifeCycleDefinitionHrid = $UCTCFconstants["defaultLifeCycleDefinitionHrid"]; $defaultLifeCycleDefinitionGuid = $altiumLifeCycleDefinitionsByHrid[$defaultLifeCycleDefinitionHrid]["GUID"]; echo "defaultLifeCycleDefinitionGuid is \"{$defaultLifeCycleDefinitionGuid}\"\n"; $UCTCFconstants["defaultLifeCycleDefinitionGuid"] = $defaultLifeCycleDefinitionGuid; /** Retrieve and cache various other information from the Vault database. **/ /* Analyze all Vault folders and extract all linkages so that we understand folder trees. */ CACF_AnalyzeVaultFolders($db, $CACFconstants, $altiumFoldersByGuid); /* Analyze all Vault items and cache certain fields, indexed by GUID. */ CACF_AnalyzeVaultItems($db, $CACFconstants, $altiumItemsByGuid); /* Analyze all Vault item revisions and cache certain fields, indexed by GUID. */ CACF_AnalyzeVaultItemRevisions($db, $CACFconstants, $altiumItemRevsByGuid); /* Analyze all Vault item user parameters and store for later use. */ CACF_AnalyzeVaultItemUserParameters($db, $CACFconstants, $altiumUserParmNames, $altiumItemUserParmValuesByGuid); /* Cache ACL data for later use. */ CACF_CreateAclAuditData($db, $CACFconstants, $altiumUserNamesByGuid, $altiumFoldersByGuid, $altiumItemsByGuid, $altiumItemRevsByGuid, $altiumAclUserPermissions, $altiumAclDataByObjectHrid, $altiumAclDataByObjectGuid); /* Create model audit data. */ CACF_CreateModelAuditData($db, $CACFconstants, $altiumUserNamesByGuid, $altiumFoldersByGuid, $altiumAclDataByObjectGuid, $altiumItemRevsByGuid, $altiumModelDataByItemRevHrid); /* Create component audit data. */ CACF_CreateComponentAuditData($db, $CACFconstants, $altiumUserNamesByGuid, $altiumFoldersByGuid, $altiumAclDataByObjectGuid, $altiumItemRevsByGuid, $altiumItemSysParmValuesByGuid, $altiumObsoleteCompsByGuid); }