__table = '{$table.name}'; parent::__construct( ); {rdelim} {if $table.foreignKey || $table.dynamicForeignKey} /** * Returns foreign keys and entity references * * @return array * [CRM_Core_Reference_Interface] */ static function getReferenceColumns() {ldelim} if (!self::$_links) {ldelim} self::$_links = static::createReferenceColumns(__CLASS__); {foreach from=$table.foreignKey item=foreign} self::$_links[] = new CRM_Core_Reference_Basic(self::getTableName(), '{$foreign.name}', '{$foreign.table}', '{$foreign.key}'); {/foreach} {foreach from=$table.dynamicForeignKey item=foreign} self::$_links[] = new CRM_Core_Reference_Dynamic(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 * * @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.comment} 'description' => '{$field.comment|replace:"'":"\'"}', {/if} {if $field.required} 'required' => {$field.required}, {/if} {* field.required *} {if $field.length} 'maxlength' => {$field.length}, {/if} {* field.length *} {if $field.precision} 'precision' => array({$field.precision}), {/if} {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.FKClassName} 'FKClassName' => '{$field.FKClassName}', {/if} {* field.FKClassName *} {if $field.html} {assign var=htmlOptions value=$field.html} 'html' => array( {*{$htmlOptions|@print_array}*} {foreach from=$htmlOptions key=optionKey item=optionValue} '{$optionKey}' => '{$optionValue}', {/foreach} ), {/if} {* field.html *} {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. * * @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 * * @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 * * @return boolean */ function getLog( ) {ldelim} return self::$_log; {rdelim} /** * Returns the list of fields that can be imported * * @param bool $prefix * * @return array */ 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 * * @param bool $prefix * * @return array */ 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} {rdelim}