You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
2.9 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
require_once('tiki-setup.php');
if (isset($_SERVER['HTTP_REFERER'])) {
$orig_url = $_SERVER['HTTP_REFERER'];
} else {
$orig_url = $prefs['tikiIndex'];
}
if ($prefs['feature_sefurl'] == 'y' && ! strstr($orig_url, '.php') && ! preg_match('/article[0-9]+$/', $orig_url)) {
$orig_url = preg_replace('#\/([^\/]+)$#', '/tiki-index.php?page=$1', $orig_url);
}
// Handle form processing
if (isset($_REQUEST["emulategroups"])) {
if ($_REQUEST["emulategroups"] == "setgroups") {
// User has selected a list of groups to emulate
$_SESSION["groups_are_emulated"] = "y";
if (count($_REQUEST["switchgroups"])) {
$groups_emulated = [];
$dont_forget_registered = 0;
foreach ($_REQUEST["switchgroups"] as $value) {
$groups_emulated[] = $value;
$included = $tikilib->get_included_groups($value);
$groups_emulated = array_merge($groups_emulated, $included);
// If one is member of a group different from Anonymous or Registered
// then one automatically has the rights of group "Registered"
if ($value != "Registered" && $value != "Anonymous") {
$dont_forget_registered = 1;
}
}
if ($dont_forget_registered == 1 && isset($user)) {
$groups_emulated[] = "Registered";
$included = $tikilib->get_included_groups("Registered");
$groups_emulated = array_merge($groups_emulated, $included);
}
$groups_emulated = array_unique($groups_emulated);
} else {
// Let's say clicking with nothing selected is the same as reset
// Saying it's the same as Anonymous would have the disadvantage of probably
// hiding the module, so the user would need to logout
$_SESSION["groups_are_emulated"] = "n";
$groups_emulated = [];
$_SESSION['groups_emulated'] = serialize($groups_emulated);
}
$_SESSION['groups_emulated'] = serialize($groups_emulated);
} elseif ($_REQUEST["emulategroups"] == "resetgroups") {
// User stops groups emulation (logging out is an alternate solution for user)
$_SESSION["groups_are_emulated"] = "n";
$groups_emulated = [];
$_SESSION['groups_emulated'] = serialize($groups_emulated);
}
$tikilib->invalidate_usergroups_cache($user);
}
$smarty->assign('groups_are_emulated', $_SESSION["groups_are_emulated"]);
$smarty->assign_by_ref('groups_emulated', unserialize($_SESSION['groups_emulated']));
header("location: $orig_url");
exit;