EmailDirect_Integration - Version 1.5.8

Version Notes

Troubleshooting is upgraded to automatically turn off after 10 minutes.

Required database fields are checked each time you visit the Configuration Page.

Database Fields that are missing may be fixed manually or through the extension.

Download this release

Release Info

Developer Magento Core Team
Extension EmailDirect_Integration
Version 1.5.8
Comparing to
See all releases


Code changes from version 1.5.7 to 1.5.8

app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Fieldset/Hint.php CHANGED
@@ -1,26 +1,31 @@
1
  <?php
2
 
3
  class EmailDirect_Integration_Block_Adminhtml_System_Config_Fieldset_Hint
4
- extends Mage_Adminhtml_Block_Abstract
5
- implements Varien_Data_Form_Element_Renderer_Interface
6
  {
7
- protected $_template = 'emaildirect/system/config/fieldset/hint.phtml';
8
 
9
- /**
10
- * Render fieldset html
11
- *
12
- * @param Varien_Data_Form_Element_Abstract $element
13
- * @return string
14
- */
15
- public function render(Varien_Data_Form_Element_Abstract $element)
16
- {
17
- return $this->toHtml();
18
- }
 
 
 
 
 
19
 
20
- public function getEmaildirectVersion()
21
- {
22
- return (string) Mage::getConfig()->getNode('modules/EmailDirect_Integration/version');
23
- }
24
 
25
  public function getAbandonedLastRunHtml()
26
  {
1
  <?php
2
 
3
  class EmailDirect_Integration_Block_Adminhtml_System_Config_Fieldset_Hint
4
+ extends Mage_Adminhtml_Block_Abstract
5
+ implements Varien_Data_Form_Element_Renderer_Interface
6
  {
7
+ protected $_template = 'emaildirect/system/config/fieldset/hint.phtml';
8
 
9
+ /**
10
+ * Render fieldsetset html
11
+ *
12
+ * @param Varien_Data_Form_Element_Abstract $element
13
+ * @return string
14
+ */
15
+ public function render(Varien_Data_Form_Element_Abstract $element)
16
+ {
17
+ return $this->toHtml();
18
+ }
19
+
20
+ public function checkDatabaseColumns()
21
+ {
22
+ return Mage::helper('emaildirect')->checkDatabaseColumns();
23
+ }
24
 
25
+ public function getEmaildirectVersion()
26
+ {
27
+ return (string) Mage::getConfig()->getNode('modules/EmailDirect_Integration/version');
28
+ }
29
 
30
  public function getAbandonedLastRunHtml()
31
  {
app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Info.php CHANGED
@@ -10,13 +10,6 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Info exte
10
  $this->setTemplate('emaildirect/system/config/form/field/info.phtml');
11
  $this->_helper = Mage::helper('emaildirect');
12
  }
13
-
14
- protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
15
- {
16
- $this->setElement($element);
17
- $html = $this->_toHtml();
18
- return $html;
19
- }
20
 
21
  public function render(Varien_Data_Form_Element_Abstract $element)
22
  {
10
  $this->setTemplate('emaildirect/system/config/form/field/info.phtml');
11
  $this->_helper = Mage::helper('emaildirect');
12
  }
 
 
 
 
 
 
 
13
 
14
  public function render(Varien_Data_Form_Element_Abstract $element)
15
  {
app/code/local/EmailDirect/Integration/Block/Adminhtml/System/Config/Form/Field/Troubleshooting.php CHANGED
@@ -25,8 +25,6 @@ class EmailDirect_Integration_Block_Adminhtml_System_Config_Form_Field_Troublesh
25
  {
26
  $date = $this->_helper->troubleConfig('start_date');
27
 
28
- $minutes = round(abs(time() - strtotime($date)) / 60,0);
29
-
30
  $date = Mage::helper('core')->formatTime($date, 'long', true);
31
 
32
  $minutes = "<br />(" . $this->_helper->timeElapsed2string(strtotime($date)) . " ago)";
25
  {
26
  $date = $this->_helper->troubleConfig('start_date');
27
 
 
 
28
  $date = Mage::helper('core')->formatTime($date, 'long', true);
29
 
30
  $minutes = "<br />(" . $this->_helper->timeElapsed2string(strtotime($date)) . " ago)";
app/code/local/EmailDirect/Integration/Helper/Data.php CHANGED
@@ -110,7 +110,7 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
110
  }
111
  }
112
 
113
- function timeElapsed2string($time)
114
  {
115
  if ($time == "")
116
  return "";
@@ -121,7 +121,7 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
121
 
122
  $ret = "";
123
 
124
- foreach($periods AS $name => $seconds)
125
  {
126
  $num = floor($timeline / $seconds);
127
  $timeline -= ($num * $seconds);
@@ -156,9 +156,9 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
156
  if ($store == 0)
157
  $scope = "default";
158
 
159
- $config = new Mage_Core_Model_Config();
160
  $config->saveConfig("emaildirect/{$base_path}/{$path}",$value,$scope,$store);
161
- Mage::getConfig()->cleanCache();
162
  }
163
 
164
  public function getCurrentStore()
@@ -742,22 +742,28 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
742
  $this->updateConfig("start_date",$date,$store,"troubleshooting");
743
  }
744
 
745
- public function turnOffTroubleshooting($store = null)
746
  {
747
  $this->updateConfig("start_date","",$store,"troubleshooting");
 
748
 
749
  $log_file = $this->getLogFileName();
750
 
 
 
 
751
  if (!file_exists($log_file))
752
  return; // Ignore
753
 
 
 
754
  $date = date(Mage::getModel('core/date')->gmtTimestamp());
755
  $date = date(" Y_m_d_H_i_s", $date);
756
 
757
  $new_log_file = str_replace(self::LOG_FILE_EXT, $date . self::LOG_FILE_EXT, $log_file);
758
 
759
  sleep(1); // Sleep or it won't rename the file.
760
- if (!rename($log_file,$new_log_file))
761
  Mage::throwException("Failed to Rename Log File");
762
  }
763
 
@@ -884,13 +890,78 @@ class EmailDirect_Integration_Helper_Data extends Mage_Core_Helper_Abstract
884
  return $xml_string;
885
  }
886
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
887
 
888
  // LOGGING
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
889
  public function log($data, $prefix = "", $area = "")
890
  {
891
  $store = $this->getCurrentStore();
892
 
893
- if ($this->troubleConfig('enabled', $store))
894
  {
895
  if ($area == "")
896
  $area = $this->_log_area;
110
  }
111
  }
112
 
113
+ public function timeElapsed2string($time)
114
  {
115
  if ($time == "")
116
  return "";
121
 
122
  $ret = "";
123
 
124
+ foreach($periods as $name => $seconds)
125
  {
126
  $num = floor($timeline / $seconds);
127
  $timeline -= ($num * $seconds);
156
  if ($store == 0)
157
  $scope = "default";
158
 
159
+ $config = Mage::getConfig();
160
  $config->saveConfig("emaildirect/{$base_path}/{$path}",$value,$scope,$store);
161
+ $config->cleanCache();
162
  }
163
 
164
  public function getCurrentStore()
742
  $this->updateConfig("start_date",$date,$store,"troubleshooting");
743
  }
744
 
745
+ public function turnOffTroubleshooting($store = null, $quiet = true)
746
  {
747
  $this->updateConfig("start_date","",$store,"troubleshooting");
748
+ $this->updateConfig("enabled","0",$store,"troubleshooting");
749
 
750
  $log_file = $this->getLogFileName();
751
 
752
+ return;
753
+
754
+ // Need to add path and give options to send/view specific files before enabling
755
  if (!file_exists($log_file))
756
  return; // Ignore
757
 
758
+ Mage::log("Rename Log File: [$log_file]", null,'test.log');
759
+
760
  $date = date(Mage::getModel('core/date')->gmtTimestamp());
761
  $date = date(" Y_m_d_H_i_s", $date);
762
 
763
  $new_log_file = str_replace(self::LOG_FILE_EXT, $date . self::LOG_FILE_EXT, $log_file);
764
 
765
  sleep(1); // Sleep or it won't rename the file.
766
+ if (!rename($log_file,$new_log_file) && !$quiet)
767
  Mage::throwException("Failed to Rename Log File");
768
  }
769
 
890
  return $xml_string;
891
  }
892
  }
893
+
894
+ public function checkDatabaseColumns()
895
+ {
896
+ $resource = Mage::getSingleton('core/resource');
897
+ $database_columns = array('sales_flat_quote' =>
898
+ array(
899
+ array('column' => 'emaildirect_abandoned_date', 'type' => 'TIMESTAMP NULL'),
900
+ array('column' => 'emaildirect_abandoned_url', 'type' => 'Text NULL')
901
+ ),
902
+ 'sales_flat_order' =>
903
+ array(
904
+ array('column' => 'sent_to_emaildirect', 'type' => 'BOOLEAN NULL DEFAULT 0')
905
+ )
906
+ );
907
+ $failed = array();
908
+
909
+ foreach ($database_columns as $table => $columns)
910
+ {
911
+ $table = $resource->getTableName($table);
912
+
913
+ foreach ($columns as $column)
914
+ {
915
+ try
916
+ {
917
+ $sql = "SELECT {$column['column']} FROM {$table} LIMIT 1";
918
+
919
+
920
+ $resource->getConnection('core_read')
921
+ ->query($sql);
922
+ }
923
+ catch (Exception $e)
924
+ {
925
+ $sql = "ALTER TABLE `{$table}` ADD COLUMN `{$column['column']}` {$column['type']}";
926
+ $failed[] = array('table' => $table, 'column' => $column['column'], 'type' => $column['type'], 'sql' => $sql);
927
+ }
928
+ }
929
+ }
930
+
931
+ return $failed;
932
+ }
933
 
934
  // LOGGING
935
+
936
+ public function isLoggingEnabled($store = null)
937
+ {
938
+ if (!$this->troubleConfig('enabled', $store))
939
+ return false;
940
+
941
+ $date = $this->troubleConfig('start_date');
942
+
943
+ if ($date == "")
944
+ return false;
945
+
946
+ $minutes = round(abs(time() - strtotime($date)) / 60,0);
947
+
948
+ $duration = (int)$this->troubleConfig('duration', $store);
949
+
950
+ if ($minutes > $duration)
951
+ {
952
+ $this->turnOffTroubleshooting($store);
953
+ Mage::app()->reinitStores();
954
+ return false;
955
+ }
956
+
957
+ return true;
958
+ }
959
+
960
  public function log($data, $prefix = "", $area = "")
961
  {
962
  $store = $this->getCurrentStore();
963
 
964
+ if ($this->isLoggingEnabled($store))
965
  {
966
  if ($area == "")
967
  $area = $this->_log_area;
app/code/local/EmailDirect/Integration/Model/Observer.php CHANGED
@@ -1050,7 +1050,7 @@ class EmailDirect_Integration_Model_Observer
1050
  }
1051
  catch (Exception $e)
1052
  {
1053
- $this->_helper->log($e);
1054
  Mage::logException($e);
1055
  }
1056
  }
1050
  }
