nineinchnick\nfy\components\DbQueue::release PHP Метод

release() публичный Метод

public release ( $message_id, $subscriber_id = null )
    public function release($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)->reserved($this->timeout)->select(array_map(function ($pk) use($tableName) {
            return $tableName . '.' . $pk;
        }, array_merge($primaryKey, ['subscription_id'])))->andWhere(['in', $tableName . '.id', $message_id])->asArray()->all());
        models\DbMessage::updateAll(['status' => Message::AVAILABLE], ['in', $primaryKey, $message_ids]);
        if ($trx !== null) {
            $trx->commit();
        }
        return $message_ids;
    }