Copy init.php.in to init.php Set database username, password Set $GoogleClientID and $GoogleClientSecret To get those: * Navigate to the Google Cloud Console. https://cloud.google.com/console * Click on the Create Project button on top of the page, enter the following values and then click on the Create button. * Once the project has been created, open the APIs & auth group (left navigation pannel) and then click on Consent screen and set it up (this is just for what is shown to the user, values not important) * Open the APIs & auth group in the left pannel (if it's not already open) and click on Credentials. * Click on the CREATE NEW CLIENT ID button, enter/tick the following values and then click on the Create Client ID button. Application type: Web Application Authorized Javascript origins: http://crash.replex.org Authorized redirect URI: http://crash.replex.org/process_login.php (replace with appropriate links. imporant bit is url to process_login.php) You will now have Client ID and Client secret
178 lines
5.4 KiB
PHP
178 lines
5.4 KiB
PHP
<?php
|
|
/**
|
|
* Layout.php
|
|
* Common html for all pages
|
|
*
|
|
* Description
|
|
* @package Singularity Crash Processor
|
|
* @author Latif Khalifa <latifer@streamgrid.net>
|
|
* @copyright Copyright © 2012, Latif Khalifa
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files
|
|
* (the "Software"), to deal in the Software without restriction, including
|
|
* without limitation the rights to use, copy, modify, merge, publish,
|
|
* distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
* persons to whom the Software is furnished to do so, subject to the
|
|
* following conditions:
|
|
*
|
|
* - The above copyright notice and this permission notice shall be included
|
|
* in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
*/
|
|
|
|
class Layout
|
|
{
|
|
|
|
static function since($since)
|
|
{
|
|
$since = time() - $since;
|
|
$chunks = array(
|
|
array(60 * 60 * 24 * 365 , 'year'),
|
|
array(60 * 60 * 24 * 30 , 'month'),
|
|
array(60 * 60 * 24 * 7, 'week'),
|
|
array(60 * 60 * 24 , 'day'),
|
|
array(60 * 60 , 'hour'),
|
|
array(60 , 'minute'),
|
|
array(1 , 'second')
|
|
);
|
|
|
|
for ($i = 0, $j = count($chunks); $i < $j; $i++) {
|
|
$seconds = $chunks[$i][0];
|
|
$name = $chunks[$i][1];
|
|
if (($count = floor($since / $seconds)) != 0) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
$print = ($count == 1) ? '1 '.$name : "$count {$name}s";
|
|
return $print;
|
|
}
|
|
|
|
function header($toolbar = "")
|
|
{
|
|
global $S;
|
|
|
|
$menu = array();
|
|
|
|
if ($S->isAnonymous())
|
|
{
|
|
$item = new stdClass;
|
|
$item->label = "Login";
|
|
$item->link = GoogleLogin::loginURL();
|
|
$menu[] = $item;
|
|
}
|
|
else
|
|
{
|
|
if ($S->user->isAllowed())
|
|
{
|
|
$item = new stdClass;
|
|
$item->label = "Crash reports";
|
|
$item->link = "/crashes.php";
|
|
$menu[] = $item;
|
|
|
|
$item = new stdClass;
|
|
$item->label = "Statistics";
|
|
$item->link = "/statistics.php";
|
|
$menu[] = $item;
|
|
}
|
|
|
|
if ($S->user->isAdmin())
|
|
{
|
|
$item = new stdClass;
|
|
$item->label = "Users";
|
|
$item->link = "/users.php";
|
|
$menu[] = $item;
|
|
}
|
|
|
|
$item = new stdClass;
|
|
$item->label = "My Account ({$S->user->email})";
|
|
$item->link = "/account.php";
|
|
$menu[] = $item;
|
|
|
|
$item = new stdClass;
|
|
$item->label = "Logout";
|
|
$item->link = "/logout.php";
|
|
$menu[] = $item;
|
|
}
|
|
|
|
?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<link rel="stylesheet" type="text/css" href="<?php print URL_ROOT ?>/css/singularity/jquery-ui-1.10.3.custom.css"/>
|
|
<link rel="stylesheet" type="text/css" href="<?php print URL_ROOT ?>/css/singularity/singularity.css"/>
|
|
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
|
|
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
|
|
<link rel="shortcut icon" href="<?php print IMG_ROOT ?>/favicon.ico" type="image/x-icon" />
|
|
<title>Singularity Viewer - Automated Crash Report Processing System</title>
|
|
</head>
|
|
<body>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
$( ".toolbarbutton" ).button();
|
|
|
|
});
|
|
|
|
function scrollDown(elem) {
|
|
var scrollHeight = Math.max(elem[0].scrollHeight, elem[0].clientHeight);
|
|
elem[0].scrollTop = scrollHeight - elem[0].clientHeight;
|
|
}
|
|
|
|
</script>
|
|
|
|
<div style="padding-top:10px;">
|
|
<div style="display: inline-block;">
|
|
<a href="<?php echo URL_ROOT ?>"><img src="images/singularity_icon.png" width="70px" height="70px"/></a>
|
|
</div>
|
|
<div style="display: inline-block; margin-left: 15px; color: #eee; padding-bottom: 10px; vertical-align: bottom;">
|
|
<a href="<?php echo URL_ROOT ?>" style="font-size: 3em; font-weight: bold;">Singularity Viewer</a>
|
|
<br/>
|
|
<span style="font-size: 1.6em;">Automated Crash Report Processing</span>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div id="menubar" class="ui-widget-header ui-corner-all">
|
|
<div><?php echo $toolbar ?></div>
|
|
<div>
|
|
<?php for ($i=0; $i<count($menu); $i++): ?>
|
|
<a class="toolbarbutton" href="<?php echo $menu[$i]->link; ?>"><?php echo htmlspecialchars($menu[$i]->label) ?></a>
|
|
<?php endfor ?>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
|
|
static function footer()
|
|
{
|
|
{ ?>
|
|
<div style="margin-top:10px; padding: 5px;" class="ui-widget-header ui-corner-all">
|
|
<div style="float: left; padding: 4px;">
|
|
© 2013 Singularity Viewer Project
|
|
</div>
|
|
<div style="text-align: right;">
|
|
<a class="toolbarbutton" href="http://www.singularityviewer.org/">Singularity Main Site</a>
|
|
<a class="toolbarbutton" href="http://www.singularityviewer.org/about">About</a>
|
|
<a class="toolbarbutton" href="http://code.google.com/p/singularity-viewer/issues/">Issue Tracker</a>
|
|
<a class="toolbarbutton" href="https://github.com/singularity-viewer/SingularityViewer">Source Tracker</a>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|
|
<?php
|
|
}
|
|
}
|
|
}
|