]> git.sur5r.net Git - contagged/blobdiff - template.php
more redesign and code cleanup
[contagged] / template.php
index e5731666ca7dc5b898bf785ddec912417cdad13d..c5e850e68e945fb8cee1f672b65a9d365e7542c3 100644 (file)
@@ -7,6 +7,7 @@ function tpl_std(){
   global $smarty;
   global $lang;
   global $conf;
+  global $FIELDS;
 
   if(empty($_SESSION['ldapab']['username'])){
     $_SESSION['ldapab']['username'] = '';
@@ -24,7 +25,7 @@ function tpl_std(){
   }
   $smarty->assign('conf',$conf);
   $smarty->assign('lang',$lang);
-  //$smarty->assign('dfexample',$dfexample);
+  $smarty->assign('fields',$FIELDS);
 }
 
 /**
@@ -34,46 +35,51 @@ function tpl_std(){
 function tpl_entry($in){
   global $smarty;
   global $conf;
-  $entries = namedentries();
+  global $RFIELDS;
 
+  $out=array();
 
-  //handle named entries
-  foreach(array_keys($entries) as $key){
-    if($in[$key]){
-      if(is_array($in[$key])){
-        $out[$entries[$key]] = $in[$key][0];
-      }else{
-        $out[$entries[$key]] = $in[$key];
-      }
+  // handle named entries
+  foreach($RFIELDS as $key => $name){
+    if(empty($in[$key])) continue;
+
+    // keep arrays for multi fields
+    if($name{0} == '_'){
+        $name  = substr($name,1);
+        if(is_array($in[$key])){
+            $out[$name] = $in[$key];
+        }else{
+            $out[$name] = array($in[$key]);
+        }
+    }else{
+        if(is_array($in[$key])){
+            $out[$name] = $in[$key][0];
+        }else{
+            $out[$name] = $in[$key];
+        }
     }
   }
 
-  //set the type
-  $out['dn']        = normalize_dn($out['dn']);
+  // set the type
+  if (empty($out['dn'])) { $out['dn']=''; }
+  $out['dn']          = normalize_dn($out['dn']);
   $conf['publicbook'] = normalize_dn($conf['publicbook']);
   if($out['dn']){
-    if(strstr($out['dn'],$conf['publicbook'])){
-      $out['type'] = 'public';
-    }else{
-      $out['type'] = 'private';
-    }
+      if(strstr($out['dn'],$conf['publicbook'])){
+          $out['type'] = 'public';
+      }else{
+          $out['type'] = 'private';
+      }
   }
 
-  //mail entries are handled special
-  $out['mail'] = $in['mail'];
-  if ($conf['extended']){
-    //handle marker special in extended mode
-    $out['marker'] = $in['marker'];
-    if(is_array($in['marker'])) $out['markers'] = join(', ',$in['marker']);
-  }
-  if ($conf['openxchange']){
-    //handle categories special in openxchange mode
-    $out['categories'] = $in['OXUserCategories'];
-  }
+  // join marker field to markers
+  if(is_array($out['marker'])) $out['markers'] = join(', ',$out['marker']);
 
-/*print '<pre>';
+/*
+print '<pre>';
 print_r($out);
-print '</pre>';*/
+print '</pre>';
+*/
 
   $smarty->assign('entry',$out);
 }
@@ -116,12 +122,14 @@ function tpl_markers(){
                     $conf['privatebook'].','.$_SESSION['ldapab']['binddn'],
                     "ObjectClass=inetOrgPerson",array("marker"));
     $result2 = ldap_get_binentries($LDAP_CON, $sr);
+  }else{
+    $result2 = '';
   }
   $result = array_merge((array)$result1,(array)$result2);
 
   if(count($result)){
     foreach ($result as $entry){
-      if(count($entry['marker'])){
+      if(!empty($entry['marker']) && count($entry['marker'])){
         foreach($entry['marker'] as $marker){
           array_push($markers, $marker);
         }
@@ -130,7 +138,7 @@ function tpl_markers(){
   }
   $markers = array_unique($markers);
   sort($markers,SORT_STRING);
+
   $smarty->assign('markers',$markers);
 }
 
@@ -141,29 +149,20 @@ function tpl_orgs(){
   global $conf;
   global $LDAP_CON;
   global $smarty;
+  global $FIELDS;
 
   $orgs = array();
-
-  $sr = ldap_list($LDAP_CON,$conf['publicbook'],"ObjectClass=inetOrgPerson",array("o"));
-  $result1 = ldap_get_binentries($LDAP_CON, $sr);
-  //check users private addressbook
-  if(!empty($_SESSION['ldapab']['binddn'])){
-    $sr = @ldap_list($LDAP_CON,
-                    $conf['privatebook'].','.$_SESSION['ldapab']['binddn'],
-                    "ObjectClass=inetOrgPerson",array("o"));
-    $result2 = ldap_get_binentries($LDAP_CON, $sr);
-  }
-  $result = array_merge((array)$result1,(array)$result2);
+  $result = ldap_queryabooks("ObjectClass=inetOrgPerson",array($FIELDS['organization']));
 
   if(count($result)){
     foreach ($result as $entry){
-      if(!empty($entry['o'][0])){
-        array_push($orgs, $entry['o'][0]);
+      if(!empty($entry[$FIELDS['organization']][0])){
+        array_push($orgs, $entry[$FIELDS['organization']][0]);
       }
     }
   }
   $orgs = array_unique($orgs);
-  sort($orgs,SORT_STRING);
+  natcasesort($orgs);
   $smarty->assign('orgs',$orgs);
 }
 
@@ -201,7 +200,7 @@ function tpl_categories(){
   }
   $categories = array_unique($categories);
   sort($categories,SORT_STRING);
+
   $smarty->assign('categories',$categories);
 }
 
@@ -239,7 +238,7 @@ function tpl_timezone(){
   }
   $timezone = array_unique($timezone);
   sort($timezone,SORT_STRING);
+
   $smarty->assign('timezone',$timezone);
 }
 
@@ -277,7 +276,7 @@ function tpl_country(){
   }
   $country = array_unique($country);
   sort($country,SORT_STRING);
+
   $smarty->assign('country',$country);
 }