I see that {course_report} still has entries after course deletion. FYI.

CommentFileSizeAuthor
#7 course_report_table-2721817-7.patch1.39 KBdjdevin

Comments

webservant316 created an issue. See original summary.

webservant316’s picture

Is this by design? I thought elsewhere it was said that cancelling enrollments or signups would remove all user progress information.

Also as an aside the provided transcript view does not function properly after enrollments are removed, but the user course_report remains.

See this post for the solution https://www.drupal.org/node/2298343.

Though that fix just fixes the view, the underlying disconnected records still remain in course_report.

webservant316’s picture

more clarity, course reports seem to be never deleted after...

cancelling signups
cancelling enrollments
deleting a course
cancelling a user account and removing all their content

webservant316’s picture

Priority: Normal » Major

raising to major because this could be a problem in the case of the reuse of a NID or UID.

webservant316’s picture

Okay I created this view to monitor disconnected {course_reports} until this is fixed. It is clear that {course_reports} should be removed if the user or the course is deleted. However, it is unclear what is preferred is the student enrollment is deleted, but the course and user remain.

It is noted that the only problem created by these disconnected {course_reports} is that the student transcript view currently provided by the course module mis-performs if there are extraneous {course_reports} laying around. The fix is either to delete these extraneous {course_reports} with the view below or require the enrollment relation in the transcript view as explained here https://www.drupal.org/node/2298343.

