Code

Updated workstation and environment plugins to handle shares correctly
[gosa.git] / plugins / personal / posix / class_posixAccount.inc
index 47b7b36ada1c2b0c9ab95955e8279d7b165c0083..6a66a4f6cc7e9f39e6c7904906a8460a25759fa1 100644 (file)
@@ -38,6 +38,7 @@ class posixAccount extends plugin
   var $accessTo= array();
   var $trustModel= "";
 
+  var $glist=array();
   var $status= "";
   var $loginShellList= array();
   var $groupMembership= array();
@@ -214,7 +215,7 @@ class posixAccount extends plugin
 
     /* Do we represent a valid posixAccount? */
     if (!$this->is_account && $this->parent == NULL ){
-      $display= "<img src=\"images/stop.png\" align=center>&nbsp;<b>".
+      $display= "<img alt=\"\" src=\"images/stop.png\" align=\"middle\">&nbsp;<b>".
         _("This account has no unix extensions.")."</b>";
       $display.= back_to_main();
       return ($display);
@@ -229,14 +230,15 @@ class posixAccount extends plugin
           $obj= $this->parent->by_object['sambaAccount'];
         }
         if (isset($obj) && $obj->is_account == TRUE &&
-            isset($this->parent->by_object['sambaAccount'])){
+             ((isset($this->parent->by_object['sambaAccount']))&&($this->parent->by_object['sambaAccount']->is_account))
+                       ||(isset($this->parent->by_object['environment'] ))&&($this->parent->by_object['environment'] ->is_account)){
 
           /* Samba3 dependency on posix accounts are enabled
              in the moment, because I need to rely on unique
              uidNumbers. There'll be a better solution later
              on. */
           $display= $this->show_header(_("Remove posix account"),
-              _("This account has unix features enabled. To disable them, you'll need to remove the samba account first."), TRUE);
+              _("This account has unix features enabled. To disable them, you'll need to remove the samba / environment account first."), TRUE);
         } else {
           $display= $this->show_header(_("Remove posix account"),
               _("This account has posix features enabled. You can disable them by clicking below."));
@@ -358,6 +360,7 @@ class posixAccount extends plugin
       }
       $smarty->assign("hint", print_sizelimit_warning());
       $smarty->assign("wslist", $wslist);
+      $smarty->assign("apply", apply_filter());
       $display= $smarty->fetch (get_template_path('trust_machines.tpl', TRUE, dirname(__FILE__)));
       return ($display);
     }
@@ -394,7 +397,7 @@ class posixAccount extends plugin
       register_global("groupfilter", $groupfilter);
 
       /* Calculate actual groups */
-      $gd->reload();
+      $gd->reload2();
       $glist= array();
       foreach ($gd->grouplist as $key => $value){
         if (!isset($this->groupMembership[$key])){
@@ -402,7 +405,6 @@ class posixAccount extends plugin
         }
       }
 
-      /* Show dialog */
       $smarty->assign("groups", $glist);
       $smarty->assign("search_image", get_template_path('images/search.png'));
       $smarty->assign("launchimage", get_template_path('images/small_filter.png'));
@@ -415,6 +417,7 @@ class posixAccount extends plugin
       }
       $smarty->assign("hint", print_sizelimit_warning());
 
+      $smarty->assign("apply", apply_filter());
       $display.= $smarty->fetch (get_template_path('posix_groups.tpl', TRUE, dirname(__FILE__)));
       return ($display);
     }
@@ -438,8 +441,10 @@ class posixAccount extends plugin
             "use_shadowWarning") as $val){
         if ($this->$val == 1){
           $smarty->assign("$val", "checked");
-          $smarty->assign("$val"."ACL", chkacl($this->acl, $val));
+        } else {
+          $smarty->assign("$val", "");
         }
+        $smarty->assign("$val"."ACL", chkacl($this->acl, $val));
       }
     }
 
@@ -468,9 +473,15 @@ class posixAccount extends plugin
     $smarty->assign("shells", $this->loginShellList);
     $smarty->assign("secondaryGroups", $this->secondaryGroups);
     $smarty->assign("primaryGroup", $this->primaryGroup);
-    $smarty->assign("groupMembership", $this->groupMembership);
+    if (!count($this->groupMembership)){
+      $smarty->assign("groupMembership", array("&nbsp;"));
+    } else {
+      $smarty->assign("groupMembership", $this->groupMembership);
+    }
     if (count($this->groupMembership) > 16){
       $smarty->assign("groups", "too_many_for_nfs");
+    } else {
+      $smarty->assign("groups", "");
     }
     $smarty->assign("printerList", $this->printerList);
     $smarty->assign("languages", $this->config->data['MAIN']['LANGUAGES']);
