subscribed.inc 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * Implementation of hook_user_import_form_fieldsets().
  4. */
  5. function subscribed_user_import_form_fieldset($import, $collapsed) {
  6. if (module_exists('publication') && module_exists('schedule')) {
  7. $publications = publication_select_publications('enewsletter');
  8. if (empty($publications)) return;
  9. $form['subscribed'] = array(
  10. '#type' => 'fieldset',
  11. '#title' => t('Subscriptions'),
  12. '#collapsible' => TRUE,
  13. '#collapsed' => $collapsed,
  14. '#tree' => TRUE,
  15. );
  16. foreach ($publications as $publication) {
  17. $type = $publication->type;
  18. $form['subscribed'][$type] = array(
  19. '#type' => 'fieldset',
  20. '#title' => check_plain($type),
  21. );
  22. }
  23. reset($publications);
  24. $subscribed = $import['options']['subscribed'];
  25. foreach ($publications as $publication) {
  26. $options = array();
  27. $schedules = schedule_select_schedules($type, $publication->publication_id);
  28. $options[0] = t('No Subscription');
  29. foreach ($schedules as $schedule) {
  30. $options[$schedule['schedule_id']] = $schedule['schedule_title'];
  31. }
  32. $subscription_default = empty($subscribed[$type][$publication->publication_id]) ? 0 : $subscribed[$type][$publication->publication_id][0];
  33. $form['subscribed'][$type][$publication->publication_id][] = array(
  34. '#type' => 'radios',
  35. '#title' => check_plain($publication->title),
  36. '#default_value' => $subscription_default,
  37. '#options' => $options,
  38. '#description' => check_plain($publication->description),
  39. );
  40. }
  41. }
  42. return $form;
  43. }
  44. /**
  45. * Implementation of hook_user_import_form_update_user().
  46. */
  47. function subscribed_user_import_form_update_user() {
  48. $form['subscribed'] = array('title' => t('Subscribed'), 'description' => t('Affected: subscriptions.'));
  49. return $form;
  50. }
  51. /**
  52. * Implementation of hook_user_import_after_save().
  53. */
  54. function subscribed_user_import_after_save($settings, $account, $password, $fields, $updated) {
  55. /**
  56. * @todo change to new update architecture
  57. */
  58. if (!module_exists('publication') || !module_exists('schedule') || !module_exists('identity_hash') || empty($settings['options']['subscribed'])) return;
  59. $subscribed_settings = $settings['options']['subscribed'];
  60. $uid = $account->uid;
  61. if (is_array($subscribed_settings)) {
  62. foreach ($subscribed_settings as $type => $type_subscriptions) {
  63. $subscriptions = $type_subscriptions;
  64. foreach ($type_subscriptions as $publication_id => $schedule) {
  65. if (empty($schedule[0])) unset($subscriptions[$publication_id]);
  66. }
  67. $publications = publication_select_publications_and_terms($type);
  68. if (!empty($publications) && !empty($subscriptions)) {
  69. subscribed_set_subscriptions($type, $uid, $publications, $subscriptions);
  70. subscribed_set_subscriptions_terms($type, $uid, $publications, $subscriptions);
  71. identity_hash_set_hash($uid);
  72. }
  73. }
  74. }
  75. return;
  76. }