1051
  catch (Exception $e)
1052
  {
1053
+ $this->_helper->logException($e);
1054
  Mage::logException($e);
1055
  }
1056
  }
app/code/local/EmailDirect/Integration/controllers/AbandonedController.php CHANGED
@@ -1,123 +1,121 @@
1
  <?php
2
  class EmailDirect_Integration_AbandonedController extends Mage_Core_Controller_Front_Action
3
  {
4
- public function restoreAction()
5
- {
6
- $coded_cart = Mage::app()->getRequest()->getParam('cart');
7
-
8
- $cart_data = unserialize(base64_decode($coded_cart));
9
-
10
- $this->clearCart($cart_data['quote']);
11
- $this->restoreCartItems($cart_data);
12
-
13
- $this->_redirect("checkout/cart");
14
- }
15
-
16
- private function restoreCartItems($cart_data)
17
- {
18
- $id_list = explode(",",$cart_data['id']);
19
- $qty_list = explode(",",$cart_data['qty']);
20
-
21
- $quote = $this->getQuote();
22
-
23
- foreach ($id_list as $key => $item_id)
24
- {
25
- $qty = $qty_list[$key];
26
-
27
- $this->addItemToCart($item_id, $qty);
28
- }
29
-
30
- // update our totals, save.
31
- $quote->getBillingAddress();
32
- $quote->collectTotals();
33
- $quote->save();
34
 
35
- $this->getCheckout()->setQuoteId($quote->getId());
36
- }
37
-
38
- private function addItemToCart($id, $qty)
39
- {
40
- $product = Mage::getModel('catalog/product')->load($id);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
- if (!$product->getId())
43
- {
44
- //echo "Failed to load product";
45
- return false;
46
- }
47
-
48
- $data = array(
49
- 'qty' => $qty,
50
- 'options' => array()
51
- );
52
-
53
- $quote = $this->getQuote();
54
-
55
- try
56
- {
57
- // add the product to our quote
58
- $quote->addProductAdvanced($product , new Varien_Object($data));
59
 
60
- return true;
61
- }
62
- catch (Exception $e)
63
- {
64
- //Zend_Debug::dump($e->getMessage());
65
- Mage::logException($e);
66
- return false;
67
- }
68
- }
69
-
70
- private function removeOldQuote($original_quote_id)
71
- {
72
- $quote = Mage::getModel('sales/quote')->load($original_quote_id);
73
-
74
- if ($quote->getId() == $original_quote_id)
75
- {
76
- $quote->delete();
77
- }
78
- }
79
-
80
- private function clearCart($original_quote_id)
81
- {
82
- $customer_session = Mage::getSingleton('customer/session');
83
-
84
- $checkout = $this->getCheckout();
85
-
86
- $checkout->clear(); // clear donations
87
 
88
- $quote = $this->getQuote();
89
-
90
- // Check to see if we need to remove the quote
91
- // if they aren't logged in then we will need to otherwise when they login the items won't match
92
- if ($quote->getId() != $original_quote_id)
93
- {
94
- $this->removeOldQuote($original_quote_id);
95
- }
96
 
97
- foreach ($quote->getItemsCollection() as $item)
98
- {
99
- $item->isDeleted(true);
100
- }
101
-
102
- $quote->getBillingAddress();
103
- $quote->getShippingAddress();
104
- $quote->getPayment();
105
- $quote->setEmailDirectAbandonedDate(null);
106
-
107
- $customer = $customer_session->getCustomer();
108
- if ($customer)
109
- $quote->assignCustomer($customer);
110
-
111
- $quote->save();
112
- }
113
-
114
- private function getQuote()
115
- {
116
- return Mage::getSingleton('checkout/session')->getQuote();
117
- }
118
-
119
- private function getCheckout()
120
- {
121
- return Mage::getSingleton('checkout/session');
122
- }
123
  }
1
  <?php
2
  class EmailDirect_Integration_AbandonedController extends Mage_Core_Controller_Front_Action
