Code

Updated accountRDN property handling
[gosa.git] / gosa-core / plugins / personal / generic / class_user.inc
index 4c99d76df23b1184c97af99ea64bd31bef4c3f48..b81be284c3904b0ca47389be2da75143c6580ed7 100644 (file)
@@ -141,7 +141,7 @@ class user extends plugin
 
     $this->config= $config;
     /* Configuration is fine, allways */
-    if($this->config->get_cfg_value("honourIvbbAttributes") == "true"){
+    if($this->config->get_cfg_value("core","honourIvbbAttributes") == "true"){
       $this->governmentmode = TRUE;
       $this->attributes=array_merge($this->attributes,$this->govattrs);
     }
@@ -175,7 +175,7 @@ class user extends plugin
     }
 
     /* Make hash default to md5 if not set in config */
-    $hash= $this->config->get_cfg_value("passwordDefaultHash", "crypt/md5");
+    $hash= $this->config->get_cfg_value("core","passwordDefaultHash");
 
     /* Load data from LDAP? */
     if ($dn !== NULL){
@@ -270,7 +270,7 @@ class user extends plugin
         $attrs = $ldap->fetch();
         $this->manager_name = $attrs['cn'][0];
       }else{
-        $this->manager_name = "("._("Unknown")."!): ".$this->manager;
+        $this->manager_name = "("._("unknown")."!): ".$this->manager;
       }
     }
   }
@@ -316,8 +316,7 @@ class user extends plugin
     }
     if($this->dialog && $this->dialog instanceOf singleUserSelect && count($this->dialog->detectPostActions())){
       $users = $this->dialog->detectPostActions();
-      if(isset($users['targets']) && count($users['targets'])){
-
+      if(isset($users['action']) && $users['action'] =='userSelected' && isset($users['targets']) && count($users['targets'])){
         $headpage = $this->dialog->getHeadpage();
         $dn = $users['targets'][0];
         $attrs = $headpage->getEntry($dn);
@@ -333,7 +332,7 @@ class user extends plugin
 
 
     $smarty= get_smarty();
-    $smarty->assign("usePrototype", "true");
+
     $smarty->assign("gosaLoginRestrictionWidget", $this->gosaLoginRestrictionWidget->render());
 
     /* Assign sex */
@@ -393,6 +392,7 @@ class user extends plugin
         }
         $this->pwObject->display = TRUE;
         $this->dialog= TRUE;
+        pathNavigator::registerPlugin(_("Password configuration"));
         return ($this->pwObject->configure());
       }
     }
@@ -540,11 +540,13 @@ class user extends plugin
     }
     /* Display picture dialog */
     if ($this->picture_dialog){
+      pathNavigator::registerPlugin(_("User picture"));
       return($smarty->fetch (get_template_path('generic_picture.tpl', TRUE, dirname(__FILE__))));
     }
 
     /* Display cert dialog */
     if ($this->cert_dialog){
+      pathNavigator::registerPlugin(_("Certificates"));
       $smarty->assign("CertificateACL",$this->getacl("Certificate"));
       $smarty->assign("Certificate_readable",$this->acl_is_readable("Certificate"));
       $smarty->assign("certificateSerialNumber",$this->certificateSerialNumber);
@@ -563,10 +565,10 @@ class user extends plugin
           /* Additional info if start end time is '0' */
           $add_str_info = "";
           if($timeto == 0 && $timefrom == 0){
-            $add_str_info = "<br><i>"._("(Some types of certificates are currently not supported and may be displayed as 'invalid'.)")."</i>";
+            $add_str_info = "<br>".bold(_("(Not supported certificate types are marked as invalid.)"));
           }
 
-          $str = "<table \"\" border=0>
+          $str = "<table \"\" border=0 summary='"._("Certificates")."'>
                     <tr>
                       <td>CN</td>
                       <td>".preg_replace("/ /", "&nbsp;", $certificate->getname())."</td>
@@ -574,10 +576,10 @@ class user extends plugin
                   </table><br>".
 
                   sprintf(_("Certificate is valid from %s to %s and is currently %s."),
-                        "<b>".date('d M Y',$timefrom)."</b>",
-                        "<b>".date('d M Y',$timeto)."</b>",
-                        $certificate->isvalid()?"<b><font style='color:green'>"._("valid")."</font></b>":
-                                                "<b><font style='color:red'>"._("invalid")."</font></b>").$add_str_info;
+                        bold(date('d M Y',$timefrom)),
+                        bold(date('d M Y',$timeto)),
+                        $certificate->isvalid()?bold("<span style='color:green'>"._("valid")."</span>"):
+                                                bold("<span style='color:red'>"._("invalid")."</span>")).$add_str_info;
 
           $smarty->assign($cert."info",$str);
           $smarty->assign($cert."_state","true");
