diff --git a/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php b/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php
index 06f5d4da..554ef3b0 100644
--- a/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php
+++ b/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard.php
@@ -32,8 +32,7 @@ public function getAuthHeader() {
}
public function isConnected() {
- $connection = Mage::helper('zendesk')->getConnectionStatus();
- return $connection['success'];
+ return Mage::getStoreConfig('zendesk/general/authenticated');
}
public function getTotals() {
diff --git a/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php b/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php
index b9eb2ea5..db236a46 100644
--- a/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php
+++ b/src/app/code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php
@@ -29,8 +29,9 @@ public function __construct() {
protected function _prepareLayout() {
// Check if we are on the main admin dashboard and, if so, whether we should be showing the grid
// Note: an additional check in the template is needed, but this will prevent unnecessary API calls to Zendesk
- if ( !$this->getIsZendeskDashboard() && !Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard') )
- {
+ if (!Mage::getStoreConfig('zendesk/general/authenticated')
+ || (!$this->getIsZendeskDashboard() && !Mage::getStoreConfig('zendesk/backend_features/show_on_dashboard'))
+ ) {
return parent::_prepareLayout();
}
diff --git a/src/app/code/community/Zendesk/Zendesk/Model/Api/SupportAddresses.php b/src/app/code/community/Zendesk/Zendesk/Model/Api/SupportAddresses.php
index aad1aed3..9e848317 100644
--- a/src/app/code/community/Zendesk/Zendesk/Model/Api/SupportAddresses.php
+++ b/src/app/code/community/Zendesk/Zendesk/Model/Api/SupportAddresses.php
@@ -7,8 +7,7 @@ public function all()
$page = 1;
$addresses = array();
- while ($page) {
- $response = $this->_call('recipient_addresses.json?page=' . $page);
+ while ($page && !empty($response = $this->_call('recipient_addresses.json?page=' . $page))) {
$addresses = array_merge($addresses, $response['recipient_addresses']);
$page = is_null($response['next_page']) ? 0 : $page + 1;
}
diff --git a/src/app/code/community/Zendesk/Zendesk/Model/Observer.php b/src/app/code/community/Zendesk/Zendesk/Model/Observer.php
index 449b301b..418f4f5b 100644
--- a/src/app/code/community/Zendesk/Zendesk/Model/Observer.php
+++ b/src/app/code/community/Zendesk/Zendesk/Model/Observer.php
@@ -114,6 +114,10 @@ public function saveConfig(Varien_Event_Observer $observer)
} elseif (empty($zDomain)) {
Mage::getModel('core/config')->saveConfig('zendesk/frontend_features/web_widget_code_snippet', '');
}
+
+ // Save the connection status, used to check if it's okay to load pages that calls the API
+ $connectionStatus = Mage::helper('zendesk')->getConnectionStatus();
+ Mage::getModel('core/config')->saveConfig('zendesk/general/authenticated', (int) $connectionStatus['success'], $scope, $scopeId);
}
public function addTicketButton(Varien_Event_Observer $event)
diff --git a/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php b/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php
index 513f7591..7218af6c 100644
--- a/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php
+++ b/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php
@@ -691,8 +691,9 @@ protected function getMassActionResponse($response, $ids, $message = '%d out of
private function _domainConfigured()
{
- $domain = Mage::getStoreConfig('zendesk/general/domain');
- if(!$domain) {
+ $authenticated = Mage::getStoreConfig('zendesk/general/authenticated');
+
+ if(!$authenticated) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('zendesk')->__('Please set up Zendesk connection.'));
$this->_redirect('adminhtml/dashboard');
return false;
diff --git a/src/app/code/community/Zendesk/Zendesk/data/zendesk_setup/data-upgrade-2.0.6-2.0.7.php b/src/app/code/community/Zendesk/Zendesk/data/zendesk_setup/data-upgrade-2.0.6-2.0.7.php
new file mode 100644
index 00000000..da54fef1
--- /dev/null
+++ b/src/app/code/community/Zendesk/Zendesk/data/zendesk_setup/data-upgrade-2.0.6-2.0.7.php
@@ -0,0 +1,20 @@
+getConnectionStatus();
+$config = new Mage_Core_Model_Config();
+$config->saveConfig('zendesk/general/authenticated', (int) $connectionStatus['success'], 'default', 0);
diff --git a/src/app/code/community/Zendesk/Zendesk/etc/system.xml b/src/app/code/community/Zendesk/Zendesk/etc/system.xml
index 45ed7136..70a6489e 100644
--- a/src/app/code/community/Zendesk/Zendesk/etc/system.xml
+++ b/src/app/code/community/Zendesk/Zendesk/etc/system.xml
@@ -110,6 +110,14 @@
1
+
+ hidden
+ adminhtml/system_config_source_yesno
+ 1
+ 0
+ 0
+ 0
+