3
  {
4
+ public function restoreAction()
5
+ {
6
+ $coded_cart = Mage::app()->getRequest()->getParam('cart');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
+ $cart_data = unserialize(base64_decode($coded_cart));
9
+
10
+ $this->clearCart($cart_data['quote']);
11
+ $this->restoreCartItems($cart_data);
12
+
13
+ $this->_redirect("checkout/cart");
14
+ }
15
+
16
+ private function restoreCartItems($cart_data)
17
+ {
18
+ $id_list = explode(",",$cart_data['id']);
19
+ $qty_list = explode(",",$cart_data['qty']);
20
+
21
+ $quote = $this->getQuote();
22
+
23
+ foreach ($id_list as $key => $item_id)
24
+ {
25
+ $qty = $qty_list[$key];
26
+
27
+ $this->addItemToCart($item_id, $qty);
28
+ }
29
+
30
+ // update our totals, save.
31
+ $quote->getBillingAddress();
32
+ $quote->collectTotals();
33
+ $quote->save();
34
+
35
+ $this->getCheckout()->setQuoteId($quote->getId());
36
+ }
37
+
38
+ private function addItemToCart($id, $qty)
39
+ {
40
+ $product = Mage::getModel('catalog/product')->load($id);
41
 
42
+ if (!$product->getId())
43
+ return false;
44
+
45
+
46
+ $data = array(
47
+ 'qty' => $qty,
48
+ 'options' => array()
49
+ );
50
+
51
+ $quote = $this->getQuote();
52
+
53
+ try
54
+ {
55
+ // add the product to our quote
56
+ $quote->addProductAdvanced($product , new Varien_Object($data));
 
 
57
 
58
+ return true;
59
+ }
60
+ catch (Exception $e)
61
+ {
62
+ //Zend_Debug::dump($e->getMessage());
63
+ Mage::logException($e);
64
+ return false;
65
+ }
66
+ }
67
+
68
+ private function removeOldQuote($original_quote_id)
69
+ {
70
+ $quote = Mage::getModel('sales/quote')->load($original_quote_id);
71
+
72
+ if ($quote->getId() == $original_quote_id)
73
+ {
74
+ $quote->delete();
75
+ }
76
+ }
77
+
78
+ private function clearCart($original_quote_id)
79
+ {
80
+ $customer_session = Mage::getSingleton('customer/session');
81
+
82
+ $checkout = $this->getCheckout();
83
+
84
+ $checkout->clear(); // clear donations
85
 
86
+ $quote = $this->getQuote();
87
+
88
+ // Check to see if we need to remove the quote
89
+ // if they aren't logged in then we will need to otherwise when they login the items won't match
90
+ if ($quote->getId() != $original_quote_id)
91
+ {
92
+ $this->removeOldQuote($original_quote_id);
93
+ }
94
 
95
+ foreach ($quote->getItemsCollection() as $item)
96
+ {
97
+ $item->isDeleted(true);
98
+ }
99
+
100
+ $quote->getBillingAddress();
101
+ $quote->getShippingAddress();
102
+ $quote->getPayment();
103
+ $quote->setEmailDirectAbandonedDate(null);
104
+
105
+ $customer = $customer_session->getCustomer();
106
+ if ($customer)
107
+ $quote->assignCustomer($customer);
108
+
109
+ $quote->save();
110
+ }
111
+
112
+ private function getQuote()
113
+ {
114
+ return Mage::getSingleton('checkout/session')->getQuote();
115
+ }
116
+
117
+ private function getCheckout()
118
+ {
119
+ return Mage::getSingleton('checkout/session');
120
+ }
121
  }
app/code/local/EmailDirect/Integration/controllers/Admin/TroubleshootingController.php CHANGED
@@ -4,11 +4,11 @@ class EmailDirect_Integration_Admin_TroubleshootingController extends Mage_Admin
4
  {
5
  public function indexAction()
6
  {
7
- $this->loadLayout();
8
-
9
  $this->getLayout()->getBlock('head')->setTitle($this->__('EmailDirect Troubleshooting'));
10
- $this->_setActiveMenu('system');
11
- $this->renderLayout();
12
  }
13
 
14
  public function sendAction()
@@ -32,8 +32,8 @@ class EmailDirect_Integration_Admin_TroubleshootingController extends Mage_Admin
32
  $headers = "From: {$from}\r\n";
33
  $headers .= "Content-type: text/html\r\n";
34
 
35
- // now lets send the email.
36
- $sent = mail($to, $subject, $message, $headers);
37
 
38
  if ($sent)
39
  {
@@ -57,75 +57,115 @@ class EmailDirect_Integration_Admin_TroubleshootingController extends Mage_Admin
57
  $output = Mage::helper('emaildirect')->getReport();
58
 
59
  $this->_prepareDownloadResponse(Mage::helper('emaildirect')->troubleConfig('report_file'), $output);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
- // echo $output;
 
 
 
62
  }
63
 
64
  /**
65
- * Declare headers and content file in responce for file download
66
- *
67
- * @param string $fileName
68
- * @param string|array $content set to null to avoid starting output, $contentLength should be set explicitly in
69
- * that case
70
- * @param string $contentType
71
- * @param int $contentLength explicit content length, if strlen($content) isn't applicable
72
- * @return Mage_Core_Controller_Varien_Action
73
- */
74
- protected function _prepareDownloadResponse(
75
- $fileName,
76
- $content,
77
- $contentType = 'application/octet-stream',
78
- $contentLength = null)
79
- {
80
- $session = Mage::getSingleton('admin/session');
81
- if ($session->isFirstPageAfterLogin()) {
82
- $this->_redirect($session->getUser()->getStartupPageUrl());
83
- return $this;
84
- }
 
85
 
86
- $isFile = false;
87
- $file = null;
88
- if (is_array($content)) {
89
- if (!isset($content['type']) || !isset($content['value'])) {
90
- return $this;
91
- }
92
- if ($content['type'] == 'filename') {
93
- $isFile = true;
94
- $file = $content['value'];
95
- $contentLength = filesize($file);
96
- }
97
- }
 
 
 
98
 
99
- $this->getResponse()
100
- ->setHttpResponseCode(200)
101
- ->setHeader('Pragma', 'public', true)
102
- ->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true)
103
- ->setHeader('Content-type', $contentType, true)
104
- ->setHeader('Content-Length', is_null($contentLength) ? strlen($content) : $contentLength)
105
- ->setHeader('Content-Disposition', 'attachment; filename="'.$fileName.'"')
106
- ->setHeader('Last-Modified', date('r'));
107
 
108
- if (!is_null($content)) {
109
- if ($isFile) {
110
- $file_content = "";
111
- //$this->getResponse()->clearBody();
112
- //$this->getResponse()->sendHeaders();
 
 
113
 
114
- $ioAdapter = new Varien_Io_File();
115
- $ioAdapter->open(array('path' => $ioAdapter->dirname($file)));
116
- $ioAdapter->streamOpen($file, 'r');
117
- while ($buffer = $ioAdapter->streamRead()) {
118
- $file_content .= $buffer;
119
- }
120
- $ioAdapter->streamClose();
121
- if (!empty($content['rm'])) {
122
- $ioAdapter->rm($file);
123
- }
 
 
124
  $this->getResponse()->setBody($file_content);
125
- } else {
126
- $this->getResponse()->setBody($content);
127
- }
128
- }
129
- return $this;
130
- }
 
 
131
  }