@@ -598,14 +600,14 @@ class user extends plugin
 
     /* Prepare password hashes */
     if ($this->pw_storage == ""){
-      $this->pw_storage= $this->config->get_cfg_value("hash");
+      $this->pw_storage= $this->config->get_cfg_value("core","passwordDefaultHash");
     }
 
     $temp= passwordMethod::get_available_methods();
     $is_configurable= FALSE;
     $hashes = $temp['name'];
     if(isset($temp[$this->pw_storage])){
-      $test= new $temp[$this->pw_storage]($this->config);
+      $test= new $temp[$this->pw_storage]($this->config, $this->dn);
       $is_configurable= $test->is_configurable();
     }else{
       new msg_dialog(_("Password method"),_("The selected password method is no longer available."),WARNING_DIALOG);
@@ -744,7 +746,6 @@ class user extends plugin
     while ($ldap->fetch()){
       $og= new ogroup($this->config, $ldap->getDN());
       unset($og->member[$this->dn]);
-      $og->member= array_values($og->member);
       $og->save ();
     }
 
@@ -779,7 +780,7 @@ class user extends plugin
     }
 
     /* If needed, let the password method do some cleanup */
-    $tmp = new passwordMethod($this->config);
+    $tmp = new passwordMethod($this->config, $this->dn);
     $available = $tmp->get_available_methods();
     if (in_array_ics($this->pw_storage, $available['name'])){
       $test= new $available[$this->pw_storage]($this->config);
@@ -1151,11 +1152,11 @@ class user extends plugin
         die ("Could not connect to LDAP server");
       }
       ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
-      if (function_exists("ldap_set_rebind_proc") && $this->config->get_cfg_value("ldapFollowReferrals") == "true") {
+      if (function_exists("ldap_set_rebind_proc") && $this->config->get_cfg_value("core","ldapFollowReferrals") == "true") {
         ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1);
         ldap_set_rebind_proc($ds, array(&$this, "rebind"));
       }
