public function __invoke(Request $req, Response $res) { try { return $this->view->render($res, 'index.twig', ['content' => $this->content]); } catch (\Exception $ex) { return $this->view->render($res, 'index.twig', ['content' => 'welcome']); } }
public function dispatch($request, $response, $args) { $event = $this->eventService->getLatestEvent(); $filter = $this->contentService->getTwigFilter(); $this->view->getEnvironment()->addFilter($filter); $this->view->render($response, 'home.twig', ['event' => $event]); return $response; }
public function __invoke(ServerRequestInterface $request, ResponseInterface $response) { $id = $request->getAttribute('id'); if (!($comment = $this->repository->find($id))) { return $response->withStatus(404, 'post not found'); } $this->view->render($response, 'post.phtml', ['comment' => new CommentViewModel($comment)]); return $response; }
/** * @param Request $request * @param Response $response * @return Response */ public function saveAction(Request $request, Response $response) : Response { $service = new FieldService(); $entity = (new SampleEntity())->setOne((new Field())->setId(1)->setValue(8))->setTwo($service->getFieldGroup(2))->setThree($service->getFieldGroup(3))->setFour((new Field())->setId(4)->setValue(123)); $form = $this->formFactory->create(SampleType::class, $entity); $form->submit($request->getParams())->isValid(); $bla = 0; return $this->view->render($response, 'field/index.html.twig', ['form' => $form->createView()]); }
public function dispatch($request, $response, $args) { $events = $this->eventService->getAll(); $speakers = $this->eventManager->getSpeakers(); $venues = $this->eventService->getVenues(); $this->eventService->mergeEvents($events, $speakers, $venues); $this->view->render($response, 'admin/dashboard.twig', ['events' => $events]); return $response; }
public function testRender() { $mockBody = $this->getMockBuilder('Psr\\Http\\Message\\StreamInterface')->disableOriginalConstructor()->getMock(); $mockResponse = $this->getMockBuilder('Psr\\Http\\Message\\ResponseInterface')->disableOriginalConstructor()->getMock(); $mockBody->expects($this->once())->method('write')->with("<p>Hi, my name is Josh.</p>\n")->willReturn(28); $mockResponse->expects($this->once())->method('getBody')->willReturn($mockBody); $response = $this->view->render($mockResponse, 'example.html', ['name' => 'Josh']); $this->assertInstanceOf('Psr\\Http\\Message\\ResponseInterface', $response); }
public function dispatch($request, $response, $args) { $event = $this->eventService->getLatestEvent(); $filter = $this->contentService->getTwigFilter(); $this->view->getEnvironment()->addFilter($filter); $previousEvents = $this->eventService->getPastEvents(); $resWithETag = $this->cache->withETag($response, $event->getMeetupID()); $this->view->render($response, 'home.twig', ['event' => $event, 'previousEvents' => $previousEvents]); return $resWithETag; }
public function eventByYearMonth(Request $request, Response $response, $args) { $year = intval($args["year"]); $month = intval($args["month"]); $eventMeta = $this->eventManager->getByYearMonth($year, $month); $event = $this->eventService->getEventById($eventMeta[0]['meetup_id']); $resWithETag = $this->cache->withETag($response, $eventMeta[0]['meetup_id']); $previousEvents = $this->eventService->getPastEvents(); $this->view->render($response, 'event.twig', ['event' => $event, 'eventMeta' => $eventMeta[0], 'previousEvents' => $previousEvents]); return $resWithETag; }
public function dispatch(Request $request, Response $response, $args) { $meetupID = $request->getParam('meetup_id', false); if (!$meetupID) { $eventDetails['errors'][] = 'A meetup ID needs to be provided.'; } else { $eventDetails = ['meetup_event' => $this->eventService->getEventById($meetupID), 'event_info' => $this->eventService->getEventInfo($meetupID)]; } $this->view->render($response, 'admin/event-info.twig', $eventDetails); return $response; }
public function authenticateCallback(Request $request, Response $response) { $code = $request->getQueryParams()['code'] ?? ''; try { if (!$code) { throw new \Exception('No access code provided.'); } $token = $this->provider->getAccessToken('authorization_code', ['code' => $_GET['code']]); $this->helper->setAccessToken(['access_token' => $token->getToken(), 'expires' => $token->getExpires()]); return $response->withStatus(301)->withHeader('Location', '/' . self::AREA); } catch (\Exception $ex) { return $this->view->render($response, 'error.twig', ['error' => $ex->getMessage()]); } }
/** * @param Request $request * @param Response $response * @param $args * @return Response */ public function dispatch(Request $request, Response $response, $args) { $data = []; if ($request->isPost()) { $magnetUri = $request->getParam('magnetUri'); if ($magnetUri) { $torrent = Torrent::fromMagnet($magnetUri); $data['torrent'] = $torrent; $data['torrentLink'] = (new Torcache())->getDownloadUrl($torrent); } } $this->view->render($response, 'home.twig', $data); return $response; }
/** * @param Request $request * @param Response $response * @param array $arguments * @return Response */ public function add(Request $request, Response $response, array $arguments) { $settings = $request->getAttribute('settings'); $root = rtrim($settings['root'], '/\\') . DIRECTORY_SEPARATOR; $virtualHost = trim($arguments['virtualHost'], '/\\') . DIRECTORY_SEPARATOR; $absolutePath = $root . $virtualHost; if (!@is_dir($absolutePath)) { throw new \InvalidArgumentException('Wrong path provided', 1461609455); } $folders = isset($settings['virtual-hosts'][$virtualHost]['add']['allow']) ? $settings['virtual-hosts'][$virtualHost]['add']['allow'] : isset($settings['virtual-hosts']['default']['add']['allow']) ? $settings['virtual-hosts']['default']['add']['allow'] : []; if (!empty($folders)) { array_walk($folders, function (&$value) { $value = ['relativePathname' => trim($value, '\\/')]; }); } else { $depth = isset($settings['virtual-hosts'][$virtualHost]['show']['depth']) ? $settings['virtual-hosts'][$virtualHost]['show']['depth'] : $settings['virtual-hosts']['default']['show']['depth']; $folders = new Finder(); $folders->directories()->ignoreUnreadableDirs(true)->ignoreDotFiles(true)->ignoreVCS(true)->followLinks()->depth($depth)->sort(function (SplFileInfo $a, SplFileInfo $b) { return strcmp($a->getRelativePathname(), $b->getRelativePathname()); })->in($absolutePath); $excludeShowDirs = isset($settings['virtual-hosts'][$virtualHost]['show']['exclude']) ? $settings['virtual-hosts'][$virtualHost]['show']['exclude'] : isset($settings['virtual-hosts']['default']['show']['exclude']) ? $settings['virtual-hosts']['default']['show']['exclude'] : []; $excludeAddDirs = isset($settings['virtual-hosts'][$virtualHost]['add']['exclude']) ? $settings['virtual-hosts'][$virtualHost]['add']['exclude'] : isset($settings['virtual-hosts']['default']['add']['exclude']) ? $settings['virtual-hosts']['default']['add']['exclude'] : []; foreach (array_merge($excludeShowDirs, $excludeAddDirs) as $dir) { $folders->notPath(strtr($dir, '\\', '/')); } } $this->view->render($response, 'add.twig', ['settings' => $settings, 'root' => $root, 'virtualHost' => $virtualHost, 'folders' => $folders]); return $response; }
public function __invoke(Request $req, Response $res) { $school = $req->getAttribute('school'); if ($req->isPost()) { $this->appFormInputFilter->setData(array_merge($req->getParams(), ['school_id' => $school->id, 'submitted_by' => $this->authService->getIdentity()->mail])); $isValid = $this->appFormInputFilter->isValid(); if ($isValid) { $data = $this->appFormInputFilter->getValues(); $appForm = $this->appFormService->submit($data); $_SESSION['applicationForm']['appForm'] = $appForm; $res = $res->withRedirect($this->successUrl); return $res; } $this->view['form'] = ['is_valid' => $isValid, 'values' => $this->appFormInputFilter->getValues(), 'raw_values' => $this->appFormInputFilter->getRawValues(), 'messages' => $this->appFormInputFilter->getMessages()]; } $loadForm = (bool) $req->getParam('load', false); $this->view['choose'] = !$loadForm && !$req->isPost(); if (!$req->isPost() && $loadForm) { if (null !== ($appForm = $this->appFormService->findSchoolApplicationForm($school->id))) { $this->view['form'] = ['values' => $appForm]; } } $labs = $this->labService->getLabsBySchoolId($school->id); $res = $this->view->render($res, 'application_form/form.twig', ['lab_choices' => array_map(function ($lab) { return ['value' => $lab['id'], 'label' => $lab['name']]; }, $labs), 'type_choices' => array_map(function ($category) { return ['value' => $category['id'], 'label' => $category['name']]; }, $this->assetsService->getAllItemCategories())]); return $res; }
public function render($template, $data = null) { if (ACCEPT_JSON) { echo json_encode($data); } else { echo parent::render($template, $data); } }
public function __invoke(Request $req, Response $res, array $args = []) { $school = $req->getAttribute('school', false); if (!$school) { return $res->withStatus(403, 'No school'); } $assets = $this->schoolAssetsService->getAssetsForSchool($school->id); $itemCategories = $this->assetsService->getAllItemCategories(); $labs = $this->labService->getLabsBySchoolId($school->id); return $this->view->render($res, 'schools/assets.twig', ['school' => $school, 'assets' => $assets, 'item_categories' => array_map(function ($category) { return ['value' => $category['id'], 'label' => $category['name']]; }, $itemCategories), 'labs' => array_map(function ($lab) { return ['value' => $lab['id'], 'label' => $lab['name']]; }, array_filter($labs, function ($lab) { return $lab['is_new'] !== "1"; }))]); }
public function __invoke(Request $req, Response $res) { if ($req->isPost()) { $adapter = $this->authService->getAdapter(); if ($adapter instanceof ValidatableAdapterInterface) { $adapter->setIdentity($req->getParam('identity')); $adapter->setCredential($req->getParam('credential')); } $result = $this->authService->authenticate($adapter); if (!$result->isValid()) { $this->flash->addMessage('danger', reset($result->getMessages())); return $res->withRedirect($req->getUri()); } return $res->withRedirect($this->successUrl); } return $this->view->render($res, 'user/login.twig', []); }
public function dispatch(Request $request, Response $response, $args) { $speakers = $this->eventManager->getSpeakers(); $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)) { $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"); } } $errors = $this->flash->getMessage('event') ?? []; $frmErrors = []; if ($request->isPost()) { $validator = new EventValidator($_POST); try { $validator->talkValidation()->dateValidation(); if (!$validator->isValid()) { throw new \Exception('Form not valid.'); } $event = new \App\Model\Event\Event(new Talk(strip_tags($request->getParam('talk_title'), '<p><a><br>'), strip_tags($request->getParam('talk_description'), '<p><img><a><br>'), $this->eventManager->getSpeakerById((int) $request->getParam('speaker'))), $request->getParam('start_date'), $request->getParam('start_time'), $this->eventService->getVenueById($request->getParam('venue')), $this->eventManager->getSupporterByID($request->getParam('supporter'))); $this->eventService->createEvent($event); if (!$request->getParam('meetup_id')) { if ((int) $this->eventService->createMeetup()->getStatusCode() !== 201) { throw new \Exception('Could not create meetup event.'); } } else { // Do not create a meetup $this->eventService->getMeetupEvent()->setEventID((int) $request->getParam('meetup_id')); } if ((int) $this->eventService->createJoindinEvent($this->eventSettings['name'], $this->eventSettings['description'])->getStatusCode() !== 201) { $this->flash->addMessage('event', 'Could not create Joindin event. Please try again.'); return $response->withStatus(302)->withHeader('Location', '/create-event?meetup_id=' . $this->eventService->getMeetupEvent()->getMeetupEventID()); } if ((int) $this->eventService->createJoindinTalk()->getStatusCode() !== 201) { // TODO // Delete meetup event and JoindIn event just created. throw new \Exception('Could not create Joindin talk.'); } $eventEntity = $this->eventService->updateEvents(); return $response->withStatus(302)->withHeader('Location', '/event/' . $eventEntity->getId()); } catch (\Exception $e) { $frmErrors = $validator->getErrors(); $errors[] = $e->getMessage(); } } $nameKey = $this->csrf->getTokenNameKey(); $valueKey = $this->csrf->getTokenValueKey(); $name = $request->getAttribute($nameKey); $value = $request->getAttribute($valueKey); $this->view->render($response, 'admin/create-event.twig', ['speakers' => $speakers, 'venues' => $venues, 'eventInfo' => $eventInfo, 'supporters' => $supporters, 'nameKey' => $nameKey, 'valueKey' => $valueKey, 'name' => $name, 'value' => $value, 'errors' => $errors, 'frmErrors' => $frmErrors]); return $response; }
protected function render($template, $data = null) { foreach (\SlimForm\View\TemplateMap::getInstance()->getTemplatePaths() as $directory) { $this->templatesDirectory = $directory; if (is_file($this->getTemplatePathname($template))) { break; } } return parent::render($template, $data); }
public function __invoke(Request $req, Response $res, array $args = []) { $school = $req->getAttribute('school', false); if (!$school) { return $res->withStatus(403, 'No school'); } $labs = $this->labService->getLabsBySchoolId($school->id); return $this->view->render($res, 'schools/labs.twig', ['school' => $school, 'labs' => $labs, 'staff' => array_map(function ($teacher) { return ['value' => $teacher['id'], 'label' => $teacher['fullname']]; }, $this->staffService->getTeachersBySchoolId($school->id)), 'network_options' => array_map(function ($option) { return ['value' => $option, 'label' => $option]; }, $this->labService->getHasNetworkValues()), 'server_options' => array_map(function ($option) { return ['value' => $option, 'label' => $option]; }, $this->labService->getHasServerValues()), 'lab_types' => array_map(function ($type) { return ['value' => $type['id'], 'label' => $type['name']]; }, $this->labService->getLabTypes()), 'lessons_options' => array_map(function ($lesson) { return ['value' => $lesson['id'], 'label' => $lesson['name']]; }, $this->labService->getLessons())]); }
/** * Init the login action * * @param Request $request * @param Response $response * @param unknown $args * @return Response */ public function login(Request $request, Response $response, $args) { // $helper = $this->facebook->getRedirectLoginHelper(); // $permissions = $this->settings['facebook-permissions']; // $baseDomain = $this->settings['baseDomain']; // $loginUrl = $helper->getLoginUrl($baseDomain . '/login-callback', $permissions); // $view['loginUrl'] = $loginUrl; // $this->session->clear(); $this->view->render($response, 'login.twig', $this->viewData); return $response; }
public function __invoke(Request $req, Response $res, array $args = []) { $school = $req->getAttribute('school'); return $this->view->render($res, 'schools/index.twig', ['school' => $school, 'staff' => array_reduce($this->staffService->getTeachersBySchoolId($school->id), function ($aggr, $teacher) { $name = sprintf('%s %s (%s)', $teacher['name'], $teacher['surname'], $teacher['branch']); if ($teacher['is_principle']) { $aggr['principle'] = $name; } else { $aggr['teachers'][] = $name; } return $aggr; }, []), 'labs' => $this->labService->getLabsBySchoolId($school->id), 'assets' => array_reduce($this->assetService->getAssetsForSchool($school->id), function ($aggr, $asset) { $assetType = $asset['itemcategory_id']; if (!isset($aggr[$assetType])) { $aggr[$assetType] = ['category' => $asset['itemcategory'], 'count' => 0]; } $aggr[$assetType]['count'] += $asset['qty']; return $aggr; }, [])]); }
public function render($response, $template, $data = []) { $container = $this['container']; $flash = new \Slim\Flash\Messages(); $messageList = []; foreach ($flash->getMessages() as $type => $messages) { foreach ($messages as $msg) { $messageList[$type][] = $msg; } } $data = array_merge($data, ['error_messages' => $messageList]); $session = $this->getSession(); $user = $session->getSegment('default')->get('user'); if ($user) { $data['user'] = $user; } parent::render($response, $template, $data); }
public function dispatch(Request $request, Response $response, $args) { $meetupID = $request->getAttribute('meetup_id', null); $eventInfo = $this->eventService->getInfoByMeetupID($meetupID); if ($eventInfo->eventExists()) { $this->flash->addMessage('event', 'Event already exists. Check its status.'); return $response->withStatus(302)->withHeader('Location', 'event-details/' . $meetupID); } if (!$eventInfo->isRegistered() && !is_null($meetupID)) { $this->flash->addMessage('event', 'No event found for meetupID provided. Please create a new event.'); return $response->withStatus(302)->withHeader('Location', 'create-event'); } $form = new CreateEventForm($this->eventManager, $this->eventService); if ($eventInfo->isRegistered()) { $form->setEventInfo($eventInfo); } $data = ['form' => $form, 'errors' => $this->flash->getMessage('event') ?? [], 'defaultTime' => $this->eventsConfig->defaultStartTime]; if ($request->isPost()) { $form->populate($request->getParams()); if (!$form->isValid()) { // return response $data['errors'] = $form->getErrors(); $data = array_merge($data, $this->getCsrfValues($request)); $response->withStatus(304); $this->view->render($response, 'admin/create-event.twig', $data); return $response; } try { $event = EventFactory::getEvent($form->getTalkTitle(), $form->getTalkDescription(), $form->getEventDate(), $form->getSpeaker(), $form->getVenue(), $form->getSupporter(), $this->eventsConfig->title, $this->eventsConfig->description); $createEventInfo = $this->eventService->createMainEvents($event, $this->auth->getUserId(), $meetupID); if (!is_null($createEventInfo['joindin_message'])) { $this->flash->addMessage('event', $createEventInfo['joindin_message']); } return $response->withStatus(302)->withHeader('Location', 'event-details?meetup_id=' . $createEventInfo['meetup_id']); } catch (\Exception $e) { $this->logger->debug($e->getMessage()); $this->logger->debug(print_r($data['errors'], true)); $data['errors'] = array_merge($data['errors'], [$e->getMessage()]); } } $data = array_merge($data, $this->getCsrfValues($request)); $this->view->render($response, 'admin/create-event.twig', $data); return $response; }
/** * Sends request: * curl --data "code=[GET->code] * &grant_type=authorization_code * &client_id=[client_id] * &client_secret=[client_secret] * &redirect_uri=[url_of_this_function]" * https://www.googleapis.com/oauth2/v3/token * * Gets response: * [ * 'code' => '4/PTIwf4eUb3ajdD21_access_code' * 'scope' => 'https://www.googleapis.com/auth/drive.readonly' * ] * @param Request $request * @param Response $response * @return \Psr\Http\Message\MessageInterface|\Psr\Http\Message\ResponseInterface */ public function authenticateCallback(Request $request, Response $response) { $code = $request->getQueryParams()['code'] ?? ''; try { if (!$code) { throw new \Exception('No access code provided.'); } $client = new Client(); $params = ['code' => $code, 'grant_type' => 'authorization_code', 'client_id' => $this->config->getClientId(), 'client_secret' => $this->config->getClientSecret(), 'redirect_uri' => $this->helper->getCallbackUrl(self::AREA)]; $response = $client->post($this->config->getTokenUri(), ['form_params' => $params]); $json = json_decode($response->getBody(), true); $this->helper->setAccessToken($json); if (!isset($json['access_token'])) { throw new \Exception("Access token not returned."); } return $response->withStatus(301)->withHeader('Location', '/' . self::AREA); } catch (\Exception $ex) { return $this->view->render($response, 'error.twig', ['error' => $ex->getMessage()]); } }
public function __invoke(Request $req, Response $res) { $school = $req->getAttribute('school'); if ($req->isPost()) { $reqParams = $req->getParams(); array_splice($reqParams['items'], 0, 0); $this->appFormInputFilter->setData(array_merge($reqParams, ['school_id' => $school->id, 'submitted_by' => $this->authService->getIdentity()->mail])); $isValid = $this->appFormInputFilter->isValid(); if ($isValid) { $data = $this->appFormInputFilter->getValues(); $appForm = $this->appFormService->submit($data); $_SESSION['applicationForm']['appForm'] = $appForm; $res = $res->withRedirect($this->successUrl); return $res; } $this->view['form'] = ['is_valid' => $isValid, 'values' => $this->appFormInputFilter->getValues(), 'raw_values' => $this->appFormInputFilter->getRawValues(), 'messages' => $this->appFormInputFilter->getMessages()]; } $loadForm = (bool) $req->getParam('load', false); $this->view['choose'] = !$loadForm && !$req->isPost(); if (!$req->isPost() && $loadForm) { // take care of new options in applications and migrate existing ones if (null !== ($appForm = $this->appFormService->findSchoolApplicationForm($school->id))) { /** * Do mapping of old items to new only if items do exist (old form) * and the map is available at the app settings. * TODO: Only one version migrations are supported. If the old items are * two or more versions older, they will not be handled. */ // get the existing (db) application form version $items_version = $this->version; if (isset($appForm['items']) && \count($appForm['items']) > 0) { $items_version = array_values($appForm['items'])[0]['version']; } if ($this->version != $items_version && isset($appForm['items']) && isset($this->container['settings']['application_form']['itemcategory']['map']) && $this->container['settings']['application_form']['itemcategory']['map']['fromversion'] == $items_version && $this->container['settings']['application_form']['itemcategory']['map']['toversion'] == $this->version && isset($this->container['settings']['application_form']['itemcategory']['map']['items'])) { // if map exists for this version, use it $items_map = $this->container['settings']['application_form']['itemcategory']['map']['items']; $appForm['items'] = array_map(function ($item) use($items_map) { $migrate_values = []; if (isset($items_map[$item['itemcategory_id']]) && intval($items_map[$item['itemcategory_id']]) > 0) { $migrate_values = ['itemcategory_prev' => $item['itemcategory_id'], 'itemcategory_id_prev' => $item['itemcategory_id'], 'itemcategory_id' => intval($items_map[$item['itemcategory_id']])]; } else { $migrate_values = ['itemcategory_prev' => '', 'itemcategory_id_prev' => -1]; } $migrate_values['prev_form_load'] = true; return array_merge($item, $migrate_values); }, $appForm['items']); } elseif ($this->version != $items_version && isset($appForm['items']) && isset($this->container['settings']['application_form']['itemcategory']['map']) && ($this->container['settings']['application_form']['itemcategory']['map']['fromversion'] != $items_version || $this->container['settings']['application_form']['itemcategory']['map']['toversion'] != $this->version)) { // if map does not exist for this version, notify user $items_map = $this->container['settings']['application_form']['itemcategory']['map']['items']; $appForm['items'] = array_map(function ($item) use($items_map) { $migrate_values = ['itemcategory_prev' => '', 'itemcategory_id_prev' => -2, 'prev_form_load' => true]; return array_merge($item, $migrate_values); }, $appForm['items']); } $this->view['form'] = ['values' => $appForm]; } } $labs = $this->labService->getLabsBySchoolId($school->id); $res = $this->view->render($res, 'application_form/form.twig', ['lab_choices' => array_map(function ($lab) { return ['value' => $lab['id'], 'label' => $lab['name']]; }, $labs), 'type_choices' => array_map(function ($category) { return ['value' => $category['id'], 'label' => $category['name']]; }, $this->assetsService->getAllItemCategories($this->version))]); return $res; }
/** * @param Response $response * @param Ticket $ticket */ protected function render(Response $response, Ticket $ticket) { $this->view->render($response, 'default/ticket.twig', ['ticket' => $ticket]); }
/** * @param ServerRequestInterface $request * @param ResponseInterface $response * * @return \Psr\Http\Message\ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response) { // Log the message $this->logger->addNotice(sprintf('Page %s was not found', (string) $request->getUri())); return $this->view->render($response, 'errors/404.twig')->withStatus(404); }
public function __invoke(Request $req, Response $res) { return $this->view->render($res, 'about.twig'); }
public function __invoke(ServerRequestInterface $request, ResponseInterface $response) { $comment = $this->repository->getMostRecent(); $this->view->render($response, 'post.phtml', ['comment' => new CommentViewModel($comment)]); }
public function dispatch($request, $response, $args) { $events = $this->eventService->getAll(); $this->view->render($response, 'admin/dashboard.twig', ['events' => $events]); return $response; }