4
  {
5
  public function indexAction()
6
  {
7
+ $this->loadLayout();
8
+
9
  $this->getLayout()->getBlock('head')->setTitle($this->__('EmailDirect Troubleshooting'));
10
+ $this->_setActiveMenu('system');
11
+ $this->renderLayout();
12
  }
13
 
14
  public function sendAction()
32
  $headers = "From: {$from}\r\n";
33
  $headers .= "Content-type: text/html\r\n";
34
 
35
+ // now lets send the email.
36
+ $sent = mail($to, $subject, $message, $headers);
37
 
38
  if ($sent)
39
  {
57
  $output = Mage::helper('emaildirect')->getReport();
58
 
59
  $this->_prepareDownloadResponse(Mage::helper('emaildirect')->troubleConfig('report_file'), $output);
60
+ }
61
+
62
+ public function columnsAction()
63
+ {
64
+ $failed_columns = Mage::helper('emaildirect')->checkDatabaseColumns();
65
+ $error = false;
66
+
67
+ if (count($failed_columns) > 0)
68
+ {
69
+ $resource = Mage::getSingleton('core/resource');
70
+
71
+ foreach ($failed_columns as $column)
72
+ {
73
+ $sql = $column['sql'];
74
+
75
+ try
76
+ {
77
+ $resource->getConnection('core_write')
78
+ ->query($sql);
79
+ }
80
+ catch (Exception $e)
81
+ {
82
+ $error = true;
83
+ Mage::getSingleton('adminhtml/session')->addError(Mage::helper('emaildirect')->__('Failed to create column: %s - %s',$column['table'],$column['column']));
84
+ }
85
+ }
86
+ }
87
 
88
+ if (!$error)
89
+ Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('emaildirect')->__('Database Columns have been restored'));
90
+
91
+ $this->_redirect('adminhtml/system_config/edit/',array('section' => 'emaildirect'));
92
  }
93
 
94
  /**
95
+ * Declare headers and content file in responce for file download
96
+ *
97
+ * @param string $fileName
98
+ * @param string|array $content set to null to avoid starting output, $contentLength should be set explicitly in
99
+ * that case
100
+ * @param string $contentType
101
+ * @param int $contentLength explicit content length, if strlen($content) isn't applicable
102
+ * @return Mage_Core_Controller_Varien_Action
103
+ */
104
+ protected function _prepareDownloadResponse(
105
+ $fileName,
106
+ $content,
107
+ $contentType = 'application/octet-stream',
108
+ $contentLength = null)
109
+ {
110
+ $session = Mage::getSingleton('admin/session');
111
+ if ($session->isFirstPageAfterLogin())
112
+ {
113
+ $this->_redirect($session->getUser()->getStartupPageUrl());
114
+ return $this;
115
+ }
116
 
117
+ $isFile = false;
118
+ $file = null;
119
+ if (is_array($content))
120
+ {
121
+ if (!isset($content['type']) || !isset($content['value']))
122
+ {
123
+ return $this;
124
+ }
125
+ if ($content['type'] == 'filename')
126
+ {
127
+ $isFile = true;
128
+ $file = $content['value'];
129
+ $contentLength = filesize($file);
130
+ }
131
+ }
132
 
133
+ $this->getResponse()
134
+ ->setHttpResponseCode(200)
135
+ ->setHeader('Pragma', 'public', true)
136
+ ->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true)
137
+ ->setHeader('Content-type', $contentType, true)
138
+ ->setHeader('Content-Length', is_null($contentLength) ? strlen($content) : $contentLength)
139
+ ->setHeader('Content-Disposition', 'attachment; filename="'.$fileName.'"')
140
+ ->setHeader('Last-Modified', date('r'));
141
 
142
+ if (!is_null($content))
143
+ {
144
+ if ($isFile)
145
+ {
146
+ $file_content = "";
147
+ //$this->getResponse()->clearBody();
148
+ //$this->getResponse()->sendHeaders();
149
 
150
+ $ioAdapter = new Varien_Io_File();
151
+ $ioAdapter->open(array('path' => $ioAdapter->dirname($file)));
152
+ $ioAdapter->streamOpen($file, 'r');
153
+ while ($buffer = $ioAdapter->streamRead())
154
+ {
155
+ $file_content .= $buffer;
156
+ }
157
+ $ioAdapter->streamClose();
158
+ if (!empty($content['rm']))
159
+ {
160
+ $ioAdapter->rm($file);
161
+ }
162
  $this->getResponse()->setBody($file_content);
163
+ }
164
+ else
165
+ {
166
+ $this->getResponse()->setBody($content);
167
+ }
168
+ }
169
+ return $this;
170
+ }
171
  }
app/code/local/EmailDirect/Integration/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <EmailDirect_Integration>
5
- <version>1.5.7</version>
6
  </EmailDirect_Integration>
7
  </modules>
8
  <global>
@@ -277,6 +277,7 @@ C]]></abandonedsequence_options>
277
  <subject>EmailDirect Magento Module Troubleshooting Report</subject>
278
  <report_file>troubleshootingreport.html</report_file>
279
  <max_file_size>1048576</max_file_size>
 
280
  </troubleshooting>
281
  </emaildirect>
282
  </default>
2
  <config>
3
  <modules>
4
  <EmailDirect_Integration>
5
+ <version>1.5.8</version>
6
  </EmailDirect_Integration>
7
  </modules>
8
  <global>
277
  <subject>EmailDirect Magento Module Troubleshooting Report</subject>
278
  <report_file>troubleshootingreport.html</report_file>
279
  <max_file_size>1048576</max_file_size>
280
+ <duration>10</duration>
281
  </troubleshooting>
282
  </emaildirect>
283
  </default>
app/design/adminhtml/default/default/layout/emaildirect.xml CHANGED
@@ -4,14 +4,11 @@
4
  <reference name="head">
5
  <action method="addCss"><stylesheet>emaildirect/emaildirect.css</stylesheet></action>
6
  </reference>
7
- </adminhtml_system_config_edit>
8
-
9
- <adminhtml_system_config_edit>
10
  <reference name="content">
11
  <block type="core/template" name="emaildirect_setup_check" before="-" template="emaildirect/system/config/setup_check.phtml" />
12
  </reference>
13
  </adminhtml_system_config_edit>
14
-
15
  <emaildirect_admin_export_products>
16
  <remove name="root"/>
17
  <block type="adminhtml/page" name="convert_root" output="toHtml" template="page.phtml">
4
  <reference name="head">
5
  <action method="addCss"><stylesheet>emaildirect/emaildirect.css</stylesheet></action>
6
  </reference>
 
 
 
7
  <reference name="content">
8
  <block type="core/template" name="emaildirect_setup_check" before="-" template="emaildirect/system/config/setup_check.phtml" />
9
  </reference>
10
  </adminhtml_system_config_edit>
11
+
12
  <emaildirect_admin_export_products>
13
  <remove name="root"/>
14
  <block type="adminhtml/page" name="convert_root" output="toHtml" template="page.phtml">
app/design/adminhtml/default/default/template/emaildirect/system/config/fieldset/hint.phtml CHANGED
@@ -1,9 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <div class="emaildirect-notice">
2
  <h4>
3
  <div class='abandoned'>Abandoned Cart Processing:
4
  <?php if ($this->getAbandonedEnabled()) : ?><span class='ab_ok'>Enabled</span> - Last Run: <?php echo $this->getAbandonedLastRunHtml() ?> - <button onclick="window.location='<?php echo $this->getUrl('emaildirect/admin_abandoned/index'); ?>'; return false;" id="emaildirect_details">Details</button><?php else: ?><span class='ab_ng'>Disabled</span><?php endif; ?></div>
