219 lines
6.3 KiB
PHP
219 lines
6.3 KiB
PHP
<?php
|
|
|
|
$id = $this->data['id'];
|
|
$type = $this->data['type'];
|
|
$from = $this->data['from'];
|
|
$SPs = $this->data['SPs'];
|
|
|
|
$stateImage = array(
|
|
'unsupported' => '/' . $this->data['baseurlpath'] . 'resources/icons/silk/delete.png',
|
|
'completed' => '/' . $this->data['baseurlpath'] . 'resources/icons/silk/accept.png',
|
|
'onhold' => '/' . $this->data['baseurlpath'] . 'resources/icons/bullet16_grey.png',
|
|
'inprogress' => '/' . $this->data['baseurlpath'] . 'resources/progress.gif',
|
|
'failed' => '/' . $this->data['baseurlpath'] . 'resources/icons/silk/exclamation.png',
|
|
);
|
|
|
|
$stateText = array(
|
|
'unsupported' => '',
|
|
'completed' => $this->t('{logout:completed}'),
|
|
'onhold' => '',
|
|
'inprogress' => $this->t('{logout:progress}'),
|
|
'failed' => $this->t('{logout:failed}'),
|
|
);
|
|
|
|
$spStatus = array();
|
|
$spTimeout = array();
|
|
$nFailed = 0;
|
|
$nProgress = 0;
|
|
foreach ($SPs as $assocId => $sp) {
|
|
assert('isset($sp["core:Logout-IFrame:State"])');
|
|
$state = $sp['core:Logout-IFrame:State'];
|
|
$spStatus[sha1($assocId)] = $state;
|
|
if (isset($sp['core:Logout-IFrame:Timeout'])) {
|
|
$spTimeout[sha1($assocId)] = $sp['core:Logout-IFrame:Timeout'] - time();
|
|
} else {
|
|
$spTimeout[sha1($assocId)] = 5;
|
|
}
|
|
if ($state === 'failed') {
|
|
$nFailed += 1;
|
|
} elseif ($state === 'inprogress') {
|
|
$nProgress += 1;
|
|
}
|
|
}
|
|
|
|
if ($from !== NULL) {
|
|
$from = $this->getTranslation($from);
|
|
}
|
|
|
|
|
|
if (!isset($this->data['head'])) {
|
|
$this->data['head'] = '';
|
|
}
|
|
|
|
$this->data['head'] .= '<script type="text/javascript" src="/' . $this->data['baseurlpath'] . 'resources/jquery.js"></script>';
|
|
|
|
$this->data['head'] .= '
|
|
<script type="text/javascript" language="JavaScript">
|
|
window.stateImage = ' . json_encode($stateImage) . ';
|
|
window.stateText = ' . json_encode($stateText) . ';
|
|
window.spStatus = ' . json_encode($spStatus) . ';
|
|
window.spTimeout = ' . json_encode($spTimeout) . ';
|
|
window.type = "' . $type . '";
|
|
window.asyncURL = "logout-iframe.php?id=' . $id . '&type=async";
|
|
</script>';
|
|
|
|
$this->data['head'] .= '<script type="text/javascript" src="logout-iframe.js"></script>';
|
|
|
|
if ($type === 'embed') {
|
|
$this->data['head'] .= '<meta http-equiv="refresh" content="1" />';
|
|
}
|
|
|
|
$this->data['header'] = $this->t('{logout:progress}');
|
|
if ($type === 'embed') {
|
|
$this->includeAtTemplateBase('includes/header-embed.php');
|
|
} else {
|
|
$this->includeAtTemplateBase('includes/header.php');
|
|
}
|
|
?>
|
|
<div id="wrap">
|
|
<div id="content">
|
|
<?php
|
|
if ($from !== NULL) {
|
|
|
|
echo('<div><img style="float: left; margin-right: 12px" src="/' . $this->data['baseurlpath'] . 'resources/icons/checkmark.48x48.png" alt="Successful logout" />');
|
|
echo('<p style="padding-top: 16px; ">' . $this->t('{logout:loggedoutfrom}', array('%SP%' => '<strong>' .htmlspecialchars($from).'</strong>')) . '</p>');
|
|
echo('<p style="height: 0px; clear: left;"></p>');
|
|
echo('</div>');
|
|
}
|
|
|
|
echo('<div style="margin-top: 3em; clear: both">');
|
|
|
|
|
|
echo('<p style="margin-bottom: .5em">');
|
|
if ($type === 'init') {
|
|
echo($this->t('{logout:also_from}'));
|
|
} else {
|
|
echo($this->t('{logout:logging_out_from}'));
|
|
}
|
|
echo('</p>');
|
|
|
|
echo '<table id="slostatustable">';
|
|
|
|
foreach ($SPs AS $assocId => $sp) {
|
|
if (isset($sp['core:Logout-IFrame:Name'])) {
|
|
$spName = $this->getTranslation($sp['core:Logout-IFrame:Name']);
|
|
} else {
|
|
$spName = $assocId;
|
|
}
|
|
|
|
assert('isset($sp["core:Logout-IFrame:State"])');
|
|
$spState = $sp['core:Logout-IFrame:State'];
|
|
|
|
$spId = sha1($assocId);
|
|
|
|
echo '<tr>';
|
|
|
|
echo '<td style="width: 3em;"></td>';
|
|
|
|
echo '<td>';
|
|
echo '<img class="logoutstatusimage" id="statusimage-' . $spId . '" src="' . htmlspecialchars($stateImage[$spState]) . '" alt="' . htmlspecialchars($stateText[$spState]) . '"/>';
|
|
echo '</td>';
|
|
|
|
echo '<td>' . htmlspecialchars($spName) . '</td>';
|
|
|
|
echo '</tr>';
|
|
}
|
|
|
|
if (isset($from)) {
|
|
$logoutCancelText = $this->t('{logout:logout_only}', array('%SP%' => htmlspecialchars($from)));
|
|
} else {
|
|
$logoutCancelText = $this->t('{logout:no}');
|
|
}
|
|
|
|
?>
|
|
</table>
|
|
</div>
|
|
|
|
<?php
|
|
if ($type === 'init') {
|
|
?>
|
|
<div id="confirmation" style="margin-top: 1em" >
|
|
<p><?php echo $this->t('{logout:logout_all_question}'); ?> <br /></p>
|
|
|
|
<form id="startform" method="get" style="display:inline;" action="logout-iframe.php">
|
|
<input type="hidden" name="id" value="<?php echo $id; ?>" />
|
|
<input type="hidden" id="logout-type-selector" name="type" value="nojs" />
|
|
<input type="submit" id="logout-all" name="ok" value="<?php echo $this->t('{logout:logout_all}'); ?>" />
|
|
</form>
|
|
|
|
<form method="get" style="display:inline;" action="logout-iframe-done.php">
|
|
<input type="hidden" name="id" value="<?php echo $id; ?>" />
|
|
<input type="submit" name="cancel" value="<?php echo $logoutCancelText; ?>" />
|
|
</form>
|
|
|
|
</div>
|
|
|
|
<?php
|
|
} else {
|
|
?>
|
|
|
|
<?php
|
|
if ($nFailed > 0) {
|
|
$displayStyle = '';
|
|
} else {
|
|
$displayStyle = 'display: none;';
|
|
}
|
|
echo('<div id="logout-failed-message" style="margin-top: 1em; border: 1px solid #ccc; padding: 1em; background: #eaeaea;' . $displayStyle . '">');
|
|
echo('<img src="/' . $this->data['baseurlpath'] . 'resources/icons/experience/gtk-dialog-warning.48x48.png" alt="" style="float: left; margin-right: 5px;" />');
|
|
echo('<p>' . $this->t('{logout:failedsps}') . '</p>');
|
|
echo('<form method="post" action="logout-iframe-done.php" id="failed-form" target="_top">');
|
|
echo('<input type="hidden" name="id" value="' . $id . '" />');
|
|
echo('<input type="submit" name="continue" value="' . $this->t('{logout:return}'). '" />');
|
|
echo('</form>');
|
|
echo('</div>');
|
|
|
|
if ($nProgress == 0 && $nFailed == 0) {
|
|
echo('<div id="logout-completed">');
|
|
} else {
|
|
echo('<div id="logout-completed" style="display:none;">');
|
|
}
|
|
echo('<p>' . $this->t('{logout:success}') . '</p>');
|
|
?>
|
|
<form method="post" action="logout-iframe-done.php" id="done-form" target="_top">
|
|
<input type="hidden" name="id" value="<?php echo $id; ?>" />
|
|
<input type="submit" name="continue" value="<?php echo $this->t('{logout:return}'); ?>" />
|
|
</form>
|
|
</div>
|
|
|
|
<?php
|
|
if ($type === 'js') {
|
|
foreach ($SPs AS $assocId => $sp) {
|
|
$spId = sha1($assocId);
|
|
|
|
if ($sp['core:Logout-IFrame:State'] !== 'inprogress') {
|
|
continue;
|
|
}
|
|
assert('isset($sp["core:Logout-IFrame:URL"])');
|
|
|
|
$url = $sp["core:Logout-IFrame:URL"];
|
|
|
|
echo('<iframe style="width:0; height:0; border:0;" src="' . htmlspecialchars($url) . '"></iframe>');
|
|
}
|
|
}
|
|
?>
|
|
|
|
<?php
|
|
}
|
|
?>
|
|
</div>
|
|
<!-- #content -->
|
|
</div>
|
|
<!-- #wrap -->
|
|
<?php
|
|
if ($type === 'embed') {
|
|
$this->includeAtTemplateBase('includes/footer-embed.php');
|
|
} else {
|
|
$this->includeAtTemplateBase('includes/footer.php');
|
|
}
|
|
?>
|