Esempio n. 1
0
 /**
  * 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();
     }
 }