5
  <strong>EmailDirect Integration v<?php echo $this->getEmaildirectVersion() ?></strong>
6
  </h4>
 
7
  </div>
8
  <script type='text/javascript'>
9
  var setup = <?php echo Mage::helper('emaildirect')->config('setup') == 1 ? 'true' : 'false'; ?>;
1
+ <?php
2
+
3
+ $failed_columns = $this->checkDatabaseColumns();
4
+
5
+ ?>
6
+ <?php if (count($failed_columns) > 0): ?>
7
+ <div id="messages">
8
+ <ul class="messages">
9
+ <li class="error-msg">
10
+ <ul>
11
+ <li>
12
+ <span>Required Database columns are missing! <button onclick="window.location='<?php echo $this->getUrl('emaildirect/admin_troubleshooting/columns'); ?>'; return false;" id="emaildirect_column_fix">Fix this problem</button></span>
13
+ <table class='missing_columns'>
14
+ <tr><th>Table</th><th>Column</th><th>SQL to Restore Column Manually</th></tr>
15
+ <?php foreach ($failed_columns as $column): ?>
16
+ <tr><td><?php echo $column['table']; ?></td><td><?php echo $column['column']; ?></td><td><?php echo $column['sql'] ?></td></tr>
17
+ <?php endforeach; ?>
18
+ </table>
19
+ </li>
20
+ </ul>
21
+ </li>
22
+ </ul>
23
+ </div>
24
+ <?php endif; ?>
25
+
26
  <div class="emaildirect-notice">
27
  <h4>
28
  <div class='abandoned'>Abandoned Cart Processing:
29
  <?php if ($this->getAbandonedEnabled()) : ?><span class='ab_ok'>Enabled</span> - Last Run: <?php echo $this->getAbandonedLastRunHtml() ?> - <button onclick="window.location='<?php echo $this->getUrl('emaildirect/admin_abandoned/index'); ?>'; return false;" id="emaildirect_details">Details</button><?php else: ?><span class='ab_ng'>Disabled</span><?php endif; ?></div>
30
  <strong>EmailDirect Integration v<?php echo $this->getEmaildirectVersion() ?></strong>
31
  </h4>
32
+
33
  </div>
34
  <script type='text/javascript'>
35
  var setup = <?php echo Mage::helper('emaildirect')->config('setup') == 1 ? 'true' : 'false'; ?>;
app/design/adminhtml/default/default/template/emaildirect/system/config/form/field/trouble.phtml CHANGED
@@ -2,12 +2,12 @@
2
  <?php
3
  $element = $this->getElement();
4
 
5
- $enabled = $element->getValue() == 1;
6
  ?>
7
  <div id="<?php echo $this->getElement()->getHtmlId(); ?>" style='display:none'></div>
8
  <span class='trouble_status'>Status: <strong><?php if ($enabled) echo "Enabled"; else echo "Disabled" ?></strong></span>
9
  <button id='emaildirect_trouble' onClick="toggle_trouble();"><?php if ($enabled) echo "Disable"; else echo "Enable" ?></button>
10
- <input type='hidden' name='<?php echo $this->getElement()->getName() ?>' value='<?php echo $this->getElement()->getValue() ?>'/>
11
 
12
  <?php if ($enabled): ?>
13
  <div id='emaildirect_trouble_details'>
2
  <?php
3
  $element = $this->getElement();
4
 
5
+ $enabled = Mage::helper('emaildirect')->isLoggingEnabled();
6
  ?>
7
  <div id="<?php echo $this->getElement()->getHtmlId(); ?>" style='display:none'></div>
8
  <span class='trouble_status'>Status: <strong><?php if ($enabled) echo "Enabled"; else echo "Disabled" ?></strong></span>
9
  <button id='emaildirect_trouble' onClick="toggle_trouble();"><?php if ($enabled) echo "Disable"; else echo "Enable" ?></button>
10
+ <input type='hidden' name='<?php echo $this->getElement()->getName() ?>' value='<?php echo $enabled == true ? 1 : 0 ?>'/>
11
 
12
  <?php if ($enabled): ?>
13
  <div id='emaildirect_trouble_details'>
app/design/adminhtml/default/default/template/emaildirect/system/config/setup_check.phtml CHANGED
@@ -24,6 +24,6 @@
24
  </ul>
25
  </li>
26
  </ul>
27
- </div>
28
  <?php endif;
29
  endif; ?>
24
  </ul>
25
  </li>
26
  </ul>
27
+ </div>
28
  <?php endif;
29
  endif; ?>
package.xml CHANGED
@@ -1,18 +1,22 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>EmailDirect_Integration</name>
4
- <version>1.5.7</version>
5
  <stability>stable</stability>
6
  <license/>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>EmailDirect integration for magento</summary>
10
  <description>EmailDirect integration for magento</description>
11
- <notes>Stores can now set an ordered sequence to be appended to subscribers that abandoned a shopping cart. Sequencing feature lets clients easily split test abandoned cart workflows.</notes>
 
 
 
 
12
  <authors><author><name>Kevin Linden</name><user>auto-converted</user><email>Kevin@EmailDirect.com</email></author></authors>
