]> git.sur5r.net Git - contagged/blob - inc/template.php
Don't use short open tags
[contagged] / inc / template.php
1 <?php
2
3 /**
4  * assigns some standard variables to smarty templates
5  */
6 function tpl_std(){
7   global $smarty;
8   global $lang;
9   global $conf;
10   global $FIELDS;
11
12   if(empty($_SESSION['ldapab']['username'])){
13     $_SESSION['ldapab']['username'] = '';
14   }
15   if(empty($_SESSION['ldapab']['binddn'])){
16     $_SESSION['ldapab']['binddn'] = '';
17   }
18
19   $smarty->assign('user',$_SESSION['ldapab']['username']);
20   $smarty->assign('binddn',$_SESSION['ldapab']['binddn']);
21   if(!empty($_SESSION['ldapab']['lastlocation'])){
22     $smarty->assign('home',$_SESSION['ldapab']['lastlocation']);
23   }else{
24      $smarty->assign('home','index.php');
25   }
26   $smarty->assign('conf',$conf);
27   $smarty->assign('lang',$lang);
28   $smarty->assign('fields',$FIELDS);
29 }
30
31 /**
32  * assigns all the interesting data from an ldap result to
33  * the smarty template
34  */
35 function tpl_entry($in){
36   global $smarty;
37   global $conf;
38   global $RFIELDS;
39
40   $out=array();
41
42   // handle named entries
43   foreach($RFIELDS as $key => $name){
44     if(empty($in[$key])) continue;
45
46     // keep arrays for multi fields
47     if($name{0} == '_'){
48         $name  = substr($name,1);
49         if(is_array($in[$key])){
50             $out[$name] = $in[$key];
51         }else{
52             $out[$name] = array($in[$key]);
53         }
54     }else{
55         if(is_array($in[$key])){
56             $out[$name] = $in[$key][0];
57         }else{
58             $out[$name] = $in[$key];
59         }
60     }
61   }
62
63   // set the type
64   if (empty($out['dn'])) { $out['dn']=''; }
65   $out['dn']          = normalize_dn($out['dn']);
66   $conf['publicbook'] = normalize_dn($conf['publicbook']);
67   if($out['dn']){
68       if(strstr($out['dn'],$conf['publicbook'])){
69           $out['type'] = 'public';
70       }else{
71           $out['type'] = 'private';
72       }
73   }
74
75   // join marker field to markers
76   if(is_array($out['marker'])) $out['markers'] = join(', ',$out['marker']);
77
78 /*
79 print '<pre>';
80 print_r($out);
81 print '</pre>';
82 */
83
84   $smarty->assign('entry',$out);
85 }
86
87 /**
88  * assigns the last LDAP error to the template
89  */
90 function tpl_ldaperror($message=""){
91   global $LDAP_CON;
92   global $__LDAPERROR__;
93   global $smarty;
94   $errno = ldap_errno($LDAP_CON);
95   if($errno){
96     $__LDAPERROR__ .= ldap_err2str($errno);
97     if(!empty($message)){
98       $__LDAPERROR__ .= "($message)";
99     }
100     $__LDAPERROR__ .= '\n';
101   }
102   $smarty->assign("LDAPERRORS",$__LDAPERROR__);
103 }
104
105 /**
106  * assigns all markers to the template
107  */
108 function tpl_markers(){
109   global $conf;
110   global $LDAP_CON;
111   global $smarty;
112
113   if(!$conf['extended']) return;
114
115   $markers = array();
116
117   $sr = ldap_list($LDAP_CON,$conf['publicbook'],"ObjectClass=inetOrgPerson",array("marker"));
118   $result1 = ldap_get_binentries($LDAP_CON, $sr);
119   //check users private addressbook
120   if(!empty($_SESSION['ldapab']['binddn'])){
121     $sr = @ldap_list($LDAP_CON,
122                     $conf['privatebook'].','.$_SESSION['ldapab']['binddn'],
123                     "ObjectClass=inetOrgPerson",array("marker"));
124     $result2 = ldap_get_binentries($LDAP_CON, $sr);
125   }else{
126     $result2 = '';
127   }
128   $result = array_merge((array)$result1,(array)$result2);
129
130   if(count($result)){
131     foreach ($result as $entry){
132       if(!empty($entry['marker']) && count($entry['marker'])){
133         foreach($entry['marker'] as $marker){
134           array_push($markers, $marker);
135         }
136       }
137     }
138   }
139   $markers = array_unique($markers);
140   sort($markers,SORT_STRING);
141
142   $smarty->assign('markers',$markers);
143 }
144
145 /**
146  * Assigns all distinct organization names to the template
147  */
148 function tpl_orgs(){
149   global $conf;
150   global $LDAP_CON;
151   global $smarty;
152   global $FIELDS;
153
154   $orgs = array();
155   $result = ldap_queryabooks("ObjectClass=inetOrgPerson",array($FIELDS['organization']));
156
157   if(count($result)){
158     foreach ($result as $entry){
159       if(!empty($entry[$FIELDS['organization']][0])){
160         array_push($orgs, $entry[$FIELDS['organization']][0]);
161       }
162     }
163   }
164   $orgs = array_unique($orgs);
165   natcasesort($orgs);
166   $smarty->assign('orgs',$orgs);
167 }
168
169 /**
170  * assigns all categories to the template
171  */
172 function tpl_categories(){
173   global $conf;
174   global $LDAP_CON;
175   global $smarty;
176
177   if(!$conf['openxchange']) return;
178
179   $categories = array();
180
181   $sr = ldap_list($LDAP_CON,$conf['publicbook'],"ObjectClass=OXUserObject",array("OXUserCategories"));
182   $result1 = ldap_get_binentries($LDAP_CON, $sr);
183   //check users private addressbook
184   if(!empty($_SESSION['ldapab']['binddn'])){
185     $sr = @ldap_list($LDAP_CON,
186                     $conf['privatebook'].','.$_SESSION['ldapab']['binddn'],
187                     "ObjectClass=OXUserObject",array("OXUserCategories"));
188     $result2 = ldap_get_binentries($LDAP_CON, $sr);
189   }
190   $result = array_merge((array)$result1,(array)$result2);
191
192   if(count($result)){
193     foreach ($result as $entry){
194       if(count($entry['OXUserCategories'])){
195         foreach($entry['OXUserCategories'] as $category){
196           array_push($categories, $category);
197         }
198       }
199     }
200   }
201   $categories = array_unique($categories);
202   sort($categories,SORT_STRING);
203
204   $smarty->assign('categories',$categories);
205 }
206
207 /**
208  * assigns all timezones to the template
209  */
210 function tpl_timezone(){
211   global $conf;
212   global $LDAP_CON;
213   global $smarty;
214
215   if(!$conf['openxchange']) return;
216
217   $timezone = array();
218
219   $sr = ldap_list($LDAP_CON,$conf['publicbook'],"ObjectClass=OXUserObject",array("OXTimeZone"));
220   $result1 = ldap_get_binentries($LDAP_CON, $sr);
221   //check users private addressbook
222   if(!empty($_SESSION['ldapab']['binddn'])){
223     $sr = @ldap_list($LDAP_CON,
224                     $conf['privatebook'].','.$_SESSION['ldapab']['binddn'],
225                     "ObjectClass=OXUserObject",array("OXTimeZone"));
226     $result2 = ldap_get_binentries($LDAP_CON, $sr);
227   }
228   $result = array_merge((array)$result1,(array)$result2);
229
230   if(count($result)){
231     foreach ($result as $entry){
232       if(count($entry['OXTimeZone'])){
233         foreach($entry['OXTimeZone'] as $tz){
234           array_push($timezone, $tz);
235         }
236       }
237     }
238   }
239   $timezone = array_unique($timezone);
240   sort($timezone,SORT_STRING);
241
242   $smarty->assign('timezone',$timezone);
243 }
244
245 /**
246  * assigns all countries to the template
247  */
248 function tpl_country(){
249   global $conf;
250   global $LDAP_CON;
251   global $smarty;
252
253   if(!$conf['openxchange']) return;
254
255   $country = array();
256
257   $sr = ldap_list($LDAP_CON,$conf['publicbook'],"ObjectClass=OXUserObject",array("userCountry"));
258   $result1 = ldap_get_binentries($LDAP_CON, $sr);
259   //check users private addressbook
260   if(!empty($_SESSION['ldapab']['binddn'])){
261     $sr = @ldap_list($LDAP_CON,
262                     $conf['privatebook'].','.$_SESSION['ldapab']['binddn'],
263                     "ObjectClass=OXUserObject",array("userCountry"));
264     $result2 = ldap_get_binentries($LDAP_CON, $sr);
265   }
266   $result = array_merge((array)$result1,(array)$result2);
267
268   if(count($result)){
269     foreach ($result as $entry){
270       if(count($entry['userCountry'])){
271         foreach($entry['userCountry'] as $c){
272           array_push($country, $c);
273         }
274       }
275     }
276   }
277   $country = array_unique($country);
278   sort($country,SORT_STRING);
279
280   $smarty->assign('country',$country);
281 }
282
283 ?>