2003-05-25 10:57:32 +00:00
< ? php
/*
$Id $
2009-10-27 18:47:12 +00:00
This code is part of LDAP Account Manager ( http :// www . ldap - account - manager . org / )
2012-07-22 10:37:01 +00:00
Copyright ( C ) 2003 - 2012 Roland Gruber
2003-05-25 10:57:32 +00:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
2004-06-10 22:13:39 +00:00
*/
2003-05-25 10:57:32 +00:00
2004-06-10 22:13:39 +00:00
/**
* This is the main window of the profile editor .
*
2004-10-09 11:04:20 +00:00
* @ package profiles
2004-06-10 22:13:39 +00:00
* @ author Roland Gruber
2003-05-25 10:57:32 +00:00
*/
2006-03-26 17:51:25 +00:00
/** security functions */
include_once ( " ../../lib/security.inc " );
2004-06-10 22:13:39 +00:00
/** helper functions for profiles */
2003-05-25 10:57:32 +00:00
include_once ( " ../../lib/profiles.inc " );
2004-06-10 22:13:39 +00:00
/** access to LDAP server */
2003-05-25 10:57:32 +00:00
include_once ( " ../../lib/ldap.inc " );
2004-06-10 22:13:39 +00:00
/** access to configuration options */
2003-08-03 11:05:40 +00:00
include_once ( " ../../lib/config.inc " );
2003-05-25 10:57:32 +00:00
// start session
2006-03-26 17:51:25 +00:00
startSecureSession ();
2003-05-25 10:57:32 +00:00
2007-12-30 13:15:39 +00:00
// die if no write access
if ( ! checkIfWriteAccessIsAllowed ()) die ();
2012-07-22 10:37:01 +00:00
checkIfToolIsActive ( 'toolProfileEditor' );
2003-08-03 11:05:40 +00:00
setlanguage ();
2006-01-01 16:30:05 +00:00
$types = $_SESSION [ 'config' ] -> get_ActiveTypes ();
$profileClasses = array ();
2010-05-19 19:22:29 +00:00
$profileClassesTemp = array ();
2006-01-01 16:30:05 +00:00
for ( $i = 0 ; $i < sizeof ( $types ); $i ++ ) {
2010-05-19 19:22:29 +00:00
$profileClassesTemp [ getTypeAlias ( $types [ $i ])] = array (
2006-01-01 16:30:05 +00:00
'scope' => $types [ $i ],
'title' => getTypeAlias ( $types [ $i ]),
'profiles' => " " );
}
2010-05-19 19:22:29 +00:00
$profileClassesKeys = array_keys ( $profileClassesTemp );
natcasesort ( $profileClassesKeys );
$profileClassesKeys = array_values ( $profileClassesKeys );
for ( $i = 0 ; $i < sizeof ( $profileClassesKeys ); $i ++ ) {
$profileClasses [] = $profileClassesTemp [ $profileClassesKeys [ $i ]];
}
2004-12-12 11:27:57 +00:00
2003-05-25 10:57:32 +00:00
// check if user is logged in, if not go to login
if ( ! $_SESSION [ 'ldap' ] || ! $_SESSION [ 'ldap' ] -> server ()) {
2003-08-28 12:41:47 +00:00
metaRefresh ( " ../login.php " );
2003-05-25 10:57:32 +00:00
exit ;
}
2008-12-16 16:52:20 +00:00
// check if new profile should be created
elseif ( isset ( $_POST [ 'createProfileButton' ])) {
2012-03-20 20:44:24 +00:00
metaRefresh ( " profilepage.php?type= " . htmlspecialchars ( $_POST [ 'createProfile' ]));
2005-11-06 16:35:39 +00:00
exit ;
}
2008-12-16 16:52:20 +00:00
// check if a profile should be edited
for ( $i = 0 ; $i < sizeof ( $profileClasses ); $i ++ ) {
if ( isset ( $_POST [ 'editProfile_' . $profileClasses [ $i ][ 'scope' ]]) || isset ( $_POST [ 'editProfile_' . $profileClasses [ $i ][ 'scope' ] . '_x' ])) {
2012-03-20 20:44:24 +00:00
metaRefresh ( " profilepage.php?type= " . htmlspecialchars ( $profileClasses [ $i ][ 'scope' ]) .
" &edit= " . htmlspecialchars ( $_POST [ 'profile_' . $profileClasses [ $i ][ 'scope' ]]));
2008-12-16 16:52:20 +00:00
exit ;
}
}
2011-04-25 18:00:47 +00:00
include '../main_header.php' ;
echo " <div class= \" userlist-bright smallPaddingContent \" > \n " ;
echo " <form action= \" profilemain.php \" method= \" post \" > \n " ;
$container = new htmlTable ();
$container -> addElement ( new htmlTitle ( _ ( " Profile editor " )), true );
if ( isset ( $_POST [ 'deleteProfile' ]) && ( $_POST [ 'deleteProfile' ] == 'true' )) {
// delete profile
if ( delAccountProfile ( $_POST [ 'profileDeleteName' ], $_POST [ 'profileDeleteType' ])) {
$message = new htmlStatusMessage ( 'INFO' , _ ( 'Deleted profile.' ), getTypeAlias ( $_POST [ 'profileDeleteType' ]) . ': ' . htmlspecialchars ( $_POST [ 'profileDeleteName' ]));
$message -> colspan = 10 ;
$container -> addElement ( $message , true );
}
else {
$message = new htmlStatusMessage ( 'ERROR' , _ ( 'Unable to delete profile!' ), getTypeAlias ( $_POST [ 'profileDeleteType' ]) . ': ' . htmlspecialchars ( $_POST [ 'profileDeleteName' ]));
$message -> colspan = 10 ;
$container -> addElement ( $message , true );
2003-05-25 10:57:32 +00:00
}
}
2004-12-12 11:27:57 +00:00
// get list of profiles for each account type
for ( $i = 0 ; $i < sizeof ( $profileClasses ); $i ++ ) {
$profileList = getAccountProfiles ( $profileClasses [ $i ][ 'scope' ]);
2010-04-04 14:41:39 +00:00
natcasesort ( $profileList );
2010-10-16 17:52:08 +00:00
$profileClasses [ $i ][ 'profiles' ] = $profileList ;
2003-05-25 10:57:32 +00:00
}
2010-05-26 17:30:55 +00:00
if ( isset ( $_GET [ 'savedSuccessfully' ])) {
2010-10-16 17:52:08 +00:00
$message = new htmlStatusMessage ( " INFO " , _ ( " Profile was saved. " ), htmlspecialchars ( $_GET [ 'savedSuccessfully' ]));
$message -> colspan = 10 ;
$container -> addElement ( $message , true );
2010-05-26 17:30:55 +00:00
}
2008-12-16 16:52:20 +00:00
// new profile
2010-10-16 17:52:08 +00:00
$container -> addElement ( new htmlSubTitle ( _ ( 'Create a new profile' )), true );
$sortedTypes = array ();
for ( $i = 0 ; $i < sizeof ( $profileClasses ); $i ++ ) {
$sortedTypes [ $profileClasses [ $i ][ 'title' ]] = $profileClasses [ $i ][ 'scope' ];
}
natcasesort ( $sortedTypes );
2010-10-18 19:46:21 +00:00
$newContainer = new htmlTable ();
2010-10-16 17:52:08 +00:00
$newProfileSelect = new htmlSelect ( 'createProfile' , $sortedTypes );
$newProfileSelect -> setHasDescriptiveElements ( true );
2010-10-18 19:46:21 +00:00
$newProfileSelect -> setWidth ( '15em' );
$newContainer -> addElement ( $newProfileSelect );
$newContainer -> addElement ( new htmlSpacer ( '10px' , null ));
$newContainer -> addElement ( new htmlButton ( 'createProfileButton' , _ ( 'Create' )), true );
$container -> addElement ( $newContainer , true );
2010-10-16 17:52:08 +00:00
$container -> addElement ( new htmlSpacer ( null , '10px' ), true );
2008-12-16 16:52:20 +00:00
// existing profiles
2010-10-16 17:52:08 +00:00
$container -> addElement ( new htmlSubTitle ( _ ( 'Manage existing profiles' )), true );
$existingContainer = new htmlTable ();
$existingContainer -> colspan = 5 ;
2008-12-16 16:52:20 +00:00
for ( $i = 0 ; $i < sizeof ( $profileClasses ); $i ++ ) {
2008-12-28 13:50:31 +00:00
if ( $i > 0 ) {
2010-10-16 17:52:08 +00:00
$existingContainer -> addElement ( new htmlSpacer ( null , '10px' ), true );
2008-12-28 13:50:31 +00:00
}
2010-10-28 18:11:16 +00:00
$existingContainer -> addElement ( new htmlImage ( '../../graphics/' . $profileClasses [ $i ][ 'scope' ] . '.png' ));
2010-10-16 17:52:08 +00:00
$existingContainer -> addElement ( new htmlSpacer ( '3px' , null ));
$existingContainer -> addElement ( new htmlOutputText ( $profileClasses [ $i ][ 'title' ]));
$existingContainer -> addElement ( new htmlSpacer ( '3px' , null ));
2010-10-18 19:46:21 +00:00
$select = new htmlSelect ( 'profile_' . $profileClasses [ $i ][ 'scope' ], $profileClasses [ $i ][ 'profiles' ]);
$select -> setWidth ( '15em' );
$existingContainer -> addElement ( $select );
2010-10-16 17:52:08 +00:00
$existingContainer -> addElement ( new htmlSpacer ( '3px' , null ));
$editButton = new htmlButton ( 'editProfile_' . $profileClasses [ $i ][ 'scope' ], 'edit.png' , true );
$editButton -> setTitle ( _ ( 'Edit' ));
$existingContainer -> addElement ( $editButton );
2011-04-25 18:00:47 +00:00
$deleteLink = new htmlLink ( null , '#' , '../../graphics/delete.png' );
$deleteLink -> setTitle ( _ ( 'Delete' ));
$deleteLink -> setOnClick ( " profileShowDeleteDialog(' " . _ ( 'Delete' ) . " ', ' " . _ ( 'Ok' ) . " ', ' " . _ ( 'Cancel' ) . " ', ' " . $profileClasses [ $i ][ 'scope' ] . " ', ' " . 'profile_' . $profileClasses [ $i ][ 'scope' ] . " '); " );
$existingContainer -> addElement ( $deleteLink );
2010-10-16 17:52:08 +00:00
$existingContainer -> addNewLine ();
2004-12-12 11:27:57 +00:00
}
2010-10-16 17:52:08 +00:00
$container -> addElement ( $existingContainer );
// generate content
$tabindex = 1 ;
parseHtml ( null , $container , array (), false , $tabindex , 'user' );
2003-05-25 10:57:32 +00:00
2004-12-12 11:27:57 +00:00
echo " </form> \n " ;
2010-10-16 17:52:08 +00:00
echo " </div> \n " ;
2011-04-25 18:00:47 +00:00
// form for delete action
echo '<div id="deleteProfileDialog" class="hidden"><form id="deleteProfileForm" action="profilemain.php" method="post">' ;
echo _ ( " Do you really want to delete this profile? " );
echo '<br><br><div class="nowrap">' ;
echo _ ( " Profile name " ) . ': <div id="deleteText" style="display: inline;"></div></div>' ;
echo '<input id="profileDeleteType" type="hidden" name="profileDeleteType" value="">' ;
echo '<input id="profileDeleteName" type="hidden" name="profileDeleteName" value="">' ;
echo '<input type="hidden" name="deleteProfile" value="true">' ;
echo '</form></div>' ;
2010-08-21 09:43:52 +00:00
include '../main_footer.php' ;
2003-05-25 10:57:32 +00:00
2004-12-12 11:27:57 +00:00
?>