public function validate_inputs($post)
 {
     $post = apply_filters('wpem_pre_validate_schedule', $post);
     $errors = new WP_Error();
     if (!absint($post['id'])) {
         $errors->add('schedule_id', __('invalid schedule.', 'wpem'));
     }
     $data_sources = EM_Mailer::get_data_sources();
     if (!isset($post['source']['id']) || !array_key_exists($post['source']['id'], $data_sources)) {
         $errors->add('email_source', __('Invalid value for Emaill source given', 'wpem'));
     }
     /* if($post['source']['id']=='wp'){
     
                   }else{
     
                   } */
     if (!in_array($post['mail_format'], array('html', 'plaintext'))) {
         $errors->add('mail_format', __('Unsupported mail format', 'wpem'));
     }
     if (empty($post['from_name'])) {
         $errors->add('from_name', __('From Name should not be empty', 'wpem'));
     } else {
         $post['from_name'] = sanitize_text_field($post['from_name']);
     }
     if (!is_email($post['from_email'])) {
         $errors->add('from_email', __('invalid email', 'wpem'));
     } else {
         $post['from_email'] = sanitize_email($post['from_email']);
     }
     $start_date = $post['start_date'];
     if (!preg_match('#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2})#', $start_date, $matches)) {
         $errors->add('start_date', __('Invalid Start Date', 'wpem'));
     }
     if (!in_array($post['frequency'], array('Once', 'Daily', 'Weekly', 'Monthly', 'Yearly'))) {
         $errors->add('frequency', __('Invalid Frequency', 'wpem'));
     }
     $end_date = $post['end_date'];
     if (!preg_match('#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2})#', $end_date, $matches)) {
         $errors->add('end_date', __('Invalid End Date', 'wpem'));
     }
     if (!intval($post['template'])) {
         $errors->add('template', __('Invalid template', 'wpem'));
     }
     if (empty($post['title'])) {
         $errors->add('title', __('Title cannot be empty.', 'wpem'));
     } else {
         $post['title'] = sanitize_text_field($post['title']);
     }
     if (empty($post['body'])) {
         $errors->add('body', __('Notification body cannot be empty.', 'wpem'));
     } else {
         $post['body'] = wp_unslash($post['body']);
     }
     if (!empty($post['attachments'])) {
         $post['attachments'] = wpem_sanitize_attachments($post['attachments']);
     }
     foreach ($post as $key => $value) {
         if (!in_array($key, apply_filters('wpem_allowed_mail_keys', array('id', 'source', 'mail_format', 'from_name', 'from_email', 'start_date', 'frequency', 'end_date', 'template', 'title', 'body', 'attachments')))) {
             unset($post[$key]);
         }
     }
     $post['errors'] = $errors;
     return apply_filters('wpem_validate_schedule', $post);
 }
 public static function validate_mail($mail)
 {
     $mail = apply_filters('wpem_pre_validate_mail', $mail);
     $errors = new WP_Error();
     if (!in_array($mail['mail_format'], array('html', 'plaintext'))) {
         $errors->add('mail_format', __('Unsupported mail format', 'wpem'));
     }
     if (empty($mail['from_name'])) {
         $errors->add('from_name', __('From Name should not be empty', 'wpem'));
     } else {
         $mail['from_name'] = sanitize_text_field($mail['from_name']);
     }
     if (!is_email($mail['from_email'])) {
         $errors->add('from_email', __('invalid email', 'wpem'));
     }
     if (!intval($mail['template'])) {
         $errors->add('template', __('Invalid template', 'wpem'));
     }
     foreach ((array) $mail['recepients'] as $index => $recepient) {
         $invalid_recepients = array();
         if (!is_email($recepient['email'])) {
             unset($mail['recepients'][$index]);
         }
         if (empty($mail['recepients'])) {
             $errors->add('from_email', __('No valid recepient emails', 'wpem'));
         }
         do_action('wpem-invalid-recepients', $invalid_recepients, $mail);
     }
     if (empty($mail['title'])) {
         $errors->add('title', __('Title cannot be empty.', 'wpem'));
     } else {
         $mail['title'] = sanitize_text_field($mail['title']);
     }
     if (empty($mail['body'])) {
         $errors->add('body', __('Body cannot be empty.', 'wpem'));
     } else {
         $mail['body'] = wp_unslash($mail['body']);
     }
     if (isset($mail['attachments'])) {
         $mail['attachments'] = wpem_sanitize_attachments($mail['attachments']);
     }
     $mail['errors'] = $errors;
     return apply_filters('wpem_validate_mail', $mail);
 }