options['implicit']) { // TODO: Allow more positions add_action('edd_purchase_form_user_info_fields', array( $this, 'output_checkbox' ), 1); add_action('edd_payment_meta', array( $this, 'save_checkbox_value' )); } add_action('edd_complete_purchase', array( $this, 'subscribe_from_edd' ), 50); } /** * @param array $meta * * @return array */ public function save_checkbox_value($meta) { // don't save anything if the checkbox was not checked if (! $this->checkbox_was_checked()) { return $meta; } $meta['_mc4wp_optin'] = 1; return $meta; } /** * {@inheritdoc} * * @param $object_id * * @return bool */ public function triggered($object_id = null) { if ($this->options['implicit']) { return true; } if (! $object_id) { return false; } $meta = edd_get_payment_meta($object_id); if (is_array($meta) && isset($meta['_mc4wp_optin']) && $meta['_mc4wp_optin']) { return true; } return false; } /** * @param int $payment_id The ID of the payment * * @return bool|string */ public function subscribe_from_edd($payment_id) { if (! $this->triggered($payment_id)) { return false; } $email = (string) edd_get_payment_user_email($payment_id); $data = array( 'EMAIL' => $email, ); // add first and last name to merge vars, if given $user_info = (array) edd_get_payment_meta_user_info($payment_id); if (! empty($user_info['first_name']) && ! empty($user_info['last_name'])) { $data['NAME'] = $user_info['first_name'] . ' ' . $user_info['last_name']; } if (! empty($user_info['first_name'])) { $data['FNAME'] = $user_info['first_name']; } if (! empty($user_info['last_name'])) { $data['LNAME'] = $user_info['last_name']; } return $this->subscribe($data, $payment_id); } /** * @return bool */ public function is_installed() { return class_exists('Easy_Digital_Downloads'); } }