let the session expire in 2 weeks
[phorkie.git] / www / www-header.php
1 <?php
2 namespace phorkie;
3 error_reporting(error_reporting() & ~E_STRICT);
4 session_set_cookie_params(14 * 86400);//2 weeks session expiry time
5 session_start();
6
7 require_once __DIR__ . '/../src/phorkie/autoload.php';
8 set_exception_handler(
9     function ($e) {
10         if ($e instanceof Exception) {
11             header('HTTP/1.0 ' . $e->httpStatusCode);
12         } else {
13             header('HTTP/1.0 500 Internal server error');
14         }
15
16         if (!isset($GLOBALS['twig'])) {
17             echo '<h1>Exception</h1>';
18             echo '<p>' . $e->getMessage() . '</p>';
19             echo "\n";
20             exit();
21         }
22
23         render(
24             'exception',
25             array(
26                 'exception' => $e,
27                 'debug'     => $GLOBALS['phorkie']['cfg']['debug']
28             )
29         );
30         exit();
31     }
32 );
33
34 require_once __DIR__ . '/../data/config.default.php';
35 if (file_exists(__DIR__ . '/../data/config.php')) {
36     require_once __DIR__ . '/../data/config.php';
37 }
38
39 // Set/Get git commit session variables
40 $_SESSION['ipaddr'] = $_SERVER['REMOTE_ADDR'];
41 if (!isset($_SESSION['name'])) {
42     $_SESSION['name'] = $GLOBALS['phorkie']['auth']['anonymousName'];
43 }
44 if (!isset($_SESSION['email'])) {
45     $_SESSION['email'] = $GLOBALS['phorkie']['auth']['anonymousEmail'];
46 }
47
48 \Twig_Autoloader::register();
49
50 $loader = new \Twig_Loader_Filesystem($GLOBALS['phorkie']['cfg']['tpl']);
51 $twig = new \Twig_Environment(
52     $loader,
53     array(
54         //'cache' => '/path/to/compilation_cache',
55         'debug' => true
56     )
57 );
58 $twig->addFunction('ntext', new \Twig_Function_Function('\phorkie\ntext'));
59 function ntext($value, $singular, $plural)
60 {
61     if (abs($value) == 1) {
62         return sprintf($singular, $value);
63     }
64     return sprintf($plural, $value);
65 }
66 //$twig->addExtension(new \Twig_Extension_Debug());
67
68 if (!isset($noSecurityCheck) || $noSecurityCheck !== true) {
69     require __DIR__ . '/www-security.php';
70 }
71
72 function render($tplname, $vars = array())
73 {
74     $vars['baseurl'] = '/';
75     if (!empty($GLOBALS['phorkie']['cfg']['baseurl'])) {
76         $vars['baseurl'] = $GLOBALS['phorkie']['cfg']['baseurl'];
77     }
78     $vars['css'] = $GLOBALS['phorkie']['cfg']['css'];
79     $vars['iconpng'] = $GLOBALS['phorkie']['cfg']['iconpng'];
80     $vars['title'] = $GLOBALS['phorkie']['cfg']['title'];
81     $vars['topbar'] = $GLOBALS['phorkie']['cfg']['topbar'];
82     if (isset($_SESSION['identity'])) {
83         $vars['identity'] = $_SESSION['identity'];
84         $vars['name'] = $_SESSION['name'];
85         $vars['email'] = $_SESSION['email'];
86     }
87     $vars['db'] = new Database();
88     if (!isset($vars['htmlhelper'])) {
89         $vars['htmlhelper'] = new HtmlHelper();
90     }
91
92     $template = $GLOBALS['twig']->loadTemplate($tplname . '.htm');
93     echo $template->render($vars);
94 }
95 function redirect($target)
96 {
97     header('Location: ' . $target);
98     exit();
99 }
100 ?>