2003-12-27 11:21:00 +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
*/
/*
* Variables in basearray which are no objects :
* type : Type of account . Can be user , group , host , domain
* attributes : List of all attributes , how to get them and are theiy required or optional
* dn : current DN without uid = or cn =
* dn_orig : old DN if account was loaded with uid = or cn =
*/
/* This class contains all account LDAP attributes
* and funtioncs required to deal with account
* account can only be created when it should be added
* to an array .
* $base is the name of account_container in session
*
*/
/* Main - Module . Contains basic module functions have to be loaded first before
* any other module . This module doesn ' t support any ldap functions
* ldap functions in this module are only dummy functions
* It also chooses which page to show .
*/
2004-06-08 18:54:37 +00:00
class main extends baseModule {
2004-06-13 19:58:58 +00:00
/**
* Returns meta data that is interpreted by parent class
*
* @ return array array with meta data
*/
function get_metaData () {
$return = array ();
// manages no accounts
$return [ " account_types " ] = array ();
2004-06-14 16:05:36 +00:00
// alias name
$return [ " alias " ] = _ ( 'Main' );
2004-09-09 07:10:14 +00:00
// help Entries
$return [ 'help' ] = array ( 'user' => array ( 'suffix' => array ( " ext " => " FALSE " , " Headline " => _ ( " Suffix " ), " Text " => _ ( " Position in ldap-tree where the user should be created. " ))),
'group' => array ( 'suffix' => array ( " ext " => " FALSE " , " Headline " => _ ( " Suffix " ), " Text " => _ ( " Position in ldap-tree where the group should be created. " ))),
'host' => array ( 'suffix' => array ( " ext " => " FALSE " , " Headline " => _ ( " Suffix " ), " Text " => _ ( " Position in ldap-tree where the host should be created. " ))),
'selectLoadProfile' => array ( " ext " => " FALSE " , " Headline " => _ ( " Load profile " ), " Text " => _ ( " You can select a previous defined profile here. This will set all fields to the profile values. " )),
'saveProfile' => array ( " ext " => " FALSE " , " Headline " => _ ( " Save profile " ), " Text " => _ ( " This will make a profile of the current account. The saved values are the same as in the profile editor. Profile names may contain the letters a-z, 0-9 and -_. " )));
2004-06-13 19:58:58 +00:00
return $return ;
}
2003-12-27 11:21:00 +00:00
// Constructor
2004-06-08 18:54:37 +00:00
function init ( $base ) {
2003-12-27 11:21:00 +00:00
// Set counter to first page
$this -> current_page = 0 ;
// reset subpage counter
$this -> subpage = '' ;
// Get local copy of name of account_container in session
$this -> base = $base ;
}
// Variables
// This variable stores the number of the current displayed page
var $current_page ;
// This variable os set to the pagename of a subpage if it should be displayed
var $subpage ;
// name of accountContainer so we can read other classes in accuontArray
var $base ;
2003-12-30 15:36:30 +00:00
2003-12-27 11:21:00 +00:00
function module_ready () {
return true ;
}
2004-02-09 18:11:01 +00:00
/* This functions return true
* if all needed settings are done
*/
function module_complete () {
if ( ! $this -> module_ready ()) return false ;
return true ;
}
2003-12-30 15:36:30 +00:00
/* This function returns a list of all html - pages in module
* This is usefull for mass upload and pdf - files
* because lam can walk trough all pages itself and do some
* error checkings
*/
function pages () {
return array ( 'attributes' , 'finish' );
}
2004-01-18 12:52:52 +00:00
/*
*/
function get_help ( $id ) {
switch ( $id ) {
case " description " :
return array ( " ext " => " FALSE " , " Headline " => _ ( " Description " ),
" Text " => _ ( " Host Description. " ));
break ;
}
return false ;
}
2003-12-30 15:36:30 +00:00
// Dummy functions to make module compatible
function get_attributes () {
return array ();
}
2003-12-27 11:21:00 +00:00
// Dummy functions to make module compatible
function load_attributes ( $attr ) {
return 0 ;
}
// Dummy functions to make module compatible
function save_attributes () {
return array ();
}
2003-12-30 15:36:30 +00:00
function delete_attributes ( $post ) {
2004-01-10 11:47:48 +00:00
return 0 ;
2003-12-30 15:36:30 +00:00
}
/* Write variables into object and do some regexp checks
*/
2004-01-18 12:52:52 +00:00
function proccess_attributes ( $post , $profile = false ) {
2003-12-30 15:36:30 +00:00
// change dn
if ( $post [ 'suffix' ] != '' ) $_SESSION [ $this -> base ] -> dn = $post [ 'suffix' ];
// load profile
if ( $post [ 'selectLoadProfile' ] && $post [ 'loadProfile' ]) {
// *** fixme load*Profile must return array in the same way ldap_get_attributes does.
$function = '$newattributes = load' . ucfirst ( $scope ) . 'Profile($post[\'selectLoadProfile\']);' ;
eval ( $function );
// pass newattributes to each module
$modules = array_keys ( $_SESSION [ $this -> base ] -> module );
foreach ( $modules as $module ) $_SESSION [ $this -> base ] -> module [ $module ] -> load_attributes ( $newattributes );
return 0 ;
}
// save account
if ( $post [ 'create' ]) {
2004-01-10 11:47:48 +00:00
$errors = $_SESSION [ $this -> base ] -> save_account ();
if ( is_array ( $errors )) return array ( $errors );
2003-12-30 15:36:30 +00:00
// return name of subpage
return 'finish' ;
}
// save profile
if ( $post [ 'saveProfile' ]) {
2004-01-27 19:07:31 +00:00
if ( $post [ 'selectSaveProfile' ] == '' ) $errors [ 'saveProfile' ][] = array ( 'ERROR' , _ ( 'Save profile' ), _ ( 'No profilename given.' ));
2003-12-30 15:36:30 +00:00
else {
$function = 'save' . ucfirst ( $scope ) . 'Profile();' ;
eval ( $function );
2004-01-27 19:07:31 +00:00
if ( $function ) $errors [ 'saveProfile' ][] = array ( 'INFO' , _ ( 'Save profile' ), _ ( 'New profile created.' ));
else $errors [ 'saveProfile' ][] = array ( 'ERROR' , _ ( 'Save profile' ), _ ( 'Wrong profilename given.' ));
2003-12-30 15:36:30 +00:00
}
2004-01-18 12:52:52 +00:00
if ( is_array ( $errors ) && ! $profile ) return $errors ;
2003-12-30 15:36:30 +00:00
else return 0 ;
}
return 0 ;
}
/* Write variables into object and do some regexp checks
*/
2004-01-18 12:52:52 +00:00
function proccess_finish ( $post , $profile = false ) {
2003-12-30 15:36:30 +00:00
if ( $post [ 'createagain' ]) {
// Reset objects
$modules = array_keys ( $_SESSION [ $this -> base ] -> module );
foreach ( $modules as $module )
if ( $module != 'main' ) unset ( $_SESSION [ $this -> base ] -> module [ $module ]);
// Reset accountContainer
$_SESSION [ $this -> base ] -> dn = '' ;
$_SESSION [ $this -> base ] -> dn_orig = '' ;
$_SESSION [ $this -> base ] -> attributes = array ();
$_SESSION [ $this -> base ] -> order = array ();
$this -> current_page = 0 ;
$this -> subpage = '' ;
// Add all required objects etc.
$_SESSION [ $this -> base ] -> new_account ();
return 0 ;
}
if ( $post [ 'backmain' ]) {
// Return to *-list
// *** fixme unset accountContainer in session
metaRefresh ( " ../lists/list " . $_SESSION [ $this -> base ] -> type . " s.php " );
exit ;
}
if ( $post [ 'outputpdf' ]) {
// Create / display PDf-file
$function = 'create' . ucfirst ( $_SESSION [ $this -> base ] -> type ) . 'PDF(array($_SESSION[$this->base]));' ;
eval ( $function );
exit ;
}
2003-12-27 11:21:00 +00:00
}
2004-01-18 12:52:52 +00:00
function display_html_attributes ( $post , $profile = false ) {
2004-02-09 18:11:01 +00:00
$modules = array_keys ( $_SESSION [ $this -> base ] -> module );
if ( ! $profile ) {
2004-01-18 12:52:52 +00:00
$disabled = false ;
2004-02-09 18:11:01 +00:00
foreach ( $modules as $module ) {
if ( ! $_SESSION [ $this -> base ] -> module [ $module ] -> module_complete ()) {
$disabled = true ;
$table [] = array ( 0 => array ( 'kind' => 'message' , 'type' => 'ERROR' , 'headline' => _ ( 'Check module' ),
2004-02-23 15:59:56 +00:00
'text' => sprintf ( _ ( 'Please set up all required attributes on %s page.' ), $_SESSION [ $this -> base ] -> module [ $module ] -> get_alias ( $this -> base -> type )) ));
2004-02-09 18:11:01 +00:00
}
}
2003-12-27 11:21:00 +00:00
}
2004-02-09 18:11:01 +00:00
if ( count ( $table ) != 0 ) $return [] = array ( 0 => array ( 'kind' => 'table' , 'value' => $table ) );
2003-12-27 11:21:00 +00:00
// loop through all suffixes
2004-04-17 14:10:32 +00:00
$rootsuffix = call_user_func ( array ( $_SESSION [ 'config' ], 'get_' . ucfirst ( $_SESSION [ $this -> base ] -> type ) . 'Suffix' ));
2004-09-12 10:27:14 +00:00
foreach ( $_SESSION [ 'ldap' ] -> search_units ( $rootsuffix ) as $suffix ) {
2003-12-27 11:21:00 +00:00
if ( $_SESSION [ $this -> base ] -> dn ) {
2004-01-18 12:52:52 +00:00
if ( $_SESSION [ $this -> base ] -> dn == $suffix ) $option_selected = $suffix ;
else $suffixes [] = $suffix ;
2003-12-27 11:21:00 +00:00
}
2004-01-18 12:52:52 +00:00
else $suffixes [] = $suffix ;
2003-12-27 11:21:00 +00:00
}
2004-01-18 12:52:52 +00:00
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( 'Suffix' ) ),
1 => array ( 'kind' => 'select' , 'name' => 'suffix' , 'options' => $suffixes ,
2004-04-17 14:10:32 +00:00
'option_selected' => array ( $option_selected ) ),
2004-01-18 12:52:52 +00:00
2 => array ( 'kind' => 'help' , 'value' => 'suffix' ));
if ( ! $profile ) {
// Get list of profiles
$function = '$profilelist = get' . ucfirst ( $_SESSION [ $this -> base ] -> type ) . 'Profiles();' ;
eval ( $function );
if ( count ( $profilelist ) != 0 ) {
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( " Load profile " ) ),
1 => array ( 'kind' => 'select' , 'name' => 'selectLoadProfile' , 'options' => $profilelist ),
2 => array ( 'kind' => 'help' , 'value' => 'selectLoadProfile' ));
}
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => _ ( " Save profile " ) ),
1 => array ( 'kind' => 'table' , 'value' => array ( 0 => array (
0 => array ( 'kind' => 'input' , 'name' => 'selectSaveProfile' , 'type' => 'text' , 'size' => '30' ,
'maxlength' => '255' , ),
1 => array ( 'kind' => 'input' , 'name' => 'saveProfile' , 'type' => 'submit' ,
'value' => _ ( 'Save profile' ), 'disabled' => $disabled ))) ),
2 => array ( 'kind' => 'help' , 'value' => 'saveProfile' ));
2004-02-08 15:57:55 +00:00
if ( $_SESSION [ $this -> base ] -> dn_orig != '' ) $text = _ ( 'Modify Account' );
else $text = _ ( 'Create Account' );
$return [] = array ( 0 => array ( 'kind' => 'text' , 'text' => $text ),
1 => array ( 'kind' => 'input' , 'type' => 'submit' , 'name' => 'create' , 'value' => $text ),
2 => array ( 'kind' => 'help' , 'value' => 'create' ));
2003-12-27 11:21:00 +00:00
}
2004-01-18 12:52:52 +00:00
return $return ;
2003-12-27 11:21:00 +00:00
}
2004-01-18 12:52:52 +00:00
function display_html_delete ( $post , $profile = false ) {
2003-12-30 15:36:30 +00:00
return 0 ;
}
2003-12-27 11:21:00 +00:00
/* This page will be shown if an account
* has been saved
*/
2004-01-18 12:52:52 +00:00
function display_html_finish ( $post , $profile = false ) {
2003-12-27 11:21:00 +00:00
// Show success message
if ( $_SESSION [ $this -> base ] -> dn_orig == '' ) $kind = _ ( 'created' );
else $kind = _ ( 'modified' );
$text = sprintf ( _ ( '%s has been %s.' ), ucfirst ( $_SESSION [ $this -> base ] -> type ), $kind );
2004-01-18 12:52:52 +00:00
if ( ! $profile ) {
$return [] = array ( 0 => array ( 'kind' => 'message' , 'type' => 'INFO' , 'headline' => _ ( 'LDAP operation successful.' ),
'text' => $text ));
$return [] = array ( 0 => array ( 'kind' => 'input' , 'type' => 'submit' , 'name' => 'createagain' ,
'value' => sprintf ( _ ( 'Create another %s' ), $_SESSION [ $this -> base ] -> type ) ),
1 => array ( 'kind' => 'input' , 'type' => 'submit' , 'name' => 'outputpdf' ,
'value' => _ ( 'Create PDF file' ) ),
2 => array ( 'kind' => 'input' , 'type' => 'submit' , 'name' => 'backmain' ,
'value' => sprintf ( _ ( 'Back to %s list' ), $_SESSION [ $this -> base ] -> type ) ));
2003-12-27 11:21:00 +00:00
}
2004-01-18 12:52:52 +00:00
return $return ;
2003-12-27 11:21:00 +00:00
}
2004-06-03 14:26:48 +00:00
function get_pdfFields ( $account_type = " user " ) {
return array ( 'dn' );
}
2004-05-29 19:20:28 +00:00
function get_pdfEntries ( $account_type = " user " ) {
return array ( 'main_dn' => array ( '<block><key>' . _ ( 'DN' ) . '</key><value>' . $_SESSION [ $this -> base ] -> dn . '</value></block>' ));
2004-05-24 21:39:57 +00:00
}
2004-04-03 14:47:33 +00:00
2003-12-27 11:21:00 +00:00
}
?>