@@ -478,38 +489,71 @@ class posixAccount extends plugin
     /* Checkboxes */
     if ($this->force_ids == 1){
       $smarty->assign("force_ids", "checked");
+      if ($_SESSION['js']){
+        $smarty->assign("forceMode", "");
+      }
     } else {
-      if ($_SESSION["js"]){
+      if ($_SESSION['js']){
         $smarty->assign("forceMode", "disabled");
       }
+      $smarty->assign("force_ids", "");
     }
     $smarty->assign("force_idsACL", chkacl($this->acl, "force_ids"));
 
     /* Load attributes and acl's */
     foreach($this->attributes as $val){
+      if(($_SESSION["js"])&&(($val=="uidNumber")||($val=="gidNumber")))
+        {
+          $smarty->assign("$val"."ACL","");
+          $smarty->assign("$val", $this->$val);
+          continue;
+        }
       $smarty->assign("$val", $this->$val);
       $smarty->assign("$val"."ACL", chkacl($this->acl,$val));
     }
     $smarty->assign("groupMembershipACL", chkacl($this->acl, "groupMembership"));
-    $smarty->assign("must_change_password", chkacl($this->acl, "must_change_password"));
+    $smarty->assign("status", $this->status);
 
     /* Work on trust modes */
     $smarty->assign("trustmodeACL", chkacl($this->acl, "trustmode"));
     if ($this->trustModel == "fullaccess"){
       $trustmode= 1;
-      $smarty->assign("trusthide", "disabled");
+      // pervent double disable tag in html code, this will disturb our clean w3c html
+    
+    if(chkacl($this->acl, "trustmode")==""){
+          $smarty->assign("trusthide", "disabled");
+      }else{
+          $smarty->assign("trusthide", "");
+      }
+
     } elseif ($this->trustModel == "byhost"){
       $trustmode= 2;
       $smarty->assign("trusthide", "");
     } else {
-      $smarty->assign("trusthide", "disabled");
+      // pervent double disable tag in html code, this will disturb our clean w3c html
+      if(chkacl($this->acl, "trustmode")==""){
+          $smarty->assign("trusthide", "disabled");
+      }else{
+          $smarty->assign("trusthide", "");
+      }
       $trustmode= 0;
     }
     $smarty->assign("trustmode", $trustmode);
     $smarty->assign("trustmodes", array( 0 => _("disabled"), 1 => _("full access"),
           2 => _("allow access to these hosts")));
+
+
+
+    if((count($this->accessTo))==0)
+      $smarty->assign("emptyArrAccess",true);
+    else
+      $smarty->assign("emptyArrAccess",false);
+    
+
+
     $smarty->assign("workstations", $this->accessTo);
 
+    $smarty->assign("apply", apply_filter());
     $display.= $smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__)));
     return($display);
   }
@@ -625,6 +669,7 @@ class posixAccount extends plugin
   /* Save data to LDAP, depending on is_account we save or delete */
   function save()
   {
+       
     /* include global link_info */
     $ldap= $this->config->get_ldap_link();
 
@@ -703,14 +748,17 @@ class posixAccount extends plugin
       $this->shadowExpire = "";
     }
 
-    /* Call parents save to prepare $this->attrs */
-    plugin::save();
-
     /* Fill gecos */
     if (isset($this->parent) && $this->parent != NULL){
-      $this->gecos= $this->parent->by_object['user']->cn;
+      $this->gecos= rewrite($this->parent->by_object['user']->cn);
+         if (!preg_match('/[a-z0-9 -]/i', $this->gecos)){
+                 $this->gecos= "";
+         }
     }
 
+    /* Call parents save to prepare $this->attrs */
+    plugin::save();
+
     /* Trust accounts */
     $objectclasses= array();
     foreach ($this->attrs['objectClass'] as $key => $class){
@@ -736,6 +784,14 @@ class posixAccount extends plugin
       }
     }
 
+    if(empty($this->attrs['gosaDefaultPrinter'])){
+      $thid->attrs['gosaDefaultPrinter']=array();
+    }
+
+       foreach(array("shadowMin","shadowMax","shadowWarning","shadowInactive") as $attr){
+               $this->attrs[$attr] = (int) $this->attrs[$attr];
+       }
+
     /* Save data to LDAP */
     $ldap->cd($this->dn);
     $ldap->modify($this->attrs);
@@ -836,7 +892,6 @@ class posixAccount extends plugin
           $message[]= _("Value specified as 'GID' is too small.");
         }
       }
-
     }
 
     /* Check shadow settings, well I like spaghetties... */
@@ -878,11 +933,13 @@ class posixAccount extends plugin
       }
     }
 
+  //  if(empty($this->gosaDefaultPrinter)){
+  //    $message[]= _("You need to specify a valid default printer.");
+  //  }
+
     return ($message);
   }
 
-
-  /* Add posix user to some groups */
   function addGroup ($groups)
   {
     /* include global link_info */
@@ -982,7 +1039,14 @@ class posixAccount extends plugin
 
   }
 
+
+
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+
+
+
+
+
 ?>