Code

more localization fixes for getxls.php
[gosa.git] / html / getxls.php
1 <?php
2 /*
3    This code is part of GOsa (https://gosa.gonicus.de)
4    Copyright (C) 2003  Cajus Pollmeier
5    Copyright (C) 2005  Guillaume Delecourt
6    Copyright (C) 2005  Vincent Seynhaeve
7    Copyright (C) 2005  Benoit Mortier
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 2 of the License, or
12    (at your option) any later version.
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
19    You should have received a copy of the GNU General Public License
20    along with this program; if not, write to the Free Software
21    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22  */
24 require_once "../include/php_writeexcel/class.writeexcel_workbook.inc.php";
25 require_once "../include/php_writeexcel/class.writeexcel_worksheet.inc.php";
27 function dump_ldap ($mode= 0)
28 {
29   global $config;
30   $ldap= $config->get_ldap_link();
31   error_reporting (E_ALL & ~E_NOTICE);
33   $display = "";
34   if($mode == 2){       // Single Entry Export !
35     $d =  base64_decode($_GET['d']);
36     $n =  base64_decode($_GET['n']);
37     //  print_r($_GET);
38     $dn=$d.$n;
39     //  echo $dn ;
40     $fname = tempnam("/tmp", "demo.xls");
41     $workbook=& new writeexcel_workbook($fname);
43     $title_bold=& $workbook->addformat(array(
44           bold    => 1,
45           color   => 'black',
46           size    => 10,
47           font    => 'Helvetica'
48           ));
51     switch ($d){
52       case "ou=people," : 
53         $user=                             $ldap->gen_xls($dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage"));
54       $intitul=array(_("Birthday").":", _("Sexe").":", _("Name")."/"._("Firstname").":",_("Language").":");
56       $worksheet=& $workbook->addworksheet(_("Users"));
57       $worksheet->set_column('A:B', 32);
60       $user_nbr=count($user);
61       $r=1;
62       for($i=1;$i<$user_nbr;$i++)
63       {
64         if($i>1)
65           $worksheet->write('A'.$r++,"");
66         $worksheet->write('A'.$r++,_("User ID").": ".$user[$i][0],$title_bold);
68         for($j=1;$j<5;$j++)
69         {
70           $r++;
71           $worksheet->write('A'.$r,$intitul[$j-1]);
72           $worksheet->write('B'.$r,$user[$i][$j]);
73         }
74         $worksheet->write('A'.$r++,"");
75       }
76       break;
78       case "ou=groups,": $groups= $ldap->gen_xls($dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1);
79       $intitul=array(_("Members").":");
80       $worksheet =& $workbook->addworksheet(_("Groups"));
81       $worksheet->set_column('A:B', 32);
83       //count number of groups
84       $groups_nbr=count($groups);
85       $r=1;
86       for($i=1;$i<$groups_nbr;$i++)
87       {
88         $worksheet->write('A'.$r++,_("User ID").": ".$groups[$i][0][0],$title_bold);
89         for($j=1;$j<=2;$j++)
90         {
91           $r++;
92           $worksheet->write('A'.$r,$intitul[$j-1]);
93           for($k=0;$k<= $groups[$i][$j]['count'];$k++)
94           {
95             $worksheet->write('B'.$r,$groups[$i][$j][$k]);
96             $r++;
97           }
98         }
99       }
100       break;
102       case "ou=computers,": $computers= $ldap->gen_xls($dn,"(objectClass=*)",array("cn","description","uid"));
103       $intitul=array(_("Description").":",_("User ID").":");
104       $worksheet =& $workbook->addworksheet(_("Computers"));
105       $worksheet->set_column('A:B', 32);
107       //count number of computers
108       $computers_nbr=count($computers);
109       $r=1;
110       for($i=1;$i<$computers_nbr;$i++)
111       {
112         if($i>1)
113           $worksheet->write('A'.$r++,"");
114         $worksheet->write('A'.$r++,_("Common Name").": ".$computers[$i][0],$title_bold);
115         for($j=1;$j<3;$j++)
116         {
117           $r++;
118           $worksheet->write('A'.$r,$intitul[$j-1]);
119           $worksheet->write('B'.$r,$computers[$i][$j]);
120         }
121         $worksheet->write('A'.$r++,"");
122       }
123       break;
125       case "ou=servers,ou=systems,": $servers= $ldap->gen_xls($dn,"(objectClass=*)",array("cn"));
126       $intitul=array(_("Server Name").":");
128       $worksheet =& $workbook->addworksheet(_("Servers"));
129       $worksheet->set_column('A:B', 32);
131       //count number of servers
132       $servers_nbr=count($servers);
133       $r=1;
134       $worksheet->write('A'.$r++,_("Servers").": ",$title_bold);
135       for($i=1;$i<$servers_nbr;$i++)
136       {
137         for($j=0;$j<1;$j++)
138         {
139           $r++;
140           $worksheet->write('A'.$r,$intitul[$j]);
141           $worksheet->write('B'.$r,$servers[$i][$j]);
142         }
143       }
144       break;
146       case "dc=addressbook,": //data about addressbook
147         $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"));
149       $intitul=array(_("Common name").":",_("Display Name").":",_("Fax").":",_("Name")."/"._("Firstname").":",_("Home phone").":",_("Home postal address").":",_("Initials").":",_("Location").":",_("Mail address").":",_("Mobile phone").":",_("City").":",_("Postal address").":",_("Pager").":",_("Phone number").":",_("Adress").":",_("Postal code").":",_("Surename").":",_("State").":",_("Function").":");
151       $worksheet =& $workbook->addworksheet(_("Servers"));
152       $worksheet->set_column('A:B', 32);
154       //count number of entries
155       $address_nbr=count($address);
156       $r=1;
157       for($i=1;$i<$address_nbr;$i++)
158       {
159         if($i>1)
160           $worksheet->write('A'.$r++,"");
161         $worksheet->write('A'.$r++,_("Common Name").": ".$address[$i][0],$title_bold);
162         for($j=1;$j<19;$j++)
163         {
164           $r++;
165           $worksheet->write('A'.$r,$intitul[$j]);
166           $worksheet->write('B'.$r,$address[$i][$j]);
167         }
168         $worksheet->write('A'.$r++,"");
169       }
171       break;
173       default: echo "error!!";
174     }
176     $workbook->close();
179     // We'll be outputting a xls
180     header('Content-type: application/x-msexcel');
182     // It will be called demo.xls
183     header('Content-Disposition: attachment; filename="demo.xls"');
185     // The source is in original.xls
186     readfile($fname);
187     unlink ($fname);
188   }
189   elseif($mode == 3){ // Full Export !
190     $dn =  base64_decode($_GET['dn']);
192     //data about users
193     $user= $ldap->gen_xls("ou=people,".$dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage"));
194     $user_intitul=array(_("BirthDate").":",_("Sex").":",_("Name")."/"._("Firstname").":",_("Language").":");
195     //data about groups
196     $groups= $ldap->gen_xls("ou=groups,".$dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1);
197     $groups_intitul=array(_("Members").":");
198     //data about computers
199     $computers= $ldap->gen_xls("ou=computers,".$dn,"(objectClass=*)",array("cn","description","uid"));
200     $computers_intitul=array(_("Description").":",_("Uid").":");
201     //data about servers
202     $servers= $ldap->gen_xls("ou=servers,ou=systems,".$dn,"(objectClass=*)",array("cn"));
203     $servers_intitul=array(_("Name").":");
204     //data about addressbook
205     $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"));
206     $address_intitul=array("cn",_("DisplayName").":",_("Fax").":",_("Name")."/"._("Firstname").":",_("Phone Number").":",_("Postal Adress").":",_("Initials").":",_("City").":",_("Email address").":",_("mobile").":",_("Organization").":",_("Organizational Unit").":",_("Pager").":",_("Phone Number").":",_("Postal Address").":",_("Postal Code").":",_("Sn").":",_("st").":",_("Title").":");
209     $fname = tempnam("/tmp", "demo.xls");
210     $workbook =& new writeexcel_workbook($fname);
211     $worksheet =& $workbook->addworksheet(_("Users"));
212     $worksheet2 =& $workbook->addworksheet(_("Groups"));
213     $worksheet3 =& $workbook->addworksheet(_("Servers"));
214     $worksheet4 =& $workbook->addworksheet(_("Computers"));
215     $worksheet5 =& $workbook->addworksheet(_("Adressbook"));
217     $worksheet->set_column('A:B', 32);
218     $worksheet2->set_column('A:B', 32);
219     $worksheet3->set_column('A:B', 32);
220     $worksheet4->set_column('A:B', 32);
221     $worksheet5->set_column('A:B', 32);
223     $title_bold =& $workbook->addformat(array(
224           bold    => 1,
225           color   => 'black',
226           size    => 10,
227           font    => 'Helvetica'
228           ));
231     //count number of users
232     $user_nbr=count($user);
233     $r=1;
234     for($i=1;$i<$user_nbr;$i++)
235     {
236       if($i>1)
237         $worksheet->write('A'.$r++,"");
238       $worksheet->write('A'.$r++,_("User ID").": ".$user[$i][0],$title_bold);
239       for($j=1;$j<5;$j++)
240       {
241         $r++;
242         $worksheet->write('A'.$r,$user_intitul[$j-1]);
243         $worksheet->write('B'.$r,$user[$i][$j]);
244       }
245       $worksheet->write('A'.$r++,"");
246     }
248     //count number of groups
249     $groups_nbr=count($groups);
250     $r=1;
251     for($i=1;$i<$groups_nbr;$i++)
252     {
253       $worksheet2->write('A'.$r++,_("User ID").": ".$groups[$i][0][0],$title_bold);
254       for($j=1;$j<=2;$j++)
255       {
256         $r++;
257         $worksheet2->write('A'.$r,$group_intitul[$j-1]);
258         for($k=0;$k<= $groups[$i][$j]['count'];$k++)
259         {
260           $worksheet2->write('B'.$r,$groups[$i][$j][$k]);
261           $r++;
262         }
263       }
264     }
266     //count number of servers
267     $servers_nbr=count($servers);
268     $r=1;
269     $worksheet3->write('A'.$r++,_("Servers").": ",$title_bold);
270     for($i=1;$i<$servers_nbr;$i++)
271     {
272       for($j=0;$j<1;$j++)
273       {
274         $r++;
275         $worksheet3->write('A'.$r,$servers_intitul[$j]);
276         $worksheet3->write('B'.$r,$servers[$i][$j]);
277       }
278     }
280     //count number of computers
281     $computers_nbr=count($computers);
282     $r=1;
283     for($i=1;$i<$computers_nbr;$i++)
284     {
285       if($i>1)
286         $worksheet->write('A'.$r++,"");
287       $worksheet4->write('A'.$r++,_("Common Name").": ".$computers[$i][0],$title_bold);
288       for($j=1;$j<3;$j++)
289       {
290         $r++;
291         $worksheet4->write('A'.$r,$computers_intitul[$j-1]);
292         $worksheet4->write('B'.$r,$computers[$i][$j]);
293       }
294       $worksheet4->write('A'.$r++,"");
295     }
297     //count number of entries
298     $address_nbr=count($address);
299     $r=1;
300     for($i=1;$i<$address_nbr;$i++)
301     {
302       if($i>1)
303         $worksheet5->write('A'.$r++,"");
304       $worksheet5->write('A'.$r++,_("Common Name").": ".$address[$i][0],$title_bold);
305       for($j=1;$j<19;$j++)
306       {
307         $r++;
308         $worksheet5->write('A'.$r,$address_intitul[$j]);
309         $worksheet5->write('B'.$r,$address[$i][$j]);
310       }
311       $worksheet5->write('A'.$r++,"");
312     }
313     $workbook->close();
316     // We'll be outputting a xls
317     header('Content-type: application/x-msexcel');
319     // It will be called demo.xls
320     header('Content-Disposition: attachment; filename="demo.xls"');
322     // The PDF source is in original.xl
323     readfile($fname);
325     unlink ($fname);
326   }
327   elseif($mode == 4){ // IVBB LDIF Export
328     $dn =  base64_decode($_GET['dn']);
329     /*$display= $ldap->gen_ldif($dn,"(objectClass=ivbbEntry)",array(
330       "GouvernmentOrganizationalUnit","houseIdentifier","vocation",
331       "ivbbLastDeliveryCollective","gouvernmentOrganizationalPersonLocality",
332       "gouvernmentOrganizationalUnitDescription","gouvernmentOrganizationalUnitSubjectArea",
333       "functionalTitle","role","certificateSerialNumber","userCertificate","publicVisible",
334       "telephoneNumber","seeAlso","description","title","x121Address","registeredAddress",
335       "destinationIndicator","preferredDeliveryMethod","telexNumber","teletexTerminalIdentifier",
336       "telephoneNumber","internationaliSDNNumber","facsimileTelephoneNumber","street",
337       "postOfficeBox","postalCode","postalAddress","physicalDeliveryOfficeName","ou",
338       "st","l","audio","businessCategory","carLicense","departmentNumber","displayName",
339       "employeeNumber","employeeType","givenName","homePhone","homePostalAddress",
340       "initials","jpegPhoto","labeledURI","mail","manager","mobile","o","pager","photo",
341       "roomNumber","secretary","userCertificate","x500uniqueIdentifier","preferredLanguage",
342       "userSMIMECertificate","userPKCS12"));*/
344     echo $display;
345   }
349 /* Basic setup, remove eventually registered sessions */
350 @require_once ("../include/php_setup.inc");
351 @require_once ("functions.inc");
352 error_reporting (E_ALL);
353 session_start ();
355 /* Logged in? Simple security check */
356 if (!isset($_SESSION['ui'])){
357   gosa_log ("Error: getldif.php called without session");
358   header ("Location: ../index.php");
359   exit;
361 $ui= $_SESSION["ui"];
362 $config= $_SESSION['config'];
364 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
365 header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
366 header("Cache-Control: no-cache");
367 header("Pragma: no-cache");
368 header("Cache-Control: post-check=0, pre-check=0");
370 header("Content-type: text/plain");
372 /* Check ACL's */
373 $acl= get_permissions ($config->current['BASE'], $ui->subtreeACL);
374 $acl= get_module_permission($acl, "all", $config->current['BASE']);
375 if (chkacl($acl, "all") != ""){
376   header ("Location: ../index.php");
377   exit;
380 switch ($_GET['ivbb']){
381   case 2: dump_ldap (2);
382           break;
384   case 3: dump_ldap (3);
385           break;
387   case 4: dump_ldap (4);
388           break;
390   default:
391           echo "Error in ivbb parameter. Request aborted.";
393 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
394 ?>