diff --git a/src/app/code/community/Zendesk/Zendesk/Model/Api/Users.php b/src/app/code/community/Zendesk/Zendesk/Model/Api/Users.php index c09166a2..9e0ebd36 100644 --- a/src/app/code/community/Zendesk/Zendesk/Model/Api/Users.php +++ b/src/app/code/community/Zendesk/Zendesk/Model/Api/Users.php @@ -59,7 +59,7 @@ public function all() while($page && $response = $this->_call('users.json?page=' . $page)) { $users = array_merge($users, $response['users']); $page = is_null($response['next_page']) ? 0 : $page + 1; - } + } return $users; } @@ -115,4 +115,21 @@ public function createUserField($field) return $response['user_field']; } + + /** + * Fetch all user fields + * + * @return array $userFields + */ + public function getUserFields() + { + $page = 1; + $userFields = array(); + while($page && $response = $this->_call('user_fields.json?page=' . $page)) { + $userFields = array_merge($userFields, $response['user_fields']); + $page = is_null($response['next_page']) ? 0 : $page + 1; + } + + return $userFields; + } } 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 b07988ed..2e849877 100644 --- a/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php +++ b/src/app/code/community/Zendesk/Zendesk/controllers/Adminhtml/ZendeskController.php @@ -526,7 +526,9 @@ public function syncAction() $this->getResponse()->clearHeaders()->setHeader('Content-type','application/json',true); Mage::log('Synchronization started', null, 'zendesk.log'); try { - $user = Mage::getModel('zendesk/api_users')->all(); + $userFieldKeys = array_column(Mage::getModel('zendesk/api_users')->getUserFields(), 'key'); + $user = Mage::getModel('zendesk/api_users')->me(); + if (is_null($user)) throw new Exception("Connection Failed"); @@ -593,7 +595,11 @@ public function syncAction() ); foreach($data as $field) { + if (in_array($field['user_field']['key'], $userFieldKeys)) + continue; + $response = Mage::getModel('zendesk/api_users')->createUserField($field); + if (!isset($response['active']) || $response['active'] === false) Mage::log('Unable to create User Field with key '.$field['user_field']['key'], null, 'zendesk.log'); } diff --git a/src/app/code/community/Zendesk/Zendesk/functions.php b/src/app/code/community/Zendesk/Zendesk/functions.php new file mode 100644 index 00000000..4da1c071 --- /dev/null +++ b/src/app/code/community/Zendesk/Zendesk/functions.php @@ -0,0 +1,116 @@ +