/** * Add subscribers to queue * * @param ModelQueue $queue * @param array $subscriberIds * @return void * @throws \Magento\Framework\Model\Exception */ public function addSubscribersToQueue(ModelQueue $queue, array $subscriberIds) { if (count($subscriberIds) == 0) { throw new \Magento\Framework\Model\Exception(__('There are no subscribers selected.')); } if (!$queue->getId() && $queue->getQueueStatus() != Magento_Newsletter_Model_Queue::STATUS_NEVER) { throw new \Magento\Framework\Model\Exception(__('You selected an invalid queue.')); } $adapter = $this->_getWriteAdapter(); $select = $adapter->select(); $select->from($this->getTable('newsletter_queue_link'), 'subscriber_id')->where('queue_id = ?', $queue->getId())->where('subscriber_id in (?)', $subscriberIds); $usedIds = $adapter->fetchCol($select); $adapter->beginTransaction(); try { foreach ($subscriberIds as $subscriberId) { if (in_array($subscriberId, $usedIds)) { continue; } $data = array(); $data['queue_id'] = $queue->getId(); $data['subscriber_id'] = $subscriberId; $adapter->insert($this->getTable('newsletter_queue_link'), $data); } $adapter->commit(); } catch (\Exception $e) { $adapter->rollBack(); } }