generate_lang_file.php : added -h and --without-select-list and --copy-original-value...
[ldapsaisie.git] / public_html / lang / generate_lang_file.php
1 #!/usr/bin/php
2 <?php
3 /*******************************************************************************
4  * Copyright (C) 2007 Easter-eggs
5  * http://ldapsaisie.labs.libre-entreprise.org
6  *
7  * Author: See AUTHORS file in top-level directory.
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License version 2
11  * as published by the Free Software Foundation.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21
22 ******************************************************************************/
23
24 error_reporting(E_ERROR);
25
26 require_once('../core.php');
27 require_once('../conf/config.inc.php');
28
29 $withoutselectlist=False;
30 $copyoriginalvalue=False;
31 if ($argc > 1) {
32   for ($i=1;$i<$argc;$i++) {
33     if (is_file($argv[$i])) {
34       @include($argv[$i]);
35     }
36     elseif($argv[$i]=='--without-select-list') {
37       $withoutselectlist=True;
38     }
39     elseif($argv[$i]=='--copy-original-value') {
40       $copyoriginalvalue=True;
41     }
42     elseif($argv[$i]=='-h') {
43       echo "Usage : ".$argv[0]." [file1] [file2] [-h] [options]\n";
44       echo "  --without-select-list    Don't add possibles values of select list\n";
45       echo "  --copy-original-value    Copy original value as translated value when no translated value exists\n";
46       exit(0);
47     }
48   }
49 }
50
51 $data=array();
52
53 function add($msg) {
54   if ($msg!='') {
55     global $data;
56     $data[$msg]=$GLOBALS['LSlang'][$msg];
57   }
58 }
59
60 // LDAP Servers
61 foreach($GLOBALS['LSconfig']['ldap_servers'] as $conf) {
62   add($conf['name']);
63   add($conf['subDnLabel']);
64   add($conf['recoverPassword']['recoveryHashMail']['subject']);
65   add($conf['recoverPassword']['recoveryHashMail']['msg']);
66   add($conf['recoverPassword']['newPasswordMail']['subject']);
67   add($conf['recoverPassword']['newPasswordMail']['msg']);
68   if (is_array($conf['subDn'])) {
69     foreach($conf['subDn'] as $name => $cf) {
70       if ($name!='LSobject') {
71         add($name);
72       }
73     }
74   }
75 }
76
77
78 // LSobject
79 if (loadDir('../'.LS_OBJECTS_DIR) && loadDir('../'.LS_LOCAL_DIR.LS_OBJECTS_DIR)) {
80   foreach($GLOBALS['LSobjects'] as $name => $conf) {
81     add($conf['label']);
82     
83     // LSrelation
84     if (is_array($conf['LSrelation'])) {
85       foreach($conf['LSrelation'] as $rel) {
86         add($rel['label']);
87         add($rel['emptyText']);
88       }
89     }
90     // Custom Actions
91     if (is_array($conf['customActions'])) {
92       foreach($conf['customActions'] as $act) {
93         add($act['label']);
94         add($act['question_format']);
95         add($act['onSuccessMsgFormat']);
96       }
97     }
98
99     // LSform
100     if (is_array($conf['LSform']['layout'])) {
101       foreach($conf['LSform']['layout'] as $lay) {
102         add($lay['label']);
103       }
104     }
105     if (is_array($conf['LSform']['dataEntryForm'])) {
106       foreach($conf['LSform']['dataEntryForm'] as $def) {
107         add($def['label']);
108       }
109     }
110     // LSsearch
111     if (is_array($conf['LSsearch']['predefinedFilters'])) {
112       foreach($conf['LSsearch']['predefinedFilters'] as $lay) {
113         add($lay);
114       }
115     }
116
117     
118     if(is_array($conf['attrs'])) {
119       foreach($conf['attrs'] as $attr) {
120         add($attr['label']);
121         add($attr['help_info']);
122         add($attr['html_options']['mail']['subject']);
123         add($attr['html_options']['mail']['msg']);
124         
125         // LSattr_html_select_list
126         if ($attr['html_type']=='select_list' && is_array($attr['html_options']['possible_values']) && !$withoutselectlist) {
127           foreach($attr['html_options']['possible_values'] as $pkey => $pname) {
128             if ($pkey != 'OTHER_OBJECT') {
129               add($pname);
130             }
131           }
132         }
133
134         // LSattr_html_valueWithUnit
135         if ($attr['html_type']=='valueWithUnit' && is_array($attr['html_options']['units'])) {
136           foreach($attr['html_options']['units'] as $pname) {
137             add($pname);
138           }
139         }
140         
141         // Check data
142         if (is_array($attr['check_data'])) {
143           foreach($attr['check_data'] as $check) {
144             add($check['msg']);
145           }
146         }
147         
148         // validation
149         if (is_array($attr['validation'])) {
150           foreach($attr['validation'] as $valid) {
151             add($valid['msg']);
152           }
153         }
154       }
155     }
156   }
157 }
158
159 ksort($data);
160
161 echo "<?php\n\n\$GLOBALS['LSlang'] = array (\n";
162
163 foreach($data as $key => $val) {
164   if ($copyoriginalvalue && $val=="") {
165     $val=$key;
166   }
167   print "\n\"$key\" =>\n  \"$val\",\n";
168 }
169
170 echo "\n);\n\n?>\n";
171
172 ?>