/**
  * Takes care of registering the  message types that are only available in caffeinated EE.
  *
  * @since   4.3.2
  *
  * @return  void
  */
 public function register_caf_message_types()
 {
     //register newsletter message type
     $setup_args = array('mtfilename' => 'EE_Newsletter_message_type.class.php', 'autoloadpaths' => array(EE_CAF_LIBRARIES . 'messages/message_type/newsletter/'), 'messengers_to_activate_with' => array('email'), 'messengers_to_validate_with' => array('email'));
     EE_Register_Message_Type::register('newsletter', $setup_args);
     //register payment reminder message type
     $setup_args = array('mtfilename' => 'EE_Payment_Reminder_message_type.class.php', 'autoloadpaths' => array(EE_CAF_LIBRARIES . 'messages/message_type/payment_reminder/'), 'messengers_to_activate_with' => array('email'), 'messengers_to_validate_with' => array('email'));
     EE_Register_Message_Type::register('payment_reminder', $setup_args);
     //register payment declined message type
     $setup_args = array('mtfilename' => 'EE_Payment_Declined_message_type.class.php', 'autoloadpaths' => array(EE_CAF_LIBRARIES . 'messages/message_type/payment_declined/'), 'messengers_to_activate_with' => array('email'), 'messengers_to_validate_with' => array('email'));
     EE_Register_Message_Type::register('payment_declined', $setup_args);
     //register registration declined message type
     $setup_args = array('mtfilename' => 'EE_Declined_Registration_message_type.class.php', 'autoloadpaths' => array(EE_CAF_LIBRARIES . 'messages/message_type/declined_registration/'), 'messengers_to_activate_with' => array('email'), 'messengers_to_validate_with' => array('email'));
     EE_Register_Message_Type::register('declined_registration', $setup_args);
     //register registration cancelled message type
     $setup_args = array('mtfilename' => 'EE_Cancelled_Registration_message_type.class.php', 'autoloadpaths' => array(EE_CAF_LIBRARIES . 'messages/message_type/cancelled_registration/'), 'messengers_to_activate_with' => array('email'), 'messengers_to_validate_with' => array('email'));
     EE_Register_Message_Type::register('cancelled_registration', $setup_args);
     //register payment failed message type
     $setup_args = array('mtfilename' => 'EE_Payment_Failed_message_type.class.php', 'autoloadpaths' => array(EE_CAF_LIBRARIES . 'messages/message_type/payment_failed/'), 'messengers_to_activate_with' => array('email'), 'messengers_to_validate_with' => array('email'));
     EE_Register_Message_Type::register('payment_failed', $setup_args);
     //register payment declined message type
     $setup_args = array('mtfilename' => 'EE_Payment_Cancelled_message_type.class.php', 'autoloadpaths' => array(EE_CAF_LIBRARIES . 'messages/message_type/payment_cancelled/'), 'messengers_to_activate_with' => array('email'), 'messengers_to_validate_with' => array('email'));
     EE_Register_Message_Type::register('payment_cancelled', $setup_args);
 }
 /**
  * This deregisters an addon that was previously registered with a specific addon_name.
  *
  * @since    4.3.0
  *
  * @param string $addon_name the name for the addon that was previously registered
  * @throws EE_Error
  * @return void
  */
 public static function deregister($addon_name = NULL)
 {
     if (isset(self::$_settings[$addon_name])) {
         $class_name = self::$_settings[$addon_name]['class_name'];
         if (!empty(self::$_settings[$addon_name]['dms_paths'])) {
             // setup DMS
             EE_Register_Data_Migration_Scripts::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['admin_path'])) {
             // register admin page
             EE_Register_Admin_Page::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['module_paths'])) {
             // add to list of modules to be registered
             EE_Register_Module::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['shortcode_paths'])) {
             // add to list of shortcodes to be registered
             EE_Register_Shortcode::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['config_class'])) {
             // if config_class present let's register config.
             EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
         }
         if (!empty(self::$_settings[$addon_name]['widget_paths'])) {
             // add to list of widgets to be registered
             EE_Register_Widget::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['model_paths']) || !empty(self::$_settings[$addon_name]['class_paths'])) {
             // add to list of shortcodes to be registered
             EE_Register_Model::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['model_extension_paths']) || !empty(self::$_settings[$addon_name]['class_extension_paths'])) {
             // add to list of shortcodes to be registered
             EE_Register_Model_Extensions::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['message_types'])) {
             foreach (self::$_settings[$addon_name]['message_types'] as $message_type => $message_type_settings) {
                 EE_Register_Message_Type::deregister($message_type);
             }
         }
         //deregister capabilities for addon
         if (!empty(self::$_settings[$addon_name]['capabilities']) || !empty(self::$_settings[$addon_name]['capability_maps'])) {
             EE_Register_Capabilities::deregister($addon_name);
         }
         //deregister custom_post_types for addon
         if (!empty(self::$_settings[$addon_name]['custom_post_types'])) {
             EE_Register_CPT::deregister($addon_name);
         }
         remove_action('deactivate_' . EE_Registry::instance()->addons->{$class_name}->get_main_plugin_file_basename(), array(EE_Registry::instance()->addons->{$class_name}, 'deactivation'));
         remove_action('AHEE__EE_System__perform_activations_upgrades_and_migrations', array(EE_Registry::instance()->addons->{$class_name}, 'initialize_db_if_no_migrations_required'));
         unset(EE_Registry::instance()->addons->{$class_name});
         unset(self::$_settings[$addon_name]);
     }
 }
 /**
  * This deregisters an addon that was previously registered with a specific addon_name.
  *
  * @since    4.3.0
  *
  * @param string $addon_name the name for the addon that was previously registered
  * @throws EE_Error
  * @return void
  */
 public static function deregister($addon_name = NULL)
 {
     if (isset(self::$_settings[$addon_name])) {
         $class_name = self::$_settings[$addon_name]['class_name'];
         if (!empty(self::$_settings[$addon_name]['dms_paths'])) {
             // setup DMS
             EE_Register_Data_Migration_Scripts::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['admin_path'])) {
             // register admin page
             EE_Register_Admin_Page::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['module_paths'])) {
             // add to list of modules to be registered
             EE_Register_Module::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['shortcode_paths'])) {
             // add to list of shortcodes to be registered
             EE_Register_Shortcode::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['config_class'])) {
             // if config_class present let's register config.
             EE_Register_Config::deregister(self::$_settings[$addon_name]['config_class']);
         }
         if (!empty(self::$_settings[$addon_name]['widget_paths'])) {
             // add to list of widgets to be registered
             EE_Register_Widget::deregister($addon_name);
         }
         if (!empty(self::$_settings[$addon_name]['message_types'])) {
             foreach (self::$_settings[$addon_name]['message_types'] as $message_type => $message_type_settings) {
                 EE_Register_Message_Type::deregister($message_type);
             }
         }
         remove_action('deactivate_' . EE_Registry::instance()->addons->{$class_name}->get_main_plugin_file_basename(), array(EE_Registry::instance()->addons->{$class_name}, 'deactivation'));
         unset(EE_Registry::instance()->addons->{$class_name});
         unset(self::$_settings[$addon_name]);
     }
 }