public static function estimate_notification(SI_Estimate $estimate, $recipients = array(), $from_email = null, $from_name = null)
 {
     $invoice = '';
     if ($invoice_id = $estimate->get_invoice_id()) {
         $invoice = SI_Invoice::get_instance($invoice_id);
     }
     foreach (array_unique($recipients) as $user_id) {
         /**
          * sometimes the recipients list will pass an email instead of an id
          * attempt to find a user first.
          */
         if (is_email($user_id)) {
             if ($user = get_user_by('email', $user_id)) {
                 $user_id = $user->ID;
                 $to = self::get_user_email($user_id);
             } else {
                 // no user found
                 $to = $user_id;
             }
         } else {
             $to = self::get_user_email($user_id);
         }
         $data = array('user_id' => is_numeric($user_id) ? $user_id : '', 'estimate' => $estimate, 'invoice' => $invoice, 'to' => $to);
         self::send_notification('send_estimate', $data, $to, $from_email, $from_name);
     }
 }
 public static function estimate_data(SI_Estimate $estimate)
 {
     $estimate_data = array('title' => $estimate->get_title(), 'id' => $estimate->get_id(), 'estimate_id' => $estimate->get_estimate_id(), 'invoice_id' => $estimate->get_invoice_id(), 'client_id' => $estimate->get_client_id(), 'client_data' => array(), 'status' => $estimate->get_status(), 'issue_date' => $estimate->get_issue_date(), 'expiration_date' => $estimate->get_expiration_date(), 'po_number' => $estimate->get_po_number(), 'discount' => $estimate->get_discount(), 'tax' => $estimate->get_tax(), 'tax2' => $estimate->get_tax2(), 'currency' => $estimate->get_currency(), 'total' => $estimate->get_total(), 'subtotal' => $estimate->get_subtotal(), 'calculated_total' => $estimate->get_calculated_total(), 'project_id' => $estimate->get_project_id(), 'terms' => $estimate->get_terms(), 'notes' => $estimate->get_notes(), 'line_items' => $estimate->get_line_items(), 'user_id' => $estimate->get_user_id());
     if ($estimate->get_client_id()) {
         $client = SI_Client::get_instance($estimate->get_client_id());
         if (is_a($client, 'SI_Client')) {
             $estimate_data['client_data'] = self::client_data($client);
         }
     }
     return $estimate_data;
 }