* - Creation
*/
///////////////////////////////////////////////////////////////////
// Including files
///////////////////////////////////////////////////////////////////
global $first_start;
require_once 'config.php';
require_once 'text-en.php';
require_once 'entityRole-config.php';
require_once 'roles-config.php';
require_once 'LogsViewer.php';
if (!$first_start) {
include "config.php";
if (isset($CONFIG['lang']) && $CONFIG['lang'] != 'en') {
if (is_readable("util/text-".$CONFIG['lang'].".php")) include 'text-'.$CONFIG['lang'].'.php';
else $ERRORS[] = getMessage('no_language_file');
}
}
/**
* Return the _GET list in URL format
*
* This function is used to send again all GEt parameter.
*
* @param char Used to divide parameters (default &)
*/
function getGETParam($separator = '&') {
$parameters = NULL;
foreach ($_GET as $key => $value) {
if ($parameters) $parameters .= $separator;
$parameters .= $key.'='.$value;
}
return $parameters;
}
/**
* Function that redirect to a other page
*
* This function redirect to the chosen page. As default it
* redirect to the root with all preceeding GET parameters.
*
* @param string PHP filename and path to redirect to (default "")
* @param bool Tel if GET paramters will be send (default true)
*/
function goTo($page = "",$send_param = true) {
global $CONFIG;
$param = NULL;
if ($send_param) {
if ($_SESSION['auth_state'] && !ereg('PHPSESSID=',getGETParam())) {
if (getGETParam()) $param .= '&';
}
if (getGETParam()) $param .= getGETParam();
if ($param) $param = '?'.$param;
}
if($_SERVER['HTTP_X_FORWARDED_HOST'])
$prefix=$_SERVER['HTTP_X_FORWARDED_HOST'];
else
$prefix=$_SERVER['HTTP_HOST'];
if($CONFIG["use_https"]=="false"){
header("Location: http://".$prefix.ereg_replace('/[^/]*\.php$','/',$_SERVER['PHP_SELF']).$page.$param);
}else{
header("Location: https://".$prefix.ereg_replace('/[^/]*\.php$','/',$_SERVER['PHP_SELF']).$page.$param);
}
}
/**
* Redirect to https socket if needed
*
* This function test if the connection with browser uses secure
* HTTPS socket. If not it redirects to https with all the same
* GET parameters.
*/
function use_https() {
if ($_SERVER['HTTPS'] != 'on') {
if ($param = getGETParam()) $param = '?'.$param;
header("Location: https://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].$param);
return false;
}
return true;
}
/**
* Prints HTML header with a custum title message.
*
* This function prints a HTML header to the page. It sets a custum title and
* define charset from the configuration file.
*
* @param string HTML page title
*/
function printHead($title_message) {
global $CONFIG;
// Printing license
?>
'."\n";
print '
'."\n";
print ''."\n";
print '';
print ''."\n";
print getMessage($title_message)."\n";
print ''."\n";
print ''."\n";
print ''."\n";
}
/**
* Returns a message using language configuration
*
* This function is an abstration layer to the multilangual support.
* It takes message name and obtain the good string from messages
* table. If the string doesn not exist it return the default message.
*
* @param string Message name
*/
function getMessage($messageName) {
global $MESSAGES;
global $CONFIG;
// Try configured language
if (isset($MESSAGES[$messageName][$CONFIG['lang']])) {
return $MESSAGES[$messageName][$CONFIG['lang']];
}
// Try default language
elseif (isset($MESSAGES[$messageName]['en'])) {
return $MESSAGES[$messageName]['en'];
}
// When not defined
else return $messageName.": ".getMessage('messages_error');
}
/**
* Returns true if message is available
*
* This function check if a message is define.
*
* @param string Message name
* @return bool True if message exist
*/
function isMessage($messageName) {
global $MESSAGES;
global $CONFIG;
// Try configured language
if (isset($MESSAGES[$messageName][$CONFIG['lang']])) {
return true;
}
// Try default language
elseif (isset($MESSAGES[$messageName]['en'])) {
return true;
}
// When not defined
else return false;
}
/**
* Check if the user has an authenticated session on server.
*
* This function start a session and check if it is a valide session.
* If not it cleans the session and return false.
*/
if (!$first_start) {
function isSession() {
session_start();
if (!$_SESSION['auth_state']) {
goTo();
session_unset();
session_destroy();
}
return true;
}
}
/**
* This function return the absolute inclide path
*
* This function return the absolute path of the libraries.
* It adds possibility for other applications to link against
* the Admin libraries.
*
* @return string Absolute libraries path
*/
function basePath() {
return realpath(dirname(__File__)."/../")."/";
}
/**
* This function get the userRole.
*
* The role must be in permisssion order. The first role define must be the
* admin role. This is for the case with a user with more than 1 group.
*/
function getUserRole($userData){
global $ROLE,$GROUP_ROLE;
$isUserRoleSet = false;
foreach ($ROLE as $roleName=>$role) {
foreach($userData->getGroups() as $group=>$groupName){
if(strtolower($GROUP_ROLE[$groupName]) == strtolower($roleName)){
$userRole = $roleName;
$isUserRoleSet = true;
break;
}
}
if($isUserRoleSet){
break;
}
}
return $userRole;
}
/**
* This function log operation on attributes and nodes (add, delete, modify, etc)
*/
function logAdminAccess($operation) {
$conf = array('mode' => 0666, 'timeFormat' => '%x %X');
#$adminAccessLog = new LogsViewer('file', 'Log/admin_access.log', 'ident', $conf);
$line = ',';
foreach ($operation as $key=>$value) {
$line .= "$value,";
}
$sessionData = $_SESSION['groups'];
$line .= $sessionData->getUsername();
#$adminAccessLog->log($line);
}
/**
* Check ldap connection
*/
function setLdapAuth(){
// Testing ldap
$auth = new Auth($_POST['login'],$_POST['password']);
$error = $auth->authenticate();
unset($CONFIG['login']);
unset($CONFIG['password']);
return $error;
}
/**
* This function is from AttributeManager but since it will be
* useful elsewhere, it was ported here.
*
* Return the value of an value if it exists in the lang file
*/
function getValueMessage($attributeName, $value) {
if (isMessage($attributeName."_".$value)) {
return getMessage($attributeName."_".$value);
}
return $value;
}
function getNameMessage($attrName,$putSign = false) {
if (isMessage($attrName)) {
return getMessage($attrName);
} else {
if ($putSign) $equalSign = " = ";
else $equalSign = "";
return $attrName.$equalSign;
}
}
/**
* Those are used to sort attributes by their name in the right langage
*/
function sortAttributesByLangName( $attA, $attB ){
return strcasecmp(getNameMessage( $attA ), getNameMessage( $attB ));
}
function sortObjectsByLangName( $attA, $attB ){
return strcasecmp(getNameMessage( $attA->getName() ), getNameMessage( $attB->getName() ));
}
?>