示例#1
0
 public function track()
 {
     if (empty($_COOKIE[self::HTTP_REFERRER_COOKIE]) && ($referrer = getenv('HTTP_REFERER'))) {
         $uri = parse_url($referrer);
         $domain = preg_quote($this->config->getPublicVars('domain'));
         $value = !preg_match("/{$domain}/", $uri['host']) ? sprintf('%s||%s', $this->request->getPath(), $referrer) : '/';
         $this->response->setCookie(self::HTTP_REFERRER_COOKIE, $value, '+1 year');
     }
     if (empty($_COOKIE[self::HTTP_CAMPAIGN_COOKIE]) && ($cmp = $this->request->getParameter('_cmp'))) {
         $this->response->setCookie(self::HTTP_CAMPAIGN_COOKIE, $cmp, '+1 year');
     }
 }
示例#2
0
 public function setCookie(string $name, $value, string $expires = '+1 day', $httpOnly = false)
 {
     unset($_COOKIE[$name]);
     $domain = $this->config->getPublicVars('domain') ?: 'localhost';
     $expiry = $value === null ? -1 : (is_numeric($expires) ? time() + $expires : strtotime($expires));
     $status = setcookie($name, $value ?? '', $expiry, '/', !empty($domain) ? '.' . $domain : null, null, $httpOnly);
     if (!empty($_SERVER['HTTP_HOST']) && strpos($_SERVER['HTTP_HOST'], $domain) === false || preg_match('/localhost/', $domain)) {
         $status = setcookie($name, $value ?? '', $expiry, '/', null, null, $httpOnly);
     }
     if ($status && $expiry > time()) {
         $_COOKIE[$name] = $value;
     }
 }
示例#3
0
 public function getCachedSessionData($reload)
 {
     $key = sprintf("session-user-%d", $this->session->getLoggedInUserId());
     $userData = function () {
         $user_id = $this->session->getLoggedInUserId();
         /** @var User $user_info */
         if ($user_info = User::find($user_id)) {
             $user_data = array_diff_key($user_info->getAttributes(), ['password' => 1, 'verified' => 1, 'ident' => 1]);
             $user_data['groups'] = $this->userInfo->getUserGroups($user_id, true) ?: [];
         } else {
             $user_data = null;
         }
         if (!empty($user_data) && empty($user_data['full_name'])) {
             $user_data['full_name'] = trim(sprintf('%s %s', $user_data['first_name'], $user_data['last_name'])) ?: 'Anonymous';
         }
         foreach ($this->providers->getEnabled() as $provider) {
             unset($provider['key'], $provider['secret']);
             $providers[] = $provider;
         }
         return ['site' => $this->config->getPublicVars(), 'user' => $user_data, 'providers' => $providers ?? []];
     };
     $data = $reload ? $userData() : $this->cache->get($key, $userData, 300);
     return $data;
 }
示例#4
0
 public function getHttpdConf(ImportEvent $event)
 {
     $httpd = file_get_contents(__DIR__ . '/data/apache.conf.txt');
     $conf = $this->engine->render($httpd, array_merge($this->config->getPublicVars(), ['path' => realpath($this->bootLoader->getBaseDir() . '/public')]));
     $event->setContent(['conf' => $conf]);
 }