Code

Added default winstation ou to avoid errors if not set in config.
[gosa.git] / gosa-core / include / functions.inc
index dd8f69efa6364965b0f6509aa584a5b3e49ebca8..cb29f0e2bd679dc5dd94738346efe9cba6dbf249 100644 (file)
@@ -40,7 +40,7 @@ if(!isset($_SERVER['CONFIG_FILE'])){
   define ("CONFIG_FILE",$_SERVER['CONFIG_FILE']);
 }
 
-define ("CONFIG_TEMPLATE_DIR", "../contrib/");
+define ("CONFIG_TEMPLATE_DIR", "../contrib");
 define ("TEMP_DIR","/var/cache/gosa/tmp");
 
 /* Define get_list flags */
@@ -1105,31 +1105,27 @@ function &get_smarty()
 }
 
 
-function convert_department_dn($dn)
+function convert_department_dn($dn, $base = NULL)
 {
-  $dep= "";
+  global $config;
+
+  if($base == NULL){
+    $base = $config->current['BASE'];
+  }
 
   /* Build a sub-directory style list of the tree level
      specified in $dn */
-  global $config;
-  $dn = preg_replace("/".normalizePreg($config->current['BASE'])."$/i","",$dn);
+  $dn = preg_replace("/".normalizePreg($base)."$/i","",$dn);
   if(empty($dn)) return("/");
 
-  foreach (split(',', $dn) as $rdn){
 
-    /* We're only interested in organizational units... */
-    if (substr($rdn,0,3) == 'ou='){
-      $dep= substr($rdn,3)."/$dep";
-    }
-
-    /* ... and location objects */
-    if (substr($rdn,0,2) == 'l='){
-      $dep= substr($rdn,2)."/$dep";
-    }
+  $dep= "";
+  foreach (split(',', $dn) as $rdn){
+    $dep = preg_replace("/^[^=]+=/","",$rdn)."/".$dep;
   }
 
   /* Return and remove accidently trailing slashes */
-  return rtrim($dep, "/");
+  return(trim($dep, "/"));
 }
 
 
@@ -1155,6 +1151,8 @@ function get_ou($name)
                 "printerou"     => "ou=printers,ou=systems,",
                 "phoneou"       => "ou=phones,ou=systems,",
                 "componentou"   => "ou=netdevices,ou=systems,",
+                "winstations"   => "ou=workstations,ou=systems",
+
                 "blocklistou"   => "ou=gofax,ou=systems,",
                 "incomingou"    => "ou=incoming,",
                 "aclroleou"     => "ou=aclroles,",
@@ -2365,6 +2363,7 @@ function get_languages($languages_in_own_language = FALSE,$strip_region_tag = FA
         "pl_PL" => "Polish",
         "sv_SE" => "Swedish",
         "zh_CN" => "Chinese",
+        "vi_VN" => "Vietnamese",
         "ru_RU" => "Russian");
   
   $tmp2= array(
@@ -2377,6 +2376,7 @@ function get_languages($languages_in_own_language = FALSE,$strip_region_tag = FA
         "pl_PL" => _("Polish"),
         "sv_SE" => _("Swedish"),
         "zh_CN" => _("Chinese"),
+        "vi_VN" => _("Vietnamese"),
         "ru_RU" => _("Russian"));
 
   $ret = array();
@@ -2690,6 +2690,11 @@ function send_binary_content($data,$name,$type = "application/octet-stream")
   header("Content-type: ".$type."");
 
   $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
+
+  /* Strip name if it is a complete path */
+  if (preg_match ("/\//", $name)) {
+       $name= basename($name);
+  }
   
   /* force download dialog */
   if (preg_match('/MSIE 5.5/', $HTTP_USER_AGENT) || preg_match('/MSIE 6.0/', $HTTP_USER_AGENT)) {
@@ -2703,6 +2708,19 @@ function send_binary_content($data,$name,$type = "application/octet-stream")
 }
 
 
+function reverse_html_entities($str,$type = ENT_QUOTES , $charset = "UTF-8")
+{
+  if(is_string($str)){
+    return(htmlentities($str,$type,$charset));
+  }elseif(is_array($str)){
+    foreach($str as $name => $value){
+      $str[$name] = reverse_html_entities($value,$type,$charset);
+    }
+  }
+  return($str);
+}
+
+
 /*! \brief Encode special string characters so we can use the string in \
            HTML output, without breaking quotes.
     @param  The String we want to encode.
@@ -2711,7 +2729,22 @@ function send_binary_content($data,$name,$type = "application/octet-stream")
 function xmlentities($str)
 { 
   if(is_string($str)){
-    return(htmlentities($str,ENT_QUOTES));
+
+    static $asc2uni= array();
+    if (!count($asc2uni)){
+      for($i=128;$i<256;$i++){
+    #    $asc2uni[chr($i)] = "&#x".dechex($i).";";
+      }
+    }
+
+    $str = str_replace("&", "&amp;", $str);
+    $str = str_replace("<", "&lt;", $str);
+    $str = str_replace(">", "&gt;", $str);
+    $str = str_replace("'", "&apos;", $str);
+    $str = str_replace("\"", "&quot;", $str);
+    $str = str_replace("\r", "", $str);
+    $str = strtr($str,$asc2uni);
+    return $str;
   }elseif(is_array($str)){
     foreach($str as $name => $value){
       $str[$name] = xmlentities($value);