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: require_once 'Mage/Adminhtml/controllers/Catalog/ProductController.php';
28:
29: 30: 31: 32: 33: 34: 35:
36: class Mage_Downloadable_Adminhtml_Downloadable_Product_EditController extends Mage_Adminhtml_Catalog_ProductController
37: {
38:
39: 40: 41: 42:
43: protected function _construct()
44: {
45: $this->setUsedModuleName('Mage_Downloadable');
46: }
47:
48: 49: 50: 51:
52: public function formAction()
53: {
54: $this->_initProduct();
55: $this->getResponse()->setBody(
56: $this->getLayout()->createBlock('downloadable/adminhtml_catalog_product_edit_tab_downloadable', 'admin.product.downloadable.information')
57: ->toHtml()
58: );
59: }
60:
61: 62: 63: 64: 65: 66:
67: protected function _processDownload($resource, $resourceType)
68: {
69: $helper = Mage::helper('downloadable/download');
70:
71:
72: $helper->setResource($resource, $resourceType);
73:
74: $fileName = $helper->getFilename();
75: $contentType = $helper->getContentType();
76:
77: $this->getResponse()
78: ->setHttpResponseCode(200)
79: ->setHeader('Pragma', 'public', true)
80: ->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true)
81: ->setHeader('Content-type', $contentType, true);
82:
83: if ($fileSize = $helper->getFilesize()) {
84: $this->getResponse()
85: ->setHeader('Content-Length', $fileSize);
86: }
87:
88: if ($contentDisposition = $helper->getContentDisposition()) {
89: $this->getResponse()
90: ->setHeader('Content-Disposition', $contentDisposition . '; filename='.$fileName);
91: }
92:
93: $this->getResponse()
94: ->clearBody();
95: $this->getResponse()
96: ->sendHeaders();
97:
98: $helper->output();
99: }
100:
101: 102: 103: 104:
105: public function linkAction()
106: {
107: $linkId = $this->getRequest()->getParam('id', 0);
108: $link = Mage::getModel('downloadable/link')->load($linkId);
109: if ($link->getId()) {
110: $resource = '';
111: $resourceType = '';
112: if ($link->getLinkType() == Mage_Downloadable_Helper_Download::LINK_TYPE_URL) {
113: $resource = $link->getLinkUrl();
114: $resourceType = Mage_Downloadable_Helper_Download::LINK_TYPE_URL;
115: } elseif ($link->getLinkType() == Mage_Downloadable_Helper_Download::LINK_TYPE_FILE) {
116: $resource = Mage::helper('downloadable/file')->getFilePath(
117: Mage_Downloadable_Model_Link::getBasePath(), $link->getLinkFile()
118: );
119: $resourceType = Mage_Downloadable_Helper_Download::LINK_TYPE_FILE;
120: }
121: try {
122: $this->_processDownload($resource, $resourceType);
123: } catch (Mage_Core_Exception $e) {
124: $this->_getCustomerSession()->addError(Mage::helper('downloadable')->__('An error occurred while getting the requested content.'));
125: }
126: }
127: exit(0);
128: }
129:
130: }
131: