diff --git a/modules/scrambler_field/includes/scrambler_field.admin.inc b/modules/scrambler_field/includes/scrambler_field.admin.inc index 97ec881..46cb688 100644 --- a/modules/scrambler_field/includes/scrambler_field.admin.inc +++ b/modules/scrambler_field/includes/scrambler_field.admin.inc @@ -119,6 +119,7 @@ function scrambler_field_fields_form_submit(array $form, array &$form_state) { ); $entity = entity_create('scrambler_field', array()); $entity->fid = $form_state['values']['scrambler_field']; + $entity->field_name = $fields[$entity->fid]; $entity->scrambler_method = $form_state['values']['scrambler_method']; $entity->save(); } diff --git a/modules/scrambler_field/includes/scrambler_field.view.inc b/modules/scrambler_field/includes/scrambler_field.view.inc index 89cef4b..f188ded 100644 --- a/modules/scrambler_field/includes/scrambler_field.view.inc +++ b/modules/scrambler_field/includes/scrambler_field.view.inc @@ -10,7 +10,6 @@ function scrambler_field_views_api() { return array( 'api' => 3.0, - 'path' => drupal_get_path('module', 'HOOK'), ); } @@ -37,7 +36,7 @@ function scrambler_field_views_default_views() { $handler->display->display_options['query']['type'] = 'views_query'; $handler->display->display_options['exposed_form']['type'] = 'basic'; $handler->display->display_options['pager']['type'] = 'full'; - $handler->display->display_options['pager']['options']['items_per_page'] = '10'; + $handler->display->display_options['pager']['options']['items_per_page'] = '50'; $handler->display->display_options['style_plugin'] = 'table'; /* Field: Bulk operations: Scrambler field */ $handler->display->display_options['fields']['views_bulk_operations']['id'] = 'views_bulk_operations'; @@ -59,10 +58,19 @@ function scrambler_field_views_default_views() { 'label' => '', ), ); - /* Field: Scrambler field: Field name */ - $handler->display->display_options['fields']['field_name']['id'] = 'field_name'; - $handler->display->display_options['fields']['field_name']['table'] = 'scrambler_field'; - $handler->display->display_options['fields']['field_name']['field'] = 'field_name'; + + /* Field: Scrambler field: field ID */ + $handler->display->display_options['fields']['fid']['id'] = 'fid'; + $handler->display->display_options['fields']['fid']['table'] = 'scrambler_field'; + $handler->display->display_options['fields']['fid']['field'] = 'fid'; + $handler->display->display_options['fields']['fid']['label'] = 'Field config id'; + $handler->display->display_options['fields']['fid']['separator'] = ''; + /* Field: Scrambler field: field name */ + $handler->display->display_options['fields']['field_machine_name']['id'] = 'field_machine_name'; + $handler->display->display_options['fields']['field_machine_name']['table'] = 'scrambler_field'; + $handler->display->display_options['fields']['field_machine_name']['field'] = 'fid'; + $handler->display->display_options['fields']['field_machine_name']['label'] = 'Field name'; + $handler->display->display_options['fields']['field_machine_name']['separator'] = ''; /* Field: Scrambler field: Scrambler_method */ $handler->display->display_options['fields']['scrambler_method']['id'] = 'scrambler_method'; $handler->display->display_options['fields']['scrambler_method']['table'] = 'scrambler_field'; @@ -87,8 +95,8 @@ function scrambler_field_preprocess_views_view_table(array &$vars) { $fields = $scramble->getScramblerFields(); foreach ($vars['rows'] as &$row) { - if ($row['field_name'] != 0) { - $row['field_name'] = $fields[$row['field_name']]; + if (!empty($row['field_machine_name'])) { + $row['field_machine_name'] = $fields[$row['field_machine_name']]; } } } diff --git a/modules/scrambler_field/scrambler_field.info b/modules/scrambler_field/scrambler_field.info index f6d62f5..d71f2da 100644 --- a/modules/scrambler_field/scrambler_field.info +++ b/modules/scrambler_field/scrambler_field.info @@ -5,6 +5,7 @@ package = Data security core = 7.x dependencies[] = entity +dependencies[] = ctools dependencies[] = scrambler dependencies[] = scrambler_ui dependencies[] = views diff --git a/modules/scrambler_field/scrambler_field.install b/modules/scrambler_field/scrambler_field.install index 4ce67a6..321c5b8 100644 --- a/modules/scrambler_field/scrambler_field.install +++ b/modules/scrambler_field/scrambler_field.install @@ -10,6 +10,18 @@ function scrambler_field_schema() { $schema['scrambler_field'] = array( 'description' => 'Scramble fields configuration table', + 'export' => array( + 'key' => 'field_name', + 'key name' => 'Field name', + 'primary key' => 'fid', + 'identifier' => 'preset', + 'api' => array( + 'owner' => 'scrambler_field', + 'api' => 'default_scrambler_field_presets', + 'minimum_version' => 1, + 'current_version' => 1, + ), + ), 'fields' => array( 'fid' => array( 'type' => 'int', @@ -21,7 +33,13 @@ function scrambler_field_schema() { 'type' => 'varchar', 'length' => 100, 'not null' => TRUE, - 'description' => "Define the method to be executed on scrambling.", + 'description' => 'Define the method to be executed on scrambling.', + ), + 'field_name' => array( + 'type' => 'varchar', + 'length' => 180, + 'not null' => FALSE, + 'description' => 'The field name.', ), ), 'primary key' => array('fid'), @@ -29,3 +47,45 @@ function scrambler_field_schema() { return $schema; } + +/** + * Installs new field 'field name'. + */ +function scrambler_field_update_7001() { + $field_name = array( + 'type' => 'varchar', + 'length' => 180, + 'not null' => FALSE, + 'description' => 'The field name.', + ); + + db_add_field('scrambler_field', 'field_name', $field_name); + + $scramble = new \Drupal\scrambler_field\BLL\Scramble(); + $field_info = $scramble->getScramblerFields(); + + $configured_fields = db_select('scrambler_field', 'sf') + ->fields('sf', array('fid')) + ->execute() + ->fetchAll(); + + + // Update all fields to work with the field machine name instead of an id. + foreach ($configured_fields as $field) { + db_update('scrambler_field') + ->fields(array( + // Drupal returns -1 for the title. This is not a 'real' field in D7. + 'field_name' => $field->fid === '-1' ? 'title' : $field_info[$field->fid], + )) + ->condition('fid', $field->fid, '=') + ->execute(); + } + + // Make sure we clear the cache for our View. + $view = views_get_view('scrambler_fields_administrative_view'); + $view->delete(); + // Clear its cache. + ctools_include('object-cache'); + ctools_object_cache_clear('view', $view->name); + +} diff --git a/modules/scrambler_field/scrambler_field.module b/modules/scrambler_field/scrambler_field.module index 5c0d8ab..8263679 100644 --- a/modules/scrambler_field/scrambler_field.module +++ b/modules/scrambler_field/scrambler_field.module @@ -61,3 +61,12 @@ function scrambler_field_scrambler_api() { return $params; } + +/** + * Implements hook_ctools_plugin_api(). + */ +function scrambler_field_ctools_plugin_api($owner, $api) { + if ($owner == 'scrambler_field' && $api == 'default_scrambler_field_presets') { + return array('version' => 1); + } +}