$view = new view();
$view->name = 'course_report_disconnected';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'course_report';
$view->human_name = 'course_report_disconnected';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Disconnected Course Reports';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'access all course reports';
$handler->display->display_options['cache']['type'] = 'none';
$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'] = '50';
$handler->display->display_options['style_plugin'] = 'table';
$handler->display->display_options['style_options']['columns'] = array(
  'views_bulk_operations' => 'views_bulk_operations',
  'crid' => 'crid',
  'coid' => 'coid',
  'nid' => 'nid',
  'nid_1' => 'nid_1',
  'uid' => 'uid',
  'uid_1' => 'uid_1',
  'eid' => 'eid',
  'section_name' => 'section_name',
  'section' => 'section',
  'complete' => 'complete',
  'date_completed' => 'date_completed',
  'grade_result' => 'grade_result',
);
$handler->display->display_options['style_options']['default'] = 'crid';
$handler->display->display_options['style_options']['info'] = array(
  'views_bulk_operations' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'crid' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'coid' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'nid' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'nid_1' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'uid' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'uid_1' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'eid' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'section_name' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'section' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'complete' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'date_completed' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'grade_result' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
);
/* Relationship: Course report: Course enrollment */
$handler->display->display_options['relationships']['course_enrollment']['id'] = 'course_enrollment';
$handler->display->display_options['relationships']['course_enrollment']['table'] = 'course_report';
$handler->display->display_options['relationships']['course_enrollment']['field'] = 'course_enrollment';
/* Relationship: Course report: Nid */
$handler->display->display_options['relationships']['nid']['id'] = 'nid';
$handler->display->display_options['relationships']['nid']['table'] = 'course_report';
$handler->display->display_options['relationships']['nid']['field'] = 'nid';
/* Relationship: Course report: Uid */
$handler->display->display_options['relationships']['uid']['id'] = 'uid';
$handler->display->display_options['relationships']['uid']['table'] = 'course_report';
$handler->display->display_options['relationships']['uid']['field'] = 'uid';
/* Field: Bulk operations: Course report */
$handler->display->display_options['fields']['views_bulk_operations']['id'] = 'views_bulk_operations';
$handler->display->display_options['fields']['views_bulk_operations']['table'] = 'course_report';
$handler->display->display_options['fields']['views_bulk_operations']['field'] = 'views_bulk_operations';
$handler->display->display_options['fields']['views_bulk_operations']['label'] = 'Bulk';
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['display_type'] = '0';
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['enable_select_all_pages'] = 1;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['row_clickable'] = 1;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['force_single'] = 0;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['entity_load_capacity'] = '10';
$handler->display->display_options['fields']['views_bulk_operations']['vbo_operations'] = array(
  'action::views_bulk_operations_delete_item' => array(
    'selected' => 1,
    'postpone_processing' => 0,
    'skip_confirmation' => 0,
    'override_label' => 0,
    'label' => '',
  ),
);
/* Field: Course report: Course report ID */
$handler->display->display_options['fields']['crid']['id'] = 'crid';
$handler->display->display_options['fields']['crid']['table'] = 'course_report';
$handler->display->display_options['fields']['crid']['field'] = 'crid';
$handler->display->display_options['fields']['crid']['label'] = 'ReportID';
/* Field: Course report: Coid */
$handler->display->display_options['fields']['coid']['id'] = 'coid';
$handler->display->display_options['fields']['coid']['table'] = 'course_report';
$handler->display->display_options['fields']['coid']['field'] = 'coid';
/* Field: Course report: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'course_report';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
/* Field: Content: Nid */
$handler->display->display_options['fields']['nid_1']['id'] = 'nid_1';
$handler->display->display_options['fields']['nid_1']['table'] = 'node';
$handler->display->display_options['fields']['nid_1']['field'] = 'nid';
$handler->display->display_options['fields']['nid_1']['relationship'] = 'nid';
$handler->display->display_options['fields']['nid_1']['label'] = 'NidOK';
$handler->display->display_options['fields']['nid_1']['empty'] = '<b>BAD</b>';
/* Field: Course report: Uid */
$handler->display->display_options['fields']['uid']['id'] = 'uid';
$handler->display->display_options['fields']['uid']['table'] = 'course_report';
$handler->display->display_options['fields']['uid']['field'] = 'uid';
/* Field: User: Uid */
$handler->display->display_options['fields']['uid_1']['id'] = 'uid_1';
$handler->display->display_options['fields']['uid_1']['table'] = 'users';
$handler->display->display_options['fields']['uid_1']['field'] = 'uid';
$handler->display->display_options['fields']['uid_1']['relationship'] = 'uid';
$handler->display->display_options['fields']['uid_1']['label'] = 'UidOK';
$handler->display->display_options['fields']['uid_1']['empty'] = '<b>BAD</b>';
/* Field: Course enrollment: Course enrollment ID */
$handler->display->display_options['fields']['eid']['id'] = 'eid';
$handler->display->display_options['fields']['eid']['table'] = 'course_enrollment';
$handler->display->display_options['fields']['eid']['field'] = 'eid';
$handler->display->display_options['fields']['eid']['relationship'] = 'course_enrollment';
$handler->display->display_options['fields']['eid']['label'] = 'EnrollOK';
$handler->display->display_options['fields']['eid']['empty'] = '<b>BAD</b>';
$handler->display->display_options['fields']['eid']['empty_zero'] = TRUE;
/* Field: Course report: Section_name */
$handler->display->display_options['fields']['section_name']['id'] = 'section_name';
$handler->display->display_options['fields']['section_name']['table'] = 'course_report';
$handler->display->display_options['fields']['section_name']['field'] = 'section_name';
$handler->display->display_options['fields']['section_name']['label'] = 'Section';
/* Field: Course report: Section */
$handler->display->display_options['fields']['section']['id'] = 'section';
$handler->display->display_options['fields']['section']['table'] = 'course_report';
$handler->display->display_options['fields']['section']['field'] = 'section';
$handler->display->display_options['fields']['section']['label'] = 'Progress';
/* Field: Course report: Complete */
$handler->display->display_options['fields']['complete']['id'] = 'complete';
$handler->display->display_options['fields']['complete']['table'] = 'course_report';
$handler->display->display_options['fields']['complete']['field'] = 'complete';
$handler->display->display_options['fields']['complete']['not'] = 0;
/* Field: Course report: Date_completed */
$handler->display->display_options['fields']['date_completed']['id'] = 'date_completed';
$handler->display->display_options['fields']['date_completed']['table'] = 'course_report';
$handler->display->display_options['fields']['date_completed']['field'] = 'date_completed';
$handler->display->display_options['fields']['date_completed']['label'] = 'Completed';
$handler->display->display_options['fields']['date_completed']['date_format'] = 'uc_store';
$handler->display->display_options['fields']['date_completed']['second_date_format'] = 'long';
/* Field: Course report: Grade_result */
$handler->display->display_options['fields']['grade_result']['id'] = 'grade_result';
$handler->display->display_options['fields']['grade_result']['table'] = 'course_report';
$handler->display->display_options['fields']['grade_result']['field'] = 'grade_result';
$handler->display->display_options['fields']['grade_result']['label'] = 'Grade';
$handler->display->display_options['filter_groups']['groups'] = array(
  1 => 'OR',
);
/* Filter criterion: Content: Nid */
$handler->display->display_options['filters']['nid']['id'] = 'nid';
$handler->display->display_options['filters']['nid']['table'] = 'node';
$handler->display->display_options['filters']['nid']['field'] = 'nid';
$handler->display->display_options['filters']['nid']['relationship'] = 'nid';
$handler->display->display_options['filters']['nid']['operator'] = 'empty';
$handler->display->display_options['filters']['nid']['group'] = 1;
$handler->display->display_options['filters']['nid']['expose']['operator_id'] = 'nid_op';
$handler->display->display_options['filters']['nid']['expose']['label'] = 'Nid';
$handler->display->display_options['filters']['nid']['expose']['operator'] = 'nid_op';
$handler->display->display_options['filters']['nid']['expose']['identifier'] = 'nid';
/* Filter criterion: Course enrollment: Course enrollment ID */
$handler->display->display_options['filters']['eid']['id'] = 'eid';
$handler->display->display_options['filters']['eid']['table'] = 'course_enrollment';
$handler->display->display_options['filters']['eid']['field'] = 'eid';
$handler->display->display_options['filters']['eid']['relationship'] = 'course_enrollment';
$handler->display->display_options['filters']['eid']['operator'] = 'empty';
$handler->display->display_options['filters']['eid']['group'] = 1;
/* Filter criterion: User: The user ID */
$handler->display->display_options['filters']['uid_raw']['id'] = 'uid_raw';
$handler->display->display_options['filters']['uid_raw']['table'] = 'users';
$handler->display->display_options['filters']['uid_raw']['field'] = 'uid_raw';
$handler->display->display_options['filters']['uid_raw']['relationship'] = 'uid';
$handler->display->display_options['filters']['uid_raw']['operator'] = 'empty';
$handler->display->display_options['filters']['uid_raw']['group'] = 1;

/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['path'] = 'admin/reports/course/overview/disconnected';
$handler->display->display_options['menu']['type'] = 'tab';
$handler->display->display_options['menu']['title'] = 'Disconnected';
$handler->display->display_options['menu']['weight'] = '0';
$handler->display->display_options['menu']['context'] = 0;
$handler->display->display_options['menu']['context_only_inline'] = 0;
djdevin’s picture

Component: Miscellaneous » Code
Priority: Major » Normal

Not major. "reuse of a NID or UID" would require changing the auto-increment value in your database which is a bad idea.

But we can definitely fix it.

djdevin’s picture

Status: Active » Needs review
StatusFileSize
new1.39 KB

  • djdevin committed 0935c6a on 7.x-1.x
    Issue #2721817 by djdevin: {course_report} table not cleaned up after...
djdevin’s picture

Status: Needs review » Fixed
webservant316’s picture

work for me, thanks.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.