From 6fa1d593704bc08f2f8d9f28adb4b9b6f11da7d2 Mon Sep 17 00:00:00 2001 From: opensides Date: Sat, 29 Oct 2005 06:58:47 +0000 Subject: [PATCH] reanabled the possibility to export xls with php4 created a file for people using php5 when we are thinking of a better solution git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@1751 594d385d-05f5-0310-b6e9-bd551577e9d8 --- contrib/opensides/README.OpenSides | 6 + html/getxls.php | 24 +- html/getxls.php5 | 389 +++++++++++++++++++++++++++++ 3 files changed, 408 insertions(+), 11 deletions(-) create mode 100644 html/getxls.php5 diff --git a/contrib/opensides/README.OpenSides b/contrib/opensides/README.OpenSides index ff6a89c38..d8fd3d2d0 100644 --- a/contrib/opensides/README.OpenSides +++ b/contrib/opensides/README.OpenSides @@ -12,6 +12,7 @@ nagios.README - how to add the right entry to make the nagios plugin work xls-export.README - how to add the right entry to make the xls export xork + The php_writeexcel library is coming from http://www.bettina-attack.de/jonny/projects/php_writeexcel/ @@ -20,6 +21,11 @@ Author : LICENSE : GNU LESSER GENERAL PUBLIC LICENSE +Bug: + +to make it work under php5 you have to copy the file getxls.php5 on getxls.php +by default it only work with php4 + Benoit Mortier Guillaume Delecourt Vincent Seynhaeve diff --git a/html/getxls.php b/html/getxls.php index d50480fce..c8506ff11 100644 --- a/html/getxls.php +++ b/html/getxls.php @@ -2,6 +2,8 @@ /* This code is part of GOsa (https://gosa.gonicus.de) Copyright (C) 2003 Cajus Pollmeier + Copyright (C) 2005 Guillaume Delecourt + Copyright (C) 2005 Vincent Seynhaeve 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 @@ -35,9 +37,9 @@ function dump_ldap ($mode= 0) $dn=$d.$n; // echo $dn ; $fname = tempnam("/tmp", "demo.xls"); - $workbook= new writeexcel_workbook($fname); + $workbook=& new writeexcel_workbook($fname); - $title_bold= $workbook->addformat(array( + $title_bold=& $workbook->addformat(array( bold => 1, color => 'black', size => 10, @@ -50,7 +52,7 @@ function dump_ldap ($mode= 0) $user= $ldap->gen_xls($dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); $intitul=array("Date de naissance:","Sexe:","Nom/prénom","Langue"); - $worksheet= $workbook->addworksheet('Users'); + $worksheet=& $workbook->addworksheet('Users'); $worksheet->set_column('A:B', 32); @@ -178,11 +180,11 @@ function dump_ldap ($mode= 0) // It will be called demo.xls header('Content-Disposition: attachment; filename="demo.xls"'); - // The PDF source is in original.xl + // The source is in original.xls readfile($fname); } - elseif($mode == 3){ // Full LDIF Export ! + elseif($mode == 3){ // Full Export ! $dn = base64_decode($_GET['dn']); //data about users @@ -203,12 +205,12 @@ function dump_ldap ($mode= 0) $fname = tempnam("/tmp", "demo.xls"); - $workbook = new writeexcel_workbook($fname); - $worksheet = $workbook->addworksheet('Users'); - $worksheet2 = $workbook->addworksheet('Groups'); - $worksheet3 = $workbook->addworksheet('Servers'); - $worksheet4 = $workbook->addworksheet('Computers'); - $worksheet5 = $workbook->addworksheet('Adressbook'); + $workbook =& new writeexcel_workbook($fname); + $worksheet =& $workbook->addworksheet('Users'); + $worksheet2 =& $workbook->addworksheet('Groups'); + $worksheet3 =& $workbook->addworksheet('Servers'); + $worksheet4 =& $workbook->addworksheet('Computers'); + $worksheet5 =& $workbook->addworksheet('Adressbook'); $worksheet->set_column('A:B', 32); $worksheet2->set_column('A:B', 32); diff --git a/html/getxls.php5 b/html/getxls.php5 new file mode 100644 index 000000000..d50480fce --- /dev/null +++ b/html/getxls.php5 @@ -0,0 +1,389 @@ +get_ldap_link(); + error_reporting (E_ALL & ~E_NOTICE); + + $display = ""; + if($mode == 2){ // Single Entry Export ! + $d = base64_decode($_GET['d']); + $n = base64_decode($_GET['n']); + // print_r($_GET); + $dn=$d.$n; + // echo $dn ; + $fname = tempnam("/tmp", "demo.xls"); + $workbook= new writeexcel_workbook($fname); + + $title_bold= $workbook->addformat(array( + bold => 1, + color => 'black', + size => 10, + font => 'Helvetica' + )); + + + switch ($d){ + case "ou=people," : + $user= $ldap->gen_xls($dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); + $intitul=array("Date de naissance:","Sexe:","Nom/prénom","Langue"); + + $worksheet= $workbook->addworksheet('Users'); + $worksheet->set_column('A:B', 32); + + + $user_nbr=count($user); + $r=1; + for($i=1;$i<$user_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,"uid : ".$user[$i][0],$title_bold); + for($j=1;$j<5;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j-1]); + $worksheet->write('B'.$r,$user[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + break; + + case "ou=groups,": $groups= $ldap->gen_xls($dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); + $intitul=array("Membres:"); + $worksheet =& $workbook->addworksheet('Groups'); + $worksheet->set_column('A:B', 32); + + //count number of groups + $groups_nbr=count($groups); + $r=1; + for($i=1;$i<$groups_nbr;$i++) + { + $worksheet->write('A'.$r++,"uid : ".$groups[$i][0][0],$title_bold); + for($j=1;$j<=2;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j-1]); + for($k=0;$k<= $groups[$i][$j]['count'];$k++) + { + $worksheet->write('B'.$r,$groups[$i][$j][$k]); + $r++; + } + } + } + break; + + case "ou=computers,": $computers= $ldap->gen_xls($dn,"(objectClass=*)",array("cn","description","uid")); + $intitul=array("Description:","Uid:"); + $worksheet =& $workbook->addworksheet('Computers'); + $worksheet->set_column('A:B', 32); + + //count number of computers + $computers_nbr=count($computers); + $r=1; + for($i=1;$i<$computers_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,"cn : ".$computers[$i][0],$title_bold); + for($j=1;$j<3;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j-1]); + $worksheet->write('B'.$r,$computers[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + break; + + case "ou=servers,ou=systems,": $servers= $ldap->gen_xls($dn,"(objectClass=*)",array("cn")); + $intitul=array("cn:"); + + $worksheet =& $workbook->addworksheet('Servers'); + $worksheet->set_column('A:B', 32); + + //count number of servers + $servers_nbr=count($servers); + $r=1; + $worksheet->write('A'.$r++,"Servers : ",$title_bold); + for($i=1;$i<$servers_nbr;$i++) + { + for($j=0;$j<1;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j]); + $worksheet->write('B'.$r,$servers[$i][$j]); + } + } + break; + + case "dc=addressbook,": //data about addressbook + $address= $ldap->gen_xls($dn,"(objectClass=*)",array("cn","displayName","facsimileTelephoneNumber","givenName","homePhone","homePostalAddress","initials","l","mail","mobile","o","ou","pager","telephoneNumber","postalAddress","postalCode","sn","st","title")); + + $intitul=array("cn","DisplayName:","Fax:","Nom/prénom:","Numero de telelphone:","Adresse du domicile:","Initiales:","Ville:","Adresse email:","GSM:","Societe:","Poste:","Pager:","Numero de telelphone:","Adresse:","Code postal:","Sn:","Pays:","Fonction:"); + + $worksheet =& $workbook->addworksheet('Servers'); + $worksheet->set_column('A:B', 32); + + //count number of entries + $address_nbr=count($address); + $r=1; + for($i=1;$i<$address_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,"cn : ".$address[$i][0],$title_bold); + for($j=1;$j<19;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j]); + $worksheet->write('B'.$r,$address[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + + break; + + default: echo "error!!"; + } + + $workbook->close(); + + + // We'll be outputting a xls + header('Content-type: application/x-msexcel'); + + // It will be called demo.xls + header('Content-Disposition: attachment; filename="demo.xls"'); + + // The PDF source is in original.xl + readfile($fname); + + } + elseif($mode == 3){ // Full LDIF Export ! + $dn = base64_decode($_GET['dn']); + + //data about users + $user= $ldap->gen_xls("ou=people,".$dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); + $user_intitul=array("Date de naissance:","Sexe:","Nom/prénom","Langue"); + //data about groups + $groups= $ldap->gen_xls("ou=groups,".$dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); + $groups_intitul=array("Membres:"); + //data about computers + $computers= $ldap->gen_xls("ou=computers,".$dn,"(objectClass=*)",array("cn","description","uid")); + $computers_intitul=array("Description:","Uid:"); + //data about servers + $servers= $ldap->gen_xls("ou=servers,ou=systems,".$dn,"(objectClass=*)",array("cn")); + $servers_intitul=array("cn:"); + //data about addressbook + $address= $ldap->gen_xls("dc=addressbook,".$dn,"(objectClass=*)",array("cn","displayName","facsimileTelephoneNumber","givenName","homePhone","homePostalAddress","initials","l","mail","mobile","o","ou","pager","telephoneNumber","postalAddress","postalCode","sn","st","title")); + $address_intitul=array("cn","DisplayName:","Fax:","Nom/prénom:","Numero de telelphone:","Adresse du domicile:","Initiales:","Ville:","Adresse email:","GSM:","Societe:","Poste:","Pager:","Numero de telelphone:","Adresse:","Code postal:","Sn:","Pays:","Fonction:"); + + + $fname = tempnam("/tmp", "demo.xls"); + $workbook = new writeexcel_workbook($fname); + $worksheet = $workbook->addworksheet('Users'); + $worksheet2 = $workbook->addworksheet('Groups'); + $worksheet3 = $workbook->addworksheet('Servers'); + $worksheet4 = $workbook->addworksheet('Computers'); + $worksheet5 = $workbook->addworksheet('Adressbook'); + + $worksheet->set_column('A:B', 32); + $worksheet2->set_column('A:B', 32); + $worksheet3->set_column('A:B', 32); + $worksheet4->set_column('A:B', 32); + $worksheet5->set_column('A:B', 32); + + $title_bold =& $workbook->addformat(array( + bold => 1, + color => 'black', + size => 10, + font => 'Helvetica' + )); + + + //count number of users + $user_nbr=count($user); + $r=1; + for($i=1;$i<$user_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,"uid : ".$user[$i][0],$title_bold); + for($j=1;$j<5;$j++) + { + $r++; + $worksheet->write('A'.$r,$user_intitul[$j-1]); + $worksheet->write('B'.$r,$user[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + + //count number of groups + $groups_nbr=count($groups); + $r=1; + for($i=1;$i<$groups_nbr;$i++) + { + $worksheet2->write('A'.$r++,"uid : ".$groups[$i][0][0],$title_bold); + for($j=1;$j<=2;$j++) + { + $r++; + $worksheet2->write('A'.$r,$group_intitul[$j-1]); + for($k=0;$k<= $groups[$i][$j]['count'];$k++) + { + $worksheet2->write('B'.$r,$groups[$i][$j][$k]); + $r++; + } + } + } + + //count number of servers + $servers_nbr=count($servers); + $r=1; + $worksheet3->write('A'.$r++,"Servers : ",$title_bold); + for($i=1;$i<$servers_nbr;$i++) + { + for($j=0;$j<1;$j++) + { + $r++; + $worksheet3->write('A'.$r,$servers_intitul[$j]); + $worksheet3->write('B'.$r,$servers[$i][$j]); + } + } + + //count number of computers + $computers_nbr=count($computers); + $r=1; + for($i=1;$i<$computers_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet4->write('A'.$r++,"cn : ".$computers[$i][0],$title_bold); + for($j=1;$j<3;$j++) + { + $r++; + $worksheet4->write('A'.$r,$computers_intitul[$j-1]); + $worksheet4->write('B'.$r,$computers[$i][$j]); + } + $worksheet4->write('A'.$r++,""); + } + + //count number of entries + $address_nbr=count($address); + $r=1; + for($i=1;$i<$address_nbr;$i++) + { + if($i>1) + $worksheet5->write('A'.$r++,""); + $worksheet5->write('A'.$r++,"cn : ".$address[$i][0],$title_bold); + for($j=1;$j<19;$j++) + { + $r++; + $worksheet5->write('A'.$r,$address_intitul[$j]); + $worksheet5->write('B'.$r,$address[$i][$j]); + } + $worksheet5->write('A'.$r++,""); + } + $workbook->close(); + + + // We'll be outputting a xls + header('Content-type: application/x-msexcel'); + + // It will be called demo.xls + header('Content-Disposition: attachment; filename="demo.xls"'); + + // The PDF source is in original.xl + readfile($fname); + + } + elseif($mode == 4){ // IVBB LDIF Export + $dn = base64_decode($_GET['dn']); + /*$display= $ldap->gen_ldif($dn,"(objectClass=ivbbEntry)",array( + "GouvernmentOrganizationalUnit","houseIdentifier","vocation", + "ivbbLastDeliveryCollective","gouvernmentOrganizationalPersonLocality", + "gouvernmentOrganizationalUnitDescription","gouvernmentOrganizationalUnitSubjectArea", + "functionalTitle","role","certificateSerialNumber","userCertificate","publicVisible", + "telephoneNumber","seeAlso","description","title","x121Address","registeredAddress", + "destinationIndicator","preferredDeliveryMethod","telexNumber","teletexTerminalIdentifier", + "telephoneNumber","internationaliSDNNumber","facsimileTelephoneNumber","street", + "postOfficeBox","postalCode","postalAddress","physicalDeliveryOfficeName","ou", + "st","l","audio","businessCategory","carLicense","departmentNumber","displayName", + "employeeNumber","employeeType","givenName","homePhone","homePostalAddress", + "initials","jpegPhoto","labeledURI","mail","manager","mobile","o","pager","photo", + "roomNumber","secretary","userCertificate","x500uniqueIdentifier","preferredLanguage", + "userSMIMECertificate","userPKCS12"));*/ + + echo $display; + } +} + + +/* Basic setup, remove eventually registered sessions */ +@require_once ("../include/php_setup.inc"); +@require_once ("functions.inc"); +error_reporting (E_ALL); +session_start (); + +/* Logged in? Simple security check */ +if (!isset($_SESSION['ui'])){ + gosa_log ("Error: getldif.php called without session"); + header ("Location: ../index.php"); + exit; +} +$ui= $_SESSION["ui"]; +$config= $_SESSION['config']; + +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: no-cache"); +header("Pragma: no-cache"); +header("Cache-Control: post-check=0, pre-check=0"); + +header("Content-type: text/plain"); + +/* Check ACL's */ +$acl= get_permissions ($config->current['BASE'], $ui->subtreeACL); +$acl= get_module_permission($acl, "all", $config->current['BASE']); +if (chkacl($acl, "all") != ""){ + header ("Location: ../index.php"); + exit; +} + +switch ($_GET['ivbb']){ + case 2: dump_ldap (2); + break; + + case 3: dump_ldap (3); + break; + + case 4: dump_ldap (4); + break; + + default: + echo "Error in ivbb parameter. Request aborted."; +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> -- 2.30.2