-      if($this->config->get_cfg_value("ldapTLS") == "true"){
+      if($this->config->get_cfg_value("core","ldapTLS") == "true"){
         ldap_start_tls($ds);
       }
       if (!($res = @ldap_bind($ds, $this->config->current['ADMIN'],
@@ -1170,7 +1171,7 @@ class user extends plugin
 
     /* If needed, let the password method do some cleanup */
     if ($this->pw_storage != $this->last_pw_storage){
-      $tmp = new passwordMethod($this->config);
+      $tmp = new passwordMethod($this->config, $this->dn);
       $available = $tmp->get_available_methods();
       if (in_array_ics($this->last_pw_storage, $available['name'])){
         $test= new $available[$this->last_pw_storage]($this->config,$this->dn);
@@ -1240,7 +1241,7 @@ class user extends plugin
   function update_new_dn()
   {
     // Alternative way to handle DN
-    $pattern= $this->config->get_cfg_value("accountRDN");
+    $pattern= $this->config->get_cfg_value("user","accountRDN");
     if ($pattern != "") {
       $rdn= $this->create_initial_rdn($pattern);
       $attribute= preg_replace('/=.*$/', '', $rdn);
@@ -1258,7 +1259,7 @@ class user extends plugin
     } else {
 
       $pt= "";
-      if($this->config->get_cfg_value("personalTitleInDN") == "true"){
+      if($this->config->get_cfg_value("core","personalTitleInDN") == "true"){
         if(!empty($this->personalTitle)){
           $pt = $this->personalTitle." ";
         }
@@ -1267,7 +1268,7 @@ class user extends plugin
       $this->cn= $pt.$this->givenName." ".$this->sn;
 
       /* Permissions for that base? */
-      if ($this->config->get_cfg_value("accountPrimaryAttribute") == "uid"){
+      if ($this->config->get_cfg_value("core","accountPrimaryAttribute") == "uid"){
         $this->new_dn= 'uid='.$this->uid.','.get_people_ou().$this->base;
       } else {
         /* Don't touch dn, if cn hasn't changed */
@@ -1342,7 +1343,7 @@ class user extends plugin
       if ($this->uid == ""){
         $message[]= msgPool::required(_("Login"));
       }
-      if ($this->config->get_cfg_value("accountPrimaryAttribute") != "uid"){
+      if ($this->config->get_cfg_value("core","accountPrimaryAttribute") != "uid"){
         $ldap->cat($this->new_dn);
         if ($ldap->count() != 0 && $this->dn != $this->new_dn && $this->dn == 'new'){
           $message[]= msgPool::duplicated(_("Name"));
@@ -1437,11 +1438,11 @@ class user extends plugin
   {
     $ds= ldap_connect($this->config->current['SERVER']);
     ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
-    if (function_exists("ldap_set_rebind_proc") && $this->config->get_cfg_value("ldapFollowReferrals") == "true"){
+    if (function_exists("ldap_set_rebind_proc") && $this->config->get_cfg_value("core","ldapFollowReferrals") == "true"){
       ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1);
       ldap_set_rebind_proc($ds, array(&$this, "rebind"));
     }
-    if ($this->config->get_cfg_value("ldapTLS") == "true"){
+    if ($this->config->get_cfg_value("core","ldapTLS") == "true"){
       ldap_start_tls($ds);
     }
 
@@ -1641,6 +1642,20 @@ class user extends plugin
     $this->old_userPKCS12= "";
     $this->old_userSMIMECertificate= "";
     $this->old_userCertificate= "";
+
+    /* Generate dateOfBirth entry */
+    if (isset ($source['dateOfBirth'])){
+        list($year, $month, $day)= explode("-", $source['dateOfBirth'][0], 3);
+        $this->dateOfBirth= "$day.$month.$year";
+    } else {
+        $this->dateOfBirth= "";
+    }
+
+    // Try to load the user picture
+    $tmp_dn = $this->dn;
+    $this->dn = $source['dn'];
+    $this->load_picture();
+    $this->dn = $tmp_dn;
   }
 
 
@@ -1672,11 +1687,30 @@ class user extends plugin
         "plCategory"    => array("users" => array("description" => _("Users"),
                                                   "objectClass" => "gosaAccount")),
 
+
+        "plProperties" => array(
+            array(
+                "name"          => "accountRDN",
+                "type"          => "string",
+                "default"       => "",
+                "description"   => sprintf(
+                    _("The 'accountRDN' option tells GOsa to use a placeholder pattern for generating account RDNs. A pattern can include attribute names prefaced by a % and normal text: %s. This will generate a RDN consisting of cn=.... filled with surname and given name of the edited account. This option disables the use of accountPrimaryAttribute and personalTitleInDn."), 
+                    "accountRDN=\"cn=%sn %givenName\""),
+                "check"         => "gosaProperty::isString",
+                "migrate"       => "",
+                "group"         => "plugin",
+                "mandatory"     => FALSE
+                )
+
+            ),
         "plProvidedAcls" => array(
 
           "sn"                => _("Surname"),
           "givenName"         => _("Given name"),
-          "uid"               => _("User identification"),
+          "uid"               => _("Login"),
+
+          "gosaUserDefinedFilter"  => _("Allow definition of custom filters"),
+
           "personalTitle"     => _("Personal title"),
           "academicTitle"     => _("Academic title"),
 
@@ -1714,13 +1748,13 @@ class user extends plugin
 
         );
 
-    /* Append government attributes if required */
-    global $config;
-    if($config->get_cfg_value("honourIvbbAttributes") == "true"){
-      foreach($govattrs as $attr => $desc){
-        $ret["plProvidedAcls"][$attr] = $desc;
-      }
-    }
+#   /* Append government attributes if required */
+#   global $config;
+#   if($config->get_cfg_value("core","honourIvbbAttributes") == "true"){
+#     foreach($govattrs as $attr => $desc){
+#       $ret["plProvidedAcls"][$attr] = $desc;
+#     }
+#   }
     return($ret);
   }
 
@@ -1867,7 +1901,7 @@ class user extends plugin
         $attrs = $ldap->fetch();
         $this->manager_name = $attrs['cn'][0];
       }else{
-        $this->manager_name = "("._("Unknown")."!): ".$this->manager;
+        $this->manager_name = "("._("unknown")."!): ".$this->manager;
       }
     }