Index: kernel/classes/datatypes/ezuser/ezusersetting.php
===================================================================
--- kernel/classes/datatypes/ezuser/ezusersetting.php	(revision 21453)
+++ kernel/classes/datatypes/ezuser/ezusersetting.php	(working copy)
@@ -128,6 +128,57 @@
                                           array( 'user_id' => $userID ) );
     }
 
+    function store( $fieldFilters = null )
+    {
+        $siteIni = eZINI::instance( 'site.ini' );
+
+        if( $siteIni->hasVariable('UserSettings','HideUserNodeIfDisabled') &&
+            $siteIni->variable('UserSettings','HideUserNodeIfDisabled') === 'enabled' )
+         {
+            // if is_enabled == 1   =>  make usernode visible (unhide)
+            if( $this->attribute('is_enabled') )
+            {
+                $this->hideUnhideUserObject( false );
+            }
+            // hide node
+            else
+            {
+                 $this->hideUnhideUserObject( true );
+            }
+         }
+
+        eZPersistentObject::store();
+    }
+
+    /*
+        hide or unhide the nodes of UserID
+        $hide = true  - hide
+        $hide = false - unhide
+    */
+    function hideUnhideUserObject( $hide = true )
+    {
+        $userId = $this->attribute( 'user_id' );
+
+        if( $userId == null )
+            return;
+        $userNodeList = eZContentObjectTreeNode::fetchByContentObjectID( $userId );
+
+        foreach( $userNodeList as $userNode )
+        {
+            // unhide object
+            if( $userNode->attribute( 'is_invisible' ) && $hide == false )
+            {
+                eZContentObjectTreeNode::unhideSubTree( $userNode );
+                eZDebug::writeDebug('Unhide User with ID: '. $userId .' NodeId: '. $userNode->attribute('node_id').' Name: '.$userNode->attribute('name') , 'eZUserSettings::hideUnhideUserObject');
+            }
+            elseif( !$userNode->attribute( 'is_invisible' ) && $hide == true )
+            {
+                eZContentObjectTreeNode::hideSubTree( $userNode );
+                eZDebug::writeDebug('Hide User with ID: '. $userId .' NodeId: '. $userNode->attribute('node_id').' Name: '.$userNode->attribute('name') , 'eZUserSettings::hideUnhideUserObject');
+            }
+        }
+    }
+
     /// \privatesection
     public $UserID;
     public $IsEnabled;

Index: settings/site.ini
===================================================================
--- settings/site.ini	(revision 21453)
+++ settings/site.ini	(working copy)
@@ -443,6 +443,11 @@
 # and should be name
 ExtensionDirectory[]
 
+# default is disabled
+# enabled - the user node will be hide if the user account is disabled
+# disabled - the user node will be unhide if the user account is enabled
+HideUserNodeIfDisabled=disabled
+
 [SiteAccessSettings]
 # Set to true if you want to force VirualHost mode (with RewriteRules in apache)
 # If this is set to true nonVirtualHost mode will not work correctly
