From 24288aee8b3d4cece9193af4f630b4513f2abc23 Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 19:59:16 +0000 Subject: [PATCH 01/18] Do not create a meetup if an ID is passed. --- app/src/Service/EventsService.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/Service/EventsService.php b/app/src/Service/EventsService.php index c4cb056..091b35d 100644 --- a/app/src/Service/EventsService.php +++ b/app/src/Service/EventsService.php @@ -126,7 +126,7 @@ public function createMainEvents(Event $event, $userID, $meetupID = null) { $this->createEvent($event); - if (!is_null($meetupID)) { + if (is_null($meetupID)) { if ((int)$this->createMeetup()->getStatusCode() !== 201) { throw new \Exception('Could not create meetup event.'); } @@ -141,7 +141,7 @@ public function createMainEvents(Event $event, $userID, $meetupID = null) throw $e; } - $eventEntity = $this->eventService->updateEvents(); + $eventEntity = $this->updateEvents(); return [ 'meetup' => $this->createMeetup()->getStatusCode(), From 048bc155327e4ce2d6729de49fec8e9932367c6b Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 19:59:38 +0000 Subject: [PATCH 02/18] Fixed date format. --- app/src/Factory/EventFactory.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/Factory/EventFactory.php b/app/src/Factory/EventFactory.php index 6b736c1..1a0b2f7 100644 --- a/app/src/Factory/EventFactory.php +++ b/app/src/Factory/EventFactory.php @@ -4,10 +4,11 @@ use App\Model\Event\Entity\Talk; use App\Model\Event\Event; +use Slim\Http\Request; class EventFactory { - public static function getByRequest($request, $speaker, $venue, $supporter, $title, $description) + public static function getByRequest(Request $request, $speaker, $venue, $supporter, $title, $description) { $talk = new Talk( strip_tags($request->getParam('talk_title'), '


'), @@ -17,7 +18,7 @@ public static function getByRequest($request, $speaker, $venue, $supporter, $tit $event = new Event( $talk, - \DateTime::createFromFormat("Y-m-d", $request->getParam('start_date'))->format('d/m/Y'), + \DateTime::createFromFormat("m/d/Y", $request->getParam('start_date'))->format('d/m/Y'), $request->getParam('start_time') < 10 ? '0' . $request->getParam('start_time') : $request->getParam('start_time'), $venue, $supporter From c2dc670a671cd128cd02dea0ea1c0a9756da4bca Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 22:56:25 +0000 Subject: [PATCH 03/18] [Refactor] Tidy up action. Moveed functionality to event service. --- app/src/Action/CreateEventAction.php | 35 ++++++++++------------------ 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/app/src/Action/CreateEventAction.php b/app/src/Action/CreateEventAction.php index d94f317..b8a0717 100644 --- a/app/src/Action/CreateEventAction.php +++ b/app/src/Action/CreateEventAction.php @@ -83,25 +83,10 @@ public function dispatch(Request $request, Response $response, $args) $venues = $this->eventService->getVenues(); $supporters = $this->eventManager->getSupporters(); - $eventInfo = ['title' => '', 'description' => '']; - - if ($request->getParam('meetup_id')) { - $event = $this->eventService->getEventById((int)$request->getParam('meetup_id')); - - if(!empty($event)) { - - if (!empty($this->eventManager->getDetailsByMeetupID($request->getParam('meetup_id')))) { - $this->flash->addMessage('event', 'Event already exists. Check its status.'); - return $response->withStatus(302)->withHeader('Location', 'event-details?meetup_id=' . $request->getParam('meetup_id')); - } - - $eventInfo['title'] = $event['subject']; - $eventInfo['description'] = $event['description']; - $eventInfo['venue_id'] = $event['venue_id']; - $date = \DateTime::createFromFormat('F jS Y', $event['date']); - $eventInfo['date'] = $date->format("d/m/Y"); - } - + $eventInfo = $this->eventService->getInfoByMeetupID($request->getParam('meetup_id')); + if ($eventInfo['event_exists']) { + $this->flash->addMessage('event', 'Event already exists. Check its status.'); + return $response->withStatus(302)->withHeader('Location', 'event-details?meetup_id=' . $request->getParam('meetup_id')); } $errors = $this->flash->getMessage('event') ?? []; @@ -131,15 +116,19 @@ public function dispatch(Request $request, Response $response, $args) ); try { - $createEventInfo = $this->eventService->createMainEvents($event, $this->auth->getUserId(), $request->getParam('meetup_id')); + $createEventInfo = $this->eventService->createMainEvents( + $event, + $this->auth->getUserId(), + $request->getParam('meetup_id') + ); } catch (\Exception $e) { throw $e; } - if ((int)$createEventInfo['joindin'] === 202) { + if ((int)$createEventInfo['joindin_status'] === 202) { // event pending. Save to DB and show message to user - $this->flash->addMessage('event', 'JoindIn Event is pending. Wait for approval before creating a Talk.'); - } else if ((int)$createEventInfo['joindin'] !== 201) { + $this->flash->addMessage('event', 'JoindIn Event is pending. Once approved, talk will be created automatically.'); + } else if ((int)$createEventInfo['joindin_status'] !== 201) { $this->logger->debug("Could not create Joindin event. Please try again."); $this->flash->addMessage('event', 'Could not create Joindin event. Please try again.'); } From ea88d4573ef950afb682ad47b463f71a09c2332d Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 22:57:05 +0000 Subject: [PATCH 04/18] [Refactor] Pass a date object to the constructor when creating an event. --- app/src/Model/Event/Event.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/Model/Event/Event.php b/app/src/Model/Event/Event.php index 223f8e6..b6ca6e2 100644 --- a/app/src/Model/Event/Event.php +++ b/app/src/Model/Event/Event.php @@ -32,10 +32,10 @@ class Event private $supporter; - public function __construct(Talk $talk, $startDate, $startTime, Venue $venue, Supporter $supporter) + public function __construct(Talk $talk, \DateTime $date, Venue $venue, Supporter $supporter) { $this->talk = $talk; - $this->date = \DateTime::createFromFormat("d/m/Y H:i", $startDate . ' ' . $startTime); + $this->date = $date; $this->venue = $venue; $this->supporter = $supporter; } From 696d283a15ff6bb16b378860b9f8587abe58259b Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 22:57:39 +0000 Subject: [PATCH 05/18] Updated EventFactory to use date object. --- app/src/Factory/EventFactory.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/Factory/EventFactory.php b/app/src/Factory/EventFactory.php index 1a0b2f7..f23e833 100644 --- a/app/src/Factory/EventFactory.php +++ b/app/src/Factory/EventFactory.php @@ -18,8 +18,12 @@ public static function getByRequest(Request $request, $speaker, $venue, $support $event = new Event( $talk, - \DateTime::createFromFormat("m/d/Y", $request->getParam('start_date'))->format('d/m/Y'), - $request->getParam('start_time') < 10 ? '0' . $request->getParam('start_time') : $request->getParam('start_time'), + \DateTime::createFromFormat( + "d/m/Y H:i", + $request->getParam('start_date') . ' ' + . ($request->getParam('start_time') < 10 ? '0' . $request->getParam('start_time') : $request->getParam('start_time')) + + ), $venue, $supporter ); From 2244af60e090072b865efc49d4a66d615d27f104 Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 22:58:24 +0000 Subject: [PATCH 06/18] [Docs] Updated doc blocks. --- app/src/Service/EventsService.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/Service/EventsService.php b/app/src/Service/EventsService.php index 091b35d..3261988 100644 --- a/app/src/Service/EventsService.php +++ b/app/src/Service/EventsService.php @@ -60,6 +60,10 @@ public function getLatestEvent() return $this->meetupService->getLatestEvent(); } + /** + * @param $eventID + * @return array + */ public function getEventById($eventID) { return $this->meetupService->getEventById($eventID); @@ -226,6 +230,10 @@ public function getEventInfo($meetupID) : array return $this->eventManager->getByMeetupID($meetupID)[0] ?: []; } + /** + * @param $userID + * @return string + */ public function manageApprovedEvents($userID) { From 1241693aef8bb25856741bbf0b4811c385e8154e Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 22:59:31 +0000 Subject: [PATCH 07/18] The service can get event info using meetup id. --- app/src/Service/EventsService.php | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/src/Service/EventsService.php b/app/src/Service/EventsService.php index 3261988..d1667c9 100644 --- a/app/src/Service/EventsService.php +++ b/app/src/Service/EventsService.php @@ -77,6 +77,35 @@ public function getAll() return $this->meetupService->getAll(); } + /** + * @param int $meetupID + * @return array + */ + public function getInfoByMeetupID($meetupID = null) + { + $eventInfo = ['title' => '', 'description' => '', 'event_exists']; + + if (!is_null($meetupID)) { + $event = $this->getEventById((int)$meetupID); + + if(!empty($event)) { + + if (!empty($this->eventManager->getDetailsByMeetupID($meetupID))) { + $eventInfo['event_exists'] = true; + } else { + $eventInfo['title'] = $event['subject']; + $eventInfo['description'] = $event['description']; + $eventInfo['venue_id'] = $event['venue_id']; + $date = \DateTime::createFromFormat('F jS Y', $event['date']); + $eventInfo['date'] = $date->format("d/m/Y"); + } + } + } + + return $eventInfo; + + } + /** * @param $meetupEvents * @param $speakers From 81c8ddb702a25d674522d59782deac71144c60f6 Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 23:01:27 +0000 Subject: [PATCH 08/18] Fix - Logic error creating meetup even when ID was being passed. --- app/src/Service/EventsService.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/Service/EventsService.php b/app/src/Service/EventsService.php index d1667c9..b891534 100644 --- a/app/src/Service/EventsService.php +++ b/app/src/Service/EventsService.php @@ -169,7 +169,7 @@ public function createMainEvents(Event $event, $userID, $meetupID = null) } try { - $createJoindInEvent = $this->createJoindinEvent($userID); + $joindinEvent = $this->createJoindinEvent($userID); } catch (\Exception $e) { throw $e; } @@ -177,8 +177,7 @@ public function createMainEvents(Event $event, $userID, $meetupID = null) $eventEntity = $this->updateEvents(); return [ - 'meetup' => $this->createMeetup()->getStatusCode(), - 'joindin' => $createJoindInEvent->getStatusCode(), + 'joindin_status' => $joindinEvent->getStatusCode(), 'meetup_id' => $eventEntity->getMeetupID() ]; } From a33153e31ec9c24783fe8927350ba0587ee2652b Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Sat, 19 Dec 2015 23:02:09 +0000 Subject: [PATCH 09/18] [TESTS] Updated tests to use the date object. --- tests/phpunit/Model/JoindinEventTest.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/phpunit/Model/JoindinEventTest.php b/tests/phpunit/Model/JoindinEventTest.php index 796ef7c..0124805 100644 --- a/tests/phpunit/Model/JoindinEventTest.php +++ b/tests/phpunit/Model/JoindinEventTest.php @@ -63,8 +63,10 @@ public function setUp() $this->event = new Event( $talk, - $startDate, - $startTime, + \DateTime::createFromFormat( + "d/m/Y H:i", + $startDate . ' ' . $startTime + ), $venue, $supporter ); From 91fb333523fabc89bb175a8c3cf7c573bb6e4310 Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Mon, 21 Dec 2015 22:26:05 +0000 Subject: [PATCH 10/18] [Test] Added the tests namespace to the composer autoloader. --- composer.json | 1 + composer.lock | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index bf6989b..5ed00ac 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,7 @@ ], "autoload": { "psr-4": { + "App\\Tests\\" : "tests/phpunit", "App\\": "app/src" } }, diff --git a/composer.lock b/composer.lock index 9b350b4..f04aea7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "91f42a9bd6b3bceadd78b870ab055a17", + "hash": "1fb58ec8a6426b3bd473f8f7c1e84a8f", "content-hash": "b55138a6d23a50516a7a8fcdf6f5668c", "packages": [ { From ce7a63e4c325a3404979fcdbcec512f6b7d6b9f3 Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Mon, 21 Dec 2015 22:52:33 +0000 Subject: [PATCH 11/18] [Test] Using a helper class for th common functionality. --- tests/phpunit/Helper.php | 86 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 tests/phpunit/Helper.php diff --git a/tests/phpunit/Helper.php b/tests/phpunit/Helper.php new file mode 100644 index 0000000..b779d05 --- /dev/null +++ b/tests/phpunit/Helper.php @@ -0,0 +1,86 @@ +container[$key] = $value; + } + + /** + * @param $key + * @param callable $callback + * @return bool + */ + protected function get($key, callable $callback) + { + if (!array_key_exists($key, $this->container)) { + $this->set($key, $callback()); + } + + return $this->container[$key]; + } + + /** + * @return mixed + */ + public function getSettings() + { + return $this->get( + 'settings', + function(){ + return require __DIR__ . '/../../app/configs/settings_test.php'; + } + ); + } + + public function getEvent() + { + return $this->get( + 'event', + function(){ + $email = new Email('phpminds.org@gmail.com'); + $twitter = new Twitter('@PHPMiNDS'); + + $startDate = "17/12/2015"; + $startTime = '20:00'; + $eventDuration = 'PT2H'; + + $speaker = new Speaker('A', 'Speaker', $email, $twitter); + + $talk = new Talk('A title', 'A description', $speaker, $eventDuration); + + $venue = new Venue('a little venue', 'by the sidewalk', 'Europe'); + + $supporter = new Supporter('a big fan', 'youareawso.me', $twitter, $email, 'http://nolo.go'); + + return new Event( + $talk, + \DateTime::createFromFormat( + "d/m/Y H:i", + $startDate . ' ' . $startTime + ), + $venue, + $supporter + ); + } + ); + } +} \ No newline at end of file From b3cf7d713df3094b31d15aa3926567964588ae31 Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Mon, 21 Dec 2015 22:53:23 +0000 Subject: [PATCH 12/18] [Test] Using the helper class for setting up event and pulling in the settings. --- tests/phpunit/Model/JoindinEventTest.php | 38 ++++-------------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/tests/phpunit/Model/JoindinEventTest.php b/tests/phpunit/Model/JoindinEventTest.php index 0124805..4519a05 100644 --- a/tests/phpunit/Model/JoindinEventTest.php +++ b/tests/phpunit/Model/JoindinEventTest.php @@ -2,16 +2,12 @@ namespace App\Tests\Model; -use App\Model\Email; -use App\Model\Event\Entity\Speaker; -use App\Model\Event\Entity\Supporter; -use App\Model\Event\Entity\Talk; -use App\Model\Event\Entity\Venue; + use App\Model\JoindinEvent; use App\Model\Event\Event; -use App\Model\Twitter; -class JoindinEventTest extends \PHPUnit_Framework_TestCase + +class JoindinEventTest extends \App\Tests\Helper { /** * @var JoindinEvent @@ -25,7 +21,7 @@ class JoindinEventTest extends \PHPUnit_Framework_TestCase public function setUp() { - $settings = require __DIR__ . '/../../../app/configs/settings_test.php'; + $settings = $this->getSettings(); $joindin = $settings['settings']['joindin']; @@ -45,31 +41,7 @@ public function setUp() $joindinConfig, $fileRepository ); - - $email = new Email('phpminds.org@gmail.com'); - $twitter = new Twitter('@PHPMiNDS'); - - $startDate = "17/12/2015"; - $startTime = '20:00'; - $eventDuration = 'PT2H'; - - $speaker = new Speaker('A', 'Speaker', $email, $twitter); - - $talk = new Talk('A title', 'A description', $speaker, $eventDuration); - - $venue = new Venue('a little venue', 'by the sidewalk', 'Europe'); - - $supporter = new Supporter('a big fan', 'youareawso.me', $twitter, $email, 'http://nolo.go'); - - $this->event = new Event( - $talk, - \DateTime::createFromFormat( - "d/m/Y H:i", - $startDate . ' ' . $startTime - ), - $venue, - $supporter - ); + $this->event = $this->getEvent(); $this->event->setName("PHPMinds"); $this->event->setDescription("Event description"); From c5f03b51b8a442b7f1e5e13b77a9244abb794789 Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Mon, 21 Dec 2015 22:53:44 +0000 Subject: [PATCH 13/18] [Test] Initial tests for meetup event. --- tests/phpunit/Model/MeetupEventTest.php | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tests/phpunit/Model/MeetupEventTest.php diff --git a/tests/phpunit/Model/MeetupEventTest.php b/tests/phpunit/Model/MeetupEventTest.php new file mode 100644 index 0000000..b63c784 --- /dev/null +++ b/tests/phpunit/Model/MeetupEventTest.php @@ -0,0 +1,51 @@ +getSettings(); + + $meetup = $settings['settings']['meetups']; + + $meetupConfig = new \App\Config\MeetupConfig( + [ + 'apiKey' => $meetup['apiKey'], + 'baseUrl' => $meetup['baseUrl'], + 'groupUrlName' => $meetup['PHPMinds']['group_urlname'], + 'publishStatus' => $meetup['publish_status'] + ] + ); + + $this->meetupEvent = new \App\Model\MeetupEvent($meetupConfig); + + $this->event = $this->getEvent(); + } + + public function testCanCreateAnEventPayload() + { + $eventPayload = $this->meetupEvent->getCreateEventPayload($this->event); + } +} \ No newline at end of file From 47c662fc3c12a4475bed47bc3412dd74e0a47aff Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Mon, 21 Dec 2015 23:08:52 +0000 Subject: [PATCH 14/18] [Test] Added test for creating the correct payload for a meetup event. --- tests/phpunit/Helper.php | 1 + tests/phpunit/Model/MeetupEventTest.php | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/tests/phpunit/Helper.php b/tests/phpunit/Helper.php index b779d05..97a925e 100644 --- a/tests/phpunit/Helper.php +++ b/tests/phpunit/Helper.php @@ -68,6 +68,7 @@ function(){ $talk = new Talk('A title', 'A description', $speaker, $eventDuration); $venue = new Venue('a little venue', 'by the sidewalk', 'Europe'); + $venue->setId(123); $supporter = new Supporter('a big fan', 'youareawso.me', $twitter, $email, 'http://nolo.go'); diff --git a/tests/phpunit/Model/MeetupEventTest.php b/tests/phpunit/Model/MeetupEventTest.php index b63c784..5f88263 100644 --- a/tests/phpunit/Model/MeetupEventTest.php +++ b/tests/phpunit/Model/MeetupEventTest.php @@ -47,5 +47,16 @@ public function setUp() public function testCanCreateAnEventPayload() { $eventPayload = $this->meetupEvent->getCreateEventPayload($this->event); + + $expected = [ + 'name' => 'A title', + 'description' => 'A description', + 'venue_id' => 123, + 'publish_status' => 'draft', + 'time' => $this->event->getDate()->getTimestamp() * 1000, + 'venue_visibility' => 'members' + ]; + + $this->assertEquals($expected, $eventPayload); } } \ No newline at end of file From 4ab7829c14108312020b45b332f5e37bb32b8ef8 Mon Sep 17 00:00:00 2001 From: Antonis Pavlakis Date: Tue, 22 Dec 2015 13:09:46 +0000 Subject: [PATCH 15/18] Removed unused namespaces (use). --- tests/phpunit/Model/MeetupEventTest.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/phpunit/Model/MeetupEventTest.php b/tests/phpunit/Model/MeetupEventTest.php index 5f88263..48614ff 100644 --- a/tests/phpunit/Model/MeetupEventTest.php +++ b/tests/phpunit/Model/MeetupEventTest.php @@ -2,14 +2,8 @@ namespace App\Tests\Model; - -use App\Model\Email; -use App\Model\Event\Entity\Speaker; -use App\Model\Event\Entity\Supporter; -use App\Model\Event\Entity\Talk; -use App\Model\Event\Entity\Venue; use App\Model\Event\Event; -use App\Model\Twitter; + class MeetupEventTest extends \App\Tests\Helper { From 3f4fc4b5694f8d974eede5d91c7677117a1b4c14 Mon Sep 17 00:00:00 2001 From: Shaun Hare Date: Tue, 22 Dec 2015 21:44:19 +0000 Subject: [PATCH 16/18] [bug] All does not return all events, missing api parameters added status,order and desc to query string --- app/src/Action/HomeAction.php | 3 ++- app/src/Model/MeetupEvent.php | 13 ++++++++----- app/src/Service/MeetupService.php | 1 + app/templates/home.twig | 6 +++++- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/Action/HomeAction.php b/app/src/Action/HomeAction.php index f3fd61c..45a83eb 100644 --- a/app/src/Action/HomeAction.php +++ b/app/src/Action/HomeAction.php @@ -51,10 +51,11 @@ public function dispatch($request, $response, $args) $this->view->getEnvironment()->addFilter($filter); + $previousEvents= $this->eventService->getAll(); $resWithETag = $this->cache->withETag($response, $event['id']); - $this->view->render($response, 'home.twig', ['event' => $event]); + $this->view->render($response, 'home.twig', ['event' => $event,'previousEvents'=>$previousEvents]); return $resWithETag; } } diff --git a/app/src/Model/MeetupEvent.php b/app/src/Model/MeetupEvent.php index d13c71d..7fe2db0 100644 --- a/app/src/Model/MeetupEvent.php +++ b/app/src/Model/MeetupEvent.php @@ -29,10 +29,10 @@ public function getUrl($action = 'events', $auth = true) { $authStr = ''; if ($auth) { - $authStr = $this->getAuthString(); + $authStr = $this->getAuthString(['status'=>'past,upcoming']); } - - return sprintf($this->baseUrl .'/%s/' . $authStr, $action); + return $this->baseUrl."/".$action."/".$authStr; + //return sprintf($this->baseUrl .'/%s/' . $authStr, $action); } public function setEventID($eventID) @@ -48,9 +48,12 @@ public function getGroupUrlName() return $this->groupUrlName; } - public function getAuthString() + public function getAuthString($params = []) { - return '?group_urlname='. $this->groupUrlName .'&key=' . $this->apiKey; + $params = array_merge(['group_urlname'=>$this->groupUrlName,"key"=>$this->apiKey,"order"=>"time","desc"=>"true"],$params); + $queryString = http_build_query($params); + + return '?'.$queryString; } public function getEventUrl() diff --git a/app/src/Service/MeetupService.php b/app/src/Service/MeetupService.php index 9209204..7557b90 100644 --- a/app/src/Service/MeetupService.php +++ b/app/src/Service/MeetupService.php @@ -33,6 +33,7 @@ public function getMeetupEvent() protected function getEvents() { $eventUrl = $this->meetupEvent->getEventUrl(); + $response = $this->httpClient->get($eventUrl); return json_decode($response->getBody()->getContents(), true); diff --git a/app/templates/home.twig b/app/templates/home.twig index fb2c7d4..779934e 100644 --- a/app/templates/home.twig +++ b/app/templates/home.twig @@ -31,7 +31,11 @@ {{ "past-events" | content | raw }} - +

From 123f026a543bdb37e1f6633e7bbf23f494fac69b Mon Sep 17 00:00:00 2001 From: Shaun Hare Date: Tue, 22 Dec 2015 22:30:06 +0000 Subject: [PATCH 17/18] Added pastevent method for eventService and changed params --- app/src/Action/HomeAction.php | 4 +++- app/src/Model/MeetupEvent.php | 6 +++--- app/src/Service/EventsService.php | 9 +++++++++ app/src/Service/MeetupService.php | 14 ++++++++++++++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/Action/HomeAction.php b/app/src/Action/HomeAction.php index 45a83eb..207f339 100644 --- a/app/src/Action/HomeAction.php +++ b/app/src/Action/HomeAction.php @@ -51,7 +51,9 @@ public function dispatch($request, $response, $args) $this->view->getEnvironment()->addFilter($filter); - $previousEvents= $this->eventService->getAll(); + $previousEvents= $this->eventService->getPastEvents(); + + $resWithETag = $this->cache->withETag($response, $event['id']); diff --git a/app/src/Model/MeetupEvent.php b/app/src/Model/MeetupEvent.php index 7fe2db0..ef2dd93 100644 --- a/app/src/Model/MeetupEvent.php +++ b/app/src/Model/MeetupEvent.php @@ -25,13 +25,13 @@ public function __construct(MeetupConfig $config) $this->publishStatus = $config->publishStatus; } - public function getUrl($action = 'events', $auth = true) + public function getUrl($action = 'events', $auth = true,$additionalApiParams = ['status'=>'past,upcoming']) { $authStr = ''; if ($auth) { - $authStr = $this->getAuthString(['status'=>'past,upcoming']); + $authStr = $this->getAuthString($additionalApiParams); } - return $this->baseUrl."/".$action."/".$authStr; + return $this->baseUrl."/".urlencode($action)."/".$authStr; //return sprintf($this->baseUrl .'/%s/' . $authStr, $action); } diff --git a/app/src/Service/EventsService.php b/app/src/Service/EventsService.php index c4cb056..917719b 100644 --- a/app/src/Service/EventsService.php +++ b/app/src/Service/EventsService.php @@ -60,6 +60,15 @@ public function getLatestEvent() return $this->meetupService->getLatestEvent(); } + /** + * @return array + */ + public function getPastEvents() + { + return $this->meetupService->getPastEvents(); + } + + public function getEventById($eventID) { return $this->meetupService->getEventById($eventID); diff --git a/app/src/Service/MeetupService.php b/app/src/Service/MeetupService.php index 7557b90..5eab309 100644 --- a/app/src/Service/MeetupService.php +++ b/app/src/Service/MeetupService.php @@ -65,6 +65,20 @@ public function getLatestEvent() return $this->meetupEvent->formatResponse($events['results'][0] ?? []); } + public function getPastEvents() + { + $pastEvents = []; + + $events = $this->getEvents(); + + array_shift($events["results"]); + + foreach($events["results"] as $event){ + array_push($pastEvents,$this->meetupEvent->formatResponse($event)); + + }; + return $pastEvents ?? []; + } /** * @param Event $event * @return \Psr\Http\Message\ResponseInterface From 1e0fb63b6d1beb9aa23531457bf3d9c27ab889a8 Mon Sep 17 00:00:00 2001 From: Shaun Hare Date: Tue, 22 Dec 2015 23:17:21 +0000 Subject: [PATCH 18/18] chnaged homepage content - fixed up assigning to array in pastEvents , doc blocks, removed travis deploy --- .travis.yml | 8 +------- app/src/Service/EventsService.php | 4 ++++ app/src/Service/MeetupService.php | 8 ++++++-- app/templates/content/past-events.md | 6 +----- app/templates/home.twig | 2 +- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index 07d0b4a..2f4626c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,10 +2,4 @@ language: php php: '7.0' install: composer install script: phpunit --configuration tests/phpunit/phpunit.xml -addons: - ssh_known_hosts:phpminds.org -deploy: - provider: script - script: scripts/deploy.sh - on: - branch: develop + diff --git a/app/src/Service/EventsService.php b/app/src/Service/EventsService.php index d61f198..c8cb494 100644 --- a/app/src/Service/EventsService.php +++ b/app/src/Service/EventsService.php @@ -60,6 +60,10 @@ public function getLatestEvent() return $this->meetupService->getLatestEvent(); } + /** + * Get all events except for latest. + * @return array + */ public function getPastEvents() { return $this->meetupService->getPastEvents(); diff --git a/app/src/Service/MeetupService.php b/app/src/Service/MeetupService.php index 5eab309..52e02f3 100644 --- a/app/src/Service/MeetupService.php +++ b/app/src/Service/MeetupService.php @@ -65,6 +65,10 @@ public function getLatestEvent() return $this->meetupEvent->formatResponse($events['results'][0] ?? []); } + /** + * get all events apart form last one in array + * @return array + */ public function getPastEvents() { $pastEvents = []; @@ -74,9 +78,9 @@ public function getPastEvents() array_shift($events["results"]); foreach($events["results"] as $event){ - array_push($pastEvents,$this->meetupEvent->formatResponse($event)); + $pastEvents[] = $this->meetupEvent->formatResponse($event); - }; + } return $pastEvents ?? []; } /** diff --git a/app/templates/content/past-events.md b/app/templates/content/past-events.md index 8135427..6e6b4fd 100644 --- a/app/templates/content/past-events.md +++ b/app/templates/content/past-events.md @@ -1,6 +1,2 @@ Now our first event has finally happened, thanks to all those that came, we can publish -information about previous events. Other details to follow. - -**In December 2015 we had Rob Allen speak on Building an API with Slim 3.** - -Please leave your feedback on joind.in at https://joind.in/16610 +information about previous events. diff --git a/app/templates/home.twig b/app/templates/home.twig index 779934e..d03493d 100644 --- a/app/templates/home.twig +++ b/app/templates/home.twig @@ -33,7 +33,7 @@
    {% for previousEvent in previousEvents %} -
  • {{ previousEvent.subject|e }}
  • +
  • {{ previousEvent.subject|e }} on {{ previousEvent.date }}
  • {% endfor %}