1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26:
27: 28: 29: 30: 31: 32: 33:
34: class Mage_Adminhtml_Newsletter_SubscriberController extends Mage_Adminhtml_Controller_Action
35: {
36:
37: public function indexAction()
38: {
39: $this->_title($this->__('Newsletter'))->_title($this->__('Newsletter Subscribers'));
40:
41: if ($this->getRequest()->getParam('ajax')) {
42: $this->_forward('grid');
43: return;
44: }
45:
46: $this->loadLayout();
47:
48: $this->_setActiveMenu('newsletter/subscriber');
49:
50: $this->_addBreadcrumb(Mage::helper('newsletter')->__('Newsletter'), Mage::helper('newsletter')->__('Newsletter'));
51: $this->_addBreadcrumb(Mage::helper('newsletter')->__('Subscribers'), Mage::helper('newsletter')->__('Subscribers'));
52:
53: $this->_addContent(
54: $this->getLayout()->createBlock('adminhtml/newsletter_subscriber','subscriber')
55: );
56:
57: $this->renderLayout();
58: }
59:
60: public function gridAction()
61: {
62: $this->loadLayout();
63: $this->getResponse()->setBody(
64: $this->getLayout()->createBlock('adminhtml/newsletter_subscriber_grid')->toHtml()
65: );
66: }
67:
68: 69: 70:
71: public function exportCsvAction()
72: {
73: $fileName = 'subscribers.csv';
74: $content = $this->getLayout()->createBlock('adminhtml/newsletter_subscriber_grid')
75: ->getCsvFile();
76:
77: $this->_prepareDownloadResponse($fileName, $content);
78: }
79:
80: 81: 82:
83: public function exportXmlAction()
84: {
85: $fileName = 'subscribers.xml';
86: $content = $this->getLayout()->createBlock('adminhtml/newsletter_subscriber_grid')
87: ->getExcelFile();
88:
89: $this->_prepareDownloadResponse($fileName, $content);
90: }
91:
92: 93: 94: 95: 96: 97: 98: 99: 100: 101:
102: protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
103: {
104: $this->_prepareDownloadResponse($fileName, $content, $contentType);
105: }
106:
107: public function massUnsubscribeAction()
108: {
109: $subscribersIds = $this->getRequest()->getParam('subscriber');
110: if (!is_array($subscribersIds)) {
111: Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
112: }
113: else {
114: try {
115: foreach ($subscribersIds as $subscriberId) {
116: $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
117: $subscriber->unsubscribe();
118: }
119: Mage::getSingleton('adminhtml/session')->addSuccess(
120: Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
121: );
122: } catch (Exception $e) {
123: Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
124: }
125: }
126:
127: $this->_redirect('*/*/index');
128: }
129:
130: public function massDeleteAction()
131: {
132: $subscribersIds = $this->getRequest()->getParam('subscriber');
133: if (!is_array($subscribersIds)) {
134: Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
135: }
136: else {
137: try {
138: foreach ($subscribersIds as $subscriberId) {
139: $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
140: $subscriber->delete();
141: }
142: Mage::getSingleton('adminhtml/session')->addSuccess(
143: Mage::helper('adminhtml')->__('Total of %d record(s) were deleted', count($subscribersIds))
144: );
145: } catch (Exception $e) {
146: Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
147: }
148: }
149:
150: $this->_redirect('*/*/index');
151: }
152:
153: protected function _isAllowed()
154: {
155: return Mage::getSingleton('admin/session')->isAllowed('newsletter/subscriber');
156: }
157: }
158: