134 lines
3.5 KiB
PHP
134 lines
3.5 KiB
PHP
<?php
|
|
/*
|
|
$Id$
|
|
|
|
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
|
|
|
This code is based on phpLDAPadmin.
|
|
Copyright (C) 2004 David Smith and phpLDAPadmin developers
|
|
|
|
The original code was modified to fit for LDAP Account Manager by Roland Gruber.
|
|
Copyright (C) 2005 Roland Gruber
|
|
|
|
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
|
|
|
|
|
|
*/
|
|
|
|
|
|
/**
|
|
* @package lists
|
|
* @subpackage tree
|
|
* @author The phpLDAPadmin development team
|
|
* @author Roland Gruber
|
|
*/
|
|
|
|
/** security functions */
|
|
include_once('../../lib/security.inc');
|
|
/** export functions */
|
|
require '../../lib/export.inc';
|
|
/** common functions */
|
|
require '../../lib/tree.inc';
|
|
/** access to configuration */
|
|
include_once('../../lib/config.inc');
|
|
/** LDAP functions */
|
|
include_once('../../lib/ldap.inc');
|
|
/** status messages */
|
|
include_once('../../lib/status.inc');
|
|
|
|
// start session
|
|
startSecureSession();
|
|
|
|
setlanguage();
|
|
|
|
$base_dn = isset($_POST['dn']) ? $_POST['dn']:NULL;
|
|
$format = isset( $_POST['format'] ) ? $_POST['format'] : "unix";
|
|
$scope = isset($_POST['scope']) ? $_POST['scope'] : 'base';
|
|
$filter = isset($_POST['filter']) ? $_POST['filter'] : 'objectclass=*';
|
|
$target = isset($_POST['target']) ? $_POST['target'] : 'display';
|
|
$save_as_file = isset( $_POST['save_as_file'] ) && $_POST['save_as_file'] == 'on';
|
|
|
|
// add system attributes if needed
|
|
$attributes = array();
|
|
if( isset( $_POST['sys_attr'] ) ){
|
|
array_push($attributes,'*');
|
|
array_push($attributes,'+');
|
|
}
|
|
|
|
$exporter_id = $_POST['exporter_id'];
|
|
|
|
// Initialisation of other variables
|
|
$rdn = get_rdn( $base_dn );
|
|
$friendly_rdn = get_rdn( $base_dn, 1 );
|
|
$extension = $exporters[$exporter_id]['extension'];
|
|
|
|
//set the default CRLN to Unix format
|
|
$br = "\n";
|
|
|
|
// default case not really needed
|
|
switch( $format ) {
|
|
case 'win':
|
|
$br = "\r\n";
|
|
break;
|
|
case 'mac':
|
|
$br = "\r";
|
|
break;
|
|
case 'unix':
|
|
default:
|
|
$br = "\n";
|
|
}
|
|
|
|
// get the decoree,ie the source
|
|
$plaLdapExporter = new PlaLdapExporter($filter,$base_dn,$scope,$attributes);
|
|
|
|
// the decorator
|
|
// do it that way for the moment
|
|
$exporter = NULL;
|
|
|
|
switch($exporter_id){
|
|
case 0:
|
|
$exporter = new PlaLdifExporter($plaLdapExporter);
|
|
break;
|
|
case 1:
|
|
$exporter = new PlaDsmlExporter($plaLdapExporter);
|
|
break;
|
|
case 2:
|
|
$exporter = new PlaVcardExporter($plaLdapExporter);
|
|
break;
|
|
case 3:
|
|
$exporter = new PlaCSVExporter($plaLdapExporter);
|
|
break;
|
|
}
|
|
|
|
// set the CLRN
|
|
$exporter->setOutputFormat($br);
|
|
|
|
// prevent script from bailing early for long search
|
|
@set_time_limit( 0 );
|
|
|
|
// send the header
|
|
if( $save_as_file )
|
|
header( "Content-type: application/download" );
|
|
else
|
|
header( "Content-type: text/plain" );
|
|
header( "Content-Disposition: filename=$friendly_rdn.".$exporters[$exporter_id]['extension'] );
|
|
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
|
|
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
|
|
header( "Cache-Control: post-check=0, pre-check=0", false );
|
|
|
|
// and export
|
|
$exporter->export();
|
|
?>
|