Code

Removed Current main base settings
[gosa.git] / include / functions.inc
index dcd4ccaaf19915d297795cecf95c2de43bb66404..0cb50d54baef4386113ee88aef4807ff8d92f4bb 100644 (file)
@@ -492,7 +492,7 @@ function get_lock ($object)
 
 function get_list($filter, $subtreeACL, $base= "", $attributes= array(), $flags= GL_SUBSEARCH)
 {
-  global $config;
+  global $config, $ui;
 
   /* Get LDAP link */
   $ldap= $config->get_ldap_link($flags & GL_SIZELIMIT);
@@ -504,18 +504,22 @@ function get_list($filter, $subtreeACL, $base= "", $attributes= array(), $flags=
     $ldap->cd ($base);
   }
 
+  /* Strict filter for administrative units? */
+  if ($ui->gosaUnitTag != "" && isset($config->current['STRICT_UNITS']) &&
+      preg_match('/TRUE/i', $config->current['STRICT_UNITS'])){
+    $filter= "(&(gosaUnitTag=".$ui->gosaUnitTag.")$filter)";
+  }
+
   /* Perform ONE or SUB scope searches? */
   if ($flags & GL_SUBSEARCH) {
     $ldap->search ($filter, $attributes);
   } else {
-    $ldap->ls ($filter);
+    $ldap->ls ($filter,$base,$attributes);
   }
 
   /* Check for size limit exceeded messages for GUI feedback */
   if (preg_match("/size limit/i", $ldap->error)){
     $_SESSION['limit_exceeded']= TRUE;
-  } else {
-    $_SESSION['limit_exceeded']= FALSE;
   }
 
   /* Crawl through reslut entries and perform the migration to the
@@ -772,7 +776,13 @@ function get_ou($name)
 {
   global $config;
 
-  $ou= $config->current[$name];
+  /* Preset ou... */
+  if (isset($config->current[$name])){
+    $ou= $config->current[$name];
+  } else {
+    return "";
+  }
+  
   if ($ou != ""){
     if (!preg_match('/^[^=]+=[^=]+/', $ou)){
       return @LDAP::convert("ou=$ou,");
@@ -819,34 +829,6 @@ function get_base_from_people($dn)
 }
 
 
-function get_departments($ignore_dn= "")
-{
-  global $config;
-
-  /* Initialize result hash */
-  $result= array();
-  $result['/']= $config->current['BASE'];
-
-  /* Get list of department objects */
-  $ldap= $config->get_ldap_link();
-  $ldap->cd ($config->current['BASE']);
-  $ldap->search ("(objectClass=gosaDepartment)", array("ou"));
-  while ($attrs= $ldap->fetch()){
-    $dn= $ldap->getDN();
-    if ($dn == $ignore_dn){
-      continue;
-    }
-
-    /* Only assign non-root departments */
-    if ($dn != $result['/']){
-      $result[convert_department_dn($dn)]= $dn;
-    }
-  }
-
-  return ($result);
-}
-
-
 function chkacl($acl, $name)
 {
   /* Look for attribute in ACL */
@@ -907,6 +889,12 @@ function is_uid($uid)
 }
 
 
+function is_ip($ip)
+{
+  return preg_match("/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/", $ip);
+}
+
+
 function is_id($id)
 {
   if ($id == ""){
@@ -971,37 +959,42 @@ function print_red()
   if (isset($_SESSION['DEBUGLEVEL'])){
 
     if($_SESSION['LastError'] == $string){
-
+    
       if((!isset($_SESSION['errorsAlreadyPosted'][$string]))){
         $_SESSION['errorsAlreadyPosted'][$string] = 1;
       }
-      $_SESSION['errorsAlreadyPosted'][$string] ++;
+      $_SESSION['errorsAlreadyPosted'][$string]++;
 
     }else{
-      if((!empty($_SESSION['LastError'])) && ($_SESSION['errorsAlreadyPosted'][$_SESSION['LastError']]>1)){
-        $_SESSION['errors'].= "<div align=\"left\" style=\"border-width:5px;".
-          "border-style:solid;border-color:red; background-color:black;".
-          "margin-bottom:10px; padding:8px;\"><table style='width:100%' summary=''><tr><td><img alt=\"\" src=\"".
-          get_template_path('images/warning.png')."\"></td>".
-          "<td width=\"100%\" style=\"text-align:center\"><font color=\"#FFFFFF\">".
-          "<b style='font-size:16px;'>".sprintf(_("Last message repeated %s times."),$_SESSION['errorsAlreadyPosted'][$_SESSION['LastError']])."</b></font></td><td>".
-          "<img alt=\"\"src=\"".get_template_path('images/warning.png').
-          "\"></td></tr></table></div>\n";
-      }
-
       if($string != NULL){
-        $_SESSION['errors'].= "<div align=\"left\" style=\"border-width:5px;".
-          "border-style:solid;border-color:red; background-color:black;".
-          "margin-bottom:10px; padding:8px;\"><table style='width:100%' summary=''><tr><td><img alt=\"\" src=\"".
-          get_template_path('images/warning.png')."\"></td>".
-          "<td width=\"100%\" style=\"text-align:center\"><font color=\"#FFFFFF\">".
-          "<b style='font-size:16px;'>$string</b></font></td><td>".
-          "<img alt=\"\"src=\"".get_template_path('images/warning.png').
-          "\"></td></tr></table></div>\n";
+        if (preg_match("/"._("LDAP error:")."/", $string)){
+          $addmsg= _("Problems with the LDAP server mean that you probably lost the last changes. Please check your LDAP setup for possible errors and try again.");
+          $img= "images/error.png";
+        } else {
+          if (!preg_match('/[.!?]$/', $string)){
+            $string.= ".";
+          }
+          $string= preg_replace('/<br>/', ' ', $string);
+          $img= "images/warning.png";
+          $addmsg= _("Please check your input and fix the error. Press 'OK' to close this message box.");
+        }
+      
+        if(isset($_SESSION['errors']) && strlen($_SESSION['errors'])==0) {
+          $_SESSION['errors'].= "<div style='margin-left:15%;margin-top:100px;".
+            "background-color:white;padding:5px;border:5px solid red;width:55%;z-index:150;".
+            "position:absolute' id='e_layer'><table style='width:100%' summary='' border=0>".
+            "<tr><td style='vertical-align:top;padding:10px'><img alt='' src='".
+            get_template_path($img)."'></td>".
+            "<td style='width:100%'><h1>"._("An error occured while processing your request").
+            "</h1><b>$string</b><br><br>$addmsg</td></tr><tr><td colspan='2' align='center'><br><button ".
+            (($_SESSION['js']==FALSE)?"type='submit'":"type='button'").
+            " style='width:80px' onClick='hide(\"e_layer\")'>".
+            _("OK")."</button></td></tr></table></div>";
+        }
+
       }else{
         return;
       }
-      $_SESSION['errorsAlreadyPosted'] = array();
       $_SESSION['errorsAlreadyPosted'][$string] = 1;
 
     }
@@ -1010,7 +1003,6 @@ function print_red()
     echo "Error: $string\n";
   }
   $_SESSION['LastError'] = $string; 
-
 }
 
 
@@ -1020,12 +1012,19 @@ function gen_locked_message($user, $dn)
 
   $_SESSION['dn']= $dn;
   $ldap= $config->get_ldap_link();
-  $ldap->cat ($user);
+  $ldap->cat ($user, array('uid', 'cn'));
   $attrs= $ldap->fetch();
-  $uid= $attrs["uid"][0];
 
-  //  print_a($_POST);
-  //  print_a($_GET);
+  /* Stop if we have no user here... */
+  if (count($attrs)){
+    $uid= $attrs["uid"][0];
+    $cn= $attrs["cn"][0];
+  } else {
+    $uid= $attrs["uid"][0];
+    $cn= $attrs["cn"][0];
+  }
+  
+  $remove= false;
 
   if((isset($_SESSION['LOCK_VARS_TO_USE']))&&(count($_SESSION['LOCK_VARS_TO_USE']))){
     $_SESSION['LOCK_VARS_USED']  =array();
@@ -1050,7 +1049,12 @@ function gen_locked_message($user, $dn)
   /* Prepare and show template */
   $smarty= get_smarty();
   $smarty->assign ("dn", $dn);
-  $smarty->assign ("message", sprintf(_("You're going to edit the LDAP entry '%s' which appears to be used by '%s'. Please contact the person in order to clarify proceedings."), $dn, "<a href=\"main.php?plug=0&amp;viewid=$uid\">$uid</a>"));
+  if ($remove){
+    $smarty->assign ("action", _("Continue anyway"));
+  } else {
+    $smarty->assign ("action", _("Edit anyway"));
+  }
+  $smarty->assign ("message", sprintf(_("You're going to edit the LDAP entry '%s' which appears to be used by '%s'. Please contact the person in order to clarify proceedings."), "<b>".$dn."</b>", "<b><a href=\"main.php?plug=0&amp;viewid=$uid\">$cn</a></b>"));
 
   return ($smarty->fetch (get_template_path('islocked.tpl')));
 }
@@ -1146,10 +1150,14 @@ function show_errors($message)
 }
 
 
-function show_ldap_error($message)
+function show_ldap_error($message, $addon= "")
 {
   if (!preg_match("/Success/i", $message)){
-    print_red (_("LDAP error:")." $message");
+    if ($addon == ""){
+      print_red (_("LDAP error: $message"));
+    } else {
+      print_red ("$addon<br><br><b>"._("LDAP error:")."</b> $message");
+    }
     return TRUE;
   } else {
     return FALSE;
@@ -1219,6 +1227,9 @@ function print_header($image, $headline, $info= "")
     $display.= "&nbsp;";
     $display.= "</div>\n";
   }
+  if (isset($_SESSION['errors'])){
+    $display.= $_SESSION['errors'];
+  }
 
   return ($display);
 }
@@ -1951,5 +1962,19 @@ function normalizeLdap($input)
 }
 
 
+/* Resturns the difference between to microtime() results in float  */
+function get_MicroTimeDiff($start , $stop)
+{
+  $a = split("\ ",$start);
+  $b = split("\ ",$stop);
+
+  $secs = $b[1] - $a[1];
+  $msecs= $b[0] - $a[0]; 
+
+  $ret = (float) ($secs+ $msecs);
+  return($ret);
+}
+
+
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>