public function send($message, $category = null)
{
$stringMessage = $message;
if (!is_string($message)) {
$stringMessage = print_r($message, true);
}
if ($this->beforeSend($message) !== true) {
Yii::info(Yii::t('app', "Not sending message '{msg}' to queue {queue_label}.", ['msg' => $stringMessage, 'queue_label' => $this->label]), 'nfy');
return false;
}
$success = true;
if ($this->sendToSubscriptionQueue) {
$this->subscriptionQueue->send($message, $category);
}
$mailMessage = call_user_func($this->composeCallback, $message);
foreach ($this->getSubscriptions() as $subscription) {
if ($this->beforeSendSubscription($message, $subscription->subscriber_id) !== true) {
continue;
}
if ($category !== null && !$subscription->matchCategory($category)) {
continue;
}
if (!$mailMessage->setTo(call_user_func($this->recipientCallback, $subscription->subscriber_id))->send()) {
Yii::error(Yii::t('app', "Failed to save message '{msg}' in queue {queue_label} for the subscription {subscription_id}.", ['msg' => $stringMessage, 'queue_label' => $this->label, 'subscription_id' => $subscription->subscriber_id]), 'nfy');
$success = false;
}
$this->afterSendSubscription($message, $subscription->subscriber_id);
}
$this->afterSend($message);
Yii::info(Yii::t('app', "Sent message '{msg}' to queue {queue_label}.", ['msg' => $stringMessage, 'queue_label' => $this->label]), 'nfy');
return $success;
}