13
- <date>2013-10-31</date>
14
- <time>22:12:00</time>
15
- <contents><target name="magelocal"><dir name="EmailDirect"><dir name="Integration"><dir name="Block"><dir name="Adminhtml"><dir name="Abandoned"><file name="Grid.php" hash="5534349906e67bfd67547ccd3753f184"/></dir><dir name="System"><dir name="Config"><dir name="Fieldset"><file name="Hint.php" hash="7649b64cf2319484207c5179df7b4e9f"/></dir><dir name="Form"><dir name="Field"><dir name="Export"><file name="Orders.php" hash="ddcfc1c3c579421bc5c8af9173d1cbf2"/><file name="Products.php" hash="0c6a9936ccc806b9e3ddf573d1df1e53"/><file name="Range.php" hash="b29f2227412e1f4fe9ba4c2e6e3b615d"/></dir><file name="Addressmapfields.php" hash="97b75c8340d561e863a3985ad73ce228"/><file name="Common.php" hash="e597ff375c4b46b92d6aa35646e3d8c9"/><file name="Info.php" hash="3ad219fe9bee9cebf50415b2166fee60"/><file name="Mapfields.php" hash="677ebfd526fba11a1c177c00ae085526"/><file name="Note.php" hash="ef99a474bbc3a828c7a618132a80fe66"/><file name="Shippingmapfields.php" hash="589a74260f394a5eae1b57ca89a74a8b"/><file name="Troubleshooting.php" hash="76bdb02601cda65dae32782ae11c0901"/></dir></dir><file name="Account.php" hash="60fa8e43a87e1f2ff71c319c979556b2"/></dir><dir name="Convert"><dir name="Profile"><dir name="Export"><file name="Orders.php" hash="eb9be61e0accdfaf3a2f315eb5eaae5b"/><file name="Products.php" hash="a58d1d192ef82fd6ce032db7455b11b8"/></dir><file name="Export.php" hash="0ac2fa1fefcd4c4a238417175350ad6c"/></dir></dir></dir><dir name="Troubleshooting"><dir name="View"><dir name="Tab"><file name="Download.php" hash="9315a364a46f9e39972bbd0a47152e90"/><file name="Info.php" hash="6714b756a3fa7a5812356e544fe48f1b"/><file name="Log.php" hash="7c3661722d1197cd8a564f76275353c7"/><file name="Submit.php" hash="8831d886858fde08a4323eea66ec76d2"/></dir><file name="Form.php" hash="e527a3a2335b109c48a69f06c1b0d01f"/></dir><file name="Tabs.php" hash="ab1fdbe561e8572c2c50cdbec9573f82"/><file name="View.php" hash="b85696126e6874b0f5a19d0af6183add"/></dir><file name="Abandoned.php" hash="f3be80231c0ed811acd1d63d269394c5"/></dir><dir name="Checkout"><file name="Subscribe.php" hash="ae325e815a54bde93507562cf0d86b8a"/></dir><dir name="Customer"><dir name="Account"><dir name="Dashboard"><file name="Info.php" hash="20e74d9c2b2c02611c8f69b254d81ef5"/></dir><file name="Lists.php" hash="3c3bdb9482ecf4a71740a80395bd5465"/></dir></dir><dir name="Widget"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="AbandonedMinutes.php" hash="22e33be85dc8348fce9b49637ead919d"/><file name="Action.php" hash="b85ef0454ab5c65ef0c43c7ef057ecc2"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="0e49db53e2b03f3ade49ca6ee1a5b00d"/><file name="Fields.php" hash="1275a766d979e1ac3efabbf168ac92f5"/></dir><dir name="Model"><dir name="System"><dir name="Config"><dir name="Source"><dir name="Export"><file name="Batch.php" hash="96c51fc5c0b947750be4e612e32c83ab"/></dir><file name="Abandonedlist.php" hash="66386003113d8589c9f3de4f03f538a8"/><file name="Additionallist.php" hash="254081820d07a8754a71743ea58a7af4"/><file name="Checkoutsubscribe.php" hash="fd90252a1f19649a420dae136ad2a2ba"/><file name="List.php" hash="d76e36c0198e509a63c663e827cc7940"/><file name="Publication.php" hash="635fae1c20981c0ca7b90007a00e99a7"/><file name="Sequence.php" hash="ec9718c2b5dc35c559e5c09e345eff88"/><file name="Source.php" hash="f3c246959c74f6d378f3e2d7b8148d7f"/><file name="States.php" hash="82682b97d671eb616649dfc52e202100"/><file name="Time.php" hash="8acbb5cb33e66de1e408cf55d17a9398"/></dir></dir></dir><dir name="Wrapper"><file name="Abandoned.php" hash="ef81d36a7276737f2d0aa1a5d783a83b"/><file name="Abstract.php" hash="9e97ce6a12e0d074921bb3a1391f3648"/><file name="Database.php" hash="3cceb467358d13584baff58c043762ec"/><file name="Execute.php" hash="5a339e0a5407cf05b161102fc65595bb"/><file name="Ftp.php" hash="d5335cfb68f99761d6902dd390a3d7a8"/><file name="Lists.php" hash="dff74c445f6a9582b35bb24560582c2b"/><file name="Orders.php" hash="81dbf1045688e932fa6175784c2bf0cb"/><file name="Publications.php" hash="815715549df345ccb5b69ed65589aa53"/><file name="Sources.php" hash="c6caf0274f7d0c50114324bc47a490c4"/><file name="Subscribers.php" hash="064e07d8f2015cf56f7e82844f5df54c"/></dir><file name="Observer.php" hash="e5f6dce6e11da0bf3e5a3d95e8915944"/></dir><dir name="controllers"><dir name="Admin"><file name="AbandonedController.php" hash="d7cb59c88fcf80737be0ccdad7f4b7d7"/><file name="ExportController.php" hash="f9ceaa6b2fd25c5c283b01dbf182c27e"/><file name="OrderExportController.php" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="TroubleshootingController.php" hash="c3dbc4bd72620dcd0b5844c3ee735f4e"/></dir><dir name="Customer"><file name="AccountController.php" hash="16bfdb6de4804a5d71cb972afbff4537"/></dir><file name="AbandonedController.php" hash="138accdf0fb53ae11ca1c10f522845f2"/><file name="ExportController.php" hash="7ca147debc5c1436b3bf2d9501592f33"/></dir><dir name="etc"><file name="adminhtml.xml" hash="896c10d8a3f932346e7d301052b1b6a6"/><file name="config.xml" hash="8898d3b083644e7a744d93f576110fa3"/><file name="system.xml" hash="be553328cfdffa5bea0a5d3c5516f4a8"/></dir><dir name="sql"><dir name="emaildirect_setup"><file name="mysql4-install-1.0.0.php" hash="9dc51edb346e9676735e15d3e78fa3eb"/><file name="mysql4-upgrade-1.0.13-1.0.14.php" hash="c42e2677b3960a049d7137b622552084"/><file name="mysql4-upgrade-1.0.19-1.2.0.php" hash="742be042b7f56e7ff2002b0606270ca6"/><file name="mysql4-upgrade-1.5.4-1.5.5.php" hash="560244d63a037f88201a61d7f7482d2c"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="emaildirect"><file name="emaildirect-tab.png" hash="9ddb077b74a7078ac509d79b024631a1"/><file name="emaildirect.css" hash="3b4f1d8a88557b56507b448856e9f3ed"/><file name="emaildirect.js" hash="ce03dd6f51ea529fc4acdc5116f4e030"/><file name="logo.png" hash="2e7e39ced387c798ef27b77dd69f073e"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="emaildirect"><dir name="images"><file name="bkg_block-title.gif" hash="f8c1f130ad69464fe7aff2f589b2ec75"/><file name="dotted_divider.gif" hash="260ebae91ffb1b7c663906b29a069925"/><file name="emaildirect-tile.png" hash="86a0ed36169ab9691480fc995ab674a8"/><file name="i_block-subscribe.gif" hash="9e5fee06a543742045118a95f2debcb8"/></dir><file name="integration.js" hash="d8c8d5bf0ddb4f6ead23bec8a2814475"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="emaildirect.xml" hash="a006ce5af147910be8b108e8f7ec9d19"/></dir><dir name="template"><dir name="emaildirect"><dir name="system"><dir name="config"><dir name="fieldset"><file name="hint.phtml" hash="681b2e7b19718fb6fd23876e70f5abac"/></dir><dir name="form"><dir name="field"><dir name="export"><file name="date_range.phtml" hash="0061fbfbfdba23ce3c4d98e66184c3a2"/><file name="orders.phtml" hash="e8006492a9048c117f2a0a95ed3bf717"/><file name="products.phtml" hash="99b88859146f490f87690cd44cabc999"/></dir><file name="array.phtml" hash="5415eeff311735624354468c886d39b5"/><file name="info.phtml" hash="a11383dd825b695f2fcba0b86f88f94f"/><file name="note.phtml" hash="6625a3771ba10daba5ded5570574716f"/><file name="trouble.phtml" hash="824ff5238a169b1a9ef288118b4bf96d"/></dir></dir><file name="setup_check.phtml" hash="fb3e7b0e2690cff72f742df6d01bd15d"/></dir><dir name="convert"><dir name="profile"><file name="export.phtml" hash="9be5cdbc2e46b9fa65950b5d6558dca5"/></dir></dir></dir><dir name="troubleshooting"><dir name="view"><dir name="tab"><file name="download.phtml" hash="78ec34fd9c3c8b660b19f9e799d8e76e"/><file name="info.phtml" hash="bd19bb1072ce1d60a4fb7bda660a0ce7"/><file name="log.phtml" hash="c9e2c9493a2dad579bba4ed53795cf5e"/><file name="submit.phtml" hash="c2269f4a6a52d66bff5eac660d0831bd"/></dir><file name="form.phtml" hash="d2338bfe3598e9315ca8f5ac8d9b5516"/></dir><file name="view.phtml" hash="ee6af3fe79d916af764f41e7e8c5cc37"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="emaildirect.xml" hash="9803fe9024b7eb6415713d81fe27c629"/></dir><dir name="template"><dir name="emaildirect"><dir name="checkout"><file name="subscribe.phtml" hash="351ea790305f0a3ec99c34180bbee235"/></dir><dir name="customer"><dir name="account"><dir name="dashboard"><file name="info.phtml" hash="4256a03d67ec2a6f97867a87564cff92"/></dir><file name="lists.phtml" hash="4c697dcfa63ece1db7885cadb02982d1"/></dir></dir><dir name="email"><dir name="order"><dir name="items"><dir name="order"><file name="default.phtml" hash="2d65f3d02b9baa08969d68f2a2cca348"/></dir></dir><file name="items.phtml" hash="e6b15e6460010c5acae66017d177bfb9"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><file name="newsletter_subscr_success_emaildirect.html" hash="f6afb69d207bbc3f8920e7a72ac9dd07"/><file name="newsletter_unsub_success_emaildirect.html" hash="bd9f97e8f5485180d4420097b5200ef4"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="EmailDirect_Integration.xml" hash="2d2666e6d9cd8d40a4974d5e242721d6"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies/>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>EmailDirect_Integration</name>
4
+ <version>1.5.8</version>
5
  <stability>stable</stability>
