$this->adapter->getToken()); $result = ''; if ($params['method'] == 'GET') { $url .= '?' . http_build_query($clientParameters, "", "&"); $result = $this->client->get($url); } elseif ($params['method'] == 'DELETE') { $result = $this->client->delete($url, $clientParameters, true); } else { $result = $this->client->post($url, $clientParameters, true); } if (!$params['has_pagination']) return $result; try { $partialResult = $result; $result = []; $page = 1; do { $decodedResult = Json::decode($partialResult); $nextPage = ($decodedResult['paging'] && $decodedResult['paging']['next']) ? $decodedResult['paging']['next'] : false; unset($decodedResult['paging']); $result = array_merge_recursive($result, $decodedResult); if ($nextPage) { $this->client->query($params['method'], $nextPage); $partialResult = $this->client->getResult(); $page++; } else { if ($page == 1) // if haven't ['paging']['next'] in original response { return $partialResult; } break; } } while($nextPage && $page < 20); // max 500 items return Json::encode($result); } catch (\Exception $e) { return $result; } } }