Last active
April 4, 2017 10:47
-
-
Save gemmadlou/60e30234d154396fc38a00c0e9ac0daf to your computer and use it in GitHub Desktop.
Using Guzzle With Events Plugin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php namespace Helper; | |
| // This calculates the offset indexes for the Plugin | |
| class CollectionOffset | |
| { | |
| private $postsPerPage; | |
| private $page; | |
| public function __construct($postsPerPage = 10, $page = 1) | |
| { | |
| if (!is_numeric($postsPerPage) || !is_numeric($page)) { | |
| throw new \Exception("parameters should be numeric"); | |
| } | |
| $this->postsPerPage = $postsPerPage; | |
| $this->page = $page; | |
| return $this; | |
| } | |
| public function start() | |
| { | |
| return $this->postsPerPage * ($this->page - 1); | |
| } | |
| public function end() | |
| { | |
| return ($this->postsPerPage * ($this->page - 1)) + $this->postsPerPage; | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace Example\Query; | |
| use \GuzzleHttp\Client; | |
| use \GuzzleHttp\Psr7; | |
| use \GuzzleHttp\Exception\RequestException; | |
| use \Helper\CollectionOffset; | |
| class EventQueries | |
| { | |
| use \Helper\QueryHelper; | |
| /** | |
| * $dateOptions should be 'Past or Future' | |
| */ | |
| public static function getFiltered($numberOfPosts = 1, $page = 1, $dateOptions = [], $tags = []) | |
| { | |
| $url = '/wp-json/events/v1/getEventsFiltered'; | |
| if (!empty($dateOptions)) { | |
| $url = self::addParameter('date', self::getDateParamValue($dateOptions), $url); | |
| } | |
| if (!empty($tags)) { | |
| $url = self::addParameter('tags', self::getEventTagsParaValue($taxonomyQueries), $url); | |
| } | |
| $url = self::addParameter('startIndex', (new CollectionOffset($numberOfPosts, $page))->start(), $url); | |
| $url = self::addParameter('endIndex', (new CollectionOffset($numberOfPosts, $page))->end(), $url); | |
| $events = self::requestAPI('GET', $url, []); | |
| return collect($events)->map(function($event) { | |
| return self::eventDTO($event); | |
| })->take($numberOfPosts)->toArray(); | |
| } | |
| public static function getSingleEvent($id) | |
| { | |
| $url = '/wp-json/events/v1/getEvent/' . $id; | |
| return self::requestAPI('GET', $url, null); | |
| } | |
| private static function requestAPI($httpRequest, $url, $altReturnVar = []) | |
| { | |
| $client = new Client([ | |
| 'base_uri' => home_url() | |
| ]); | |
| $res = $client->request( | |
| 'GET', | |
| $url, | |
| ['http_errors' => false] | |
| ); | |
| return $res->getStatusCode() === 200 ? json_decode($res->getBody()->getContents()) : $altReturnVar; | |
| } | |
| private static function getDateParamValue($dateOptions = []) | |
| { | |
| if (in_array('future', $dateOptions) && in_array('past', $dateOptions)) { | |
| return date('Y-m-d', strtotime('2000-1-1')) . '&after=true'; | |
| } else if (in_array('future', $dateOptions)) { | |
| return date('Y-m-d') . '&after=true'; | |
| } else if (in_array('past', $dateOptions)) { | |
| return date('Y-m-d') . '&after=false'; | |
| } | |
| } | |
| private static function getEventTagsParaValue(array $tags) | |
| { | |
| $taxonomyQueriesAsString = join($tags, ','); | |
| return !empty($taxonomyQueriesAsString) ? $taxonomyQueriesAsString : ''; | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace Helper; | |
| /** | |
| * URL Parameter Query Helpers | |
| */ | |
| trait QueryHelper | |
| { | |
| /** | |
| * Adds a parameter key value pair to current url | |
| * @param string $key | |
| * @param string $value | |
| * @return string New query string | |
| */ | |
| public function addURLParameter($key, $value) | |
| { | |
| return add_query_arg($key, $value); | |
| } | |
| public static function addParameter($key, $value, $url = null) | |
| { | |
| return add_query_arg($key, $value, $url); | |
| } | |
| /** | |
| * Removes a parameter from current url | |
| * @param string $key | |
| * @return string New Query String | |
| */ | |
| public function removeURLParameter($key) | |
| { | |
| return remove_query_arg($key); | |
| } | |
| /** | |
| * gets parameter key valye if one exists | |
| * @param string $key | |
| * @return string or null | |
| */ | |
| public function getURLParameter($key) | |
| { | |
| return isset($_GET[$key]) ? $_GET[$key] : null; | |
| } | |
| /** | |
| * Gets current page number | |
| * @return integer page number | |
| */ | |
| public function getCurrentPageNumber() | |
| { | |
| $paged = 1; | |
| if ( get_query_var('paged') ) { | |
| $paged = get_query_var('paged'); | |
| } elseif ( get_query_var('page') ) { | |
| $paged = get_query_var('page'); | |
| } | |
| return $paged; | |
| } | |
| /** | |
| * Gets the next page number | |
| * @return integer page number | |
| */ | |
| public function getNextPageNumber() | |
| { | |
| return $this->getCurrentPageNumber() + 1; | |
| } | |
| /** | |
| * Gets the previous page number | |
| * @return integer page number | |
| */ | |
| public function getPreviousPageNumber() | |
| { | |
| return $this->getCurrentPageNumber() - 1; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment