/**
  * Deletion processor.
  *
  * @param string $sub_key Unique subscription key.
  *
  * @since 141111 First documented version.
  */
 public static function delete($sub_key)
 {
     $plugin = plugin();
     // Needed below.
     static::$processing = true;
     // Flag as `TRUE`.
     $errors = $successes = [];
     // Initialize.
     $sub_key = $plugin->utils_sub->sanitizeKey($sub_key);
     $delete_args = ['user_initiated' => true];
     $deleted = $plugin->utils_sub->delete($sub_key, $delete_args);
     $deleted === null ? 'invalid_sub_key' : 'sub_already_unsubscribed';
     if ($deleted === null) {
         // Invalid sub key?
         $errors['sub_key'] = __('Invalid subscription key; unable to delete.', 'comment-mail');
     } elseif (!$deleted) {
         // Subscription has already been deleted?
         $errors['sub_key'] = __('Already deleted; thanks.', 'comment-mail');
     } else {
         $successes['deleted_successfully'] = __('Subscription deleted successfully.', 'comment-mail');
     }
     if ($errors) {
         // We have deletion errors to report back?
         static::$processing_errors = array_merge(static::$processing_errors, $errors);
         static::$processing_error_codes = array_merge(static::$processing_error_codes, array_keys($errors));
         static::$processing_errors_html = array_merge(static::$processing_errors_html, array_map([$plugin->utils_string, 'markdownNoP'], $errors));
     } elseif ($successes) {
         // Deleted successfully?
         static::$processing_successes = array_merge(static::$processing_successes, $successes);
         static::$processing_success_codes = array_merge(static::$processing_success_codes, array_keys($successes));
         static::$processing_successes_html = array_merge(static::$processing_successes_html, array_map([$plugin->utils_string, 'markdownNoP'], $successes));
     }
 }
 /**
  * Form processor.
  *
  * @since 141111 First documented version.
  *
  * @param array $request_args Incoming action request args.
  *
  * @see   SubManageActions::subForm()
  */
 public static function process(array $request_args)
 {
     $plugin = plugin();
     // Needed below.
     $args = ['process_confirmation' => true, 'user_initiated' => true, 'ui_protected_data_keys_enable' => true, 'ui_protected_data_user' => wp_get_current_user()];
     static::$processing = true;
     // Flag as `TRUE`; along w/ other statics below.
     if (isset($request_args['key'])) {
         // Key sanitizer; for added security.
         $request_args['key'] = $sub_key = $plugin->utils_sub->sanitizeKey($request_args['key']);
     }
     if (isset($request_args['ID'])) {
         // Updating an existing subscription via ID?
         $sub_updater = new SubUpdater($request_args, $args);
         // Run updater.
         if ($sub_updater->hasErrors()) {
             // Updater has errors?
             static::$processing_errors = $sub_updater->errors();
             static::$processing_error_codes = $sub_updater->errorCodes();
             static::$processing_errors_html = $sub_updater->errorsHtml();
         } elseif ($sub_updater->didUpdate()) {
             // Updated?
             static::$processing_successes = $sub_updater->successes();
             static::$processing_success_codes = $sub_updater->successCodes();
             static::$processing_successes_html = $sub_updater->successesHtml();
             static::$processing_email_key_change = $sub_updater->emailKeyChanged();
         }
     } elseif ($plugin->options['enable'] && $plugin->options['new_subs_enable']) {
         // This check is for added security only. The form should not be available.
         $sub_inserter = new SubInserter($request_args, $args);
         // Run inserter.
         if ($sub_inserter->hasErrors()) {
             // Inserter has errors?
             static::$processing_errors = $sub_inserter->errors();
             static::$processing_error_codes = $sub_inserter->errorCodes();
             static::$processing_errors_html = $sub_inserter->errorsHtml();
         } elseif ($sub_inserter->didInsert()) {
             // Inserted?
             static::$processing_successes = $sub_inserter->successes();
             static::$processing_success_codes = $sub_inserter->successCodes();
             static::$processing_successes_html = $sub_inserter->successesHtml();
         }
     }
 }