2003-09-11 16:55:57 +00:00
< ? php
/*
$Id $
This code is part of LDAP Account Manager ( http :// www . sourceforge . net / projects / lam )
Copyright ( C ) 2003 Tilo Lutz
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
LDAP Account Manager displays table for creating or modifying accounts in LDAP
*/
2003-10-21 13:40:13 +00:00
// include all needed files
2003-09-11 16:55:57 +00:00
include_once ( '../../lib/account.inc' ); // File with all account-funtions
include_once ( '../../lib/config.inc' ); // File with configure-functions
include_once ( '../../lib/profiles.inc' ); // functions to load and save profiles
include_once ( '../../lib/status.inc' ); // Return error-message
include_once ( '../../lib/pdf.inc' ); // Return a pdf-file
include_once ( '../../lib/ldap.inc' ); // LDAP-functions
2003-10-21 13:40:13 +00:00
// Start session
2003-09-11 16:55:57 +00:00
session_save_path ( '../../sess' );
@ session_start ();
2003-10-22 17:51:44 +00:00
// Redirect to startpage if user is not loged in
if ( ! isset ( $_SESSION [ 'loggedIn' ])) {
metaRefresh ( " ../login.php " );
die ;
}
2003-10-21 13:40:13 +00:00
// Set correct language, codepages, ....
2003-09-11 16:55:57 +00:00
setlanguage ();
2003-10-04 18:44:18 +00:00
2003-10-21 15:36:12 +00:00
/* groupedit . php is using dynamic session varialenames so
* we can run several copies of groupedit . php at the same
2003-10-21 13:40:13 +00:00
* time
* $varkey is the dynamic part of the variable name
*/
2003-10-04 18:44:18 +00:00
if ( ! isset ( $_POST [ 'varkey' ])) $varkey = session_id () . time ();
else $varkey = $_POST [ 'varkey' ];
if ( ! isset ( $_SESSION [ 'account_' . $varkey . '_account_new' ])) $_SESSION [ 'account_' . $varkey . '_account_new' ] = new account ();
if ( ! isset ( $_SESSION [ 'account_' . $varkey . '_final_changegids' ])) $_SESSION [ 'account_' . $varkey . '_final_changegids' ] = '' ;
// Register Session-Variables with references so we don't net to change to complete code if names changes
$account_new =& $_SESSION [ 'account_' . $varkey . '_account_new' ];
$final_changegids =& $_SESSION [ 'account_' . $varkey . '_final_changegids' ];
2003-10-07 17:52:51 +00:00
if ( is_object ( $_SESSION [ 'account_' . $varkey . '_account_old' ])) $account_old =& $_SESSION [ 'account_' . $varkey . '_account_old' ];
2003-10-04 18:44:18 +00:00
$ldap_intern =& $_SESSION [ 'ldap' ];
$config_intern =& $_SESSION [ 'config' ];
$header_intern =& $_SESSION [ 'header' ];
$userDN_intern =& $_SESSION [ 'userDN' ];
2003-10-21 13:40:13 +00:00
// $_GET is only valid if groupedit.php was called from grouplist.php
2003-10-07 17:52:51 +00:00
if ( isset ( $_GET [ 'DN' ]) && $_GET [ 'DN' ] != '' ) {
2003-10-21 13:40:13 +00:00
// groupedit.php should edit an existing account
// reset variables
2003-10-07 17:52:51 +00:00
if ( isset ( $_SESSION [ 'account_' . $varkey . '_account_old' ])) {
unset ( $account_old );
unset ( $_SESSION [ 'account_' . $varkey . '_account_old' ]);
2003-09-11 16:55:57 +00:00
}
2003-10-07 17:52:51 +00:00
$_SESSION [ 'account_' . $varkey . '_account_old' ] = new account ();
$account_old =& $_SESSION [ 'account_' . $varkey . '_account_old' ];
2003-10-21 13:40:13 +00:00
// get "real" DN from variable
2003-10-07 17:52:51 +00:00
$DN = str_replace ( " \ ' " , '' , $_GET [ 'DN' ]);
2003-10-21 13:40:13 +00:00
// Load existing group
2003-10-07 17:52:51 +00:00
$account_new = loadgroup ( $DN );
2003-10-21 13:40:13 +00:00
// Get a copy of original host
2003-10-07 17:52:51 +00:00
$account_old = $account_new ;
2003-10-21 13:40:13 +00:00
// Store only DN without cn=$name
2003-10-07 17:52:51 +00:00
$account_new -> general_dn = substr ( $account_new -> general_dn , strpos ( $account_new -> general_dn , ',' ) + 1 );
$final_changegids = '' ;
2003-10-21 13:40:13 +00:00
// Display general-page
$select_local = 'general' ;
2003-09-11 16:55:57 +00:00
}
2003-10-21 13:40:13 +00:00
// Startcondition. groupedit.php was called from outside to create a new group
else if ( count ( $_POST ) == 0 ) {
// Create new account object with settings from default profile
2003-10-04 18:44:18 +00:00
$account_new = loadGroupProfile ( 'default' );
$account_new -> type = 'group' ;
if ( $config_intern -> scriptServer ) {
2003-10-21 13:40:13 +00:00
// load quotas and check if quotas from profile are valid
2003-10-04 18:44:18 +00:00
$values = getquotas ( 'group' );
2003-10-21 13:40:13 +00:00
if ( isset ( $account_new -> quota [ 0 ])) {
// check quotas from profile
2003-10-04 18:44:18 +00:00
$i = 0 ;
2003-10-21 13:40:13 +00:00
// check quota settings, loop for every partition with quotas
2003-10-04 18:44:18 +00:00
while ( isset ( $account_new -> quota [ $i ])) {
2003-10-21 13:40:13 +00:00
// search if quotas from profile fit to a real quota
2003-10-04 18:44:18 +00:00
$found = ( - 1 );
2003-11-06 10:58:21 +00:00
for ( $j = 0 ; $j < count ( $values [ 0 ] -> quota ); $j ++ )
2003-10-04 18:44:18 +00:00
if ( $values -> quota [ $j ][ 0 ] == $account_new -> quota [ $i ][ 0 ]) $found = $j ;
2003-10-21 13:40:13 +00:00
// unset quota from profile if quotas (mointpoint) doesn't exists anymore
2003-10-04 18:44:18 +00:00
if ( $found ==- 1 ) unset ( $account_new -> quota [ $i ]);
else {
2003-10-21 13:40:13 +00:00
// Set missing part in quota-array
2003-11-06 10:58:21 +00:00
$account_new -> quota [ $i ][ 1 ] = $values [ 0 ] -> quota [ $found ][ 1 ];
$account_new -> quota [ $i ][ 5 ] = $values [ 0 ] -> quota [ $found ][ 5 ];
$account_new -> quota [ $i ][ 4 ] = $values [ 0 ] -> quota [ $found ][ 4 ];
$account_new -> quota [ $i ][ 8 ] = $values [ 0 ] -> quota [ $found ][ 8 ];
2003-10-04 18:44:18 +00:00
$i ++ ;
}
2003-09-28 13:30:31 +00:00
}
2003-10-21 13:40:13 +00:00
// Beautify array, repair index
2003-10-04 18:44:18 +00:00
$account_new -> quota = array_values ( $account_new -> quota );
2003-09-28 13:30:31 +00:00
}
2003-10-04 18:44:18 +00:00
else { // No quotas saved in profile
2003-10-21 13:40:13 +00:00
// Display quotas for new users (Quota set to 0)
2003-11-06 10:58:21 +00:00
if ( is_object ( $values [ 0 ])) {
while ( list ( $key , $val ) = each ( $values [ 0 ])) // Set only defined values
2003-10-04 18:44:18 +00:00
if ( isset ( $val )) $account_new -> $key = $val ;
}
2003-09-28 13:30:31 +00:00
}
}
2003-10-21 13:40:13 +00:00
// Display general-page
$select_local = 'general' ;
2003-09-12 12:41:56 +00:00
}
2003-09-11 16:55:57 +00:00
2003-10-21 13:40:13 +00:00
switch ( $_POST [ 'select' ]) {
/* Select which part of page should be loaded and check values
* groupmembers = page with all users which are additional members of group
* general = startpage , general account paramters
* samba = page with all samba - related parameters e . g . smbpassword
* quota = page with all quota - related parameters e . g . hard file quota
* final = last page shown before account is created / modified
* finish = page shown after account has been created / modified
*/
2003-09-11 16:55:57 +00:00
case 'groupmembers' :
do { // X-Or, only one if() can be true
if ( isset ( $_POST [ 'users' ]) && isset ( $_POST [ 'add' ])) { // Add users to list
// Add new user
2003-10-04 18:44:18 +00:00
$account_new -> unix_memberUid = array_merge ( $account_new -> unix_memberUid , $_POST [ 'users' ]);
2003-09-11 16:55:57 +00:00
// remove doubles
2003-10-04 18:44:18 +00:00
$account_new -> unix_memberUid = array_flip ( $account_new -> unix_memberUid );
array_unique ( $account_new -> unix_memberUid );
$account_new -> unix_memberUid = array_flip ( $account_new -> unix_memberUid );
2003-10-21 15:36:12 +00:00
// sort users
2003-10-04 18:44:18 +00:00
sort ( $account_new -> unix_memberUid );
2003-09-11 16:55:57 +00:00
break ;
}
2003-10-21 15:36:12 +00:00
if ( isset ( $_POST [ 'members' ]) && isset ( $_POST [ 'remove' ])) { // remove users from list
2003-10-04 18:44:18 +00:00
$account_new -> unix_memberUid = array_delete ( $_POST [ 'members' ], $account_new -> unix_memberUid );
2003-09-11 16:55:57 +00:00
break ;
}
} while ( 0 );
2003-10-21 13:40:13 +00:00
// display groupmembers page
2003-09-20 10:15:24 +00:00
$select_local = 'groupmembers' ;
2003-09-11 16:55:57 +00:00
break ;
case 'general' :
2003-10-21 13:40:13 +00:00
if ( ! $_POST [ 'load' ]) {
2003-11-05 08:36:48 +00:00
if (( $account_new -> general_username != $_POST [ 'f_general_username' ]) && ereg ( '[A-Z]$' , $_POST [ 'f_general_username' ]))
2003-11-06 10:58:21 +00:00
$errors [] = array ( 'WARN' , _ ( 'Groupname' ), _ ( 'You are using a capital letters. This can cause problems because not all programs are case-sensitive.' ));
2003-10-21 15:36:12 +00:00
// Write all general attributes into $account_new if no profile should be loaded
2003-10-04 18:44:18 +00:00
$account_new -> general_dn = $_POST [ 'f_general_suffix' ];
$account_new -> general_username = $_POST [ 'f_general_username' ];
$account_new -> general_uidNumber = $_POST [ 'f_general_uidNumber' ];
$account_new -> general_gecos = $_POST [ 'f_general_gecos' ];
2003-09-17 12:20:38 +00:00
2003-09-11 16:55:57 +00:00
// Check if values are OK and set automatic values. if not error-variable will be set
2003-09-17 12:20:38 +00:00
// Check if Groupname contains only valid characters
2003-11-05 08:36:48 +00:00
if ( ! ereg ( '^([a-z]|[A-Z]|[0-9]|[.]|[-]|[_])*$' , $account_new -> general_username ))
$errors [] = array ( 'ERROR' , _ ( 'Groupname' ), _ ( 'Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !' ));
2003-10-04 18:44:18 +00:00
if ( $account_new -> general_gecos == '' ) {
$account_new -> general_gecos = $account_new -> general_username ;
2003-09-17 12:20:38 +00:00
$errors [] = array ( 'INFO' , _ ( 'Gecos' ), _ ( 'Inserted groupname in gecos-field.' ));
2003-09-11 16:55:57 +00:00
}
2003-09-17 16:57:01 +00:00
// Create automatic groupaccount with number if original group already exists
2003-09-17 12:20:38 +00:00
// Reset name to original name if new name is in use
2003-10-19 17:06:16 +00:00
if ( ldapexists ( $account_new , $account_old ) && is_object ( $account_old ))
2003-10-04 18:44:18 +00:00
$account_new -> general_username = $account_old -> general_username ;
2003-10-19 17:06:16 +00:00
while ( $temp = ldapexists ( $account_new , $account_old )) {
2003-09-17 12:20:38 +00:00
// get last character of username
2003-10-04 18:44:18 +00:00
$lastchar = substr ( $account_new -> general_username , strlen ( $account_new -> general_username ) - 1 , 1 );
2003-09-17 12:20:38 +00:00
// Last character is no number
if ( ! ereg ( '^([0-9])+$' , $lastchar ))
2003-10-21 13:40:13 +00:00
/* Last character is no number . Therefore we only have to
* add " 2 " to it .
*/
2003-10-04 18:44:18 +00:00
$account_new -> general_username = $account_new -> general_username . '2' ;
2003-09-17 12:20:38 +00:00
else {
2003-10-21 13:40:13 +00:00
/* Last character is a number -> we have to increase the number until we ' ve
* found a groupname with trailing number which is not in use .
*
* $i will show us were we have to split groupname so we get a part
* with the groupname and a part with the trailing number
*/
2003-10-04 18:44:18 +00:00
$i = strlen ( $account_new -> general_username ) - 1 ;
2003-09-17 12:20:38 +00:00
$mark = false ;
2003-10-21 13:40:13 +00:00
// Set $i to the last character which is a number in $account_new->general_username
2003-09-17 12:20:38 +00:00
while ( ! $mark ) {
2003-10-04 18:44:18 +00:00
if ( ereg ( '^([0-9])+$' , substr ( $account_new -> general_username , $i , strlen ( $account_new -> general_username ) - $i ))) $i -- ;
2003-09-17 12:20:38 +00:00
else $mark = true ;
}
// increase last number with one
2003-10-04 18:44:18 +00:00
$firstchars = substr ( $account_new -> general_username , 0 , $i + 1 );
$lastchars = substr ( $account_new -> general_username , $i + 1 , strlen ( $account_new -> general_username ) - $i );
2003-10-21 13:40:13 +00:00
// Put groupname together
2003-10-04 18:44:18 +00:00
$account_new -> general_username = $firstchars . ( intval ( $lastchars ) + 1 );
2003-09-17 12:20:38 +00:00
}
}
2003-10-21 13:40:13 +00:00
// Show warning if lam has changed groupname
2003-10-04 18:44:18 +00:00
if ( $account_new -> general_username != $_POST [ 'f_general_username' ]) $errors [] = array ( 'WARN' , _ ( 'Groupname' ), _ ( 'Groupname already in use. Selected next free groupname.' ));
2003-09-17 12:20:38 +00:00
// Check if UID is valid. If none value was entered, the next useable value will be inserted
2003-10-21 13:40:13 +00:00
$temp = explode ( ':' , checkid ( $account_new , $account_old ));
$account_new -> general_uidNumber = $temp [ 0 ];
// true if checkid has returned an error
if ( $temp [ 1 ] != '' ) $errors [] = explode ( ';' , $temp [ 1 ]);
2003-09-17 12:20:38 +00:00
// Check if Name-length is OK. minLength=3, maxLength=20
2003-10-04 18:44:18 +00:00
if ( ! ereg ( '.{3,20}' , $account_new -> general_username )) $errors [] = array ( 'ERROR' , _ ( 'Name' ), _ ( 'Name must contain between 3 and 20 characters.' ));
2003-09-17 12:20:38 +00:00
// Check if Name starts with letter
2003-10-04 18:44:18 +00:00
if ( ! ereg ( '^([a-z]|[A-Z]).*$' , $account_new -> general_username ))
2003-09-17 12:20:38 +00:00
$errors [] = array ( 'ERROR' , _ ( 'Name' ), _ ( 'Name contains invalid characters. First character must be a letter' ));
2003-09-11 16:55:57 +00:00
}
break ;
case 'samba' :
2003-10-21 13:40:13 +00:00
// Write all samba attributes into $account_new
// Get all domains
2003-10-04 18:44:18 +00:00
$samba3domains = $ldap_intern -> search_domains ( $config_intern -> get_domainSuffix ());
2003-10-21 13:40:13 +00:00
// Search the corrct domain in array
unset ( $account_new -> smb_domain );
$i = 0 ;
while ( ! is_object ( $account_new -> smb_domain ) && isset ( $samba3domains [ $i ])) {
if ( $_POST [ 'f_smb_domain' ] == $samba3domains [ $i ] -> name )
$account_new -> smb_domain = $samba3domains [ $i ];
else $i ++ ;
}
2003-10-04 18:44:18 +00:00
$account_new -> smb_displayName = $_POST [ 'f_smb_displayName' ];
2003-10-21 13:40:13 +00:00
// Check if group SID should be mapped to a well known SID
switch ( $_POST [ 'f_smb_mapgroup' ]) {
case '*' . _ ( 'Domain Guests' ) : $account_new -> smb_mapgroup = $account_new -> smb_domain -> SID . " - " . '514' ; break ;
case '*' . _ ( 'Domain Users' ) : $account_new -> smb_mapgroup = $account_new -> smb_domain -> SID . " - " . '513' ; break ;
case '*' . _ ( 'Domain Admins' ) : $account_new -> smb_mapgroup = $account_new -> smb_domain -> SID . " - " . '512' ; break ;
case $account_new -> general_username :
$account_new -> smb_mapgroup = $account_new -> smb_domain -> SID . " - " .
( 2 * getgid ( $account_new -> general_username ) + $account_new -> smb_domain -> RIDbase + 1 );
break ;
}
// Check if values are OK and set automatic values. if not error-variable will be set
2003-10-04 18:44:18 +00:00
if (( $account_new -> smb_displayName == '' ) && isset ( $account_new -> general_gecos )) {
$account_new -> smb_displayName = $account_new -> general_gecos ;
2003-09-17 12:20:38 +00:00
$errors [] = array ( 'INFO' , _ ( 'Display name' ), _ ( 'Inserted gecos-field as display name.' ));
2003-09-16 12:44:28 +00:00
}
2003-09-11 16:55:57 +00:00
break ;
case 'quota' :
2003-10-04 18:44:18 +00:00
// Write all general values into $account_new
2003-09-11 16:55:57 +00:00
$i = 0 ;
2003-10-21 13:40:13 +00:00
// loop for every mointpoint with quotas
2003-10-04 18:44:18 +00:00
while ( $account_new -> quota [ $i ][ 0 ]) {
$account_new -> quota [ $i ][ 2 ] = $_POST [ 'f_quota_' . $i . '_2' ];
$account_new -> quota [ $i ][ 3 ] = $_POST [ 'f_quota_' . $i . '_3' ];
$account_new -> quota [ $i ][ 6 ] = $_POST [ 'f_quota_' . $i . '_6' ];
$account_new -> quota [ $i ][ 7 ] = $_POST [ 'f_quota_' . $i . '_7' ];
2003-09-18 13:54:02 +00:00
// Check if values are OK and set automatic values. if not error-variable will be set
2003-10-04 18:44:18 +00:00
if ( ! ereg ( '^([0-9])*$' , $account_new -> quota [ $i ][ 2 ]))
2003-09-17 12:20:38 +00:00
$errors [] = array ( 'ERROR' , _ ( 'Block soft quota' ), _ ( 'Block soft quota contains invalid characters. Only natural numbers are allowed' ));
2003-10-04 18:44:18 +00:00
if ( ! ereg ( '^([0-9])*$' , $account_new -> quota [ $i ][ 3 ]))
2003-09-17 12:20:38 +00:00
$errors [] = array ( 'ERROR' , _ ( 'Block hard quota' ), _ ( 'Block hard quota contains invalid characters. Only natural numbers are allowed' ));
2003-10-04 18:44:18 +00:00
if ( ! ereg ( '^([0-9])*$' , $account_new -> quota [ $i ][ 6 ]))
2003-09-17 12:20:38 +00:00
$errors [] = array ( 'ERROR' , _ ( 'Inode soft quota' ), _ ( 'Inode soft quota contains invalid characters. Only natural numbers are allowed' ));
2003-10-04 18:44:18 +00:00
if ( ! ereg ( '^([0-9])*$' , $account_new -> quota [ $i ][ 7 ]))
2003-09-17 12:20:38 +00:00
$errors [] = array ( 'ERROR' , _ ( 'Inode hard quota' ), _ ( 'Inode hard quota contains invalid characters. Only natural numbers are allowed' ));
$i ++ ;
2003-09-11 16:55:57 +00:00
}
break ;
case 'final' :
2003-10-21 13:40:13 +00:00
// Ask if we should change gidNumber of every user which is member of the group
2003-10-04 18:44:18 +00:00
if ( $_POST [ 'f_final_changegids' ]) $final_changegids = $_POST [ 'f_final_changegids' ] ;
2003-09-11 16:55:57 +00:00
break ;
2003-10-17 16:04:57 +00:00
case 'finish' :
// Check if pdf-file should be created
if ( $_POST [ 'outputpdf' ]) {
2003-10-21 13:40:13 +00:00
// Load quotas if not yet done because they are needed for the pdf-file
2003-10-17 16:04:57 +00:00
if ( $config_intern -> scriptServer && ! isset ( $account_new -> quota [ 0 ])) { // load quotas
2003-11-06 10:58:21 +00:00
$values = getquotas ( 'group' , array ( $account_old -> general_username ));
if ( is_object ( $values [ 0 ])) {
while ( list ( $key , $val ) = each ( $values [ 0 ])) // Set only defined values
2003-10-17 16:04:57 +00:00
if ( isset ( $val )) $account_new -> $key = $val ;
}
2003-11-06 10:58:21 +00:00
if ( is_object ( $values [ 0 ]) && isset ( $account_old )) {
while ( list ( $key , $val ) = each ( $values [ 0 ])) // Set only defined values
2003-10-17 16:04:57 +00:00
if ( isset ( $val )) $account_old -> $key = $val ;
}
}
2003-10-21 13:40:13 +00:00
// Create / display PDf-file
2003-10-17 16:04:57 +00:00
createGroupPDF ( array ( $account_new ));
2003-10-21 13:40:13 +00:00
// Stop script
2003-10-17 16:04:57 +00:00
die ;
}
break ;
2003-09-11 16:55:57 +00:00
}
do { // X-Or, only one if() can be true
if ( $_POST [ 'next_members' ]) {
2003-10-21 13:40:13 +00:00
// Go from groupmembers to next page if no error did ocour
2003-09-15 16:22:04 +00:00
if ( ! is_array ( $errors )) $select_local = 'groupmembers' ;
2003-10-21 13:40:13 +00:00
else $select_local = $_POST [ 'select' ];
2003-09-11 16:55:57 +00:00
break ;
}
if ( $_POST [ 'next_general' ]) {
2003-10-21 13:40:13 +00:00
// Go from general to next page if no error did ocour
2003-09-15 16:22:04 +00:00
if ( ! is_array ( $errors )) $select_local = 'general' ;
2003-10-21 13:40:13 +00:00
else $select_local = $_POST [ 'select' ];
2003-09-11 16:55:57 +00:00
break ;
}
if ( $_POST [ 'next_samba' ]) {
2003-10-21 13:40:13 +00:00
// Go from samba to next page if no error did ocour
2003-09-15 16:22:04 +00:00
if ( ! is_array ( $errors )) $select_local = 'samba' ;
2003-10-21 13:40:13 +00:00
else $select_local = $_POST [ 'select' ];
2003-09-11 16:55:57 +00:00
break ;
}
if ( $_POST [ 'next_quota' ]) {
2003-10-21 13:40:13 +00:00
// Go from quota to next page if no error did ocour
2003-09-15 16:22:04 +00:00
if ( ! is_array ( $errors )) $select_local = 'quota' ;
2003-10-21 13:40:13 +00:00
else $select_local = $_POST [ 'select' ];
2003-09-11 16:55:57 +00:00
break ;
}
if ( $_POST [ 'next_final' ]) {
2003-10-21 13:40:13 +00:00
// Check if objectclasses are OK
2003-10-30 08:15:32 +00:00
if ( is_array ( $errors )) $stay = true ;
else $stay = false ;
2003-10-22 17:51:44 +00:00
if ( $config_intern -> is_samba3 () && ! isset ( $account_new -> smb_domain )) {
// Samba page not viewed; can not create group because if missing options
2003-10-21 13:40:13 +00:00
$errors [] = array ( " ERROR " , _ ( " Samba Options not set! " ), _ ( " Please check settings on samba page. " ));
2003-10-22 17:51:44 +00:00
$stay = true ;
}
2003-10-21 13:40:13 +00:00
if ( isset ( $account_old -> general_objectClass )) {
if (( $config_intern -> is_samba3 ()) && ( ! in_array ( 'sambaGroupMapping' , $account_old -> general_objectClass )))
$errors [] = array ( 'WARN' , _ ( 'ObjectClass sambaGroupMapping not found.' ), _ ( 'Have to add objectClass sambaGroupMapping.' ));
if ( ! in_array ( 'posixGroup' , $account_old -> general_objectClass ))
$errors [] = array ( 'WARN' , _ ( 'ObjectClass posixGroup not found.' ), _ ( 'Have to add objectClass posixGroup.' ));
}
// Show info if gidNumber has changed
if (( $account_old ) && ( $account_new -> general_uidNumber != $account_old -> general_uidNumber ))
$errors [] = array ( 'INFO' , _ ( 'GID-number has changed. You have to run the following command as root in order to change existing file-permissions:' ),
'find / -gid ' . $account_old -> general_uidNumber . ' -exec chgrp ' . $account_new -> general_uidNumber . ' {} \;' );
// Go from final to next page if no error did ocour
2003-10-23 11:12:04 +00:00
if ( ! $stay ) $select_local = 'final' ;
2003-10-21 13:40:13 +00:00
else $select_local = $_POST [ 'select' ];
2003-09-11 16:55:57 +00:00
break ;
}
2003-10-21 13:40:13 +00:00
// Reset account to original settings if undo-button was pressed
2003-09-20 10:15:24 +00:00
if ( $_POST [ 'next_reset' ]) {
2003-10-04 18:44:18 +00:00
$account_new = $account_old ;
$account_new -> general_dn = substr ( $account_new -> general_dn , strpos ( $account_new -> general_dn , ',' ) + 1 );
2003-10-21 13:40:13 +00:00
$select_local = $_POST [ 'select' ];
2003-09-20 10:15:24 +00:00
break ;
}
2003-10-21 13:40:13 +00:00
// Create-Button was pressed
if ( $_POST [ 'create' ] ) {
// Create or modify an account
2003-10-04 18:44:18 +00:00
if ( $account_old ) $result = modifygroup ( $account_new , $account_old );
else $result = creategroup ( $account_new ); // account.inc
2003-10-21 13:40:13 +00:00
if ( $result == 4 || $result == 5 ) $select_local = 'final' ;
else $select_local = 'finish' ;
2003-09-11 16:55:57 +00:00
break ;
}
2003-10-21 13:40:13 +00:00
// Load Profile and reset all attributes to settings in profile
2003-09-11 16:55:57 +00:00
if ( $_POST [ 'createagain' ]) {
$select_local = 'general' ;
2003-10-21 13:40:13 +00:00
unset ( $_SESSION [ 'account_' . $varkey . '_account_new' ]);
2003-10-04 18:44:18 +00:00
unset ( $account_new );
2003-10-21 13:40:13 +00:00
$_SESSION [ 'account_' . $varkey . '_account_new' ] = loadGroupProfile ( 'default' );
$account_new =& $_SESSION [ 'account_' . $varkey . '_account_new' ];
2003-10-04 18:44:18 +00:00
$account_new -> type = 'group' ;
2003-09-11 16:55:57 +00:00
break ;
}
2003-10-21 13:40:13 +00:00
// Go back to listgroups.php
2003-09-11 16:55:57 +00:00
if ( $_POST [ 'backmain' ]) {
2003-10-17 07:58:43 +00:00
if ( isset ( $_SESSION [ 'account_' . $varkey . '_account_new' ])) unset ( $_SESSION [ 'account_' . $varkey . '_account_new' ]);
if ( isset ( $_SESSION [ 'account_' . $varkey . '_account_old' ])) unset ( $_SESSION [ 'account_' . $varkey . '_account_old' ]);
if ( isset ( $_SESSION [ 'account_' . $varkey . '_final_changegids' ])) unset ( $_SESSION [ 'account_' . $varkey . '_final_changegids' ]);
2003-10-21 15:36:12 +00:00
metaRefresh ( " ../lists/listgroups.php " );
2003-10-01 12:14:04 +00:00
die ;
2003-09-11 16:55:57 +00:00
break ;
}
2003-10-21 13:40:13 +00:00
// Load Profile and reset all attributes to settings in profile
if ( $_POST [ 'load' ]) {
2003-10-04 18:44:18 +00:00
$account_new -> general_dn = $_POST [ 'f_general_suffix' ];
$account_new -> general_username = $_POST [ 'f_general_username' ];
$account_new -> general_uidNumber = $_POST [ 'f_general_uidNumber' ];
$account_new -> general_gecos = $_POST [ 'f_general_gecos' ];
2003-09-11 16:55:57 +00:00
// load profile
2003-09-12 11:27:57 +00:00
if ( $_POST [ 'f_general_selectprofile' ] != '' ) $values = loadGroupProfile ( $_POST [ 'f_general_selectprofile' ]);
if ( is_object ( $values )) {
while ( list ( $key , $val ) = each ( $values )) // Set only defined values
2003-10-04 18:44:18 +00:00
if ( isset ( $val )) $account_new -> $key = $val ;
2003-09-12 11:27:57 +00:00
}
2003-10-04 18:44:18 +00:00
if ( $config_intern -> scriptServer ) {
2003-10-21 13:40:13 +00:00
// load quotas and check if quotas from profile are valid
$values = getquotas ( 'group' );
if ( isset ( $account_new -> quota [ 0 ])) {
// check quotas from profile
2003-10-04 18:44:18 +00:00
$i = 0 ;
2003-10-21 13:40:13 +00:00
// check quota settings, loop for every partition with quotas
2003-10-04 18:44:18 +00:00
while ( isset ( $account_new -> quota [ $i ])) {
2003-10-21 13:40:13 +00:00
// search if quotas from profile fit to a real quota
2003-10-04 18:44:18 +00:00
$found = ( - 1 );
2003-11-06 10:58:21 +00:00
for ( $j = 0 ; $j < count ( $values [ 0 ] -> quota ); $j ++ )
if ( $values [ 0 ] -> quota [ $j ][ 0 ] == $account_new -> quota [ $i ][ 0 ]) $found = $j ;
2003-10-21 13:40:13 +00:00
// unset quota from profile if quotas (mointpoint) doesn't exists anymore
2003-10-04 18:44:18 +00:00
if ( $found ==- 1 ) unset ( $account_new -> quota [ $i ]);
2003-10-21 13:40:13 +00:00
else {
// Set missing part in quota-array
2003-11-06 10:58:21 +00:00
$account_new -> quota [ $i ][ 1 ] = $values [ 0 ] -> quota [ $found ][ 1 ];
$account_new -> quota [ $i ][ 5 ] = $values [ 0 ] -> quota [ $found ][ 5 ];
$account_new -> quota [ $i ][ 4 ] = $values [ 0 ] -> quota [ $found ][ 4 ];
$account_new -> quota [ $i ][ 8 ] = $values [ 0 ] -> quota [ $found ][ 8 ];
2003-10-04 18:44:18 +00:00
$i ++ ;
}
2003-09-28 13:30:31 +00:00
}
2003-10-21 13:40:13 +00:00
// Beautify array, repair index
2003-10-04 18:44:18 +00:00
$account_new -> quota = array_values ( $account_new -> quota );
2003-09-28 13:30:31 +00:00
}
2003-10-04 18:44:18 +00:00
else { // No quotas saved in profile
2003-10-21 13:40:13 +00:00
// Display quotas for new users (Quota set to 0)
2003-11-06 10:58:21 +00:00
if ( is_object ( $values [ 0 ])) {
while ( list ( $key , $val ) = each ( $values [ 0 ])) // Set only defined values
2003-10-04 18:44:18 +00:00
if ( isset ( $val )) $account_new -> $key = $val ;
}
2003-09-28 13:30:31 +00:00
}
}
2003-09-11 16:55:57 +00:00
// select general page after group has been loaded
$select_local = 'general' ;
break ;
}
2003-10-21 13:40:13 +00:00
// Save Profile
2003-09-11 16:55:57 +00:00
if ( $_POST [ 'save' ]) {
// save profile
2003-10-21 13:40:13 +00:00
if ( $_POST [ 'f_finish_safeProfile' ] == '' )
$errors [] = array ( 'ERROR' , _ ( 'Save profile' ), _ ( 'No profilename given.' ));
else {
2003-10-23 19:20:53 +00:00
if ( saveGroupProfile ( $account_new , $_POST [ 'f_finish_safeProfile' ]))
$errors [] = array ( 'INFO' , _ ( 'Save profile' ), _ ( 'New profile created.' ));
else $errors [] = array ( 'ERROR' , _ ( 'Save profile' ), _ ( 'Wrong profilename given.' ));
2003-10-21 13:40:13 +00:00
}
2003-09-11 16:55:57 +00:00
// select last page displayed before user is created
$select_local = 'final' ;
break ;
}
if ( $_POST [ 'groupmembers' ]) {
$select_local = 'groupmembers' ;
break ;
}
} while ( 0 );
2003-10-01 12:14:04 +00:00
// Write HTML-Header
2003-10-04 18:44:18 +00:00
echo $header_intern ;
2003-11-08 12:52:22 +00:00
echo " <title> " ;
2003-10-01 12:14:04 +00:00
echo _ ( " Create new Account " );
echo " </title> \n " .
2003-10-17 07:58:43 +00:00
" <link rel= \" stylesheet \" type= \" text/css \" href= \" ../../style/layout.css \" > \n " .
2003-10-01 12:14:04 +00:00
" <meta http-equiv= \" pragma \" content= \" no-cache \" > \n " .
" <meta http-equiv= \" cache-control \" content= \" no-cache \" > \n " .
" </head><body> \n " .
2003-10-04 18:44:18 +00:00
" <form action= \" groupedit.php \" method= \" post \" > \n " .
" <input name= \" varkey \" type= \" hidden \" value= \" " . $varkey . " \" > \n " ;
2003-09-12 07:16:23 +00:00
2003-10-21 13:40:13 +00:00
// Display errir-messages
2003-10-20 17:56:52 +00:00
if ( is_array ( $errors ))
2003-09-11 19:12:13 +00:00
for ( $i = 0 ; $i < sizeof ( $errors ); $i ++ ) StatusMessage ( $errors [ $i ][ 0 ], $errors [ $i ][ 1 ], $errors [ $i ][ 2 ]);
2003-09-16 12:44:28 +00:00
2003-10-04 18:44:18 +00:00
// print_r($account_old);
2003-10-21 13:40:13 +00:00
switch ( $select_local ) {
/* Select which part of page should be loaded and check values
* groupmembers = page with all users which are additional members of group
* general = startpage , general account paramters
* samba = page with all samba - related parameters e . g . smbpassword
* quota = page with all quota - related parameters e . g . hard file quota
* personal = page with all personal - related parametergs , e . g . phone number
* final = last page shown before account is created / modified
* finish = page shown after account has been created / modified
*/
2003-09-11 16:55:57 +00:00
case 'groupmembers' :
2003-10-21 13:40:13 +00:00
// Validate cache-array
2003-09-11 16:55:57 +00:00
ldapreload ( 'user' );
2003-10-21 13:40:13 +00:00
// Get copy of cache-array
2003-10-04 18:44:18 +00:00
$temp2 = $userDN_intern ;
2003-10-21 13:40:13 +00:00
// unset timestamp stored in $temp2[0]
2003-09-29 10:54:44 +00:00
unset ( $temp2 [ 0 ]);
2003-10-21 13:40:13 +00:00
// load list with all users
2003-09-29 10:54:44 +00:00
foreach ( $temp2 as $temp ) $users [] = $temp [ 'cn' ];
2003-10-21 13:40:13 +00:00
// sort users
2003-10-19 17:06:16 +00:00
if ( is_array ( $users )) sort ( $users , SORT_STRING );
2003-10-21 13:40:13 +00:00
// remove users which are allready additional members of group
2003-10-17 09:30:13 +00:00
$users = array_delete ( $account_new -> unix_memberUid , $users );
2003-10-21 13:40:13 +00:00
/* Now we have to remove all users from list who are primary member of group
* At the moment lam is doing an extra ldap - search . In future this should be done
* via cache - array **** fixme
*/
// Do a ldap-search
2003-10-20 17:56:52 +00:00
if ( isset ( $account_old -> general_uidNumber ))
$result = ldap_search ( $_SESSION [ 'ldap' ] -> server (), $_SESSION [ 'config' ] -> get_UserSuffix (), " (&(objectClass=PosixAccount)(gidNumber= $account_old->general_uidNumber )) " , array ( 'cn' ));
else $result = ldap_search ( $_SESSION [ 'ldap' ] -> server (), $_SESSION [ 'config' ] -> get_UserSuffix (), " (&(objectClass=PosixAccount)(gidNumber= $account_new->general_uidNumber )) " , array ( 'cn' ));
$entry = ldap_first_entry ( $_SESSION [ 'ldap' ] -> server (), $result );
2003-10-21 13:40:13 +00:00
// loop for every user which is primary member of group
2003-10-20 17:56:52 +00:00
while ( $entry ) {
$attr = ldap_get_attributes ( $_SESSION [ 'ldap' ] -> server (), $entry );
if ( isset ( $attr [ 'cn' ][ 0 ])) {
2003-10-21 13:40:13 +00:00
// Remove user from user list
2003-10-20 17:56:52 +00:00
$users = @ array_flip ( $users );
unset ( $users [ $attr [ 'cn' ][ 0 ]]);
$users = @ array_flip ( $users );
}
2003-10-21 13:40:13 +00:00
// Go to next entry
2003-10-20 17:56:52 +00:00
$entry = ldap_next_entry ( $_SESSION [ 'ldap' ] -> server (), $entry );
}
2003-10-21 13:40:13 +00:00
2003-09-11 16:55:57 +00:00
echo " <input name= \" select \" type= \" hidden \" value= \" groupmembers \" > \n " ;
2003-09-11 19:12:13 +00:00
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
2003-09-15 16:22:04 +00:00
echo " <table border=0><tr><td><fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-09-11 19:12:13 +00:00
echo _ ( 'Please select page:' );
2003-09-12 16:50:55 +00:00
echo " </b></legend> \n " ;
2003-09-11 19:12:13 +00:00
echo " <input name= \" next_general \" type= \" submit \" value= \" " ; echo _ ( 'General' ); echo " \" > \n <br> " ;
echo " <input name= \" next_members \" type= \" submit \" disabled value= \" " ; echo _ ( 'Members' ); echo " \" > \n <br> " ;
2003-10-21 13:40:13 +00:00
// samba 2.2 doesn't have any settings for groups
2003-10-04 18:44:18 +00:00
if ( $config_intern -> is_samba3 ()) {
2003-09-16 12:44:28 +00:00
echo " <input name= \" next_samba \" type= \" submit \" value= \" " ; echo _ ( 'Samba' ); echo " \" > \n <br> " ;
2003-09-17 12:20:38 +00:00
}
2003-10-04 18:44:18 +00:00
echo " <input name= \" next_quota \" type= \" submit \" " ; if ( ! isset ( $config_intern -> scriptPath )) echo " disabled " ;
2003-09-11 19:12:13 +00:00
echo " value= \" " ; echo _ ( 'Quota' ); echo " \" > \n <br> " ;
echo " <input name= \" next_final \" type= \" submit \" value= \" " ; echo _ ( 'Final' );
2003-09-20 10:15:24 +00:00
echo " \" > " ;
2003-10-04 18:44:18 +00:00
if ( isset ( $account_old )) {
2003-09-20 10:15:24 +00:00
echo " <br><br> " ;
echo _ ( " Reset all changes. " );
echo " <br> " ;
echo " <input name= \" next_reset \" type= \" submit \" value= \" " ; echo _ ( 'Undo' );
echo " \" > \n " ;
}
echo " </fieldset></td></tr></table></td> \n <td> " ;
2003-10-17 16:04:57 +00:00
echo " <table border=0 width= \" 100% \" ><tr><td><fieldset class= \" groupedit-bright \" ><legend class= \" groupedit-bright \" ><b> " . _ ( 'Additional group members' ) . " </b></legend> \n " ;
2003-09-11 16:55:57 +00:00
echo " <table border=0 width= \" 100% \" > \n " ;
2003-09-12 16:50:55 +00:00
echo " <tr><td valign= \" top \" ><fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" > " ;
2003-09-11 16:55:57 +00:00
echo _ ( 'Group members' );
2003-09-17 12:20:38 +00:00
echo " </legend> " ;
2003-10-21 13:40:13 +00:00
// display all users which are additional members of group
2003-10-04 18:44:18 +00:00
if ( count ( $account_new -> unix_memberUid ) != 0 ) {
2003-09-17 12:20:38 +00:00
echo " <select name= \" members[] \" class= \" groupedit-bright \" size=15 multiple> \n " ;
2003-10-04 18:44:18 +00:00
for ( $i = 0 ; $i < count ( $account_new -> unix_memberUid ); $i ++ )
if ( $account_new -> unix_memberUid [ $i ] != '' ) echo " <option> " . $account_new -> unix_memberUid [ $i ] . " </option> \n " ;
2003-09-17 12:20:38 +00:00
echo " </select> \n " ;
}
echo " </fieldset></td> \n " ;
2003-09-11 16:55:57 +00:00
echo " <td align= \" center \" width= \" 10% \" ><input type= \" submit \" name= \" add \" value= \" <= \" > " ;
echo " " ;
echo " <input type= \" submit \" name= \" remove \" value= \" => \" ><br><br> " ;
2003-10-17 07:58:43 +00:00
echo " <a href= \" ../help.php?HelpNumber=419 \" target= \" lamhelp \" > " . _ ( 'Help' ) . " </a></td> \n " ;
2003-09-12 16:50:55 +00:00
echo " <td valign= \" top \" ><fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" > " ;
2003-09-11 16:55:57 +00:00
echo _ ( 'Available users' );
2003-09-17 12:20:38 +00:00
echo " </legend> \n " ;
2003-10-21 13:40:13 +00:00
// Display all users which are not member of group in any way
2003-10-19 17:06:16 +00:00
if (( count ( $users ) != 0 ) && is_array ( $users )) {
2003-09-17 12:20:38 +00:00
echo " <select name= \" users[] \" size=15 multiple class= \" groupedit-bright \" > \n " ;
2003-09-29 10:54:44 +00:00
foreach ( $users as $temp )
echo " <option> $temp </option> \n " ;
2003-09-17 12:20:38 +00:00
echo " </select> \n " ;
}
echo " </fieldset></td> \n </tr> \n </table> \n </fieldset></td></tr></table> \n </td></tr> \n </table> \n " ;
2003-09-11 16:55:57 +00:00
break ;
case 'general' :
// General Account Settings
// load list of profiles
$profilelist = getGroupProfiles ();
// Show page info
2003-09-12 07:16:23 +00:00
echo " <input name= \" select \" type= \" hidden \" value= \" general \" > \n " ;
2003-09-11 19:12:13 +00:00
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
2003-09-15 16:22:04 +00:00
echo " <table><tr><td><fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-09-11 19:12:13 +00:00
echo _ ( 'Please select page:' );
2003-09-12 16:50:55 +00:00
echo " </b></legend> \n " ;
2003-09-11 19:12:13 +00:00
echo " <input name= \" next_general \" type= \" submit \" disabled value= \" " ; echo _ ( 'General' ); echo " \" > \n <br> " ;
echo " <input name= \" next_members \" type= \" submit \" value= \" " ; echo _ ( 'Members' ); echo " \" > \n <br> " ;
2003-10-21 13:40:13 +00:00
// samba 2.2 doesn't have any settings for groups
2003-10-04 18:44:18 +00:00
if ( $config_intern -> is_samba3 ()) {
2003-09-16 12:44:28 +00:00
echo " <input name= \" next_samba \" type= \" submit \" value= \" " ; echo _ ( 'Samba' ); echo " \" > \n <br> " ;
2003-09-17 12:20:38 +00:00
}
2003-10-04 18:44:18 +00:00
echo " <input name= \" next_quota \" type= \" submit \" " ; if ( ! isset ( $config_intern -> scriptPath )) echo " disabled " ;
2003-09-11 19:12:13 +00:00
echo " value= \" " ; echo _ ( 'Quota' ); echo " \" > \n <br> " ;
echo " <input name= \" next_final \" type= \" submit \" value= \" " ; echo _ ( 'Final' );
2003-09-20 10:15:24 +00:00
echo " \" > " ;
2003-10-04 18:44:18 +00:00
if ( isset ( $account_old )) {
2003-09-20 10:15:24 +00:00
echo " <br><br> " ;
echo _ ( " Reset all changes. " );
echo " <br> " ;
echo " <input name= \" next_reset \" type= \" submit \" value= \" " ; echo _ ( 'Undo' );
echo " \" > \n " ;
}
echo " </fieldset></td></tr></table></td> \n <td valign= \" top \" > " ;
2003-09-12 11:56:50 +00:00
echo " <table border=0 width= \" 100% \" > \n <tr> \n <td> " ;
2003-09-12 16:50:55 +00:00
echo " <fieldset class= \" groupedit-bright \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-09-11 16:55:57 +00:00
echo _ ( " General properties " );
echo " </b></legend> \n <table border=0 width= \" 100% \" > \n <tr> \n <td> " ;
echo _ ( " Groupname " ) . " * " ;
echo " </td> \n <td> " .
2003-10-04 18:44:18 +00:00
" <input name= \" f_general_username \" type= \" text \" size= \" 30 \" maxlength= \" 20 \" value= \" " . $account_new -> general_username . " \" > " .
2003-10-17 07:58:43 +00:00
" </td> \n <td><a href= \" ../help.php?HelpNumber=407 \" target= \" lamhelp \" > " . _ ( 'Help' ) . " </a></td> \n </tr> \n <tr> \n <td> " ;
2003-09-11 16:55:57 +00:00
echo _ ( 'GID number' );
2003-10-04 18:44:18 +00:00
echo " </td> \n <td><input name= \" f_general_uidNumber \" type= \" text \" size= \" 30 \" maxlength= \" 6 \" value= \" " . $account_new -> general_uidNumber . " \" > " .
2003-10-17 07:58:43 +00:00
" </td> \n <td><a href= \" ../help.php?HelpNumber=408 \" target= \" lamhelp \" > " . _ ( 'Help' ) .
2003-09-11 16:55:57 +00:00
" </a></td> \n </tr> \n <tr> \n <td> " ;
2003-09-16 16:14:43 +00:00
echo _ ( 'Description' );
2003-10-04 18:44:18 +00:00
echo " </td> \n <td><input name= \" f_general_gecos \" type= \" text \" size= \" 30 \" value= \" " . $account_new -> general_gecos . " \" ></td> \n " .
2003-10-17 07:58:43 +00:00
" <td><a href= \" ../help.php?HelpNumber=409 \" target= \" lamhelp \" > " . _ ( 'Help' ) . " </a></td> \n </tr> \n <tr> \n <td> " ;
2003-09-11 16:55:57 +00:00
echo _ ( 'Suffix' ); echo " </td> \n <td><select name= \" f_general_suffix \" > " ;
2003-10-21 13:40:13 +00:00
// Display all allowed group suffixes
2003-10-04 18:44:18 +00:00
foreach ( $ldap_intern -> search_units ( $config_intern -> get_GroupSuffix ()) as $suffix ) {
if ( $account_new -> general_dn ) {
if ( $account_new -> general_dn == $suffix )
2003-09-11 16:55:57 +00:00
echo " <option selected> $suffix </option> \n " ;
else echo " <option> $suffix </option> \n " ;
}
else echo " <option> $suffix </option> \n " ;
}
2003-10-17 07:58:43 +00:00
echo " </select></td> \n <td><a href= \" ../help.php?HelpNumber=462 \" target= \" lamhelp \" > " . _ ( 'Help' ) .
2003-09-11 16:55:57 +00:00
" </a></td> \n </tr> \n </table> " ;
echo _ ( 'Values with * are required' );
2003-09-12 11:56:50 +00:00
echo " </fieldset> \n </td></tr><tr><td> " ;
2003-10-21 13:40:13 +00:00
// Show fieldset with list of all group profiles
2003-09-11 19:12:13 +00:00
if ( count ( $profilelist ) != 0 ) {
2003-09-12 16:50:55 +00:00
echo " <fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-09-11 19:12:13 +00:00
echo _ ( " Load profile " );
2003-09-12 16:50:55 +00:00
echo " </b></legend> \n <table border=0> \n <tr> \n <td> " ;
2003-09-11 19:12:13 +00:00
echo " <select name= \" f_general_selectprofile \" > " ;
foreach ( $profilelist as $profile ) echo " <option> $profile </option> \n " ;
echo " </select> \n " .
" <input name= \" load \" type= \" submit \" value= \" " ; echo _ ( 'Load Profile' );
2003-10-17 07:58:43 +00:00
echo " \" ></td><td><a href= \" ../help.php?HelpNumber=421 \" target= \" lamhelp \" > " ;
2003-09-17 16:57:01 +00:00
echo _ ( 'Help' ) . " </a></td> \n </tr> \n </table> \n </fieldset> \n " ;
2003-09-11 19:12:13 +00:00
}
2003-09-12 11:56:50 +00:00
echo " </td></tr> \n </table> \n </td></tr></table> \n " ;
2003-09-11 16:55:57 +00:00
break ;
case 'samba' :
// Samba Settings
2003-10-21 13:40:13 +00:00
// samba 2.2 doesn't have any settings for groups
2003-10-04 18:44:18 +00:00
$samba3domains = $ldap_intern -> search_domains ( $config_intern -> get_domainSuffix ());
2003-09-11 16:55:57 +00:00
echo " <input name= \" select \" type= \" hidden \" value= \" samba \" > \n " ;
2003-09-11 19:12:13 +00:00
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
2003-09-15 16:22:04 +00:00
echo " <table border=0><tr><td><fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-09-11 19:12:13 +00:00
echo _ ( 'Please select page:' );
2003-09-12 16:50:55 +00:00
echo " </b></legend> \n " ;
2003-09-11 19:12:13 +00:00
echo " <input name= \" next_general \" type= \" submit \" value= \" " ; echo _ ( 'General' ); echo " \" > \n <br> " ;
echo " <input name= \" next_members \" type= \" submit \" value= \" " ; echo _ ( 'Members' ); echo " \" > \n <br> " ;
echo " <input name= \" next_samba \" type= \" submit \" disabled value= \" " ; echo _ ( 'Samba' ); echo " \" > \n <br> " ;
2003-10-04 18:44:18 +00:00
echo " <input name= \" next_quota \" type= \" submit \" " ; if ( ! isset ( $config_intern -> scriptPath )) echo " disabled " ;
2003-09-11 19:12:13 +00:00
echo " value= \" " ; echo _ ( 'Quota' ); echo " \" > \n <br> " ;
echo " <input name= \" next_final \" type= \" submit \" value= \" " ; echo _ ( 'Final' );
2003-09-20 10:15:24 +00:00
echo " \" > " ;
2003-10-04 18:44:18 +00:00
if ( isset ( $account_old )) {
2003-09-20 10:15:24 +00:00
echo " <br><br> " ;
echo _ ( " Reset all changes. " );
echo " <br> " ;
echo " <input name= \" next_reset \" type= \" submit \" value= \" " ; echo _ ( 'Undo' );
echo " \" > \n " ;
}
echo " </fieldset></td></tr></table></td> \n <td valign= \" top \" > " ;
2003-09-16 12:44:28 +00:00
echo " <table border=0 width= \" 100% \" ><tr><td><fieldset class= \" groupedit-bright \" ><legend class= \" groupedit-bright \" ><b> " . _ ( 'Samba properties' ) . " </b></legend> \n " ;
2003-09-11 16:55:57 +00:00
echo " <table border=0 width= \" 100% \" ><tr><td> " ;
2003-09-16 12:44:28 +00:00
echo _ ( " Display name " );
echo " </td> \n <td> " .
2003-10-04 18:44:18 +00:00
" <input name= \" f_smb_displayName \" type= \" text \" size= \" 30 \" maxlength= \" 50 \" value= \" " . $account_new -> smb_displayName . " \" > " .
2003-10-17 07:58:43 +00:00
" </td> \n <td><a href= \" ../help.php?HelpNumber=420 \" target= \" lamhelp \" > " . _ ( 'Help' ) . " </a></td> \n </tr> \n <tr> \n <td> " ;
2003-09-11 16:55:57 +00:00
echo _ ( 'Windows groupname' );
echo " </td> \n <td><select name= \" f_smb_mapgroup \" > " ;
2003-10-21 13:40:13 +00:00
// Display if group SID should be mapped to a well kown SID
if ( $account_new -> smb_mapgroup == $account_new -> smb_domain -> SID . " - " .
( 2 * getgid ( $account_new -> general_username ) + $values -> smb_domain -> RIDbase + 1 )) {
echo '<option selected> ' ;
echo $account_new -> general_username ;
echo " </option> \n " ; }
else {
echo '<option> ' ;
echo $account_new -> general_username ;
echo " </option> \n " ;
2003-09-11 16:55:57 +00:00
}
2003-10-21 13:40:13 +00:00
if ( $account_new -> smb_mapgroup == $account_new -> smb_domain -> SID . " - " . '514' ) {
echo '<option selected> *' ;
echo _ ( 'Domain Guests' );
echo " </option> \n " ; }
else {
echo '<option> *' ;
echo _ ( 'Domain Guests' );
echo " </option> \n " ;
}
if ( $account_new -> smb_mapgroup == $account_new -> smb_domain -> SID . " - " . '513' ) {
echo '<option selected> *' ;
echo _ ( 'Domain Users' );
echo " </option> \n " ; }
else {
echo '<option> *' ;
echo _ ( 'Domain Users' );
echo " </option> \n " ;
}
if ( $account_new -> smb_mapgroup == $account_new -> smb_domain -> SID . " - " . '512' ) {
echo '<option selected> *' ;
echo _ ( 'Domain Admins' );
echo " </option> \n " ; }
else {
echo '<option> *' ;
echo _ ( 'Domain Admins' );
echo " </option> \n " ;
2003-09-11 16:55:57 +00:00
}
echo " </select></td> \n <td> " .
2003-10-17 07:58:43 +00:00
'<a href="../help.php?HelpNumber=464" target="lamhelp">' . _ ( 'Help' ) . '</a>' .
2003-09-11 16:55:57 +00:00
'</td></tr>' . " \n " . '<tr><td>' ;
echo _ ( 'Domain' );
2003-10-19 17:06:16 +00:00
echo '</td><td>' ;
2003-10-21 13:40:13 +00:00
// select which domain name should be displayed
2003-10-19 17:06:16 +00:00
if ( count ( $samba3domains ) != 0 ) {
echo '<select name="f_smb_domain">' ;
for ( $i = 0 ; $i < sizeof ( $samba3domains ); $i ++ ) {
if ( $account_new -> smb_domain -> name ) {
if ( $account_new -> smb_domain -> name == $samba3domains [ $i ] -> name )
echo '<option selected>' . $samba3domains [ $i ] -> name . '</option>' ;
else echo '<option>' . $samba3domains [ $i ] -> name . '</option>' ;
}
2003-09-11 16:55:57 +00:00
else echo '<option>' . $samba3domains [ $i ] -> name . '</option>' ;
}
2003-10-19 17:06:16 +00:00
echo '</select>' ;
2003-09-11 16:55:57 +00:00
}
2003-10-19 17:06:16 +00:00
echo " </td> \n <td><a href= \" ../help.php?HelpNumber=467 \" target= \" lamhelp \" > " . _ ( 'Help' ) . " </a></td></tr> \n " ;
2003-09-15 16:22:04 +00:00
echo " </table> \n </fieldset> \n </td></tr></table></td></tr> \n </table> \n " ;
2003-09-11 16:55:57 +00:00
break ;
case 'quota' :
// Quota Settings
2003-10-21 13:40:13 +00:00
// Load quotas if not yet done
2003-10-04 18:44:18 +00:00
if ( $config_intern -> scriptServer && ! isset ( $account_new -> quota [ 0 ]) ) { // load quotas
2003-11-06 10:58:21 +00:00
$values = getquotas ( 'group' , array ( $account_new -> general_username ));
if ( is_object ( $values [ 0 ])) {
while ( list ( $key , $val ) = each ( $values [ 0 ])) // Set only defined values
2003-10-04 18:44:18 +00:00
if ( isset ( $val )) $account_new -> $key = $val ;
2003-09-20 10:15:24 +00:00
}
2003-11-06 10:58:21 +00:00
if ( is_object ( $values [ 0 ]) && isset ( $account_old )) {
while ( list ( $key , $val ) = each ( $values [ 0 ])) // Set only defined values
2003-10-04 18:44:18 +00:00
if ( isset ( $val )) $account_old -> $key = $val ;
2003-09-20 10:15:24 +00:00
}
}
2003-09-11 19:12:13 +00:00
echo " <input name= \" select \" type= \" hidden \" value= \" samba \" > \n " ;
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
2003-09-15 16:22:04 +00:00
echo " <table border=0><tr><td><fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-09-11 19:12:13 +00:00
echo _ ( 'Please select page:' );
2003-09-12 16:50:55 +00:00
echo " </b></legend> \n " ;
2003-09-11 19:12:13 +00:00
echo " <input name= \" next_general \" type= \" submit \" value= \" " ; echo _ ( 'General' ); echo " \" > \n <br> " ;
echo " <input name= \" next_members \" type= \" submit \" value= \" " ; echo _ ( 'Members' ); echo " \" > \n <br> " ;
2003-10-21 13:40:13 +00:00
// samba 2.2 doesn't have any settings for groups
2003-10-04 18:44:18 +00:00
if ( $config_intern -> is_samba3 ()) {
2003-09-16 12:44:28 +00:00
echo " <input name= \" next_samba \" type= \" submit \" value= \" " ; echo _ ( 'Samba' ); echo " \" > \n <br> " ;
2003-09-17 12:20:38 +00:00
}
2003-09-11 19:12:13 +00:00
echo " <input name= \" next_quota \" type= \" submit \" disabled value= \" " ; echo _ ( 'Quota' ); echo " \" > \n <br> " ;
echo " <input name= \" next_final \" type= \" submit \" value= \" " ; echo _ ( 'Final' );
2003-09-20 10:15:24 +00:00
echo " \" > " ;
2003-10-04 18:44:18 +00:00
if ( isset ( $account_old )) {
2003-09-20 10:15:24 +00:00
echo " <br><br> " ;
echo _ ( " Reset all changes. " );
echo " <br> " ;
echo " <input name= \" next_reset \" type= \" submit \" value= \" " ; echo _ ( 'Undo' );
echo " \" > \n " ;
}
echo " </fieldset></td></tr></table></td> \n <td valign= \" top \" > " ;
2003-09-11 16:55:57 +00:00
echo '<input name="select" type="hidden" value="quota">' ;
2003-09-15 16:22:04 +00:00
echo " <table border=0><tr><td><fieldset class= \" groupedit-bright \" ><legend class= \" groupedit-bright \" ><b> " . _ ( 'Quota properties' ) . " </b></legend> \n " ;
2003-09-11 16:55:57 +00:00
echo " <table border=0 width= \" 100% \" ><tr><td> " ;
echo _ ( 'Mountpoint' ); echo '</td>' . " \n " . '<td>' ; echo _ ( 'Used blocks' ); echo '</td>' . " \n " . '<td>' ;
echo _ ( 'Soft block limit' ); echo '</td>' . " \n " . '<td>' ; echo _ ( 'Hard block limit' ); echo '</td>' . " \n " . '<td>' ; echo _ ( 'Grace block period' );
echo '</td>' . " \n " . '<td>' ; echo _ ( 'Used inodes' ); echo '</td>' . " \n " . '<td>' ; echo _ ( 'Soft inode limit' ); echo '</td>' . " \n " . '<td>' ;
echo _ ( 'Hard inode limit' ); echo '</td>' . " \n " . '<td>' ; echo _ ( 'Grace inode period' ); echo '</td></tr>' . " \n " ;
2003-10-17 07:58:43 +00:00
echo '<tr><td><a href="../help.php?HelpNumber=439" target="lamhelp">' . _ ( 'Help' ) . '</a></td>' . " \n " . '<td><a href="../help.php?HelpNumber=440" target="lamhelp">' . _ ( 'Help' ) . '</a></td>' . " \n " . '<td>' .
'<a href="../help.php?HelpNumber=441" target="lamhelp">' . _ ( 'Help' ) . '</a></td>' . " \n " . '<td><a href="../help.php?HelpNumber=442" target="lamhelp">' . _ ( 'Help' ) . '</a></td>' . " \n " . '<td>' .
'<a href="../help.php?HelpNumber=443" target="lamhelp">' . _ ( 'Help' ) . '</a></td>' . " \n " . '<td><a href="../help.php?HelpNumber=444" target="lamhelp">' . _ ( 'Help' ) . '</a></td>' . " \n " . '<td>' .
'<a href="../help.php?HelpNumber=445" target="lamhelp">' . _ ( 'Help' ) . '</a></td>' . " \n " . '<td><a href="../help.php?HelpNumber=446" target="lamhelp">' . _ ( 'Help' ) . '</a></td>' . " \n " . '<td>' .
'<a href="../help.php?HelpNumber=447" target="lamhelp">' . _ ( 'Help' ) . '</a></td></tr>' . " \n " ;
2003-09-11 16:55:57 +00:00
$i = 0 ;
2003-10-21 13:40:13 +00:00
// loop for every mointpoint with enabled quotas
2003-10-04 18:44:18 +00:00
while ( $account_new -> quota [ $i ][ 0 ]) {
echo '<tr><td>' . $account_new -> quota [ $i ][ 0 ] . '</td><td>' . $account_new -> quota [ $i ][ 1 ] . '</td>' ; // used blocks
echo '<td><input name="f_quota_' . $i . '_2" type="text" size="12" maxlength="20" value="' . $account_new -> quota [ $i ][ 2 ] . '"></td>' ; // blocks soft limit
echo '<td><input name="f_quota_' . $i . '_3" type="text" size="12" maxlength="20" value="' . $account_new -> quota [ $i ][ 3 ] . '"></td>' ; // blocks hard limit
echo '<td>' . $account_new -> quota [ $i ][ 4 ] . '</td>' ; // block grace period
echo '<td>' . $account_new -> quota [ $i ][ 5 ] . '</td>' ; // used inodes
echo '<td><input name="f_quota_' . $i . '_6" type="text" size="12" maxlength="20" value="' . $account_new -> quota [ $i ][ 6 ] . '"></td>' ; // inodes soft limit
echo '<td><input name="f_quota_' . $i . '_7" type="text" size="12" maxlength="20" value="' . $account_new -> quota [ $i ][ 7 ] . '"></td>' ; // inodes hard limit
echo '<td>' . $account_new -> quota [ $i ][ 8 ] . '</td></tr>' ; // inodes grace period
2003-09-11 16:55:57 +00:00
$i ++ ;
}
2003-09-15 16:22:04 +00:00
echo " </table> \n </fieldset> \n </td></tr></table></td></tr> \n </table> \n " ;
2003-09-11 16:55:57 +00:00
break ;
case 'final' :
// Final Settings
2003-09-20 07:59:19 +00:00
$disabled = " " ;
2003-10-21 13:40:13 +00:00
if ( $config_intern -> is_samba3 () && ! isset ( $account_new -> smb_domain ))
// Samba page not viewed; can not create group because if missing options
$disabled = " disabled " ;
2003-09-24 20:58:34 +00:00
2003-09-11 16:55:57 +00:00
echo '<input name="select" type="hidden" value="final">' ;
2003-09-16 12:44:28 +00:00
echo " <input name= \" select \" type= \" hidden \" value= \" final \" > \n " ;
2003-09-11 19:12:13 +00:00
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
2003-09-15 16:22:04 +00:00
echo " <table><tr><td><fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-09-11 19:12:13 +00:00
echo _ ( 'Please select page:' );
2003-09-12 16:50:55 +00:00
echo " </b></legend> \n " ;
2003-09-11 19:12:13 +00:00
echo " <input name= \" next_general \" type= \" submit \" value= \" " ; echo _ ( 'General' ); echo " \" > \n <br> " ;
echo " <input name= \" next_members \" type= \" submit \" value= \" " ; echo _ ( 'Members' ); echo " \" > \n <br> " ;
2003-10-04 18:44:18 +00:00
if ( $config_intern -> is_samba3 ()) {
2003-09-16 12:44:28 +00:00
echo " <input name= \" next_samba \" type= \" submit \" value= \" " ; echo _ ( 'Samba' ); echo " \" > \n <br> " ;
2003-09-17 12:20:38 +00:00
}
2003-10-04 18:44:18 +00:00
echo " <input name= \" next_quota \" type= \" submit \" " ; if ( ! isset ( $config_intern -> scriptPath )) echo " disabled " ;
2003-09-11 19:12:13 +00:00
echo " value= \" " ; echo _ ( 'Quota' ); echo " \" > \n <br> " ;
echo " <input name= \" next_final \" type= \" submit \" disabled value= \" " ; echo _ ( 'Final' );
2003-09-20 10:15:24 +00:00
echo " \" > " ;
2003-10-04 18:44:18 +00:00
if ( isset ( $account_old )) {
2003-09-20 10:15:24 +00:00
echo " <br><br> " ;
echo _ ( " Reset all changes. " );
echo " <br> " ;
echo " <input name= \" next_reset \" type= \" submit \" value= \" " ; echo _ ( 'Undo' );
echo " \" > \n " ;
}
echo " </fieldset></td></tr></table></td> \n <td valign= \" top \" > " ;
2003-09-12 11:56:50 +00:00
echo " <table border=0 width= \" 100% \" > \n <tr> \n <td> " ;
2003-09-15 16:22:04 +00:00
echo " <fieldset class= \" groupedit-middle \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-09-12 11:56:50 +00:00
echo _ ( " Save profile " );
2003-09-15 16:22:04 +00:00
echo " </b></legend> \n <table border=0 width= \" 100% \" > \n <tr> \n <td> " ;
2003-09-12 11:56:50 +00:00
echo '<input name="f_finish_safeProfile" type="text" size="30" maxlength="50">' ;
2003-09-20 07:59:19 +00:00
echo " </td><td><input name= \" save \" type= \" submit \" $disabled value= \" " ;
2003-09-12 11:56:50 +00:00
echo _ ( 'Save profile' );
2003-10-17 07:58:43 +00:00
echo '"></td><td><a href="../help.php?HelpNumber=457" target="lamhelp">' . _ ( 'Help' );
2003-09-12 11:56:50 +00:00
echo " </a></td> \n </tr> \n </table> \n </fieldset> \n </td></tr> \n <tr><td> \n " ;
2003-09-12 16:50:55 +00:00
echo " <fieldset class= \" groupedit-bright \" ><legend class= \" groupedit-bright \" ><b> " ;
2003-10-04 18:44:18 +00:00
if ( $account_old ) echo _ ( 'Modify' );
2003-09-11 16:55:57 +00:00
else echo _ ( 'Create' );
echo " </b></legend> \n " ;
echo " <table border=0 width= \" 100% \" > " ;
2003-10-21 13:40:13 +00:00
// Ask if gidNumbers of primary group members should be changed
2003-10-04 18:44:18 +00:00
if (( $account_old ) && ( $account_new -> general_uidNumber != $account_old -> general_uidNumber )) {
2003-09-11 16:55:57 +00:00
echo '<tr><td>' ;
echo '<input name="f_final_changegids" type="checkbox"' ;
2003-10-04 18:44:18 +00:00
if ( $final_changegids ) echo ' checked ' ;
2003-09-11 16:55:57 +00:00
echo ' >' ;
echo _ ( 'Change GID-Number of all users in group to new value' );
echo '</td></tr>' . " \n " ;
}
2003-09-12 11:56:50 +00:00
echo " <tr><td><input name= \" create \" type= \" submit \" $disabled value= \" " ;
2003-10-04 18:44:18 +00:00
if ( $account_old ) echo _ ( 'Modify Account' );
2003-09-11 16:55:57 +00:00
else echo _ ( 'Create Account' );
2003-09-12 11:56:50 +00:00
echo '">' . " \n " ;
echo " </td></tr></table></fieldset> \n </td></tr></table> \n </tr></table> " ;
2003-09-11 16:55:57 +00:00
break ;
case 'finish' :
// Final Settings
echo '<input name="select" type="hidden" value="finish">' ;
2003-10-23 11:30:33 +00:00
echo " <fieldset class= \" groupedit-bright \" ><legend class= \" groupedit-bright \" ><b> " . _ ( 'Note' ) . " </b></legend> \n " ;
2003-09-16 15:20:48 +00:00
echo " <table border=0 width= \" 100% \" > " ;
2003-09-11 16:55:57 +00:00
echo '<tr><td>' ;
echo _ ( 'Group' ) . ' ' ;
2003-10-04 18:44:18 +00:00
echo $account_new -> general_username ;
if ( $account_old ) echo ' ' . _ ( 'has been modified' ) . '.' ;
2003-09-11 16:55:57 +00:00
else echo ' ' . _ ( 'has been created' ) . '.' ;
echo '</td></tr>' . " \n " . '<tr><td>' ;
2003-10-04 18:44:18 +00:00
if ( ! $account_old )
2003-09-11 16:55:57 +00:00
{ echo ' <input name="createagain" type="submit" value="' ; echo _ ( 'Create another group' ); echo '">' ; }
2003-10-17 16:04:57 +00:00
echo '</td>' . " \n " . '<td>' .
'<input name="outputpdf" type="submit" value="' ; echo _ ( 'Create PDF file' ); echo '">' .
'</td>' . " \n " . '<td>' .
2003-09-11 16:55:57 +00:00
'<input name="backmain" type="submit" value="' ; echo _ ( 'Back to group list' ); echo '">' .
'</td></tr></table></fieldset' . " \n " ;
break ;
}
// Print end of HTML-Page
echo '</form></body></html>' ;
?>