public function delete($message_id, $subscriber_id = null)
{
$trx = models\DbMessage::getDb()->transaction !== null ? null : models\DbMessage::getDb()->beginTransaction();
$primaryKey = models\DbMessage::primaryKey();
$tableName = models\DbMessage::tableName();
$message_ids = array_map(function ($row) use($primaryKey) {
return array_intersect_key($row, array_flip($primaryKey));
}, models\DbMessage::find()->withQueue($this->id)->withSubscriber($subscriber_id)->select(array_map(function ($pk) use($tableName) {
return $tableName . '.' . $pk;
}, array_merge($primaryKey, ['subscription_id'])))->andWhere(['in', $tableName . '.id', $message_id])->asArray()->all());
$now = new \DateTime('now', new \DateTimezone('UTC'));
models\DbMessage::updateAll(['status' => Message::DELETED, 'deleted_on' => $now->format('Y-m-d H:i:s')], ['in', $primaryKey, $message_ids]);
if ($trx !== null) {
$trx->commit();
}
return $message_ids;
}