From: cajus Date: Mon, 14 Apr 2008 08:37:40 +0000 (+0000) Subject: Moved getxls X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=c3b586dcb3d8a4d85f5a3eb4323730e127ed5b01;p=gosa.git Moved getxls git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@10388 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/gosa-core/html/getxls.php b/gosa-core/html/getxls.php deleted file mode 100644 index e75660e49..000000000 --- a/gosa-core/html/getxls.php +++ /dev/null @@ -1,519 +0,0 @@ -get_ldap_link(); - $display = ""; - - - if($mode == 2){ // Single Entry Export ! - - /* Get required attributes */ - $d = base64_decode($_GET['d']); - $n = base64_decode($_GET['n']); - - /* Create dn to search entries in */ - $dn=$d.$n; - - /* Create some strings */ - $date=date('dS \of F Y '); - $fname = tempnam("/tmp", "demo.xls"); - - /* Create xls workbench */ - $workbook= new writeexcel_workbook($fname); - - /* Create some styles to generate xls */ - $title_title= $workbook->addformat(array( - bold => 1, - color => 'green', - size => 11, - underline => 2, - font => 'Helvetica' - )); - - $title_bold= $workbook->addformat(array( - bold => 1, - color => 'black', - size => 10, - font => 'Helvetica' - )); - - # Create a format for the phone numbers - $f_phone = $workbook->addformat(); - $f_phone->set_align('left'); - $f_phone->set_num_format('\0#'); - - - /* If the switch reaches default (it should not), - this will be set to false, so nothig will be created ... */ - $save = true; - - /* Check which type of data was requested */ - switch ($d){ - - - /* PEOPLE - Get all peoples from this $dn - and put them into the xls work sheet */ - case get_people_ou() : - - $user = $ldap->gen_xls($dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); - $intitul = array(_("Birthday").":", _("Sex").":", _("Surname")."/"._("Given name").":",_("Language").":"); - - // name of the xls file - $name_section = _("Users"); - $worksheet = $workbook->addworksheet(_("Users")); - $worksheet->set_column('A:B', 51); - - $user_nbr = count($user); - $worksheet->write('A1',sprintf(_("User list of %s on %s"),$n,$date),$title_title); - $r=3; - for($i=1;$i<$user_nbr;$i++) - { - if($i>1) - $worksheet->write('A'.$r++,""); - $worksheet->write('A'.$r++,_("User ID").": ".$user[$i][0],$title_bold); - - for($j=1;$j<5;$j++) - { - $r++; - $worksheet->write('A'.$r,$intitul[$j-1]); - $user[$i][$j]=utf8_decode ($user[$i][$j]); - $worksheet->write('B'.$r,$user[$i][$j]); - } - $worksheet->write('A'.$r++,""); - } - break; - - - /* GROUPS - Get all groups from th $dn - and put them into the xls work sheet */ - case get_groups_ou(): - - /* Get group data */ - $groups = $ldap->gen_xls($dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); - $intitul = array(_("Members").":"); - - //name of the xls file - $name_section=_("Groups"); - - $worksheet = $workbook->addworksheet(_("Groups")); - $worksheet->set_column('A:B', 51); - - //count number of groups - $groups_nbr=count($groups); - $worksheet->write('A1', sprintf(_("Groups of %s on %s"), $n, $date),$title_title); - $r=3; - for($i=1;$i<$groups_nbr;$i++) - { - $worksheet->write('A'.$r++,_("User ID").": ".$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; - - - /* SYSTEMS - Get all systems from th $dn - and put them into the xls work sheet */ - case get_ou('systemsou'): - - $name_section=_("Servers"); - $computers= $ldap->gen_xls($dn,"(&(objectClass=*)(cn=*))",array("cn","description","uid")); - - $intitul=array(_("Description").":",_("User ID").":"); - $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++,_("Common name").": ".$computers[$i][0],$title_bold); - for($j=1;$j<3;$j++) - { - $r++; - $worksheet->write('A'.$r,$intitul[$j-1]); - $computers[$i][$j]=utf8_decode ($computers[$i][$j]); - $worksheet->write('B'.$r,$computers[$i][$j]); - } - $worksheet->write('A'.$r++,""); - } - break; - - /* SYSTEMS - Get all systems from th $dn - and put them into the xls work sheet */ - case get_ou('serverou'): $servers= $ldap->gen_xls($dn,"(objectClass=*)",array("cn")); - $intitul=array(_("Server name").":"); - - //name of the xls file - $name_section=_("Servers"); - - $worksheet = $workbook->addworksheet(_("Servers")); - $worksheet->set_column('A:B', 51); - - //count number of servers - $servers_nbr=count($servers); - $worksheet->write('A1',sprintf(_("Servers of %s on %s"), $n, $date),$title_title); - $r=3; - $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]); - $servers[$i][$j]=utf8_decode ($servers[$i][$j]); - $worksheet->write('B'.$r,$servers[$i][$j]); - } - } - break; - - case "dc=addressbook,": //data about addressbook - - /* ADDRESSBOOK - Get all addressbook entries from $dn - and put them into the xls work sheet */ - - $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(_("Common name").":",_("Display name").":",_("Fax").":", - _("Name")."/"._("Given name").":",_("Home phone").":", - _("Home postal address").":",_("Initials").":",_("Location").":", - _("Mail address").":",_("Mobile phone").":",_("City").":", - _("Postal address").":",_("Pager").":",_("Phone number").":", - _("Address").":",_("Postal code").":",_("Surname").":", - _("State").":",_("Function").":"); - - //name of the xls file - $name_section=_("Adressbook"); - - $worksheet = $workbook->addworksheet(_("Servers")); - $worksheet->set_column('A:B', 51); - - //count number of entries - $address_nbr=count($address); - $worksheet->write('A1',sprintf(_("Adressbook of %s on %s"),$n, $date),$title_title); - $r=3; - for($i=1;$i<$address_nbr;$i++) - { - if($i>1) - $worksheet->write('A'.$r++,""); - $worksheet->write('A'.$r++,_("Common Name").": ".$address[$i][0],$title_bold); - for($j=1;$j<19;$j++) - { - $r++; - $worksheet->write('A'.$r,$intitul[$j]); - $address[$i][$j]=utf8_decode ($address[$i][$j]); - $worksheet->write('B'.$r,$address[$i][$j],$f_phone); - } - $worksheet->write('A'.$r++,""); - } - - break; - default: - - $save = false; - echo "Specified parameter '".$d."' was not found in switch-case."; - } - - if($save){ - $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=xls_export_'.$name_section.".xls"); - - // The source is in original.xls - readfile($fname); - unlink ($fname); - } - elseif($mode == 3){ // Full Export ! - $dn = base64_decode($_GET['dn']); - - //data about users - $user= $ldap->gen_xls( get_people_ou().$dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); - $user_intitul=array(_("Day of birth").":",_("Sex").":",_("Surname")."/"._("Given name").":",_("Language").":"); - //data about groups - $groups= $ldap->gen_xls(get_groups_ou().$dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); - $groups_intitul=array(_("Members").":"); - //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(get_ou('serverou').$dn,"(objectClass=*)",array("cn")); - $servers_intitul=array(_("Name").":"); - //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",_("Display name").":",_("Fax").":",_("Surname")."/"._("Given name").":", - _("Phone number").":",_("Postal address").":",_("Initials").":",_("City").":", - _("Email address").":",_("Mobile").":",_("Organization").":",_("Organizational unit").":", - _("Pager").":",_("Phone number").":",_("Postal address").":",_("Postal Code").":", - _("Surename").":",_("State").":",_("Title").":"); - - //name of the xls file - $name_section=_("Full"); - $date=date('dS \of F Y '); - $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', 51); - $worksheet2->set_column('A:B', 51); - $worksheet3->set_column('A:B', 51); - $worksheet4->set_column('A:B', 51); - $worksheet5->set_column('A:B', 51); - - $title_title= $workbook->addformat(array( - bold => 1, - color => 'green', - size => 11, - font => 'Helvetica' - )); - - $title_bold = $workbook->addformat(array( - bold => 1, - color => 'black', - size => 10, - font => 'Helvetica' - )); - -# Create a format for the phone numbers - $f_phone = $workbook->addformat(); - $f_phone->set_align('left'); - $f_phone->set_num_format('\0#'); - - //count number of users - $user_nbr=count($user); - $worksheet->write('A1',sprintf(_("User list of %s on %s"), $dn, $date),$title_title); - $r=3; - for($i=1;$i<$user_nbr;$i++) - { - if($i>1) - $worksheet->write('A'.$r++,""); - $worksheet->write('A'.$r++,_("User ID").": ".$user[$i][0],$title_bold); - for($j=1;$j<5;$j++) - { - $r++; - $worksheet->write('A'.$r,$user_intitul[$j-1]); - $user[$i][$j]=utf8_decode ($user[$i][$j]); - $worksheet->write('B'.$r,$user[$i][$j]); - } - $worksheet->write('A'.$r++,""); - } - - //count number of groups - $groups_nbr=count($groups); - $worksheet2->write('A1',sprintf(_("Groups of %s on %s"), $dn, $date),$title_title); - $r=3; - for($i=1;$i<$groups_nbr;$i++) - { - $worksheet2->write('A'.$r++,_("User ID").": ".$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); - $worksheet3->write('A1',sprintf(_("Servers of %s on %s"),$dn,$date),$title_title); - $r=3; - $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]); - $servers[$i][$j]=utf8_decode ($servers[$i][$j]); - $worksheet3->write('B'.$r,$servers[$i][$j]); - } - } - - //count number of computers - $computers_nbr=count($computers); - $worksheet4->write('A1',sprintf(_("Computers of %s on %s"),$dn,$date),$title_title); - $r=3; - for($i=1;$i<$computers_nbr;$i++) - { - if($i>1) - $worksheet->write('A'.$r++,""); - $worksheet4->write('A'.$r++,_("Common name").": ".$computers[$i][0],$title_bold); - for($j=1;$j<3;$j++) - { - $r++; - $worksheet4->write('A'.$r,$computers_intitul[$j-1]); - $computers[$i][$j]=utf8_decode ($computers[$i][$j]); - $worksheet4->write('B'.$r,$computers[$i][$j]); - } - $worksheet4->write('A'.$r++,""); - } - - //count number of entries - $address_nbr=count($address); - $worksheet5->write('A1',sprintf(_("Adressbook of %s on %s"),$dn, $date),$title_title); - - $r=3; - for($i=1;$i<$address_nbr;$i++) - { - if($i>1) - $worksheet5->write('A'.$r++,""); - $worksheet5->write('A'.$r++,_("Common name").": ".$address[$i][0],$title_bold); - for($j=1;$j<19;$j++) - { - $r++; - $worksheet5->write('A'.$r,$address_intitul[$j]); - $address[$i][$j]=utf8_decode ($address[$i][$j]); - $worksheet5->write('B'.$r,$address[$i][$j],$f_phone); - } - $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='.$name_section.".xls"); - - readfile($fname); - - unlink ($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"); -session::start(); -session::set('errorsAlreadyPosted',array()); - -/* Logged in? Simple security check */ -if (!session::is_set('ui')){ - new log("security","all/all","",array(),"Error: getxls.php called without session") ; - header ("Location: index.php"); - exit; -} -$ui = session::get('ui'); -$config = session::get('config'); - - -/* Check ACL's */ -$dn =""; -if(isset($_GET['n'])){ - $dn = base64_decode($_GET['n']); -}elseif(isset($_GET['dn'])){ - $dn = base64_decode($_GET['dn']); -} -$acl = $ui->get_permissions($dn,"ldapmanager/xlsexport"); -if(!preg_match("/r/",$acl)){ - msg_dialog::display(_("Permission error"),_("You have no permission to do LDAP exports!"),FATAL_ERROR_DIALOG); - exit(); -} - -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"); - -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: -?> diff --git a/gosa-plugins/ldapmanager/html/getxls.php b/gosa-plugins/ldapmanager/html/getxls.php new file mode 100644 index 000000000..e75660e49 --- /dev/null +++ b/gosa-plugins/ldapmanager/html/getxls.php @@ -0,0 +1,519 @@ +get_ldap_link(); + $display = ""; + + + if($mode == 2){ // Single Entry Export ! + + /* Get required attributes */ + $d = base64_decode($_GET['d']); + $n = base64_decode($_GET['n']); + + /* Create dn to search entries in */ + $dn=$d.$n; + + /* Create some strings */ + $date=date('dS \of F Y '); + $fname = tempnam("/tmp", "demo.xls"); + + /* Create xls workbench */ + $workbook= new writeexcel_workbook($fname); + + /* Create some styles to generate xls */ + $title_title= $workbook->addformat(array( + bold => 1, + color => 'green', + size => 11, + underline => 2, + font => 'Helvetica' + )); + + $title_bold= $workbook->addformat(array( + bold => 1, + color => 'black', + size => 10, + font => 'Helvetica' + )); + + # Create a format for the phone numbers + $f_phone = $workbook->addformat(); + $f_phone->set_align('left'); + $f_phone->set_num_format('\0#'); + + + /* If the switch reaches default (it should not), + this will be set to false, so nothig will be created ... */ + $save = true; + + /* Check which type of data was requested */ + switch ($d){ + + + /* PEOPLE + Get all peoples from this $dn + and put them into the xls work sheet */ + case get_people_ou() : + + $user = $ldap->gen_xls($dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); + $intitul = array(_("Birthday").":", _("Sex").":", _("Surname")."/"._("Given name").":",_("Language").":"); + + // name of the xls file + $name_section = _("Users"); + $worksheet = $workbook->addworksheet(_("Users")); + $worksheet->set_column('A:B', 51); + + $user_nbr = count($user); + $worksheet->write('A1',sprintf(_("User list of %s on %s"),$n,$date),$title_title); + $r=3; + for($i=1;$i<$user_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,_("User ID").": ".$user[$i][0],$title_bold); + + for($j=1;$j<5;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j-1]); + $user[$i][$j]=utf8_decode ($user[$i][$j]); + $worksheet->write('B'.$r,$user[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + break; + + + /* GROUPS + Get all groups from th $dn + and put them into the xls work sheet */ + case get_groups_ou(): + + /* Get group data */ + $groups = $ldap->gen_xls($dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); + $intitul = array(_("Members").":"); + + //name of the xls file + $name_section=_("Groups"); + + $worksheet = $workbook->addworksheet(_("Groups")); + $worksheet->set_column('A:B', 51); + + //count number of groups + $groups_nbr=count($groups); + $worksheet->write('A1', sprintf(_("Groups of %s on %s"), $n, $date),$title_title); + $r=3; + for($i=1;$i<$groups_nbr;$i++) + { + $worksheet->write('A'.$r++,_("User ID").": ".$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; + + + /* SYSTEMS + Get all systems from th $dn + and put them into the xls work sheet */ + case get_ou('systemsou'): + + $name_section=_("Servers"); + $computers= $ldap->gen_xls($dn,"(&(objectClass=*)(cn=*))",array("cn","description","uid")); + + $intitul=array(_("Description").":",_("User ID").":"); + $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++,_("Common name").": ".$computers[$i][0],$title_bold); + for($j=1;$j<3;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j-1]); + $computers[$i][$j]=utf8_decode ($computers[$i][$j]); + $worksheet->write('B'.$r,$computers[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + break; + + /* SYSTEMS + Get all systems from th $dn + and put them into the xls work sheet */ + case get_ou('serverou'): $servers= $ldap->gen_xls($dn,"(objectClass=*)",array("cn")); + $intitul=array(_("Server name").":"); + + //name of the xls file + $name_section=_("Servers"); + + $worksheet = $workbook->addworksheet(_("Servers")); + $worksheet->set_column('A:B', 51); + + //count number of servers + $servers_nbr=count($servers); + $worksheet->write('A1',sprintf(_("Servers of %s on %s"), $n, $date),$title_title); + $r=3; + $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]); + $servers[$i][$j]=utf8_decode ($servers[$i][$j]); + $worksheet->write('B'.$r,$servers[$i][$j]); + } + } + break; + + case "dc=addressbook,": //data about addressbook + + /* ADDRESSBOOK + Get all addressbook entries from $dn + and put them into the xls work sheet */ + + $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(_("Common name").":",_("Display name").":",_("Fax").":", + _("Name")."/"._("Given name").":",_("Home phone").":", + _("Home postal address").":",_("Initials").":",_("Location").":", + _("Mail address").":",_("Mobile phone").":",_("City").":", + _("Postal address").":",_("Pager").":",_("Phone number").":", + _("Address").":",_("Postal code").":",_("Surname").":", + _("State").":",_("Function").":"); + + //name of the xls file + $name_section=_("Adressbook"); + + $worksheet = $workbook->addworksheet(_("Servers")); + $worksheet->set_column('A:B', 51); + + //count number of entries + $address_nbr=count($address); + $worksheet->write('A1',sprintf(_("Adressbook of %s on %s"),$n, $date),$title_title); + $r=3; + for($i=1;$i<$address_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,_("Common Name").": ".$address[$i][0],$title_bold); + for($j=1;$j<19;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j]); + $address[$i][$j]=utf8_decode ($address[$i][$j]); + $worksheet->write('B'.$r,$address[$i][$j],$f_phone); + } + $worksheet->write('A'.$r++,""); + } + + break; + default: + + $save = false; + echo "Specified parameter '".$d."' was not found in switch-case."; + } + + if($save){ + $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=xls_export_'.$name_section.".xls"); + + // The source is in original.xls + readfile($fname); + unlink ($fname); + } + elseif($mode == 3){ // Full Export ! + $dn = base64_decode($_GET['dn']); + + //data about users + $user= $ldap->gen_xls( get_people_ou().$dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); + $user_intitul=array(_("Day of birth").":",_("Sex").":",_("Surname")."/"._("Given name").":",_("Language").":"); + //data about groups + $groups= $ldap->gen_xls(get_groups_ou().$dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); + $groups_intitul=array(_("Members").":"); + //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(get_ou('serverou').$dn,"(objectClass=*)",array("cn")); + $servers_intitul=array(_("Name").":"); + //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",_("Display name").":",_("Fax").":",_("Surname")."/"._("Given name").":", + _("Phone number").":",_("Postal address").":",_("Initials").":",_("City").":", + _("Email address").":",_("Mobile").":",_("Organization").":",_("Organizational unit").":", + _("Pager").":",_("Phone number").":",_("Postal address").":",_("Postal Code").":", + _("Surename").":",_("State").":",_("Title").":"); + + //name of the xls file + $name_section=_("Full"); + $date=date('dS \of F Y '); + $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', 51); + $worksheet2->set_column('A:B', 51); + $worksheet3->set_column('A:B', 51); + $worksheet4->set_column('A:B', 51); + $worksheet5->set_column('A:B', 51); + + $title_title= $workbook->addformat(array( + bold => 1, + color => 'green', + size => 11, + font => 'Helvetica' + )); + + $title_bold = $workbook->addformat(array( + bold => 1, + color => 'black', + size => 10, + font => 'Helvetica' + )); + +# Create a format for the phone numbers + $f_phone = $workbook->addformat(); + $f_phone->set_align('left'); + $f_phone->set_num_format('\0#'); + + //count number of users + $user_nbr=count($user); + $worksheet->write('A1',sprintf(_("User list of %s on %s"), $dn, $date),$title_title); + $r=3; + for($i=1;$i<$user_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,_("User ID").": ".$user[$i][0],$title_bold); + for($j=1;$j<5;$j++) + { + $r++; + $worksheet->write('A'.$r,$user_intitul[$j-1]); + $user[$i][$j]=utf8_decode ($user[$i][$j]); + $worksheet->write('B'.$r,$user[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + + //count number of groups + $groups_nbr=count($groups); + $worksheet2->write('A1',sprintf(_("Groups of %s on %s"), $dn, $date),$title_title); + $r=3; + for($i=1;$i<$groups_nbr;$i++) + { + $worksheet2->write('A'.$r++,_("User ID").": ".$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); + $worksheet3->write('A1',sprintf(_("Servers of %s on %s"),$dn,$date),$title_title); + $r=3; + $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]); + $servers[$i][$j]=utf8_decode ($servers[$i][$j]); + $worksheet3->write('B'.$r,$servers[$i][$j]); + } + } + + //count number of computers + $computers_nbr=count($computers); + $worksheet4->write('A1',sprintf(_("Computers of %s on %s"),$dn,$date),$title_title); + $r=3; + for($i=1;$i<$computers_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet4->write('A'.$r++,_("Common name").": ".$computers[$i][0],$title_bold); + for($j=1;$j<3;$j++) + { + $r++; + $worksheet4->write('A'.$r,$computers_intitul[$j-1]); + $computers[$i][$j]=utf8_decode ($computers[$i][$j]); + $worksheet4->write('B'.$r,$computers[$i][$j]); + } + $worksheet4->write('A'.$r++,""); + } + + //count number of entries + $address_nbr=count($address); + $worksheet5->write('A1',sprintf(_("Adressbook of %s on %s"),$dn, $date),$title_title); + + $r=3; + for($i=1;$i<$address_nbr;$i++) + { + if($i>1) + $worksheet5->write('A'.$r++,""); + $worksheet5->write('A'.$r++,_("Common name").": ".$address[$i][0],$title_bold); + for($j=1;$j<19;$j++) + { + $r++; + $worksheet5->write('A'.$r,$address_intitul[$j]); + $address[$i][$j]=utf8_decode ($address[$i][$j]); + $worksheet5->write('B'.$r,$address[$i][$j],$f_phone); + } + $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='.$name_section.".xls"); + + readfile($fname); + + unlink ($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"); +session::start(); +session::set('errorsAlreadyPosted',array()); + +/* Logged in? Simple security check */ +if (!session::is_set('ui')){ + new log("security","all/all","",array(),"Error: getxls.php called without session") ; + header ("Location: index.php"); + exit; +} +$ui = session::get('ui'); +$config = session::get('config'); + + +/* Check ACL's */ +$dn =""; +if(isset($_GET['n'])){ + $dn = base64_decode($_GET['n']); +}elseif(isset($_GET['dn'])){ + $dn = base64_decode($_GET['dn']); +} +$acl = $ui->get_permissions($dn,"ldapmanager/xlsexport"); +if(!preg_match("/r/",$acl)){ + msg_dialog::display(_("Permission error"),_("You have no permission to do LDAP exports!"),FATAL_ERROR_DIALOG); + exit(); +} + +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"); + +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: +?>