/**
  * 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;
 }
Esempio n. 2
0
 /**
  * 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, '/');
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 /**
  * 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();
 }
Esempio n. 5
0
 /**
  * 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());
 }
Esempio n. 6
0
 /**
  * @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;
 }
Esempio n. 8
0
 /**
  * @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;
 }