6
  <license/>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>EmailDirect integration for magento</summary>
10
  <description>EmailDirect integration for magento</description>
11
+ <notes>Troubleshooting is upgraded to automatically turn off after 10 minutes.&#xD;
12
+ &#xD;
13
+ Required database fields are checked each time you visit the Configuration Page.&#xD;
14
+ &#xD;
15
+ Database Fields that are missing may be fixed manually or through the extension.</notes>
16
  <authors><author><name>Kevin Linden</name><user>auto-converted</user><email>Kevin@EmailDirect.com</email></author></authors>
17
+ <date>2013-11-25</date>
18
+ <time>18:27:46</time>
19
+ <contents><target name="magelocal"><dir name="EmailDirect"><dir name="Integration"><dir name="Block"><dir name="Adminhtml"><dir name="Abandoned"><file name="Grid.php" hash="5534349906e67bfd67547ccd3753f184"/></dir><dir name="System"><dir name="Config"><dir name="Fieldset"><file name="Hint.php" hash="6b1801b68da53b77a205e4b2e1900119"/></dir><dir name="Form"><dir name="Field"><dir name="Export"><file name="Orders.php" hash="ddcfc1c3c579421bc5c8af9173d1cbf2"/><file name="Products.php" hash="0c6a9936ccc806b9e3ddf573d1df1e53"/><file name="Range.php" hash="b29f2227412e1f4fe9ba4c2e6e3b615d"/></dir><file name="Addressmapfields.php" hash="97b75c8340d561e863a3985ad73ce228"/><file name="Common.php" hash="e597ff375c4b46b92d6aa35646e3d8c9"/><file name="Info.php" hash="0fa5f6e12e48708ac1ce6022db1ad2d5"/><file name="Mapfields.php" hash="677ebfd526fba11a1c177c00ae085526"/><file name="Note.php" hash="ef99a474bbc3a828c7a618132a80fe66"/><file name="Shippingmapfields.php" hash="589a74260f394a5eae1b57ca89a74a8b"/><file name="Troubleshooting.php" hash="0b0b0fffd3251a13e0550740df784cb3"/></dir></dir><file name="Account.php" hash="60fa8e43a87e1f2ff71c319c979556b2"/></dir><dir name="Convert"><dir name="Profile"><dir name="Export"><file name="Orders.php" hash="eb9be61e0accdfaf3a2f315eb5eaae5b"/><file name="Products.php" hash="a58d1d192ef82fd6ce032db7455b11b8"/></dir><file name="Export.php" hash="0ac2fa1fefcd4c4a238417175350ad6c"/></dir></dir></dir><dir name="Troubleshooting"><dir name="View"><dir name="Tab"><file name="Download.php" hash="9315a364a46f9e39972bbd0a47152e90"/><file name="Info.php" hash="6714b756a3fa7a5812356e544fe48f1b"/><file name="Log.php" hash="7c3661722d1197cd8a564f76275353c7"/><file name="Submit.php" hash="8831d886858fde08a4323eea66ec76d2"/></dir><file name="Form.php" hash="e527a3a2335b109c48a69f06c1b0d01f"/></dir><file name="Tabs.php" hash="ab1fdbe561e8572c2c50cdbec9573f82"/><file name="View.php" hash="b85696126e6874b0f5a19d0af6183add"/></dir><file name="Abandoned.php" hash="f3be80231c0ed811acd1d63d269394c5"/></dir><dir name="Checkout"><file name="Subscribe.php" hash="ae325e815a54bde93507562cf0d86b8a"/></dir><dir name="Customer"><dir name="Account"><dir name="Dashboard"><file name="Info.php" hash="20e74d9c2b2c02611c8f69b254d81ef5"/></dir><file name="Lists.php" hash="3c3bdb9482ecf4a71740a80395bd5465"/></dir></dir><dir name="Widget"><dir name="Grid"><dir name="Column"><dir name="Renderer"><file name="AbandonedMinutes.php" hash="22e33be85dc8348fce9b49637ead919d"/><file name="Action.php" hash="b85ef0454ab5c65ef0c43c7ef057ecc2"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="7d7a6dc9571c653d6031110fb399927b"/><file name="Fields.php" hash="1275a766d979e1ac3efabbf168ac92f5"/></dir><dir name="Model"><dir name="System"><dir name="Config"><dir name="Source"><dir name="Export"><file name="Batch.php" hash="96c51fc5c0b947750be4e612e32c83ab"/></dir><file name="Abandonedlist.php" hash="66386003113d8589c9f3de4f03f538a8"/><file name="Additionallist.php" hash="254081820d07a8754a71743ea58a7af4"/><file name="Checkoutsubscribe.php" hash="fd90252a1f19649a420dae136ad2a2ba"/><file name="List.php" hash="d76e36c0198e509a63c663e827cc7940"/><file name="Publication.php" hash="635fae1c20981c0ca7b90007a00e99a7"/><file name="Sequence.php" hash="ec9718c2b5dc35c559e5c09e345eff88"/><file name="Source.php" hash="f3c246959c74f6d378f3e2d7b8148d7f"/><file name="States.php" hash="82682b97d671eb616649dfc52e202100"/><file name="Time.php" hash="8acbb5cb33e66de1e408cf55d17a9398"/></dir></dir></dir><dir name="Wrapper"><file name="Abandoned.php" hash="ef81d36a7276737f2d0aa1a5d783a83b"/><file name="Abstract.php" hash="9e97ce6a12e0d074921bb3a1391f3648"/><file name="Database.php" hash="3cceb467358d13584baff58c043762ec"/><file name="Execute.php" hash="5a339e0a5407cf05b161102fc65595bb"/><file name="Ftp.php" hash="d5335cfb68f99761d6902dd390a3d7a8"/><file name="Lists.php" hash="dff74c445f6a9582b35bb24560582c2b"/><file name="Orders.php" hash="81dbf1045688e932fa6175784c2bf0cb"/><file name="Publications.php" hash="815715549df345ccb5b69ed65589aa53"/><file name="Sources.php" hash="c6caf0274f7d0c50114324bc47a490c4"/><file name="Subscribers.php" hash="064e07d8f2015cf56f7e82844f5df54c"/></dir><file name="Observer.php" hash="0dbb2f0c5bad28b039eb3435425b242f"/></dir><dir name="controllers"><dir name="Admin"><file name="AbandonedController.php" hash="d7cb59c88fcf80737be0ccdad7f4b7d7"/><file name="ExportController.php" hash="f9ceaa6b2fd25c5c283b01dbf182c27e"/><file name="OrderExportController.php" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="TroubleshootingController.php" hash="806f96d4bd8a70eca4c218ed0ff48fd6"/></dir><dir name="Customer"><file name="AccountController.php" hash="16bfdb6de4804a5d71cb972afbff4537"/></dir><file name="AbandonedController.php" hash="86cb0979c6ea5322bccc33f8600a6f4b"/><file name="ExportController.php" hash="7ca147debc5c1436b3bf2d9501592f33"/></dir><dir name="etc"><file name="adminhtml.xml" hash="896c10d8a3f932346e7d301052b1b6a6"/><file name="config.xml" hash="fdfc45d04ff2e193bf86fb81d480f5c3"/><file name="system.xml" hash="be553328cfdffa5bea0a5d3c5516f4a8"/></dir><dir name="sql"><dir name="emaildirect_setup"><file name="mysql4-install-1.0.0.php" hash="9dc51edb346e9676735e15d3e78fa3eb"/><file name="mysql4-upgrade-1.0.13-1.0.14.php" hash="c42e2677b3960a049d7137b622552084"/><file name="mysql4-upgrade-1.0.19-1.2.0.php" hash="742be042b7f56e7ff2002b0606270ca6"/><file name="mysql4-upgrade-1.5.4-1.5.5.php" hash="560244d63a037f88201a61d7f7482d2c"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="emaildirect"><file name="emaildirect-tab.png" hash="9ddb077b74a7078ac509d79b024631a1"/><file name="emaildirect.css" hash="2dab687df0c54506ecddc6a34082f2bf"/><file name="emaildirect.js" hash="ce03dd6f51ea529fc4acdc5116f4e030"/><file name="logo.png" hash="2e7e39ced387c798ef27b77dd69f073e"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="emaildirect"><dir name="images"><file name="bkg_block-title.gif" hash="f8c1f130ad69464fe7aff2f589b2ec75"/><file name="dotted_divider.gif" hash="260ebae91ffb1b7c663906b29a069925"/><file name="emaildirect-tile.png" hash="86a0ed36169ab9691480fc995ab674a8"/><file name="i_block-subscribe.gif" hash="9e5fee06a543742045118a95f2debcb8"/></dir><file name="integration.js" hash="d8c8d5bf0ddb4f6ead23bec8a2814475"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="emaildirect.xml" hash="79a7de2366bfcef2df54ffb104de176f"/></dir><dir name="template"><dir name="emaildirect"><dir name="system"><dir name="config"><dir name="fieldset"><file name="hint.phtml" hash="d1cf4d176a7adf4dcb1b3186b70b19d3"/></dir><dir name="form"><dir name="field"><dir name="export"><file name="date_range.phtml" hash="0061fbfbfdba23ce3c4d98e66184c3a2"/><file name="orders.phtml" hash="e8006492a9048c117f2a0a95ed3bf717"/><file name="products.phtml" hash="99b88859146f490f87690cd44cabc999"/></dir><file name="array.phtml" hash="5415eeff311735624354468c886d39b5"/><file name="info.phtml" hash="a11383dd825b695f2fcba0b86f88f94f"/><file name="note.phtml" hash="6625a3771ba10daba5ded5570574716f"/><file name="trouble.phtml" hash="86d486f6c53e8ffae2016a88225223fb"/></dir></dir><file name="setup_check.phtml" hash="1814302f58a15fb1629446e074a7e1e0"/></dir><dir name="convert"><dir name="profile"><file name="export.phtml" hash="9be5cdbc2e46b9fa65950b5d6558dca5"/></dir></dir></dir><dir name="troubleshooting"><dir name="view"><dir name="tab"><file name="download.phtml" hash="78ec34fd9c3c8b660b19f9e799d8e76e"/><file name="info.phtml" hash="bd19bb1072ce1d60a4fb7bda660a0ce7"/><file name="log.phtml" hash="c9e2c9493a2dad579bba4ed53795cf5e"/><file name="submit.phtml" hash="c2269f4a6a52d66bff5eac660d0831bd"/></dir><file name="form.phtml" hash="d2338bfe3598e9315ca8f5ac8d9b5516"/></dir><file name="view.phtml" hash="ee6af3fe79d916af764f41e7e8c5cc37"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="emaildirect.xml" hash="9803fe9024b7eb6415713d81fe27c629"/></dir><dir name="template"><dir name="emaildirect"><dir name="checkout"><file name="subscribe.phtml" hash="351ea790305f0a3ec99c34180bbee235"/></dir><dir name="customer"><dir name="account"><dir name="dashboard"><file name="info.phtml" hash="4256a03d67ec2a6f97867a87564cff92"/></dir><file name="lists.phtml" hash="4c697dcfa63ece1db7885cadb02982d1"/></dir></dir><dir name="email"><dir name="order"><dir name="items"><dir name="order"><file name="default.phtml" hash="2d65f3d02b9baa08969d68f2a2cca348"/></dir></dir><file name="items.phtml" hash="e6b15e6460010c5acae66017d177bfb9"/></dir></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><dir name="template"><dir name="email"><file name="newsletter_subscr_success_emaildirect.html" hash="f6afb69d207bbc3f8920e7a72ac9dd07"/><file name="newsletter_unsub_success_emaildirect.html" hash="bd9f97e8f5485180d4420097b5200ef4"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="EmailDirect_Integration.xml" hash="2d2666e6d9cd8d40a4974d5e242721d6"/></dir></target></contents>
20
  <compatible/>
