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 +