예제 #1
0
 public static function maybe_send_notification()
 {
     // form maybe be serialized
     if (isset($_REQUEST['serialized_fields'])) {
         foreach ($_REQUEST['serialized_fields'] as $key => $data) {
             if (strpos($data['name'], '[]') !== false) {
                 $_REQUEST[str_replace('[]', '', $data['name'])][] = $data['value'];
             } else {
                 $_REQUEST[$data['name']] = $data['value'];
             }
         }
     }
     if (!isset($_REQUEST['sa_send_metabox_notification_nonce'])) {
         self::ajax_fail('Forget something (nonce)?');
     }
     $nonce = $_REQUEST['sa_send_metabox_notification_nonce'];
     if (!wp_verify_nonce($nonce, SI_Controller::NONCE)) {
         self::ajax_fail('Not going to fall for it!');
     }
     if (!isset($_REQUEST['sa_send_metabox_doc_id'])) {
         self::ajax_fail('Forget something (id)?');
     }
     if (get_post_type($_REQUEST['sa_send_metabox_doc_id']) !== SI_Invoice::POST_TYPE) {
         return;
     }
     $recipients = isset($_REQUEST['sa_metabox_recipients']) ? $_REQUEST['sa_metabox_recipients'] : array();
     if (isset($_REQUEST['sa_metabox_custom_recipient']) && '' !== trim($_REQUEST['sa_metabox_custom_recipient'])) {
         if (is_email($_REQUEST['sa_metabox_custom_recipient'])) {
             $recipients[] = $_REQUEST['sa_metabox_custom_recipient'];
         }
     }
     if (empty($recipients)) {
         self::ajax_fail('A recipient is required.');
     }
     $invoice = SI_Invoice::get_instance($_REQUEST['sa_send_metabox_doc_id']);
     $invoice->set_sender_note($_REQUEST['sa_send_metabox_sender_note']);
     $from_email = null;
     $from_name = null;
     if (isset($_REQUEST['sa_send_metabox_send_as'])) {
         $name_and_email = SI_Notifications_Control::email_split($_REQUEST['sa_send_metabox_send_as']);
         if (is_email($name_and_email['email'])) {
             $from_name = $name_and_email['name'];
             $from_email = $name_and_email['email'];
         }
     }
     do_action('send_invoice', $invoice, $recipients, $from_email, $from_name);
     // If status is temp than change to pending.
     if ($invoice->get_status() == SI_Invoice::STATUS_TEMP) {
         $invoice->set_pending();
     }
     header('Content-type: application/json');
     if (self::DEBUG) {
         header('Access-Control-Allow-Origin: *');
     }
     echo wp_json_encode(array('response' => si__('Notification Queued')));
     exit;
 }
 /**
  * Save the sender's note.
  * @param  int $post_id
  * @param  object $post
  * @param  array $callback_args
  * @param  int $invoice_id
  * @return
  */
 public static function save_invoice_note($post_id, $post, $callback_args, $invoice_id = null)
 {
     $invoice = SI_Invoice::get_instance($post_id);
     $sender_notes = isset($_POST['sender_notes']) && $_POST['sender_notes'] !== '' ? $_POST['sender_notes'] : '';
     if ($sender_notes === '') {
         // check to make sure the sender note option wasn't updated for the send.
         $sender_notes = isset($_POST['sa_send_metabox_sender_note']) && $_POST['sa_send_metabox_sender_note'] !== '' ? $_POST['sa_send_metabox_sender_note'] : '';
     }
     $invoice->set_sender_note($sender_notes);
     $recipients = isset($_REQUEST['sa_metabox_recipients']) ? $_REQUEST['sa_metabox_recipients'] : array();
     if (isset($_REQUEST['sa_metabox_custom_recipient']) && '' !== trim($_REQUEST['sa_metabox_custom_recipient'])) {
         if (is_email($_REQUEST['sa_metabox_custom_recipient'])) {
             $recipients[] = $_REQUEST['sa_metabox_custom_recipient'];
         }
     }
     if (empty($recipients)) {
         return;
     }
     $from_email = null;
     $from_name = null;
     if (isset($_REQUEST['sa_send_metabox_send_as'])) {
         $name_and_email = SI_Notifications_Control::email_split($_REQUEST['sa_send_metabox_send_as']);
         if (is_email($name_and_email['email'])) {
             $from_name = $name_and_email['name'];
             $from_email = $name_and_email['email'];
         }
     }
     do_action('send_invoice', $invoice, $recipients, $from_email, $from_name);
 }