21
  <dependencies/>
22
  </package>
skin/adminhtml/default/default/emaildirect/emaildirect.css CHANGED
@@ -37,7 +37,6 @@ div.emaildirect-notice h4 div.abandoned
37
  #emaildirect_trouble_details ul { list-style: disc outside none; margin-left: 14px;}
38
 
39
  #log_file_contents { width: 796px; height: 396px; overflow:scroll; border:solid 1px; padding: 2px;}
40
- #config_details { }
41
  #config_details table { width: 100%; border-collapse: collapse;}
42
  .ed-config-table tr td:first-child { width: 180px; }
43
 
@@ -54,4 +53,11 @@ div.emaildirect-notice h4 div.abandoned
54
 
55
  .head-adminhtml-troubleshooting {
56
  background-image: url("../images/fam_package_go.gif");
57
- }
 
 
 
 
 
 
 
37
  #emaildirect_trouble_details ul { list-style: disc outside none; margin-left: 14px;}
38
 
39
  #log_file_contents { width: 796px; height: 396px; overflow:scroll; border:solid 1px; padding: 2px;}
 
40
  #config_details table { width: 100%; border-collapse: collapse;}
41
  .ed-config-table tr td:first-child { width: 180px; }
42
 
53
 
54
  .head-adminhtml-troubleshooting {
55
  background-image: url("../images/fam_package_go.gif");
56
+ }
57
+
58
+ table.missing_columns { background-color: white; color: black; margin: 10px; border: solid 1px black; border-collapse: collapse;}
59
+
60
+ table.missing_columns tr td, table.missing_columns tr th { border: solid 1px black; border-collapse: collapse; padding: 4px 10px;}
61
+ table.missing_columns tr th { font-weight: bold; color: red; }
62
+
63
+ #emaildirect_column_fix { margin-left: 15px; }