__table = '{$table.name}'; parent::__construct( ); {rdelim} {if $table.foreignKey || $table.dynamicForeignKey} /** * return foreign keys and entity references * * @static * @access public * @return array of CRM_Core_EntityReference */ static function getReferenceColumns() {ldelim} if (!self::$_links) {ldelim} self::$_links = array( {foreach from=$table.foreignKey item=foreign} new CRM_Core_EntityReference(self::getTableName(), '{$foreign.name}', '{$foreign.table}', '{$foreign.key}'), {/foreach} {foreach from=$table.dynamicForeignKey item=foreign} new CRM_Core_EntityReference(self::getTableName(), '{$foreign.idColumn}', NULL, '{$foreign.key|default:'id'}', '{$foreign.typeColumn}'), {/foreach} ); {rdelim} return self::$_links; {rdelim} {/if} {* table.foreignKey *} /** * returns all the column names of this table * * @access public * @return array */ static function &fields( ) {ldelim} if ( ! ( self::$_fields ) ) {ldelim} self::$_fields = array ( {foreach from=$table.fields item=field} {if $field.uniqueName} '{$field.uniqueName}' {else} '{$field.name}' {/if} => array( 'name' => '{$field.name}', 'type' => {$field.crmType}, {if $field.title} 'title' => ts('{$field.title}'), {/if} {if $field.required} 'required' => {$field.required}, {/if} {* field.required *} {if $field.length} 'maxlength' => {$field.length}, {/if} {* field.length *} {if $field.size} 'size' => {$field.size}, {/if} {* field.size *} {if $field.rows} 'rows' => {$field.rows}, {/if} {* field.rows *} {if $field.cols} 'cols' => {$field.cols}, {/if} {* field.cols *} {if $field.import} 'import' => {$field.import}, 'where' => '{$table.name}.{$field.name}', 'headerPattern' => '{$field.headerPattern}', 'dataPattern' => '{$field.dataPattern}', {/if} {* field.import *} {if $field.export} 'export' => {$field.export}, {if ! $field.import} 'where' => '{$table.name}.{$field.name}', 'headerPattern' => '{$field.headerPattern}', 'dataPattern' => '{$field.dataPattern}', {/if} {/if} {* field.export *} {if $field.rule} 'rule' => '{$field.rule}', {/if} {* field.rule *} {if $field.default} 'default' => '{if ($field.default[0]=="'" or $field.default[0]=='"')}{$field.default|substring:1:-1}{else}{$field.default}{/if}', {/if} {* field.default *} {if $field.enumValues} 'enumValues' => '{$field.enumValues}', {/if} {* field.enumValues *} {if $field.FKClassName} 'FKClassName' => '{$field.FKClassName}', {/if} {* field.FKClassName *} {if $field.pseudoconstant} {assign var=pseudoOptions value=$field.pseudoconstant} 'pseudoconstant' => array( {*{$pseudoOptions|@print_array}*} {foreach from=$pseudoOptions key=optionKey item=optionValue} '{$optionKey}' => '{$optionValue}', {/foreach} ) {/if} {* field.pseudoconstant *} ), {/foreach} {* table.fields *} ); {rdelim} return self::$_fields; {rdelim} /** * Returns an array containing, for each field, the arary key used for that * field in self::$_fields. * * @access public * @return array */ static function &fieldKeys( ) {ldelim} if ( ! ( self::$_fieldKeys ) ) {ldelim} self::$_fieldKeys = array ( {foreach from=$table.fields item=field} '{$field.name}' => {if $field.uniqueName} '{$field.uniqueName}' {else} '{$field.name}' {/if}, {/foreach} {* table.fields *} ); {rdelim} return self::$_fieldKeys; {rdelim} /** * returns the names of this table * * @access public * @static * @return string */ static function getTableName( ) {ldelim} {if $table.localizable} return CRM_Core_DAO::getLocaleTableName( self::$_tableName ); {else} return self::$_tableName; {/if} {rdelim} /** * returns if this table needs to be logged * * @access public * @return boolean */ function getLog( ) {ldelim} return self::$_log; {rdelim} /** * returns the list of fields that can be imported * * @access public * return array * @static */ static function &import( $prefix = false ) {ldelim} if ( ! ( self::$_import ) ) {ldelim} self::$_import = array ( ); $fields = self::fields( ); foreach ( $fields as $name => $field ) {ldelim} if ( CRM_Utils_Array::value( 'import', $field ) ) {ldelim} if ( $prefix ) {ldelim} self::$_import['{$table.labelName}'] =& $fields[$name]; {rdelim} else {ldelim} self::$_import[$name] =& $fields[$name]; {rdelim} {rdelim} {rdelim} {if $table.foreignKey} {foreach from=$table.foreignKey item=foreign} {if $foreign.import} self::$_import = array_merge( self::$_import, {$foreign.className}::import( true ) ); {/if} {/foreach} {/if} {rdelim} return self::$_import; {rdelim} /** * returns the list of fields that can be exported * * @access public * return array * @static */ static function &export( $prefix = false ) {ldelim} if ( ! ( self::$_export ) ) {ldelim} self::$_export = array ( ); $fields = self::fields( ); foreach ( $fields as $name => $field ) {ldelim} if ( CRM_Utils_Array::value( 'export', $field ) ) {ldelim} if ( $prefix ) {ldelim} self::$_export['{$table.labelName}'] =& $fields[$name]; {rdelim} else {ldelim} self::$_export[$name] =& $fields[$name]; {rdelim} {rdelim} {rdelim} {if $table.foreignKey} {foreach from=$table.foreignKey item=foreign} {if $foreign.export} self::$_export = array_merge( self::$_export, {$foreign.className}::export( true ) ); {/if} {/foreach} {/if} {rdelim} return self::$_export; {rdelim} {if $table.hasEnum} /** * returns an array containing the enum fields of the {$table.name} table * * @return array (reference) the array of enum fields */ static function &getEnums() {ldelim} static $enums = array( {foreach from=$table.fields item=field} {if $field.crmType == 'CRM_Utils_Type::T_ENUM'} '{$field.name}', {/if} {/foreach} ); return $enums; {rdelim} /** * returns a ts()-translated enum value for display purposes * * @param string $field the enum field in question * @param string $value the enum value up for translation * * @return string the display value of the enum */ static function tsEnum($field, $value) {ldelim} static $translations = null; if (!$translations) {ldelim} $translations = array( {foreach from=$table.fields item=field} {if $field.crmType == 'CRM_Utils_Type::T_ENUM'} '{$field.name}' => array( {foreach from=$field.values item=value} '{$value}' => ts('{$value}'), {/foreach} ), {/if} {/foreach} ); {rdelim} return $translations[$field][$value]; {rdelim} /** * adds $value['foo_display'] for each $value['foo'] enum from {$table.name} * * @param array $values (reference) the array up for enhancing * @return void */ static function addDisplayEnums(&$values) {ldelim} $enumFields =& {$table.className}::getEnums(); foreach ($enumFields as $enum) {ldelim} if (isset($values[$enum])) {ldelim} $values[$enum.'_display'] = {$table.className}::tsEnum($enum, $values[$enum]); {rdelim} {rdelim} {rdelim} {/if} {rdelim}