get_mail_tags_array(); return array_merge( array( array( 'name' => 'request_type', 'type' => 'select', 'label' => __('Request type', 'wpcf7-redirect'), 'placeholder' => __('Request type', 'wpcf7-redirect'), 'value' => $this->get('request_type'), 'class' => '', 'required' => true, 'options' => array( 'remove_personal_data' => __('Remove personal data'), 'export_personal_data' => __('Export personal data'), ), ), array( 'name' => 'email_field', 'type' => 'select', 'label' => __('The field that is used for username ([username])', 'wpcf7-redirect'), 'placeholder' => __('Username field', 'wpcf7-redirect'), 'tooltip' => __('Add a text field to your form and save it', 'wpcf-redirect'), 'footer' => '
' . $this->get_formatted_mail_tags() . '
', 'value' => $this->get('email_field'), 'class' => '', 'options' => $tags, ), array( 'name' => 'email_does_not_exist_message', 'type' => 'text', 'label' => __('Email/Username does not exist error message', 'wpcf7-redirect'), 'placeholder' => __('Email/Username does not exist error message', 'wpcf7-redirect'), 'footer' => '
' . $this->get_formatted_mail_tags() . '
', 'value' => $this->get('email_does_not_exist_message'), 'class' => '', 'options' => $tags, ), array( 'name' => 'send_confirmation_email', 'type' => 'checkbox', 'label' => __('Send confirmation email', 'wpcf7-redirect'), 'sub_title' => '', 'placeholder' => '', 'value' => $this->get('send_confirmation_email'), ), ), $parent_fields ); } /** * Get an HTML of the */ public function get_action_settings() { $this->get_settings_template('html-action-redirect.php'); } /** * Handle a simple redirect rule * * @param $submission */ public function process($submission) { $response = array(); $this->posted_data = $submission->get_posted_data(); $action_type = $this->get('request_type'); $status = 'pending'; if (!$this->get('send_confirmation_email')) { $status = 'confirmed'; } $email_address = $this->get_user_email_address(); $request_id = wp_create_user_request( $email_address , $action_type, array(), $status); $message = ''; if (is_wp_error($request_id)) { $message = $request_id->get_error_message(); } elseif (!$request_id) { $message = __('Unable to initiate confirmation request.'); } if ($message) { $response = new WP_Error('erase_data_request', $message); } if(!$response){ if ('pending' === $status) { wp_send_user_request($request_id); $response = __('Confirmation request initiated successfully.'); } elseif ('confirmed' === $status) { $response = __('Request added successfully.'); } } return $response; } /** * Get the user email if the user exists * * @return void */ private function get_user_email_address(){ $username_or_email_field = $this->get('email_field'); $username_or_email_address = $this->get_submitted_value($username_or_email_field); if (!is_email($username_or_email_address)) { $user = get_user_by('login', $username_or_email_address); if ($user instanceof WP_User) { $email_address = $user->user_email; } } else { $email_address = $username_or_email_address; } return $email_address; } public function process_validation($submission) { $this->posted_data = $submission->get_posted_data(); $username_or_email_field = $this->get('email_field'); $message = null; $email_address = $this->get_user_email_address(); if (empty($email_address)) { $email_does_not_exists_message = $this->get('email_does_not_exist_message', __('Unable to add this request. A valid email address or username must be supplied')); $email_does_not_exists_message = $this->replace_tags( $email_does_not_exists_message ); $message = new WP_Error('erase_data_request', $email_does_not_exists_message); /** * Get the tags that are used to send the username/email * @var [type] */ $login_field_tag = $this->get_validation_mail_tags($username_or_email_field); $error = array( 'tag' => $login_field_tag, 'error_message' => $message->get_error_message(), ); $results['invalid_tags'][] = new WP_error('tag_invalid', $error); } return $results; } }