diff --git a/.gitignore b/.gitignore index 2fdb3e5..11ef3f5 100644 --- a/.gitignore +++ b/.gitignore @@ -187,7 +187,7 @@ fabric.properties .idea/* -!.idea/codeStyles +#!.idea/codeStyles !.idea/runConfigurations ### PHPUnit ### diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d40b9d..e7bca71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 #### Changed - Changed system.xml sort to stop becoming default instead of core options +#### Fixed +- Updated getKlaviyoLists() exception handling to properly print error message. +- Paginate to get all lists for account. + ### [4.1.0] - 2023-09-29 #### Added diff --git a/Helper/Data.php b/Helper/Data.php index 1fd51e1..2d7008d 100644 --- a/Helper/Data.php +++ b/Helper/Data.php @@ -80,10 +80,10 @@ public function getKlaviyoLists() 'lists' => $lists ]; } catch (\Exception $e) { - $this->_klaviyoLogger->log(sprintf('Unable to get list: %s', $e["detail"])); + $this->_klaviyoLogger->log(sprintf('Unable to get list: %s', $e->getMessage())); return [ 'success' => false, - 'reason' => $e["detail"] + 'reason' => $e->getMessage() ]; } } diff --git a/KlaviyoV3Sdk/KlaviyoV3Api.php b/KlaviyoV3Sdk/KlaviyoV3Api.php index bd1fdbd..66591a7 100644 --- a/KlaviyoV3Sdk/KlaviyoV3Api.php +++ b/KlaviyoV3Sdk/KlaviyoV3Api.php @@ -47,6 +47,8 @@ class KlaviyoV3Api */ const CUSTOMER_PROPERTIES_MAP = ['$email' => 'email', 'firstname' => 'first_name', 'lastname' => 'last_name', '$exchange_id' => '_kx']; const DATA_KEY_PAYLOAD = 'data'; + const LINKS_KEY_PAYLOAD = 'links'; + const NEXT_KEY_PAYLOAD = 'next'; const TYPE_KEY_PAYLOAD = 'type'; const ATTRIBUTE_KEY_PAYLOAD = 'attributes'; const PROPERTIES_KEY_PAYLOAD = 'properties'; @@ -138,9 +140,19 @@ public function getHeaders() */ public function getLists() { - $response_body = $this->requestV3('api/lists/', self::HTTP_GET); + $response = $this->requestV3('api/lists/', self::HTTP_GET); + $lists = $response[self::DATA_KEY_PAYLOAD]; - return $response_body[self::DATA_KEY_PAYLOAD]; + $next = $response[self::LINKS_KEY_PAYLOAD][self::NEXT_KEY_PAYLOAD]; + while ($next) { + $next_qs = explode("?", $next)[1]; + $response = $this->requestV3("api/lists/?$next_qs", self::HTTP_GET); + array_push($lists, ...$response[self::DATA_KEY_PAYLOAD]); + + $next = $response[self::LINKS_KEY_PAYLOAD][self::NEXT_KEY_PAYLOAD]; + } + + return $lists; } /**