public function setStores(Mage_Newsletter_Model_Queue $queue) { $this->_getWriteAdapter()->delete($this->getTable('queue_store_link'), $this->_getWriteAdapter()->quoteInto('queue_id = ?', $queue->getId())); if (!is_array($queue->getStores())) { $stores = array(); } else { $stores = $queue->getStores(); } foreach ($stores as $storeId) { $data = array(); $data['store_id'] = $storeId; $data['queue_id'] = $queue->getId(); $this->_getWriteAdapter()->insert($this->getTable('queue_store_link'), $data); } $this->removeSubscribersFromQueue($queue); if (count($stores) == 0) { return $this; } $subscribers = Mage::getResourceSingleton('newsletter/subscriber_collection')->addFieldToFilter('store_id', array('in' => $stores))->useOnlySubscribed()->load(); $subscriberIds = array(); foreach ($subscribers as $subscriber) { $subscriberIds[] = $subscriber->getId(); } if (count($subscriberIds) > 0) { $this->addSubscribersToQueue($queue, $subscriberIds); } return $this; }
/** * Limit newsletter queue save * * @param Mage_Newsletter_Model_Queue $model */ public function newsletterQueueSaveBefore($model) { // force to assign to SV $storeIds = $model->getStores(); if (!$storeIds || !$this->_role->hasStoreAccess($storeIds)) { Mage::throwException(Mage::helper('enterprise_admingws')->__('Please assign this entity to a store view.')); } // make sure disallowed store ids won't be modified $originalStores = $model->getResource()->getStores($model); $model->setStores($this->_updateSavingStoreIds($storeIds, $originalStores)); }