123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- /**
- * @file
- * Install file providing corresponding entity reference schema.
- */
- /**
- * Implements hook_schema().
- */
- function cer_schema() {
- $schema['cer'] = array(
- 'description' => t('Saves the content types and entity reference fields for which the corresponding entity reference is enabled'),
- 'fields' => array(
- 'entity_types_content_fields' => array('type' => 'varchar', 'length' => 200, 'not null' => TRUE, 'default' => ''),
- 'enabled' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
- ),
- 'primary key' => array('entity_types_content_fields'),
- 'export' => array(
- 'key' => 'entity_types_content_fields',
- 'status' => 'enabled',
- 'primary key' => 'entity_types_content_fields',
- 'key name' => 'Corresponding entity reference',
- 'identifier' => 'cnr_obj',
- 'api' => array(
- 'api' => 'default_cer_presets',
- 'owner' => 'cer',
- 'minimum_version' => 1,
- 'current_version' => 1,
- ),
- ),
- );
- return $schema;
- }
- /**
- * Rename table to shorten module name.
- */
- function cer_update_7001() {
- db_rename_table('corresponding_entity_references', 'cer');
- }
- /**
- * Disable presets which refer to fields that don't exist. (Issue #2122531)
- */
- function cer_update_7002() {
- $presets = db_query('SELECT entity_types_content_fields FROM {cer} WHERE 1')->fetchCol();
- foreach ($presets as $preset) {
- $keys = explode('*', $preset);
-
- $left = field_info_instance($keys[0], $keys[2], $keys[1]);
- $right = field_info_instance($keys[3], $keys[5], $keys[4]);
- if (empty($left) || empty($right)) {
- db_query('UPDATE {cer} SET enabled = 0 WHERE entity_types_content_fields = :preset', array(':preset' => $preset));
- drupal_set_message(t('CER preset %preset was disabled because it uses non-existent fields.', array('%preset' => $preset)), 'warning');
- }
- }
- }
|