Preparations
- enable Debug Mode (because deprecation notices are only written in debug mode)
 - enable System Log and set its log level to include Notices
 - login to Admin Console
 - go to Configuration → Website → Advanced section
 - enable Use Cron to run Scheduled Tasks setting and save changes
 - go to Configuration → Website → Scheduled Tasks section
 - disable all scheduled tasks (Select All > Decline)
 - enable scheduled task with email-queue:OnProcess event
 - go to User Management → Mailings section and click on Email Queue tab
 - if there are records present in grid, then delete them
 - go to User Management → Users section
 - create approved user record
 
Part 1 (existing code, system setting = queue, ajax)
- login to Admin Console
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Email Queue and save changes
 - go to User Management → Users section
 - press Approve or Decline toolbar button to invert user status
 - go to User Management → Mailings section and click on Email Queue tab
 - confirm, that:
- a record for user status change email was created
 - email wasn't sent yet to user's email address
 
 - press Process Queue toolbar button
 - confirm, that:
- a record for user status change email was removed
 - email was sent to user's email address
 
 - go to {Logs & Reports > System Log} section
 - confirm, that no new records about deprecations were created
 
Part 2 (existing code, system setting = immediate, ajax)
- login to Admin Console
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Immediate and save changes
 - go to User Management → Users section
 - press Approve or Decline toolbar button to invert user status
 - go to User Management → Mailings section and click on Email Queue tab
 - confirm, that:
- no record for user status change email was created
 - email was sent to user's email address
 
 - go to {Logs & Reports > System Log} section
 - confirm, that no new records about deprecations were created
 
Part 3 (existing code, system setting = immediate, cron)
- login to Admin Console
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Email Queue and save changes
 - go to User Management → Users section
 - press Approve or Decline toolbar button to invert user status
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Immediate and save changes
 - go to User Management → Mailings section and click on Email Queue tab
 - confirm, that:
- a record for user status change email was created
 - email wasn't sent yet to user's email address
 
 - in CLI run php tools/cron.php command
 - reload page
 - confirm, that:
- a record for user status change email was removed
 - email was sent to user's email address
 
 - go to {Logs & Reports > System Log} section
 - confirm, that no new records about deprecations were created
 
Part 4 (deprecated code, system setting = queue, ajax)
- in IDE:
- open /core/admin_templates/mailing_lists/send_queue.tpl file for editing
 - replace email-queue_event="OnProcessAjax" with email-template_event="OnProcessEmailQueue"
 - replace pass="m,email-queue" with pass="m,email-template"
 - save changes
 
 - login to Admin Console
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Email Queue and save changes
 - go to User Management → Users section
 - press Approve or Decline toolbar button to invert user status
 - go to User Management → Mailings section and click on Email Queue tab
 - confirm, that:
- a record for user status change email was created
 - email wasn't sent yet to user's email address
 
 - press Process Queue toolbar button
 - confirm, that:
- a record for user status change email was removed
 - email was sent to user's email address
 
 - go to {Logs & Reports > System Log} section
 - confirm, that new record about deprecation was created
 - rollback changes made to /core/admin_templates/mailing_lists/send_queue.tpl file
 
Part 5 (deprecated code, system setting = immediate, cron)
- login to Admin Console
 - go to Configuration → Website → Scheduled Tasks section
 - disable scheduled task with email-queue:OnProcess event
 - create new scheduled task with these settings:
- name: process_email_queue2
 - event: mailing-list:OnProcessEmailQueue
 
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Email Queue and save changes
 - go to User Management → Users section
 - press Approve or Decline toolbar button to invert user status
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Immediate and save changes
 - go to User Management → Mailings section and click on Email Queue tab
 - confirm, that:
- a record for user status change email was created
 - email wasn't sent yet to user's email address
 
 - in CLI run php tools/cron.php command
 - reload page
 - confirm, that:
- a record for user status change email was removed
 - email was sent to user's email address
 
 - go to {Logs & Reports > System Log} section
 - confirm, that no new records about deprecations were created (in future if we implement http://community.in-portal.org/x/WIFYAQ they might be created)
 - delete scheduled task with mailing-list:OnProcessEmailQueue event
 - enable scheduled task with email-queue:OnProcess event
 
Part 6 (the "$immediate_send" param usage)
- in IDE:
- open \kApplication::_email method for editing
 - in the call to \kEmail::send specify true for $immediate_send argument
 - save changes
 
 - login to Admin Console
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Email Queue and save changes
 - go to User Management → Users section
 - press Approve or Decline toolbar button to invert user status
 - go to User Management → Mailings section and click on Email Queue tab
 - confirm, that:
- no record for user status change email was created
 - email was sent to user's email address
 
 - go to {Logs & Reports > System Log} section
 - confirm, that no new records about deprecations were created
 - in IDE: revert changes to \kApplication::_email method
 
Part 7 (the "processQueue" messages override)
$messages = $mailing_list_helper->getMessages(); if ( count($messages) > 0 ) { array_pop($messages); } $message_count = $mailing_list_helper->processQueue($messages);
- in IDE:
- open \EmailQueueEventHandler::OnProcessAjax method for editing
 - change $message_count = $mailing_list_helper->processQueue(); line into code snipper shown above
 - save changes
 
 - login to Admin Console
 - go to Configuration → Website → Advanced section
 - set Email Delivery setting to Email Queue and save changes
 - go to User Management → Users section
 - press Approve or Decline toolbar button to invert user status (first time)
 - press Approve or Decline toolbar button to invert user status (second time)
 - go to User Management → Mailings section and click on Email Queue tab
 - confirm, that:
- two records for user status change email were created
 - emails weren't sent yet to user's email address
 
 - press Process Queue toolbar button
 - confirm, that:
- one record for user status change email was removed
 - one email was sent to user's email address
 
 - go to {Logs & Reports > System Log} section
 - confirm, that new record about deprecation was created
 - rollback changes to the \EmailQueueEventHandler::OnProcessAjax method
 
Part 8 (the "_ensureDefault" method)
/** @var MailingListHelper $mailing_list_helper */ $mailing_list_helper = $this->Application->recallObject('MailingListHelper'); $a = $this->_ensureDefault('MailingListSendPerStep'); $b = $mailing_list_helper->getSetting('MailingListSendPerStep'); die(var_dump($a === $b));
- in IDE:
- open \MailingListEventHandler::OnPreCreate method for editing
 - add code from snippet above to it
 
 - login to Admin Console
 - go to User Management → Mailings section
 - press Add button on toolbar
 - confirm, that:
- popup/modal window was opened
 - it has true word in it
 
 - in IDE: rollback changes to \MailingListEventHandler::OnPreCreate method
 
