Steps to reproduce:
- Disable Flexmailer
- Use web UI
- Create a new mailing
- Fill out fields
- Submit mailing
- Observe inaccurate error - Mailing cannot be sent. There are missing or invalid fields (subject,name,from_name,from_email,body).
See also: https://civicrm.stackexchange.com/questions/41654/after-upgrade-to-civicrm-5-48-0-all-submissions-say-mailing-cannot-be-sent-th
/**
* @deprecated
* This is used by CiviMail but will be made redundant by FlexMailer.
- * @param CRM_Mailing_DAO_Mailing $mailing
+ * @param CRM_Mailing_DAO_Mailing|array $mailing
* The mailing which may or may not be sendable.
* @return array
* List of error messages.
*/
public static function checkSendable($mailing) {
+ if (is_array($mailing)) {
+ $params = $mailing;
+ $mailing = new \CRM_Mailing_BAO_Mailing();
+ $mailing->id = $params['id'] ?? NULL;
+ if ($mailing->id) {
+ $mailing->find(TRUE);
+ }
+ $mailing->copyValues($params);
+ }
+
$errors = [];
foreach (['subject', 'name', 'from_name', 'from_email'] as $field) {
if (empty($mailing->{$field})) {