/** * Create controller * * @param ControllerManager $serviceLocator * @return Contentinum\Controller\ApplicationController */ public function createService(ServiceLocatorInterface $controllerManager) { $sl = $controllerManager->getServiceLocator(); /** * * @var Contentinum\Options\PageOptions $pageOptions Contentinum\Options\PageOptions */ $pageOptions = $sl->get('User\\PageOptions'); $request = new HttpRequest(); $pageOptions->setHost($request->getUri()->getHost()); $pageOptions->setQuery($request->getUri()->getPath()); $preferences = $sl->get('Contentinum\\Preference'); $pageOptions->addPageOptions($preferences); $pageOptions->addPageOptions($preferences, $pageOptions->getHost()); $pages = $sl->get('Contentinum\\PublicPages'); $pages = is_array($pages) ? $pages : $pages->toArray(); $pages = isset($pages[$pageOptions->getStdParams()]) ? $pages[$pageOptions->getStdParams()] : array(); $attribute = $sl->get('Contentinum\\AttributePages'); $attribute = is_array($attribute) ? $attribute : $attribute->toArray(); $url = $pageOptions->split($pageOptions->getQuery(), 3); if (strlen($url) == 0) { $url = 'index'; } if (isset($pages[$url])) { $pageOptions->addPageOptions($pages, $url); $page = $pages[$url]; } else { $defaultPages = $sl->get('User\\Pages'); $defaultPages = is_array($defaultPages) ? $defaultPages : $defaultPages->toArray(); if (isset($defaultPages[$url])) { $pageOptions->addPageOptions($defaultPages, $url); $page = $defaultPages[$url]; $page['parentPage'] = 0; $page['id'] = 0; } else { $ctrl = new \Contentinum\Controller\ErrorController(); $ctrl->setMessage('The desired page is not available!'); return $ctrl; } } isset($attribute[$page['parentPage']]) ? $pageOptions->addPageOptions($attribute, $page['parentPage']) : false; isset($attribute[$page['id']]) ? $pageOptions->addPageOptions($attribute, $page['id']) : false; $em = $sl->get($pageOptions->getAppOption('entitymanager')); $workerName = $pageOptions->getAppOption('worker'); $worker = new $workerName($em); $worker->setSl($sl); $entityName = $pageOptions->getAppOption('entity'); $worker->setEntity(new $entityName()); $controller = new McuserController($pageOptions, $page); $controller->setWorker($worker); return $controller; }
/** * Generates an url with the given path. * * @param string $path Path * * @return string Url */ public function __invoke($path) { if ($this->basePath === null) { $scheme = $this->request->getUri()->getScheme(); if ($this->config->getValue('force_frontend_ssl') or $scheme === 'https') { $basePath = $this->config->getValue('secure_cdn_base_path'); } else { $basePath = $this->config->getValue('unsecure_cdn_base_path'); } $this->basePath = rtrim($basePath, '/'); } return $this->basePath . '/' . ltrim($path, '/'); }
private function checkURL() { $url = parent::getUri()->getPath(); $get = parent::getQuery()->toArray(); $explodeUrl = explode('/', $url); array_shift($explodeUrl); array_shift($explodeUrl); if (empty($explodeUrl[0])) { throw new \Exception('Empty Resource'); } $this->resourse = $explodeUrl[0]; array_shift($explodeUrl); $max = count($explodeUrl); for ($i = 0; $i < $max; $i += 2) { $name = $explodeUrl[$i]; if (empty($name)) { continue; } if (!$this->checkParamName($name)) { throw new \Exception('Invalid Parameter Name (' . $name . ')'); } $value = isset($explodeUrl[$i + 1]) ? $explodeUrl[$i + 1] : null; $this->urlParameters[$name] = urldecode($value); } foreach ($get as $name => $value) { if (!$this->checkParamName($name)) { throw new \Exception('Invalid Parameter Name (' . $name . ')'); } } $this->urlParameters = array_merge($this->urlParameters, $get); }
/** * Initialize proxy with config * * @param Config $config */ public function __construct(Config $config, ZendLogger $logger, Request $request) { $this->config = $config; $this->logger = $logger; $trustedProxies = explode(',', $this->config->get('TrustedProxy')->get('loadbalancer')); // Populate client info properties from request $RemoteAddress = new RemoteAddress(); $RemoteAddress->setUseProxy(); $RemoteAddress->setTrustedProxies($trustedProxies); $ipAddress = $RemoteAddress->getIpAddress(); $this->clientIp = array('IPv4' => $ipAddress); $Request = new Request(); $this->clientUri = $Request->getUri(); }
/** * This function will generate all meta tags needed for SEO optimisation. * * @param array $content */ public function __invoke(array $content = []) { $description = !empty($content['description']) ? $content['description'] : $this->settings->__invoke('general', 'site_description'); $keywords = !empty($content['keywords']) ? $content['keywords'] : $this->settings->__invoke('general', 'site_keywords'); $text = !empty($content['text']) ? $content['text'] : $this->settings->__invoke('general', 'site_text'); $preview = !empty($content['preview']) ? $content['preview'] : ''; $title = !empty($content['title']) ? $content['title'] : $this->settings->__invoke('general', 'site_name'); $this->placeholder->append("\r\n<meta itemprop='name' content='" . $this->settings->__invoke('general', 'site_name') . "'>\r\n"); // must be set from db $this->placeholder->append("<meta itemprop='description' content='" . substr(strip_tags($text), 0, 150) . "'>\r\n"); $this->placeholder->append("<meta itemprop='title' content='" . $title . "'>\r\n"); $this->placeholder->append("<meta itemprop='image' content='" . $preview . "'>\r\n"); $this->headMeta->appendName('keywords', $keywords); $this->headMeta->appendName('description', $description); $this->headMeta->appendName('viewport', 'width=device-width, initial-scale=1.0'); $this->headMeta->appendName('generator', $this->settings->__invoke('general', 'site_name')); $this->headMeta->appendName('apple-mobile-web-app-capable', 'yes'); $this->headMeta->appendName('application-name', $this->settings->__invoke('general', 'site_name')); $this->headMeta->appendName('mobile-web-app-capable', 'yes'); $this->headMeta->appendName('HandheldFriendly', 'True'); $this->headMeta->appendName('MobileOptimized', '320'); $this->headMeta->appendName('apple-mobile-web-app-status-bar-style', 'black-translucent'); $this->headMeta->appendName('author', 'Stanimir Dimitrov - stanimirdim92@gmail.com'); $this->headMeta->appendName('twitter:card', 'summary'); $this->headMeta->appendName('twitter:site', '@' . $this->settings->__invoke('general', 'site_name')); $this->headMeta->appendName('twitter:title', substr(strip_tags($title), 0, 70)); // max 70 chars $this->headMeta->appendName('twitter:description', substr(strip_tags($text), 0, 200)); $this->headMeta->appendName('twitter:image', $preview); // max 1MB $this->headMeta->appendProperty('og:image', $preview); $this->headMeta->appendProperty('og:title', $title); $this->headMeta->appendProperty('og:description', $description); $this->headMeta->appendProperty('og:type', 'article'); $this->headMeta->appendProperty('og:url', $this->request->getUri()->getHost() . $this->request->getRequestUri()); }
/** * @dataProvider serverHostnameProvider * @param array $server * @param string $name * @param string $value */ public function testServerHostnameProvider(array $server, $expectedHost, $expectedRequestUri) { $_SERVER = $server; $request = new Request(); $host = $request->getUri()->getHost(); $this->assertEquals($expectedHost, $host); $requestUri = $request->getRequestUri(); $this->assertEquals($expectedRequestUri, $requestUri); }
/** * Get the URI path of the request, relative to the application base URL. * * @param HttpRequest $request * @return string */ protected function _getRelativePath(HttpRequest $request) { $basePath = $request->getBasePath(); $relPath = $request->getUri()->getPath(); if (!empty($basePath) && strpos($relPath, $basePath) === 0) { $relPath = substr($relPath, strlen($basePath)); } return $relPath; }
/** * @dataProvider serverHostnameProvider * @param array $server * @param string $name * @param string $value */ public function testServerHostnameProvider(array $server, $expectedHost, $expectedPort, $expectedRequestUri) { $_SERVER = $server; $request = new Request(); $host = $request->getUri()->getHost(); $this->assertEquals($expectedHost, $host); $uriParts = parse_url($_SERVER['REQUEST_URI']); if (isset($uriParts['scheme'])) { $scheme = $request->getUri()->getScheme(); $this->assertEquals($uriParts['scheme'], $scheme); } $port = $request->getUri()->getPort(); $this->assertEquals($expectedPort, $port); $requestUri = $request->getRequestUri(); $this->assertEquals($expectedRequestUri, $requestUri); }
/** * Create controller * * @param ControllerManager $serviceLocator * @return Contentinum\Controller\ApplicationController */ public function createService(ServiceLocatorInterface $controllerManager) { $sl = $controllerManager->getServiceLocator(); /** * * @var $pageOptions Contentinum\Options\PageOptions */ $pageOptions = $sl->get('contentinum_pages'); $opt = $sl->get('contentinum_customer'); if (isset($opt['default']['google_map_apikey'])) { define('GOOGLE_API_KEY', $opt['default']['google_map_apikey']); } $request = new HttpRequest(); $pageOptions->setHost($request->getUri()->getHost()); $pageOptions->setQuery($request->getUri()->getPath()); $pageOptions->setProtocol($request->getUri()->getScheme()); $pagefiles = $sl->get('contentinum_page_files'); $page = $pageOptions->split(); $defaults = $sl->get('contentinum_page_defaults'); if (isset($pagefiles[$page . '_pages'])) { $defaults->setCacheKey($page . '_pages'); $pages = $defaults->get($pagefiles[$page . '_pages']); $pageOptions->addOptions($pages); if (isset($pages[$pageOptions->getQuery()])) { $pageOptions->addOptions($pages, '/' . $pageOptions->split(null, 5), true); $pageOptions->setActive('/' . $pageOptions->split(null, 5)); } else { switch ($page) { case 'mcevent': case 'mcwork': case 'municipal': case 'feuerwehr': case 'guestbook': case 'newsletter': if (isset($pages['/' . $pageOptions->split(null, 3)])) { $pageOptions->addOptions($pages, '/' . $pageOptions->split(null, 3), true); $pageOptions->setActive('/' . $pageOptions->split(null, 3)); } elseif (isset($pages['/' . $pageOptions->split(null, $pageOptions->getSplitQuery())])) { // ... or isset page ... $pageOptions->addOptions($pages, '/' . $pageOptions->split(null, $pageOptions->getSplitQuery()), true); $pageOptions->setActive('/' . $pageOptions->split(null, $pageOptions->getSplitQuery())); } else { // ... page not found send 404 die('not found'); } break; default: die('not found'); break; } } } elseif (in_array($page, array('login', 'logout'))) { $defaults->setCacheKey('mcuser_pages'); $pages = $defaults->get($pagefiles['mcuser_pages']); $pageOptions->addOptions($pages); // default options $pageOptions->addOptions($pages, '/' . $pageOptions->split(null, 2), true); $pageOptions->setActive('/' . $pageOptions->split(null, 2)); } else { $defaults->setCacheKey('app_pages'); $pageOptions->addOptions($defaults->get($pagefiles['app_pages'])); $url = $pageOptions->split($pageOptions->getQuery(), 1); switch ($url) { case 'sitemap.xml': case 'feed': case 'pdf': case 'emailrecom': case 'contentplugin': $pageOptions->addOptions($defaults->get($pagefiles['app_pages']), $url); break; default: $preferences = $sl->get('contentinum_preference'); $pageOptions->addOptions($preferences); $pageOptions->addOptions($preferences, $pageOptions->getHost()); $pages = $sl->get('contentinum_public_pages'); $hostId = $pageOptions->getHostId(); if (strlen($url) == 0) { $url = 'index'; } if (null !== ($page = $pages->{$hostId}->{$url})) { $attribute = $sl->get('contentinum_attribute_pages'); $attribute = is_array($attribute) ? $attribute : $attribute->toArray(); isset($attribute[$page['parentPage']]) ? $pageOptions->addOptions($attribute, $page['parentPage']) : false; isset($attribute[$page['id']]) ? $pageOptions->addOptions($attribute, $page['id']) : false; $pageHeaders = $sl->get('contentinum_page_headers'); isset($pageHeaders[$page['parentPage']]) ? $pageOptions->addPageHeaders($pageHeaders, $page['parentPage']) : false; isset($pageHeaders[$page['id']]) ? $pageOptions->addPageHeaders($pageHeaders, $page['id']) : false; $pageOptions->addPage($page); } else { $preferences = $sl->get('contentinum_preference'); $pageOptions->addOptions($preferences); $pageOptions->addOptions($preferences, $pageOptions->getHost()); $pages = $sl->get('contentinum_public_pages'); $hostId = $pageOptions->getHostId(); $page = $pages->{$hostId}->error; $attribute = $sl->get('contentinum_attribute_pages'); $attribute = is_array($attribute) ? $attribute : $attribute->toArray(); isset($attribute[$page['parentPage']]) ? $pageOptions->addOptions($attribute, $page['parentPage']) : false; isset($attribute[$page['id']]) ? $pageOptions->addOptions($attribute, $page['id']) : false; $pageOptions->addPage($page); $pageOptions->addAppOptions('controller', 'Contentinum\\Controller\\ErrorController'); } break; } } $em = $sl->get($pageOptions->getApp('entitymanager')); $workerName = $pageOptions->getApp('worker'); $worker = new $workerName($em); $worker->setSl($sl); if (false !== ($entityName = $pageOptions->getApp('entity'))) { $worker->setEntity(new $entityName()); } $controllerName = $pageOptions->getApp('controller'); $controller = new $controllerName($pageOptions); $controller->setConfiguration($opt); $controller->setWorker($worker); $controller->setFormFactory($this->formFactory($sl, $pageOptions, $worker)); return $controller; }