/** * A group of Twig functions for use in view templates * * @param Twig_Environment $env * @param Slim $app * @return void */ function initialize(Twig_Environment $env, Slim $app) { $env->addExtension(new TwigExtension()); $env->addFunction(new Twig_SimpleFunction('urlFor', function ($routeName, $params = array()) use($app) { $url = $app->urlFor($routeName, $params); return $url; })); $env->addFunction(new Twig_SimpleFunction('hash', function ($value) { return md5($value); })); $env->addFunction(new Twig_SimpleFunction('gravatar', function ($email_hash, $size = 40) { $size = (int) $size == 0 ? 20 : (int) $size; $url = 'https://secure.gravatar.com/avatar/' . $email_hash . '?d=mm&s=' . $size; if (empty($email_hash)) { $url .= '&f=y'; } return $url; })); $env->addFunction(new Twig_SimpleFunction('getCurrentUrl', function () { return $_SERVER['REQUEST_URI']; })); $env->addFunction(new Twig_SimpleFunction('urlForTalk', function ($eventSlug, $talkSlug, $params = array()) use($app) { return $app->urlFor('talk', array('eventSlug' => $eventSlug, 'talkSlug' => $talkSlug)); })); $env->addFunction(new Twig_SimpleFunction('shortUrlForTalk', function ($talkStub) use($app) { $scheme = $app->request()->getScheme(); $host = $app->request()->headers('host'); return "{$scheme}://{$host}" . $app->urlFor('talk-quicklink', array('talkStub' => $talkStub)); })); $env->addFunction(new Twig_SimpleFunction('shortUrlForEvent', function ($eventStub) use($app) { $scheme = $app->request()->getScheme(); $host = $app->request()->headers('host'); return "{$scheme}://{$host}" . $app->urlFor('event-quicklink', array('stub' => $eventStub)); })); $env->addFunction(new Twig_SimpleFunction('dateRange', function ($start, $end, $format = 'd.m.Y', $separator = ' - ') use($app) { $formatter = new \Org_Heigl\DateRange\DateRangeFormatter(); $formatter->setFormat($format); $formatter->setSeparator($separator); if (!$start instanceof \DateTimeInterface) { $start = new \DateTime($start); } if (!$end instanceof \DateTimeInterface) { $end = new \DateTime($end); } return $formatter->getDateRange($start, $end); })); /** * wrapped Slim request function getPath() */ $env->addFunction(new Twig_SimpleFunction('currentPath', function () use($app) { $request = $app->request; $params = $app->request->get(); $queryString = http_build_query($params); if ($queryString) { return $request->getPath() . urlencode('?' . $queryString); } else { return $request->getPath(); } })); }
public function cleanupOldFiles() { $_SESSION['DB_DONE'] = true; $cleanupList = array_merge($this->pluginFinder->getDummyPlugins(), $this->filesFinder->getCleanupFiles()); $this->cleanupMedia(); if (count($cleanupList) == 0) { $_SESSION['CLEANUP_DONE'] = true; $this->response->redirect($this->app->urlFor('done')); } if ($this->request->isPost()) { $result = []; foreach ($cleanupList as $path) { $result = array_merge($result, Utils::cleanPath($path)); } if (count($result) == 0) { $_SESSION['CLEANUP_DONE'] = true; $this->response->redirect($this->app->urlFor('done')); } else { $result = array_map(function ($path) { return substr($path, strlen(SW_PATH) + 1); }, $result); $this->app->render('cleanup.php', ['cleanupList' => $result, 'error' => true]); } } else { $cleanupList = array_map(function ($path) { return substr($path, strlen(SW_PATH) + 1); }, $cleanupList); $this->app->render('cleanup.php', ['cleanupList' => $cleanupList, 'error' => false]); } }
/** * Handle the subscription form request */ public function subscribeAction() { try { $this->subscribeForm->validate($this->app->request()->params()); } catch (FormValidationException $e) { $this->session->flash('message', 'Oh no, you have entered invalid data. Please correct your input and try again.'); $this->session->flash('errors', $e->getErrors()); $this->session->flash('input', $this->app->request()->params()); $this->app->response->redirect($this->app->urlFor('home')); return; } // // TODO: Subscribe the client to your newsletter list... or stuff // $this->session->flash('message', 'Thanks for your request. You have successfully subscribed for our newsletter.'); $this->app->response->redirect($this->app->urlFor('home')); }
/** * $crud->url("user", ["male", "1970"]); * @param $routeName * @param array $data * @return string */ public function url($routeName, $data = []) { $data2 = []; $i = 1; // Map key (p1, p2, p3....) foreach ($data as $value) { $data2["p" . $i++] = $value; } return $this->slim->urlFor("_louisCRUD_" . $routeName, $data2); }
public function checkRequirements() { $paths = Utils::getPaths(SW_PATH . "/engine/Shopware/Components/Check/Data/Path.xml"); clearstatcache(); $systemCheckPathResults = Utils::checkPaths($paths, SW_PATH); foreach ($systemCheckPathResults as $value) { if (!$value['result']) { $fileName = SW_PATH . '/' . $value['name']; @mkdir($fileName, 0777, true); @chmod($fileName, 0777); } } clearstatcache(); $systemCheckPathResults = Utils::checkPaths($paths, SW_PATH); $hasErrors = false; foreach ($systemCheckPathResults as $value) { if (!$value['result']) { $hasErrors = true; } } $directoriesToDelete = ['engine/Library/Mpdf/tmp' => false, 'engine/Library/Mpdf/ttfontdata' => false]; CommonUtils::clearOpcodeCache(); $results = []; foreach ($directoriesToDelete as $directory => $deleteDirecory) { $result = true; $filePath = SW_PATH . '/' . $directory; Utils::deleteDir($filePath, $deleteDirecory); if ($deleteDirecory && is_dir($filePath)) { $result = false; $hasErrors = true; } if ($deleteDirecory) { $results[$directory] = $result; } } if (!$hasErrors && $this->app->request()->get("force") !== "1") { // No errors, skip page except if force parameter is set $this->app->redirect($this->app->urlFor("dbmigration")); } $isSkippableCheck = $this->app->config('skippable.check'); if ($isSkippableCheck && $this->app->request()->get("force") !== "1") { // No errors, skip page except if force parameter is set $this->app->redirect($this->app->urlFor("dbmigration")); } $this->app->render('checks.php', ['systemCheckResultsWritePermissions' => $systemCheckPathResults, 'filesToDelete' => $results, 'error' => $hasErrors]); }
$echolinksys->dataFromTheServer(); $app->log->info("Echolink CRON System - Update was performed from a remote server echolink.org"); if ($echolinksys->responseStat != System::RESPONSE_OK) { $app->log->info("Echolink CRON System - Server problem ! (CODE: " . $echolinksys->responseStat . ")"); $echolinksys->addHistoryLog("Server response problem! (CODE: " . $echolinksys->responseStat . ")"); } else { $body = "Byl změněn stav převaděče.\r\n" . "Call: "; foreach ($echolinksys->messageEmail as $email) { //set template for email! $body = "Byl změněn stav převaděče.\r\n" . "Call: " . $email["callname"] . "\r\n" . "Nyní stav: " . ($email["newStatus"] == 1 ? "true" : "false") . "\r\n" . "Datum poslední změny: " . $email["oldCheckDate"] . "\r\n" . "Datum nynější změny: " . $email["checkDate"] . "\r\n"; $echolinksys->mail($email["email"], "Echolink", $body, $from_name = "EcholinkSyS"); $echolinksys->addHistoryLog("E-mail send to " . $email["callname"]); $app->log->info("Echolink CRON System - Email send to " . $email["callname"]); } } $url = $app->urlFor('list', array()); $app->redirect($url); })->name('check'); // updating data $app->get('/cron', function () use($app) { $app->log->info("Echolink CRON System - '/cron' route"); $echolinksys = new System("mysql:host=" . host . ";dbname=" . database, username, password); $echolinksys->dataFromTheServer(); $app->log->info("Echolink CRON System - CRON -> Update was performed from a remote server echolink.org"); if ($echolinksys->responseStat != System::RESPONSE_OK) { $app->log->info("Echolink CRON System - Server problem ! (CODE: " . $echolinksys->responseStat . ")"); $echolinksys->addHistoryLog("Server response problem! (CODE: " . $echolinksys->responseStat . ")"); } else { $body = "Byl změněn stav převaděče.\r\n" . "Call: "; foreach ($echolinksys->messageEmail as $email) { //set template for email!
/** * @param array $params * @return string */ public function getCurrentUrl($params = []) { $entries = $this->entries; $currentEntry = \current($entries); return $this->slim->urlFor($currentEntry, $params); }
$app->response->finalize(); } $app->logger->alert('UNHANDLED EXCEPTION', array('exception' => $e)); if (isset($_SESSION['username']) && !empty($_SESSION['username'])) { return $app->render('errors/500-authed.mustache'); } $app->render('errors/500-guest.mustache'); }); $app->view(new Mustache()); $app->view->parserOptions = $config['mustache']; $app->view->appendData(array('copyrightYear' => date('Y'))); $app->add(new Navigation()); $app->add(new SessionCookie(array('expires' => '12 hours'))); $isLoggedIn = function () use($app) { if (empty($_SESSION['username'])) { $app->redirect($app->urlFor('home')); } }; // home $app->get('/', function () use($app) { $isAuthenticated = empty($_SESSION['username']) ? false : true; $app->render('home/index.mustache', array('isAuthenticated' => $isAuthenticated)); })->name('home'); $app->get('/login', function () use($app) { $app->redirect($app->urlFor('home')); }); // login $app->post('/login', function () use($app) { $params = $app->request()->post(); // make sure the user name was passed. $username = trim($params['username']);
/** * Configure routes to be handled by application. * * @param \Slim\Slim $slim Application */ protected function configureRoutes(\Slim\Slim $slim) { $middleware = array('must-revalidate' => function () use($slim) { $slim->response->headers->set('Cache-Control', 'private, must-revalidate, max-age=0'); $slim->response->headers->set('Expires', 'Thu, 01 Jan 1970 00:00:00 GMT'); }, 'inject-user' => function () use($slim) { $user = $slim->authManager->getUserData(); $slim->view->set('user', $user); }, 'require-user' => function () use($slim) { if ($slim->authManager->isAnonymous()) { if ($slim->request->isGet()) { $uri = $slim->request->getUrl() . $slim->request->getPath(); $qs = Form::qsMerge(); if ($qs) { $uri = "{$uri}?{$qs}"; } $_SESSION[AuthManager::NEXTPAGE_SESSION_KEY] = $uri; } // FIXME: use i18n $slim->flash('error', 'Login required'); $slim->flashKeep(); $slim->redirect($slim->urlFor('login')); } }); $slim->group('/', $middleware['inject-user'], function () use($slim, $middleware) { App::redirect($slim, '', 'random', 'home'); App::redirect($slim, 'index', 'random'); $slim->get('random', function () use($slim) { $page = new Pages\Random($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page(); })->name('random'); $slim->get('random.json', function () use($slim) { $slim->response->headers->set('Content-Type', 'application/json'); $page = new Pages\Random($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page->setTemplate('random.json'); $page(); })->name('random.json'); $slim->get('search', function () use($slim) { $page = new Pages\Search($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page(); })->name('search'); $slim->get('top', function () use($slim) { $page = new Pages\Top($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page(); })->name('top'); App::template($slim, 'login'); $slim->get('logout', $middleware['must-revalidate'], function () use($slim) { $slim->authManager->logout(); $slim->redirect($slim->urlFor('home')); })->name('logout'); App::template($slim, 'about'); App::template($slim, 'help'); }); // end group '/' $slim->group('/quip/', $middleware['inject-user'], function () use($slim, $middleware) { $slim->get(':id', function ($id) use($slim) { $page = new Pages\Quip($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page($id); })->name('quip'); $slim->get(':id/edit', $middleware['require-user'], function ($id) use($slim) { $page = new Pages\Edit($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page($id); })->name('edit'); $slim->post(':id/post', $middleware['require-user'], function ($id) use($slim) { $page = new Pages\Edit($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page($id); })->name('edit_post'); $slim->post(':id/delete', $middleware['require-user'], function ($id) use($slim) { $page = new Pages\Delete($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page($id); })->name('delete_post'); $slim->post(':id/vote', $middleware['require-user'], function ($id) use($slim) { $page = new Pages\Vote($slim); $page->setI18nContext($slim->i18nContext); $page->setQuips($slim->quips); $page($id); })->name('vote_post'); }); $slim->group('/oauth/', function () use($slim) { $slim->get('', function () use($slim) { $page = new Pages\OAuth($slim); $page->setOAuth($slim->oauthClient); $page('init'); })->name('oauth_init'); $slim->get('callback', function () use($slim) { $page = new Pages\OAuth($slim); $page->setI18nContext($slim->i18nContext); $page->setOAuth($slim->oauthClient); $page->setUserManager($slim->userManager); $page('callback'); })->name('oauth_callback'); }); $slim->notFound(function () use($slim) { $slim->render('404.html'); }); }
public function urlWithApikeyFor($name, $params = []) { return $this->app->urlFor($name, $params) . '?apikey=' . $GLOBALS['config']['apikey']; }
$routeItem->route = ''; if ($pages[$routeName][$lang]['route'] == '/') { $routeItem->route = '/'; } } if ($pages[$routeName][$lang]['route'] != '/') { $routeItem->route .= $pages[$routeName][$lang]['route']; } } $menu_langs[] = $routeItem; $routeItem = null; } } $data['menu_langs'] = $menu_langs; $app->view->appendData($data); }); $data['menu'] = []; foreach ($data['langs']['menu'] as $key => $value) { $menuItem = new stdClass(); $menuItem->lang = $value; $menuItem->route = $app->urlFor($key); if (strlen($menuItem->route) > 1) { if (substr($menuItem->route, -1) == '/') { $menuItem->route = substr($menuItem->route, 0, -1); } } $data['menu'][] = $menuItem; $menuItem = null; } $app->view->appendData($data); $app->run();
<?php use SecucardConnect\Util\Logger; use Slim\Slim; use Slim\Views\Twig; use Slim\Views\TwigExtension; include_once __DIR__ . "/init.php"; /* * Prepare demo app */ $app = new Slim(array('debug' => true, 'templates.path' => __DIR__)); $app->container->singleton('log', function () { return new Logger(fopen("php://stdout", "a"), true); }); // Prepare twig-view-renderer $app->view(new Twig()); $app->view->parserOptions = array('charset' => 'utf-8', 'auto_reload' => true, 'strict_variables' => false, 'autoescape' => true, 'debug' => true); $app->view->parserExtensions = array(new TwigExtension()); // add extensions $app->view->getInstance()->addExtension(new Twig_Extension_Debug()); // add methods $function = new Twig_SimpleFunction('urlFor', function ($name) use($app) { $url = $app->urlFor($name); // add index.php to url, so it is not broken if (strpos($url, 'index.php') === false) { $url = str_replace($name, 'index.php/' . $name, $url); } return $url; }); $app->view->getInstance()->addFunction($function);
// setup variables from the incoming post $album = $app->request->post('album'); $email = $app->request->post('email'); $code = strtoupper($app->request->post('code')); $subscribe = $app->request->post('mailing_list'); $address = $app->request->post('address'); // Set current entries to cookies $app->setCookie('code', $code); $app->setCookie('email', $email); $app->setCookie('album', $album); $app->setCookie('subscribe', $subscribe); // Make sure the Honey Pot field is empty. if (!empty($address)) { $app->flash('error', 'Your form submission has an error.'); // Push them back to the main screen with generic error message $app->redirect($app->urlFor('home')); } elseif (!empty($code) && !empty($email)) { // Clean up the form submissions $cleanCode = filter_var($code, FILTER_SANITIZE_STRING); $cleanEmail = filter_var($email, FILTER_SANITIZE_EMAIL); $cleanAlbum = filter_var($album, FILTER_SANITIZE_STRING); // validate the email format $validEmail = filter_var($cleanEmail, FILTER_VALIDATE_EMAIL); // Validate the code entered $validCode = $dl->validate_code($album, $code); // Check if the code and email entered are valid if ($validEmail && $validCode === 200) { // Subscribe the user if they kept the subscribe option checked if ($subscribe) { $addUser = $mail->newsletterSignup($cleanEmail); print_r($addUser);
public function urlFor($path) { return $this->app->urlFor('assets', array('path' => trim($path, '/'))); }
echo "Couldn't find the Message in the body."; $app->response()->setStatus(400); } })->name("webhook"); /** * Install webhook with Telegram API. Uses the current url and "webhook" route. * POST to this URL to install your webhook with Telegram. * * Note: Telegram requires your webhooks to use HTTPS. * * For example: * * POST https://bot.mydomain.com/install HTTP/1.1 */ $app->post("/install", function () use($app) { $url = $app->request()->getUrl() . $app->urlFor("webhook"); try { $app->telegram->setWebhook($url); } catch (\Exception $e) { echo "Couldn't set the webhook. Have you set the bot auth token correctly?"; $app->response()->setStatus(403); } }); /** * Uninstall the webhook by sending a blank URL. Post to this URL to uninstall * your webhook. * * For example: * * POST https://bot.mydomain.com/uninstall HTTP/1.1 */
public function urlFor($name, $params = array()) { return sprintf('/%s%s', $this->view()->getLang(), parent::urlFor($name, $params)); }
<?php require_once dirname(dirname(__FILE__)) . '/vendor/autoload.php'; use Slim\Slim; $app = new Slim(); $app->config('debug', true); $app->config('whoops.editor', 'sublime'); $app->add(new \Zeuxisoo\Whoops\Provider\Slim\WhoopsMiddleware()); $app->get('/', function () use($app) { $app->urlFor('index'); // Throw exception, not defined route named 'index' }); $app->run();
/** * A group of Twig functions for use in view templates * * @param Twig_Environment $env * @param Slim $app * @return void */ function initialize(Twig_Environment $env, Slim $app) { $env->addExtension(new TwigExtension()); $env->addFunction(new Twig_SimpleFunction('urlFor', function ($routeName, $params = array()) use($app) { $url = $app->urlFor($routeName, $params); return $url; })); $env->addFunction(new Twig_SimpleFunction('hash', function ($value) { return md5($value); })); $env->addFunction(new Twig_SimpleFunction('gravatar', function ($email_hash, $size = 40) { $size = (int) $size == 0 ? 20 : (int) $size; $url = 'https://secure.gravatar.com/avatar/' . $email_hash . '?d=mm&s=' . $size; if (empty($email_hash)) { $url .= '&f=y'; } return $url; })); $env->addFunction(new Twig_SimpleFunction('getCurrentRoute', function () use($app) { return $app->router->getCurrentRoute()->getName(); })); $env->addFunction(new Twig_SimpleFunction('getCurrentUrl', function ($fullyQualified = false) use($app) { $url = $_SERVER['REQUEST_URI']; if ($fullyQualified) { $scheme = $app->request()->getScheme(); $host = $app->request()->headers('host'); $url = "{$scheme}://{$host}{$url}"; } return $url; })); $env->addFunction(new Twig_SimpleFunction('urlForTalk', function ($eventSlug, $talkSlug, $params = array()) use($app) { return $app->urlFor('talk', array('eventSlug' => $eventSlug, 'talkSlug' => $talkSlug)); })); $env->addFunction(new Twig_SimpleFunction('shortUrlForTalk', function ($talkStub) use($app) { $scheme = $app->request()->getScheme(); $host = $app->request()->headers('host'); return "{$scheme}://{$host}" . $app->urlFor('talk-quicklink', array('talkStub' => $talkStub)); })); $env->addFunction(new Twig_SimpleFunction('shortUrlForEvent', function ($eventStub) use($app) { $scheme = $app->request()->getScheme(); $host = $app->request()->headers('host'); return "{$scheme}://{$host}" . $app->urlFor('event-quicklink', array('stub' => $eventStub)); })); $env->addFunction(new Twig_SimpleFunction('dateRange', function ($start, $end, $format = 'd.m.Y', $separator = ' - ') use($app) { $formatter = new \Org_Heigl\DateRange\DateRangeFormatter(); $formatter->setFormat($format); $formatter->setSeparator($separator); if (!$start instanceof \DateTimeInterface) { $start = new \DateTime($start); } if (!$end instanceof \DateTimeInterface) { $end = new \DateTime($end); } return $formatter->getDateRange($start, $end); })); /** * Convert a number of minutes into a prettier textual string. * * e.g. * - 60 minutes converts to "1 hour" * - 120 minutes converts to "2 hours" * - 126 minutes converts to "2 hours, 6 minutes" */ $env->addFunction(new Twig_SimpleFunction('prettyDuration', function ($duration) { $duration = (int) $duration; if ($duration < 60) { return "{$duration} minutes"; } if ($duration == 60) { return "1 hour"; } $hours = (int) ($duration / 60); $minutes = $duration - $hours * 60; if (!$minutes) { return "{$hours} hours"; } return "{$hours} hours, {$minutes} minutes"; })); /** * wrapped Slim request function getPath() */ $env->addFunction(new Twig_SimpleFunction('currentPath', function () use($app) { $request = $app->request; $params = $app->request->get(); $queryString = http_build_query($params); if ($queryString) { return $request->getPath() . urlencode('?' . $queryString); } else { return $request->getPath(); } })); /** * Create link to log in with Facebook */ $env->addFunction(new Twig_SimpleFunction('facebookLoginUrl', function () use($app) { if (!$app->config('facebook') || empty($app->config('facebook')['app_id'])) { // app_id isn't configured return ''; } $req = $app->request(); $redirectUrl = $req->getUrl(); $redirectUrl .= $app->urlFor('facebook-callback'); $url = 'https://www.facebook.com/dialog/oauth?'; $url .= http_build_query(['scope' => 'email', 'client_id' => $app->config('facebook')['app_id'], 'redirect_uri' => $redirectUrl]); return $url; }, ['is_safe' => ['html']])); }
$authData = $app->auth->getIdentity(); $authData['department_name'] = getNameForID($app->db, $authData['department']); $app->view()->appendData(array('userInfo' => $authData)); } $app->view()->appendData(array('site_root' => $app->environment['SCRIPT_NAME'] . '/')); }); $app->get('/', function () use($app) { $app->render('html/index.html'); })->name('index'); $app->get('/login', function () use($app) { $app->render('html/login.html'); })->name('login'); $app->post('/login', function () use($app) { $result = $app->authenticator->authenticate($app->request->post('username'), $app->request->post('password')); if ($result->isValid()) { $app->redirect($app->urlFor('profile')); } else { $app->flash('error', 'Invalid username or password provided'); $app->redirect($app->urlFor('login')); } }); $app->get('/logout', function () use($app) { $app->authenticator->logout(); $app->redirect($app->urlFor('index')); }); $app->get('/pwreset/:guid', function ($guid) use($app) { if (checkGUID($app->db, $guid)) { $app->render('html/pwreset.html', array('guid' => $guid)); } else { $app->notFound(); }