options['implicit']) { // hooks for outputting the checkbox add_filter('comment_form_submit_field', array( $this, 'add_checkbox_before_submit_button' ), 90); add_action('thesis_hook_after_comment_box', array( $this, 'maybe_output_checkbox' ), 90); add_action('comment_form', array( $this, 'maybe_output_checkbox' ), 90); } // hooks for checking if we should subscribe the commenter add_action('comment_post', array( $this, 'subscribe_from_comment' ), 40, 2); } /** * This adds the checkbox just before the submit button and sets a flag to prevent it from outputting twice * * @param $submit_button_html * * @return string */ public function add_checkbox_before_submit_button($submit_button_html) { $this->added_through_filter = true; return $this->get_checkbox_html() . $submit_button_html; } /** * Output fallback * Will output the checkbox if comment_form() function does not use `comment_form_submit_field` filter yet. */ public function maybe_output_checkbox() { if (! $this->added_through_filter) { $this->output_checkbox(); } } /** * Grabs data from WP Comment Form * * @param int $comment_id * @param string $comment_approved * * @return bool|string */ public function subscribe_from_comment($comment_id, $comment_approved = '') { // was sign-up checkbox checked? if (! $this->triggered()) { return false; } // is this a spam comment? if ($comment_approved === 'spam') { return false; } $comment = get_comment($comment_id); $data = array( 'EMAIL' => $comment->comment_author_email, 'NAME' => $comment->comment_author, 'OPTIN_IP' => $comment->comment_author_IP, ); return $this->subscribe($data, $comment_id); } /** * @return bool */ public function is_installed() { return true; } /** * {@inheritdoc } */ public function get_object_link($object_id) { $comment = get_comment($object_id); if (! $comment) { return ''; } return sprintf('Comment #%d', get_edit_comment_link($object_id), $object_id); } }