1<?php
2$title=($cfg && is_object($cfg) && $cfg->getTitle())
3    ? $cfg->getTitle() : 'osTicket :: '.__('Support Ticket System');
4$signin_url = ROOT_PATH . "login.php"
5    . ($thisclient ? "?e=".urlencode($thisclient->getEmail()) : "");
6$signout_url = ROOT_PATH . "logout.php?auth=".$ost->getLinkToken();
7
8header("Content-Type: text/html; charset=UTF-8");
9header("Content-Security-Policy: frame-ancestors ".$cfg->getAllowIframes().";");
10
11if (($lang = Internationalization::getCurrentLanguage())) {
12    $langs = array_unique(array($lang, $cfg->getPrimaryLanguage()));
13    $langs = Internationalization::rfc1766($langs);
14    header("Content-Language: ".implode(', ', $langs));
15}
16?>
17<!DOCTYPE html>
18<html<?php
19if ($lang
20        && ($info = Internationalization::getLanguageInfo($lang))
21        && (@$info['direction'] == 'rtl'))
22    echo ' dir="rtl" class="rtl"';
23if ($lang) {
24    echo ' lang="' . $lang . '"';
25}
26
27// Dropped IE Support Warning
28if (osTicket::is_ie())
29    $ost->setWarning(__('osTicket no longer supports Internet Explorer.'));
30?>>
31<head>
32    <meta charset="utf-8">
33    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
34    <title><?php echo Format::htmlchars($title); ?></title>
35    <meta name="description" content="customer support platform">
36    <meta name="keywords" content="osTicket, Customer support system, support ticket system">
37    <meta name="viewport" content="width=device-width, initial-scale=1">
38	<link rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/osticket.css?6bd7884" media="screen"/>
39    <link rel="stylesheet" href="<?php echo ASSETS_PATH; ?>css/theme.css?6bd7884" media="screen"/>
40    <link rel="stylesheet" href="<?php echo ASSETS_PATH; ?>css/print.css?6bd7884" media="print"/>
41    <link rel="stylesheet" href="<?php echo ROOT_PATH; ?>scp/css/typeahead.css?6bd7884"
42         media="screen" />
43    <link type="text/css" href="<?php echo ROOT_PATH; ?>css/ui-lightness/jquery-ui-1.10.3.custom.min.css?6bd7884"
44        rel="stylesheet" media="screen" />
45    <link rel="stylesheet" href="<?php echo ROOT_PATH ?>css/jquery-ui-timepicker-addon.css?6bd7884" media="all"/>
46    <link rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/thread.css?6bd7884" media="screen"/>
47    <link rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/redactor.css?6bd7884" media="screen"/>
48    <link type="text/css" rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/font-awesome.min.css?6bd7884"/>
49    <link type="text/css" rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/flags.css?6bd7884"/>
50    <link type="text/css" rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/rtl.css?6bd7884"/>
51    <link type="text/css" rel="stylesheet" href="<?php echo ROOT_PATH; ?>css/select2.min.css?6bd7884"/>
52    <!-- Favicons -->
53    <link rel="icon" type="image/png" href="<?php echo ROOT_PATH ?>images/oscar-favicon-32x32.png" sizes="32x32" />
54    <link rel="icon" type="image/png" href="<?php echo ROOT_PATH ?>images/oscar-favicon-16x16.png" sizes="16x16" />
55    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/jquery-3.5.1.min.js?6bd7884"></script>
56    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/jquery-ui-1.12.1.custom.min.js?6bd7884"></script>
57    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/jquery-ui-timepicker-addon.js?6bd7884"></script>
58    <script src="<?php echo ROOT_PATH; ?>js/osticket.js?6bd7884"></script>
59    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/filedrop.field.js?6bd7884"></script>
60    <script src="<?php echo ROOT_PATH; ?>scp/js/bootstrap-typeahead.js?6bd7884"></script>
61    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/redactor.min.js?6bd7884"></script>
62    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/redactor-plugins.js?6bd7884"></script>
63    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/redactor-osticket.js?6bd7884"></script>
64    <script type="text/javascript" src="<?php echo ROOT_PATH; ?>js/select2.min.js?6bd7884"></script>
65    <?php
66    if($ost && ($headers=$ost->getExtraHeaders())) {
67        echo "\n\t".implode("\n\t", $headers)."\n";
68    }
69
70    // Offer alternate links for search engines
71    // @see https://support.google.com/webmasters/answer/189077?hl=en
72    if (($all_langs = Internationalization::getConfiguredSystemLanguages())
73        && (count($all_langs) > 1)
74    ) {
75        $langs = Internationalization::rfc1766(array_keys($all_langs));
76        $qs = array();
77        parse_str($_SERVER['QUERY_STRING'], $qs);
78        foreach ($langs as $L) {
79            $qs['lang'] = $L; ?>
80        <link rel="alternate" href="//<?php echo $_SERVER['HTTP_HOST'] . htmlspecialchars($_SERVER['REQUEST_URI']); ?>?<?php
81            echo http_build_query($qs); ?>" hreflang="<?php echo $L; ?>" />
82<?php
83        } ?>
84        <link rel="alternate" href="//<?php echo $_SERVER['HTTP_HOST'] . htmlspecialchars($_SERVER['REQUEST_URI']); ?>"
85            hreflang="x-default" />
86<?php
87    }
88    ?>
89</head>
90<body>
91    <div id="container">
92        <?php
93        if($ost->getError())
94            echo sprintf('<div class="error_bar">%s</div>', $ost->getError());
95        elseif($ost->getWarning())
96            echo sprintf('<div class="warning_bar">%s</div>', $ost->getWarning());
97        elseif($ost->getNotice())
98            echo sprintf('<div class="notice_bar">%s</div>', $ost->getNotice());
99        ?>
100        <div id="header">
101            <div class="pull-right flush-right">
102            <p>
103             <?php
104                if ($thisclient && is_object($thisclient) && $thisclient->isValid()
105                    && !$thisclient->isGuest()) {
106                 echo Format::htmlchars($thisclient->getName()).'&nbsp;|';
107                 ?>
108                <a href="<?php echo ROOT_PATH; ?>profile.php"><?php echo __('Profile'); ?></a> |
109                <a href="<?php echo ROOT_PATH; ?>tickets.php"><?php echo sprintf(__('Tickets <b>(%d)</b>'), $thisclient->getNumTickets()); ?></a> -
110                <a href="<?php echo $signout_url; ?>"><?php echo __('Sign Out'); ?></a>
111            <?php
112            } elseif($nav) {
113                if ($cfg->getClientRegistrationMode() == 'public') { ?>
114                    <?php echo __('Guest User'); ?> | <?php
115                }
116                if ($thisclient && $thisclient->isValid() && $thisclient->isGuest()) { ?>
117                    <a href="<?php echo $signout_url; ?>"><?php echo __('Sign Out'); ?></a><?php
118                }
119                elseif ($cfg->getClientRegistrationMode() != 'disabled') { ?>
120                    <a href="<?php echo $signin_url; ?>"><?php echo __('Sign In'); ?></a>
121<?php
122                }
123            } ?>
124            </p>
125            <p>
126<?php
127if (($all_langs = Internationalization::getConfiguredSystemLanguages())
128    && (count($all_langs) > 1)
129) {
130    $qs = array();
131    parse_str($_SERVER['QUERY_STRING'], $qs);
132    foreach ($all_langs as $code=>$info) {
133        list($lang, $locale) = explode('_', $code);
134        $qs['lang'] = $code;
135?>
136        <a class="flag flag-<?php echo strtolower($info['flag'] ?: $locale ?: $lang); ?>"
137            href="?<?php echo http_build_query($qs);
138            ?>" title="<?php echo Internationalization::getLanguageDescription($code); ?>">&nbsp;</a>
139<?php }
140} ?>
141            </p>
142            </div>
143            <a class="pull-left" id="logo" href="<?php echo ROOT_PATH; ?>index.php"
144            title="<?php echo __('Support Center'); ?>">
145                <span class="valign-helper"></span>
146                <img src="<?php echo ROOT_PATH; ?>logo.php" border=0 alt="<?php
147                echo $ost->getConfig()->getTitle(); ?>">
148            </a>
149        </div>
150        <div class="clear"></div>
151        <?php
152        if($nav){ ?>
153        <ul id="nav" class="flush-left">
154            <?php
155            if($nav && ($navs=$nav->getNavLinks()) && is_array($navs)){
156                foreach($navs as $name =>$nav) {
157                    echo sprintf('<li><a class="%s %s" href="%s">%s</a></li>%s',$nav['active']?'active':'',$name,(ROOT_PATH.$nav['href']),$nav['desc'],"\n");
158                }
159            } ?>
160        </ul>
161        <?php
162        }else{ ?>
163         <hr>
164        <?php
165        } ?>
166        <div id="content">
167
168         <?php if($errors['err']) { ?>
169            <div id="msg_error"><?php echo $errors['err']; ?></div>
170         <?php }elseif($msg) { ?>
171            <div id="msg_notice"><?php echo $msg; ?></div>
172         <?php }elseif($warn) { ?>
173            <div id="msg_warning"><?php echo $warn; ?></div>
174         <?php } ?>
175