Membership

Description: 

A drupal module for skogvokteren.org that checks if the selected users have paid the membership fee. If a user has not, the module sets the user's account status to blocked.

To list the membership fee in the users administration page, I also changed the function located in modules/user/user.module to this:

  1. /**
  2.  * Theme user administration overview.
  3.  */
  4. function theme_user_admin_account($form) {
  5. // Overview table:
  6. $header = array(
  7. theme('table_select_header_cell'),
  8. array('data' => t('Username'), 'field' => 'u.name'),
  9. array('data' => t('Status'), 'field' => 'u.status'),
  10. t('Roles'),
  11. array('data' => t('Member for'), 'field' => 'u.created', 'sort' => 'desc'),
  12. array('data' => t('Last access'), 'field' => 'u.access'),
  13. t('Membership fee'),
  14. t('Operations')
  15. );
  16.  
  17. $output = drupal_render($form['options']);
  18. if (isset($form['name']) && is_array($form['name'])) {
  19. foreach (element_children($form['name']) as $key) {
  20.  
  21. // Membership
  22. $user = user_load(array('uid'=>$key));
  23. $field = variable_get('membership_fieldname', 'profile_member_0809');
  24. $paid = TRUE;
  25. eval('$paid = $user->' . $field . ';'); // Checking the field
  26.  
  27. $rows[] = array(
  28. drupal_render($form['accounts'][$key]),
  29. drupal_render($form['name'][$key]),
  30. drupal_render($form['status'][$key]),
  31. drupal_render($form['roles'][$key]),
  32. drupal_render($form['member_for'][$key]),
  33. drupal_render($form['last_access'][$key]),
  34. ($paid == TRUE) ? t('yes') : t('no'),
  35. drupal_render($form['operations'][$key]),
  36. );
  37. }
  38. }
  39. else {
  40. $rows[] = array(array('data' => t('No users available.'), 'colspan' => '7'));
  41. }
  42.  
  43. $output .= theme('table', $header, $rows);
  44. if ($form['pager']['#value']) {
  45. $output .= drupal_render($form['pager']);
  46. }
  47.  
  48. $output .= drupal_render($form);
  49.  
  50. return $output;
  51. }

Labels: