/** * 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(); } } }