Fixed bug #11189: Validation issue: value of attribute "method" cannot be "POST"...
[Packages/TYPO3.CMS.git] / typo3 / sysext / beuser / mod / index.php
index 7ebfbb6..b5c6209 100755 (executable)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2007 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
  *
  */
 
-require_once (PATH_t3lib.'class.t3lib_basicfilefunc.php');
-require_once (PATH_t3lib.'class.t3lib_browsetree.php');
-require_once (PATH_t3lib.'class.t3lib_foldertree.php');
-require_once (PATH_t3lib.'class.t3lib_tstemplate.php');
-require_once (PATH_t3lib.'class.t3lib_loadmodules.php');
-require_once (PATH_t3lib.'class.t3lib_tsparser_ext.php');
 require_once (PATH_typo3.'class.alt_menu_functions.inc');
 
+$GLOBALS['LANG']->includeLLFile('EXT:beuser/mod/locallang.xml');
+
 $BE_USER->modAccess($MCONF,1);
 
 
@@ -295,18 +291,19 @@ class printAllPageTree_perms extends printAllPageTree {
                $be_group_Array = t3lib_BEfunc::getGroupNames();
                $lines=array();
                $lines[]='<tr class="bgColor5">
-                       <td nowrap="nowrap"><strong>Page title:</strong></td>
-                       '.($printPath?'<td nowrap="nowrap"><strong>Path:</strong></td>':'').'
-                       <td nowrap="nowrap" colspan=2><strong>User:</strong></td>
-                       <td nowrap="nowrap" colspan=2><strong>Group: &nbsp;</strong></td>
-                       <td nowrap="nowrap"><strong>Everybody: &nbsp;</strong></td>
-                       <td nowrap="nowrap"><strong>This user: &nbsp;</strong></td>
-                       <td nowrap="nowrap"><strong>Main group:</strong></td>
+                       <td nowrap="nowrap"><strong>' . $GLOBALS['LANG']->getLL('pageTitle', true) . '</strong></td>
+                       ' . ($printPath?'<td nowrap="nowrap"><strong>' . $GLOBALS['LANG']->getLL('path', true) . '</strong></td>':'') . '
+                       <td nowrap="nowrap" colspan="2"><strong>' . $GLOBALS['LANG']->getLL('user', true) . '</strong></td>
+                       <td nowrap="nowrap" colspan="2"><strong>' . $GLOBALS['LANG']->getLL('group', true) . ' &nbsp;</strong></td>
+                       <td nowrap="nowrap"><strong>' . $GLOBALS['LANG']->getLL('everybody', true) . ' &nbsp;</strong></td>
+                       <td nowrap="nowrap"><strong>' . $GLOBALS['LANG']->getLL('thisUser', true) . ' &nbsp;</strong></td>
+                       <td nowrap="nowrap"><strong>' . $GLOBALS['LANG']->getLL('mainGroup', true) . '</strong></td>
                </tr>';
 
-               if (!is_array($treeArr))        $treeArr=$this->tree;
-               reset($treeArr);
-               while(list($k,$v)=each($treeArr))       {
+               if (!is_array($treeArr)) {
+                       $treeArr = $this->tree;
+               }
+               foreach ($treeArr as $v) {
                        $col1 = ' bgcolor="'.t3lib_div::modifyHtmlColor($GLOBALS['SOBE']->doc->bgColor4,+10,+10,+10).'"';
                        $row = $v['row'];
                        $title = htmlspecialchars(t3lib_div::fixed_lgd_cs($row['title'],$this->BE_USER->uc['titleLen']));
@@ -318,7 +315,7 @@ class printAllPageTree_perms extends printAllPageTree {
                                <td nowrap="nowrap">'.$be_group_Array[$row['perms_groupid']]['title'].' &nbsp;</td>
                                <td nowrap="nowrap">'.$this->ext_printPerms($row['perms_group']).' &nbsp;</td>
                                <td nowrap="nowrap" align="center" '.$col1.'>'.$this->ext_printPerms($row['perms_everybody']).' &nbsp;</td>
-                               <td nowrap="nowrap" align="center">'.($row['editlock'] ? '<img '.t3lib_iconWorks::skinImg($this->backPath,'gfx/recordlock_warning2.gif').' title="Edit lock prevents all editing" alt="" />' : $this->ext_printPerms($this->BE_USER->calcPerms($row))).' &nbsp;</td>
+                               <td nowrap="nowrap" align="center">' . ($row['editlock'] ? '<img ' . t3lib_iconWorks::skinImg($this->backPath,'gfx/recordlock_warning2.gif') . ' title="' . $GLOBALS['LANG']->getLL('editLock', true) . '" alt="" />' : $this->ext_printPerms($this->BE_USER->calcPerms($row))) . ' &nbsp;</td>
                                <td nowrap="nowrap" align="center">'.$this->ext_printPerms($this->ext_groupPerms($row,$be_group_Array[$this->BE_USER->firstMainGroup])).' &nbsp;</td>
                        </tr>';
                }
@@ -525,7 +522,7 @@ class local_beUserAuth extends t3lib_beUserAuth {
                $pClause=$pClause?$pClause:$this->getPagePermsClause(1);
 
                        // Traverse mounts, check if they are readable:
-               foreach($webmounts as $k => $id)        {
+               foreach ($webmounts as $k => $id)       {
                        $rec=t3lib_BEfunc::getRecord('pages',$id,'*',' AND '.$pClause);
                        if (!is_array($rec))    {
                                $this->ext_non_readAccessPageArray[$id]=t3lib_BEfunc::getRecord('pages',$id);
@@ -543,13 +540,15 @@ class local_beUserAuth extends t3lib_beUserAuth {
        function ext_non_readAccessPages()      {
                $lines=array();
 
-               foreach($this->ext_non_readAccessPageArray as $pA)      {
-                       if ($pA)        $lines[]=t3lib_BEfunc::getRecordPath($pA['uid'],'',15);
+               foreach ($this->ext_non_readAccessPageArray as $pA) {
+                       if ($pA) {
+                               $lines[] = t3lib_BEfunc::getRecordPath($pA['uid'],'',15);
+                       }
                }
-               if (count($lines))      {
+               if (count($lines)) {
                        return '<table bgcolor="red" border="0" cellpadding="0" cellspacing="0">
                                <tr>
-                                       <td align="center"><font color="white"><strong>The user has no read access to these DB-mounts!</strong></font></td>
+                                       <td align="center"><font color="white"><strong>' . $GLOBALS['LANG']->getLL('noReadAccess', true) . '</strong></font></td>
                                </tr>
                                <tr>
                                        <td>'.implode('</td></tr><tr><td>',$lines).'</td>
@@ -579,8 +578,7 @@ class local_beUserAuth extends t3lib_beUserAuth {
                        // Prepare for filemount and db-mount
                if ($printTrees)        {       // ... this is if we see the detailed view for a user:
                                // Page tree object:
-                       $className=t3lib_div::makeInstanceClassName(!$this->isAdmin() ? 'printAllPageTree_perms' : 'printAllPageTree');
-                       $pagetree = new $className($this,$this->returnWebmounts());     // Here, only readable webmounts are returned (1=1)
+                       $pagetree = t3lib_div::makeInstance(!$this->isAdmin() ? 'printAllPageTree_perms' : 'printAllPageTree', $this, $this->returnWebmounts());        // Here, only readable webmounts are returned (1=1)
                        $pagetree->addField('perms_user',1);
                        $pagetree->addField('perms_group',1);
                        $pagetree->addField('perms_everybody',1);
@@ -589,16 +587,13 @@ class local_beUserAuth extends t3lib_beUserAuth {
                        $pagetree->addField('editlock',1);
 
                                // Folder tree object:
-                       $className=t3lib_div::makeInstanceClassName('printAllFolderTree');
-                       $foldertree = new $className($this,$this->returnFilemounts());
+                       $foldertree = t3lib_div::makeInstance('printAllFolderTree', $this, $this->returnFilemounts());
                } else {
                                // Page tree object:
-                       $className=t3lib_div::makeInstanceClassName('localPageTree');
-                       $pagetree = new $className($this,$this->returnWebmounts('1=1'));        // Here, ALL webmounts are returned (1=1)
+                       $pagetree = t3lib_div::makeInstance('localPageTree', $this, $this->returnWebmounts('1=1'));     // Here, ALL webmounts are returned (1=1)
 
                                // Folder tree object:
-                       $className=t3lib_div::makeInstanceClassName('localFolderTree');
-                       $foldertree = new $className($this,$this->returnFilemounts());
+                       $foldertree = t3lib_div::makeInstance('localFolderTree', $this, $this->returnFilemounts());
                }
 
                        // Names for modules:
@@ -626,7 +621,7 @@ class local_beUserAuth extends t3lib_beUserAuth {
 
                        // Traverse the enabled analysis topics:
                $out=array();
-               foreach($uInfo as $k => $v)     {
+               foreach ($uInfo as $k => $v)    {
                        if ($compareFlags[$k])  {
                                switch($k)      {
                                        case 'filemounts':
@@ -644,30 +639,27 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                        break;
                                        case 'pagetypes_select':
                                                $pageTypes = explode(',',$v);
-                                               reset($pageTypes);
-                                               while(list($kk,$vv)=each($pageTypes))   {
-                                                       $pageTypes[$kk]=$GLOBALS['LANG']->sL(t3lib_BEfunc::getLabelFromItemlist('pages','doktype',$vv));
+                                               foreach ($pageTypes as &$vv) {
+                                                       $vv = $GLOBALS['LANG']->sL(t3lib_BEfunc::getLabelFromItemlist('pages','doktype',$vv));
                                                }
                                                $out[$k] = implode('<br />',$pageTypes);
                                        break;
                                        case 'tables_select':
                                        case 'tables_modify':
                                                $tables = explode(',',$v);
-                                               reset($tables);
-                                               while(list($kk,$vv)=each($tables))      {
-                                                       if ($vv)        {
-                                                               $tables[$kk]='<span class="nobr">'.t3lib_iconWorks::getIconImage($vv,array(),$GLOBALS['BACK_PATH'],'align="top"').$GLOBALS['LANG']->sL($GLOBALS['TCA'][$vv]['ctrl']['title']).'</span>';
+                                               foreach ($tables as &$vv) {
+                                                       if ($vv) {
+                                                               $vv = '<span class="nobr">'.t3lib_iconWorks::getIconImage($vv,array(),$GLOBALS['BACK_PATH'],'align="top"').$GLOBALS['LANG']->sL($GLOBALS['TCA'][$vv]['ctrl']['title']).'</span>';
                                                        }
                                                }
                                                $out[$k] = implode('<br />',$tables);
                                        break;
                                        case 'non_exclude_fields':
                                                $nef = explode(',',$v);
-                                               reset($nef);
                                                $table='';
                                                $pout=array();
-                                               while(list($kk,$vv)=each($nef)) {
-                                                       if ($vv)        {
+                                               foreach ($nef as $vv) {
+                                                       if ($vv) {
                                                                list($thisTable,$field) = explode(':',$vv);
                                                                if ($thisTable!=$table) {
                                                                        $table=$thisTable;
@@ -675,7 +667,7 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                                                        $pout[]='<span class="nobr">'.t3lib_iconWorks::getIconImage($table,array(),$GLOBALS['BACK_PATH'],'align="top"').$GLOBALS['LANG']->sL($GLOBALS['TCA'][$table]['ctrl']['title']).'</span>';
                                                                }
                                                                if ($GLOBALS['TCA'][$table]['columns'][$field]) {
-                                                                       $pout[]='<span class="nobr"> - '.ereg_replace(':$','',$GLOBALS['LANG']->sL($GLOBALS['TCA'][$table]['columns'][$field]['label'])).'</span>';
+                                                                       $pout[]='<span class="nobr"> - '.rtrim($GLOBALS['LANG']->sL($GLOBALS['TCA'][$table]['columns'][$field]['label']), ':').'</span>';
                                                                }
                                                        }
                                                }
@@ -684,11 +676,10 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                        case 'groupList':
                                        case 'firstMainGroup':
                                                $uGroups = explode(',',$v);
-                                               reset($uGroups);
                                                $table='';
                                                $pout=array();
-                                               while(list($kk,$vv)=each($uGroups))     {
-                                                       if ($vv)        {
+                                               foreach ($uGroups as $vv) {
+                                                       if ($vv) {
                                                                $uGRow = t3lib_BEfunc::getRecord('be_groups',$vv);
                                                                $pout[]='<tr><td nowrap="nowrap">'.t3lib_iconWorks::getIconImage('be_groups',$uGRow,$GLOBALS['BACK_PATH'],'align="top"').'&nbsp;'.htmlspecialchars($uGRow['title']).'&nbsp;&nbsp;</td><td width=1% nowrap="nowrap">'.$GLOBALS['SOBE']->elementLinks('be_groups',$uGRow).'</td></tr>';
                                                        }
@@ -697,11 +688,10 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                        break;
                                        case 'modules':
                                                $mods = explode(',',$v);
-                                               reset($mods);
                                                $mainMod='';
                                                $pout=array();
-                                               while(list($kk,$vv)=each($mods))        {
-                                                       if ($vv)        {
+                                               foreach ($mods as $vv) {
+                                                       if ($vv) {
                                                                list($thisMod,$subMod) = explode('_',$vv);
                                                                if ($thisMod!=$mainMod) {
                                                                        $mainMod=$thisMod;
@@ -746,11 +736,11 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                                );
 
                                                        // Traverse types:
-                                               foreach($theTypes as $tableFieldKey => $theTypeArrays)  {
+                                               foreach ($theTypes as $tableFieldKey => $theTypeArrays) {
                                                        if (is_array($theTypeArrays['items']))  {
                                                                $pout[] = '<b>'.$theTypeArrays['tableFieldLabel'].'</b>';
                                                                        // Traverse options for this field:
-                                                               foreach($theTypeArrays['items'] as $itemValue => $itemContent)  {
+                                                               foreach ($theTypeArrays['items'] as $itemValue => $itemContent) {
                                                                        $v = $tableFieldKey.':'.$itemValue.':'.$itemContent[0];
                                                                        if (isset($nef[$v]))    {
                                                                                unset($nef[$v]);
@@ -781,7 +771,7 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                                $items = t3lib_BEfunc::getSystemLanguages();
 
                                                        // Traverse values:
-                                               foreach($items as $iCfg)        {
+                                               foreach ($items as $iCfg)       {
                                                        if (isset($nef[$iCfg[1]]))      {
                                                                unset($nef[$iCfg[1]]);
                                                                if (strlen($iCfg[2]))   {
@@ -816,10 +806,10 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                                        // Initialize:
                                                $customOptions = $GLOBALS['TYPO3_CONF_VARS']['BE']['customPermOptions'];
                                                if (is_array($customOptions))   {
-                                                       foreach($customOptions as $coKey => $coValue) {
+                                                       foreach ($customOptions as $coKey => $coValue) {
                                                                if (is_array($coValue['items']))        {
                                                                                // Traverse items:
-                                                                       foreach($coValue['items'] as $itemKey => $itemCfg)      {
+                                                                       foreach ($coValue['items'] as $itemKey => $itemCfg)     {
                                                                                $v = $coKey.':'.$itemKey;
                                                                                if (isset($nef[$v]))    {
                                                                                        unset($nef[$v]);
@@ -873,8 +863,7 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                'HTML'=>t3lib_iconWorks::getIconImage('pages',$row,$GLOBALS['BACK_PATH'],'align="top" title="['.$row['uid'].']"')       // .htmlspecialchars($row['title'])
                        );
                }
-               $className=t3lib_div::makeInstanceClassName('printAllPageTree_perms');
-               $pp = new $className($this);
+               $pp = t3lib_div::makeInstance('printAllPageTree_perms', $this);
                return $pp->printTree($dat,1);
        }
 
@@ -1034,25 +1023,26 @@ class local_beUserAuth extends t3lib_beUserAuth {
         */
        function ext_ksortArrayRecursive(&$arr) {
                krsort($arr);
-               reset($arr);
-               while(list($k,$v)=each($arr))   {
-                       if (is_array($v))       $this->ext_ksortArrayRecursive($arr[$k]);
+               foreach ($arr as &$v) {
+                       if (is_array($v)) {
+                               $this->ext_ksortArrayRecursive($v);
+                       }
                }
        }
 
        /**
-        * [Describe function...]
+        * Returns all workspaces that are accessible for the BE_USER
         *
-        * @return      [type]          ...
+        * @return      array   with key / value pairs of available workspaces (filtered by BE_USER check)
         */
        function ext_workspaceMembership()      {
                        // Create accessible workspace arrays:
                $options = array();
                if ($this->checkWorkspace(array('uid' => 0)))   {
-                       $options[0] = '0: [LIVE]';
+                       $options[0] = '0: ' . $GLOBALS['LANG']->getLL('live', true);
                }
                if ($this->checkWorkspace(array('uid' => -1)))  {
-                       $options[-1] = '-1: [Default Draft]';
+                       $options[-1] = '-1: ' . $GLOBALS['LANG']->getLL('defaultDraft', true);
                }
 
                        // Add custom workspaces (selecting all, filtering by BE_USER check):
@@ -1065,9 +1055,9 @@ class local_beUserAuth extends t3lib_beUserAuth {
                                                // Check if all mount points are accessible, otherwise show error:
                                        if (trim($rec['db_mountpoints'])!=='')  {
                                                $mountPoints = t3lib_div::intExplode(',',$this->workspaceRec['db_mountpoints'],1);
-                                               foreach($mountPoints as $mpId)  {
+                                               foreach ($mountPoints as $mpId) {
                                                        if (!$this->isInWebMount($mpId,'1=1'))  {
-                                                               $options[$rec['uid']].= '<br> \- WARNING: Workspace Webmount page id "'.$mpId.'" not accessible!';
+                                                               $options[$rec['uid']].= '<br> \- ' . $GLOBALS['LANG']->getLL('notAccessible', true) . ' ' . $mpId;
                                                        }
                                                }
                                        }
@@ -1112,8 +1102,11 @@ class SC_mod_tools_be_user_index {
        var $include_once=array();
        var $content;
 
+
        /**
-        * @return      [type]          ...
+        * Basic initialization of the class
+        *
+        * @return      void
         */
        function init() {
                $this->MCONF = $GLOBALS['MCONF'];
@@ -1128,9 +1121,8 @@ class SC_mod_tools_be_user_index {
                $this->doc = t3lib_div::makeInstance('template');
                $this->doc->backPath = $GLOBALS['BACK_PATH'];
                $this->doc->setModuleTemplate('templates/beuser.html');
-               $this->doc->docType = 'xhtml_trans';
-               $this->doc->form='<form action="" method="POST">';
-               
+               $this->doc->form = '<form action="" method="post">';
+
                                // JavaScript
                $this->doc->JScode = $this->doc->wrapScriptTags('
                        script_ended = 0;
@@ -1141,9 +1133,9 @@ class SC_mod_tools_be_user_index {
        }
 
        /**
-        * [Describe function...]
+        * Initialization of the module menu configuration
         *
-        * @return      [type]          ...
+        * @return      void
         */
        function menuConfig()   {
                // MENU-ITEMS:
@@ -1152,8 +1144,8 @@ class SC_mod_tools_be_user_index {
                        // Values NOT in this array will not be saved in the settings-array for the module.
                $this->MOD_MENU = array(
                        'function' => array(
-                               'compare' => 'Compare User Settings',
-                               'whoisonline' => 'List Users Online'
+                               'compare' => $GLOBALS['LANG']->getLL('compareUserSettings', true),
+                               'whoisonline' => $GLOBALS['LANG']->getLL('listUsersOnline', true)
                        )
                );
                        // CLEAN SETTINGS
@@ -1161,14 +1153,14 @@ class SC_mod_tools_be_user_index {
        }
 
        /**
-        * [Describe function...]
+        * This functions builds the content of the page
         *
-        * @return      [type]          ...
+        * @return      void
         */
        function main() {
                $this->content='';
 
-               $this->content.=$this->doc->header('Backend User Administration');
+               $this->content.=$this->doc->header($GLOBALS['LANG']->getLL('backendUserAdministration', true));
                $this->content.=$this->doc->spacer(5);
 
                switch($this->MOD_SETTINGS['function']) {
@@ -1184,13 +1176,13 @@ class SC_mod_tools_be_user_index {
                        case 'whoisonline':
                                $this->content.=$this->whoIsOnline();
                        break;
-               }               
+               }
                        // Setting up the buttons and markers for docheader
                $docHeaderButtons = $this->getButtons();
                //$markers['CSH'] = $docHeaderButtons['csh'];
                $markers['FUNC_MENU'] = t3lib_BEfunc::getFuncMenu(0,'SET[function]',$this->MOD_SETTINGS['function'],$this->MOD_MENU['function']);
                $markers['CONTENT'] = $this->content;
-                       
+
                        // Build the <body> for the module
                $this->content = $this->doc->startPage('Backend User Administration');
                $this->content.= $this->doc->moduleBody($this->pageinfo, $docHeaderButtons, $markers);
@@ -1199,9 +1191,9 @@ class SC_mod_tools_be_user_index {
        }
 
        /**
-        * [Describe function...]
+        * Prints the content of the page
         *
-        * @return      [type]          ...
+        * @return      void
         */
        function printContent() {
                echo $this->content;
@@ -1212,8 +1204,8 @@ class SC_mod_tools_be_user_index {
         *
         * @return      array   all available buttons as an assoc. array
         */
-       private function getButtons()   {
-               
+       protected function getButtons() {
+
                $buttons = array(
                        'csh' => '',
                        'shortcut' => '',
@@ -1221,16 +1213,12 @@ class SC_mod_tools_be_user_index {
                );
                        // CSH
                //$buttons['csh'] = t3lib_BEfunc::cshItem('_MOD_web_func', '', $GLOBALS['BACK_PATH']);
-               
+
                        // Shortcut
                if ($GLOBALS['BE_USER']->mayMakeShortcut())     {
                        $buttons['shortcut'] = $this->doc->makeShortcutIcon('be_user_uid,compareFlags','function', $this->MCONF['name']);
                }
-                       
-                       // Save
-               if($this->MOD_SETTINGS['function'] == 'compare' && !t3lib_div::_GP('be_user_uid')) {
-                       $buttons['save'] = '<input type="image" class="c-inputButton" name="ads"'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/savedok.gif','').' title="Update" value="Update" />';              
-               }
+
                return $buttons;
        }
 
@@ -1245,29 +1233,31 @@ class SC_mod_tools_be_user_index {
         ***************************/
 
        /**
-        * @param       [type]          $compareFlags: ...
-        * @return      [type]          ...
+        * Compares the users with the given flags
+        *
+        * @param       array           options that should be taking into account to compare the users
+        * @return      string          the content
         */
        function compareUsers($compareFlags)    {
                        // Menu:
                $options = array(
-                       'filemounts' => 'Filemounts',
-                       'webmounts' => 'Webmounts',
-                       'tempPath' => 'Default upload path',
-                       'firstMainGroup' => 'Main user group',
-                       'groupList' => 'Member of groups',
-                       'pagetypes_select' => 'Page types access',
-                       'tables_select' => 'Select tables',
-                       'tables_modify' => 'Modify tables',
-                       'non_exclude_fields' => 'Non-exclude fields',
-                       'explicit_allowdeny' => 'Explicit Allow/Deny',
-                       'allowed_languages' => 'Limit to languages',
-                       'workspace_perms' => 'Workspace permissions',
-                       'workspace_membership' => 'Workspace membership',
-                       'custom_options' => 'Custom options',
-                       'modules' => 'Modules',
-                       'userTS' => 'TSconfig',
-                       'userTS_hl' => 'TSconfig HL',
+                       'filemounts' => $GLOBALS['LANG']->getLL('filemounts', true),
+                       'webmounts' => $GLOBALS['LANG']->getLL('webmounts', true),
+                       'tempPath' => $GLOBALS['LANG']->getLL('defaultUploadPath', true),
+                       'firstMainGroup' => $GLOBALS['LANG']->getLL('mainUserGroup', true),
+                       'groupList' => $GLOBALS['LANG']->getLL('memberOfGroups', true),
+                       'pagetypes_select' => $GLOBALS['LANG']->getLL('pageTypesAccess', true),
+                       'tables_select' => $GLOBALS['LANG']->getLL('selectTables', true),
+                       'tables_modify' => $GLOBALS['LANG']->getLL('modifyTables', true),
+                       'non_exclude_fields' => $GLOBALS['LANG']->getLL('nonExcludeFields', true),
+                       'explicit_allowdeny' => $GLOBALS['LANG']->getLL('explicitAllowDeny', true),
+                       'allowed_languages' => $GLOBALS['LANG']->getLL('limitToLanguages', true),
+                       'workspace_perms' => $GLOBALS['LANG']->getLL('workspacePermissions', true),
+                       'workspace_membership' => $GLOBALS['LANG']->getLL('workspaceMembership', true),
+                       'custom_options' => $GLOBALS['LANG']->getLL('customOptions', true),
+                       'modules' => $GLOBALS['LANG']->getLL('modules', true),
+                       'userTS' => $GLOBALS['LANG']->getLL('tsconfig', true),
+                       'userTS_hl' => $GLOBALS['LANG']->getLL('tsconfigHL', true),
                );
 
                $be_user_uid = t3lib_div::_GP('be_user_uid');
@@ -1283,8 +1273,7 @@ class SC_mod_tools_be_user_index {
                        $uInfo_dat = $tempBE_USER->ext_printOverview($uInfo,$options,1);
 
                        $lines=array();
-                       reset($options);
-                       while(list($kk,$vv)=each($options))     {
+                       foreach ($options as $kk => $vv) {
                                if ($kk=='modules')     {
                                        $loadModules = t3lib_div::makeInstance('t3lib_loadModules');
                                        $loadModules->load($GLOBALS['TBE_MODULES'],$tempBE_USER);
@@ -1298,33 +1287,48 @@ class SC_mod_tools_be_user_index {
 
                                if ($kk=='webmounts' && !$tempBE_USER->isAdmin())       {
                                        $lines[]='<tr class="bgColor4">
-                                               <td nowrap="nowrap" valign="top">Non-mounted readable pages:&nbsp;&nbsp;</td>
+                                               <td nowrap="nowrap" valign="top">' . $GLOBALS['LANG']->getLL('nonMountedReadablePages', true) . '&nbsp;&nbsp;</td>
                                                <td>'.$tempBE_USER->ext_getReadableButNonmounted().'&nbsp;</td>
                                        </tr>';
                                }
                        }
 
-                       $outTable = '<table border="0" cellpadding="1" cellspacing="1"><tr class="bgColor5"><td>'.t3lib_iconWorks::getIconImage('be_users',$tempBE_USER->user,$GLOBALS['BACK_PATH'],'class="absmiddle" title="'.$tempBE_USER->user['uid'].'"').$tempBE_USER->user['username'].'</td>';
-                       $outTable.= '<td>'.$tempBE_USER->user['realName'].($tempBE_USER->user['email'] ? ', <a href="mailto:'.$tempBE_USER->user['email'].'">'.$tempBE_USER->user['email'].'</a>' : '').'</td>';
+                       $email = htmlspecialchars($tempBE_USER->user['email']);
+                       $realname = htmlspecialchars($tempBE_USER->user['realName']);
+                       $outTable = '<table border="0" cellpadding="1" cellspacing="1"><tr class="bgColor5"><td>'.t3lib_iconWorks::getIconImage('be_users',$tempBE_USER->user,$GLOBALS['BACK_PATH'],'class="absmiddle" title="'.$tempBE_USER->user['uid'].'"').htmlspecialchars($tempBE_USER->user['username']).'</td>';
+                       $outTable.= '<td>'.($realname?$realname.', ':'').($email ? '<a href="mailto:'.$email.'">'.$email.'</a>' : '').'</td>';
                        $outTable.= '<td>'.$this->elementLinks('be_users',$tempBE_USER->user).'</td></tr></table>';
-                       $outTable.= '<strong><a href="'.htmlspecialchars($this->MCONF['_']).'">&lt; Back to overview</a></strong><br />';
+                       $outTable.= '<strong><a href="'.htmlspecialchars($this->MCONF['_']).'">' . $GLOBALS['LANG']->getLL('backToOverview', true) . '</a></strong><br />';
 
                        $outTable.= '<br /><table border="0" cellpadding="2" cellspacing="1">'.implode('',$lines).'</table>';
-                       $content.= $this->doc->section('User info',$outTable,0,1);
+                       $content.= $this->doc->section($GLOBALS['LANG']->getLL('userInfo', true),$outTable,0,1);
                } else {
-                       reset($options);
-                       $menu=array();
-                       while(list($kk,$vv)=each($options))     {
-                               $menu[]='<input type="checkbox" value="1" name="compareFlags['.$kk.']" id="checkCompare_'.$kk.'"'.($compareFlags[$kk]?' checked="checked"':'').'> <label for="checkCompare_'.$kk.'">'.htmlspecialchars($vv).'</label>';
+                       $menu = array(0 => array());
+                       $rowCounter = 0;
+                       $columnCounter = 0;
+                       $itemsPerColumn = ceil(count($options) / 3);
+                       foreach ($options as $kk => $vv) {
+                               if ($rowCounter == $itemsPerColumn)     {
+                                       $rowCounter = 0;
+                                       $columnCounter++;
+                                       $menu[$columnCounter] = array();
+                               }
+                               $rowCounter++;
+                               $menu[$columnCounter][]='<input type="checkbox" class="checkbox" value="1" name="compareFlags['.$kk.']" id="checkCompare_'.$kk.'"'.($compareFlags[$kk]?' checked="checked"':'').'> <label for="checkCompare_'.$kk.'">'.htmlspecialchars($vv).'</label>';
+                       }
+                       $outCode = '<p>' . $GLOBALS['LANG']->getLL('groupBy', true) . '</p>';
+                       $outCode .= '<table border="0" cellpadding="3" cellspacing="1" class="compare-checklist valign-top"><tr>';
+                       foreach ($menu as $column)      {
+                               $outCode .= '<td>' . implode('<br />', $column) . '</td>';
                        }
-                       $outCode = 'Group by:<br />'.implode('<br />',$menu);
-                       $content = $this->doc->section('Group and Compare Users',$outCode,0,1);
+                       $outCode .= '</tr></table>';
+                       $outCode.='<br /><input type="submit" name="ads" value="' . $GLOBALS['LANG']->getLL('update', true) . '">';
+                       $content = $this->doc->section($GLOBALS['LANG']->getLL('groupAndCompareUsers', true),$outCode,0,1);
 
 
                                // Traverse all users
                        $users = t3lib_BEfunc::getUserNames();
                        $comparation=array();
-                       reset($users);
                        $counter=0;
 
 
@@ -1332,10 +1336,11 @@ class SC_mod_tools_be_user_index {
                        $numberAtTime=1000;
                        $tooManyUsers='';
 
-                       while(list(,$r)=each($users))   {
+                       foreach ($users as $r) {
                                if ($counter>=$offset)  {
                                                // This is used to test with other users. Development ONLY!
                                        $tempBE_USER = t3lib_div::makeInstance('local_beUserAuth');     // New backend user object
+                                       /* @var $tempBE_USER local_beUserAuth */
                                        $tempBE_USER->OS = TYPO3_OS;
                                        $tempBE_USER->setBeUserByUid($r['uid']);
                                        $tempBE_USER->fetchGroupData();
@@ -1344,8 +1349,7 @@ class SC_mod_tools_be_user_index {
                                        $md5pre='';
                                        $menu=array();
                                        $uInfo = $tempBE_USER->ext_compileUserInfoForHash((array)$compareFlags);
-                                       reset($options);
-                                       while(list($kk,$vv)=each($options))     {
+                                       foreach ($options as $kk => $vv) {
                                                if ($compareFlags[$kk]) {
                                                        $md5pre.=serialize($uInfo[$kk]).'|';
                                                }
@@ -1356,12 +1360,12 @@ class SC_mod_tools_be_user_index {
                                                $comparation[$md5]=$tempBE_USER->ext_printOverview($uInfo,$compareFlags);
                                                $comparation[$md5]['users']=array();
                                        }
-                                       $comparation[$md5]['users'][]=$tempBE_USER->user;       //array('uid'=>$r['uid'],'username'=>$r['username'],'realName'=>$tempBE_USER->user['realName'],'email'=>$tempBE_USER->user['email'],'admin'=>$tempBE_USER->user['admin']);
+                                       $comparation[$md5]['users'][]=$tempBE_USER->user;
                                        unset($tempBE_USER);
                                }
                                $counter++;
                                if ($counter>=($numberAtTime+$offset)) {
-                                       $tooManyUsers='There were more than '.$numberAtTime.' users (total: '.count($users).') and this tool can display only '.$numberAtTime.' at a time!';
+                                       $tooManyUsers=$GLOBALS['LANG']->getLL('tooManyUsers', true) . ' ' . count($users) . '. ' . $GLOBALS['LANG']->getLL('canOnlyDisplay', true) . ' ' . $numberAtTime . '.';
                                        break;
                                }
                        }
@@ -1370,41 +1374,38 @@ class SC_mod_tools_be_user_index {
                        $allGroups=array();
                                // Header:
                        $allCells = array();
-                       reset($options);
 
                        $link_createNewUser='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick('&edit[be_users][0]=new',$this->doc->backPath,-1)).'">'.
-                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/new_el.gif').' title="'.$GLOBALS['LANG']->getLL('new',1).'" alt="" />'.
+                               '<img' . t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/new_el.gif') . ' title="' . $GLOBALS['LANG']->getLL('newUser', true) . '" alt="" />'.
                                '</a>';
 
-                       $allCells['USERS'] = '<table border="0" cellspacing="0" cellpadding="0" width="100%"><td><b>Usernames:</b></td><td width="12">'.$link_createNewUser.'</td></tr></table>';
+                       $allCells['USERS'] = '<table border="0" cellspacing="0" cellpadding="0" width="100%"><td><b>' . $GLOBALS['LANG']->getLL('usernames', true) . '</b></td><td width="12">' . $link_createNewUser . '</td></tr></table>';
 
-                       while(list($kk,$vv)=each($options))     {
+                       foreach ($options as $kk => $vv) {
                                if ($compareFlags[$kk]) {
                                        $allCells[$kk] = '<b>'.$vv.':</b>';
                                }
                        }
                        $allGroups[]=$allCells;
 
-                       reset($comparation);
-                       while(list(,$dat)=each($comparation))   {
+                       foreach ($comparation as $dat) {
                                $allCells = array();
 
                                $curUid = $GLOBALS['BE_USER']->user['uid'];
                                $uListArr=array();
-                               reset($dat['users']);
-                               while(list(,$uDat)=each($dat['users'])) {
-                                       $uItem = '<tr><td width="130">'.t3lib_iconWorks::getIconImage('be_users',$uDat,$GLOBALS['BACK_PATH'],'align="top" title="'.$uDat['uid'].'"').$this->linkUser($uDat['username'],$uDat).'&nbsp;&nbsp;</td><td nowrap="nowrap">'.$this->elementLinks('be_users',$uDat);
+
+                               foreach ($dat['users'] as $uDat) {
+                                       $uItem = '<tr><td width="130">' . t3lib_iconWorks::getIconImage('be_users',$uDat,$GLOBALS['BACK_PATH'],'align="top" title="' . $uDat['uid'] . '"') . $this->linkUser($uDat['username'],$uDat) . '&nbsp;&nbsp;</td><td nowrap="nowrap">' . $this->elementLinks('be_users',$uDat);
                                        if ($curUid != $uDat['uid'] && !$uDat['disable'] && ($uDat['starttime'] == 0 || $uDat['starttime'] < time()) && ($uDat['endtime'] == 0 || $uDat['endtime'] > time()))   {
-                                               $uItem .= '<a href="'.t3lib_div::linkThisScript(array('SwitchUser'=>$uDat['uid'])).'" target="_top"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/su.gif').' border="0" align="top" title="'.htmlspecialchars('Switch user to: '.$uDat['username']).' [change-to mode]" alt="" /></a>'.
-                                                       '<a href="'.t3lib_div::linkThisScript(array('SwitchUser'=>$uDat['uid'], 'switchBackUser' => 1)).'" target="_top"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/su_back.gif').' border="0" align="top" title="'.htmlspecialchars('Switch user to: '.$uDat['username']).' [switch-back mode]" alt="" /></a>';
+                                               $uItem .= '<a href="' . t3lib_div::linkThisScript(array('SwitchUser'=>$uDat['uid'])) . '" target="_top"><img ' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/su.gif') . ' border="0" align="top" title="' . htmlspecialchars($GLOBALS['LANG']->getLL('switchUserTo', true) . ' ' . $uDat['username']) . ' ' . $GLOBALS['LANG']->getLL('changeToMode', true) . '" alt="" /></a>'.
+                                                       '<a href="' . t3lib_div::linkThisScript(array('SwitchUser'=>$uDat['uid'], 'switchBackUser' => 1)) . '" target="_top"><img ' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/su_back.gif') . ' border="0" align="top" title="' . htmlspecialchars($GLOBALS['LANG']->getLL('switchUserTo', true) . ' ' . $uDat['username']) . ' ' . $GLOBALS['LANG']->getLL('switchBackMode', true) . '" alt="" /></a>';
                                        }
                                        $uItem .= '</td></tr>';
                                        $uListArr[] = $uItem;
                                }
                                $allCells['USERS'] = '<table border="0" cellspacing="0" cellpadding="0" width="100%">'.implode('',$uListArr).'</table>';
 
-                               reset($options);
-                               while(list($kk,$vv)=each($options))     {
+                               foreach ($options as $kk => $vv) {
                                        if ($compareFlags[$kk]) {
                                                $allCells[$kk] = $dat[$kk];
                                        }
@@ -1414,76 +1415,80 @@ class SC_mod_tools_be_user_index {
 
                                // Make table
                        $outTable='';
-                       reset($allGroups);
                        $TDparams=' nowrap="nowrap" class="bgColor5" valign="top"';
-                       while(list(,$allCells)=each($allGroups))        {
+                       $i = 0;
+                       foreach ($allGroups as $allCells) {
                                $outTable.='<tr><td'.$TDparams.'>'.implode('</td><td'.$TDparams.'>',$allCells).'</td></tr>';
-                               $TDparams=' nowrap="nowrap" class="bgColor4" valign="top"';
+                               $TDparams=' nowrap="nowrap" class="'.($i++ % 2 == 0 ? 'bgColor4' : 'bgColor6').'" valign="top"';
                        }
-                       $outTable='<table border="0" cellpadding="2" cellspacing="2">'.$outTable.'</table>';
-                       $outTable.=fw('<br /><br />(All cached group lists updated.)');
-                       $outTable.=$tooManyUsers?'<br /><br /><strong><span class="typo3-red">'.$tooManyUsers.'</span></strong>':'';
+                       $outTable='<table border="0" cellpadding="2" cellspacing="2">' . $outTable . '</table>';
+                       $outTable.=fw('<br /><br />' . $GLOBALS['LANG']->getLL('cachedGrouplistsUpdated', true) . '');
+                       $outTable.=$tooManyUsers?'<br /><br /><strong><span class="typo3-red">' . $tooManyUsers . '</span></strong>':'';
                        $content.= $this->doc->spacer(10);
-                       $content.= $this->doc->section('Result',$outTable,0,1);
+                       $content.= $this->doc->section($GLOBALS['LANG']->getLL('result', true),$outTable,0,1);
                }
                return $content;
        }
 
+
        /**
-        * [Describe function...]
+        * Creates a HTML anchor to the user record
         *
-        * @param       [type]          $str: ...
-        * @param       [type]          $rec: ...
-        * @return      [type]          ...
+        * @param       string          the string used to identify the user (inside the <a>...</a>)
+        * @param       array           the BE user record to link
+        * @return      string          the HTML anchor
         */
        function linkUser($str,$rec)    {
-               return '<a href="'.htmlspecialchars($this->MCONF['_']).'&be_user_uid='.$rec['uid'].'">'.$str.'</a>';
+               return '<a href="'.htmlspecialchars($this->MCONF['_']).'&be_user_uid='.$rec['uid'].'">' . htmlspecialchars($str) . '</a>';
        }
 
+
        /**
-        * [Describe function...]
+        * Builds a list of all links for a specific element (here: BE user) and returns it for print.
         *
-        * @param       [type]          $table: ...
-        * @param       [type]          $row: ...
-        * @return      [type]          ...
+        * @param       string          the db table that should be used
+        * @param       array           the BE user record to use
+        * @return      string          a HTML formatted list of the link
         */
        function elementLinks($table,$row)      {
                        // Info:
-               $cells[]='<a href="#" onclick="top.launchView(\''.$table.'\', \''.$row['uid'].'\',\''.$GLOBALS['BACK_PATH'].'\'); return false;"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/zoom2.gif').' border="0" align="top" title="Show information" alt="" /></a>';
+               $cells[]='<a href="#" onclick="top.launchView(\'' . $table . '\', \'' . $row['uid'] . '\',\'' . $GLOBALS['BACK_PATH'] . '\'); return false;"><img ' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/zoom2.gif') . ' border="0" align="top" title="' . $GLOBALS['LANG']->getLL('showInformation', true) . '" alt="" /></a>';
 
                        // Edit:
-               $params='&edit['.$table.']['.$row['uid'].']=edit';
-               $cells[]='<a href="#" onclick="'.t3lib_BEfunc::editOnClick($params,$GLOBALS['BACK_PATH'],'').'"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/edit2.gif').' border="0" align="top" title="Edit" alt="" /></a>';
+               $params='&edit[' . $table . '][' . $row['uid'] . ']=edit';
+               $cells[]='<a href="#" onclick="' . t3lib_BEfunc::editOnClick($params,$GLOBALS['BACK_PATH'],'') . '"><img ' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/edit2.gif') . ' border="0" align="top" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:edit', true) . '" alt="" /></a>';
 
                        // Hide:
                $hiddenField = $GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'];
                if ($row[$hiddenField]) {
-                       $params='&data['.$table.']['.$row['uid'].']['.$hiddenField.']=0';
-                       $cells[]='<a href="'.$this->doc->issueCommand($params).'"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/button_unhide.gif').' border="0" title="Enable" align="top" alt="" /></a>';
+                       $params='&data[' . $table . '][' . $row['uid'] . '][' . $hiddenField . ']=0';
+                       $cells[]='<a href="' . $this->doc->issueCommand($params) . '"><img ' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/button_unhide.gif') . ' border="0" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:enable', true) . '" align="top" alt="" /></a>';
                } else {
-                       $params='&data['.$table.']['.$row['uid'].']['.$hiddenField.']=1';
-                       $cells[]='<a href="'.$this->doc->issueCommand($params).'"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/button_hide.gif').' border="0" title="Disable" align="top" alt="" /></a>';
+                       $params='&data[' . $table . '][' . $row['uid'] . '][' . $hiddenField . ']=1';
+                       $cells[]='<a href="' . $this->doc->issueCommand($params) . '"><img ' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/button_hide.gif') . ' border="0" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:disable', true) . '" align="top" alt="" /></a>';
                }
 
                        // Delete
-               $params='&cmd['.$table.']['.$row['uid'].'][delete]=1';
-               $cells[]='<a href="'.$this->doc->issueCommand($params).'" onclick="return confirm(unescape(\''.rawurlencode('Are you sure you want to delete this element?').'\'));"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/garbage.gif').' border="0" align="top" title="Delete(!)" alt="" /></a>';
+               $params='&cmd[' . $table . '][' . $row['uid'] . '][delete]=1';
+               $cells[]='<a href="' . $this->doc->issueCommand($params) . '" onclick="return confirm(unescape(\'' . rawurlencode($GLOBALS['LANG']->getLL('sureToDelete', true)) . '\'));"><img ' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'],'gfx/garbage.gif') . ' border="0" align="top" title="' . $GLOBALS['LANG']->getLL('delete', true) . '" alt="" /></a>';
 
                return implode('',$cells);
        }
 
+
        /**
-        * [Describe function...]
+        * Inits all BE-users available, for development ONLY!
         *
-        * @return      [type]          ...
+        * @return      void
         */
        function initUsers()    {
                        // Initializing all users in order to generate the usergroup_cached_list
                $users = t3lib_BEfunc::getUserNames();
-               reset($users);
-               while(list(,$r)=each($users))   {
-                               // This is used to test with other users. Development ONLY!
+
+                       // This is used to test with other users. Development ONLY!
+               foreach ($users as $r) {
                        $tempBE_USER = t3lib_div::makeInstance('local_beUserAuth');     // New backend user object
+                       /* @var $tempBE_USER local_beUserAuth */
                        $tempBE_USER->OS = TYPO3_OS;
                        $tempBE_USER->setBeUserByUid($r['uid']);
                        $tempBE_USER->fetchGroupData();
@@ -1491,22 +1496,24 @@ class SC_mod_tools_be_user_index {
        }
 
        /**
-        * [Describe function...]
+        * Returns the local path for this string (removes the PATH_site if it is included)
         *
-        * @param       [type]          $str: ...
-        * @return      [type]          ...
+        * @param       string          the path that will be checked
+        * @return      string          the local path
         */
        function localPath($str)        {
                if (substr($str,0,strlen(PATH_site))==PATH_site)        {
                        return substr($str,strlen(PATH_site));
-               } else return $str;
+               } else {
+                       return $str;
+               }
        }
 
        /**
-        * [Describe function...]
+        * Switches to a given user (SU-mode) and then redirects to the start page of the backend to refresh the navigation etc.
         *
-        * @param       [type]          $switchUser: ...
-        * @return      [type]          ...
+        * @param       array           BE-user record that will be switched to
+        * @return      void
         */
        function switchUser($switchUser)        {
                $uRec=t3lib_BEfunc::getRecord('be_users',$switchUser);
@@ -1551,14 +1558,22 @@ class SC_mod_tools_be_user_index {
                        // Process and visualized each active session as a table row:
                if (is_array($sessions)) {
                        foreach ($sessions as $session) {
-                               $hostName = ($session['ses_iplock'] != '[DISABLED]' ? gethostbyaddr($session['ses_iplock']) : '[DISABLED]');
+                               $ip = $session['ses_iplock'];
+                               $hostName = '';
+                               if ($session['ses_iplock'] == '[DISABLED]' || $GLOBALS['TYPO3_CONF_VARS']['BE']['lockIP'] == 0) {
+                                       $ip = '-';
+                               } elseif ($GLOBALS['TYPO3_CONF_VARS']['BE']['lockIP'] == 4) {
+                                       $hostName = ' title="' . @gethostbyaddr($session['ses_iplock']) . '"';
+                               } else {
+                                       $ip .= str_repeat('.*', 4-$GLOBALS['TYPO3_CONF_VARS']['BE']['lockIP']);
+                               }
                                $outTable .= '
                                        <tr class="bgColor4" height="17" valign="top">' .
                                                '<td nowrap="nowrap">' .
                                                        date($GLOBALS['TYPO3_CONF_VARS']['SYS']['ddmmyy'].' '.$GLOBALS['TYPO3_CONF_VARS']['SYS']['hhmm'], $session['ses_tstamp']) .
                                                '</td>' .
                                                '<td nowrap="nowrap">' .
-                                                       '<span title="'.$hostName.'">'.$session['ses_iplock'].'</span>' .
+                                                       '<span'.$hostName.'>'.$ip.'</span>' .
                                                '</td>' .
                                                '<td width="130">' .
                                                        t3lib_iconWorks::getIconImage('be_users',$session,$GLOBALS['BACK_PATH'],'align="top" title="'.$session['uid'].'"').htmlspecialchars($session['username']).'&nbsp;' .
@@ -1574,34 +1589,24 @@ class SC_mod_tools_be_user_index {
                $outTable = '
                <table border="0" cellpadding="2" cellspacing="2">
                        <tr class="bgColor5">
-                               <td valign="top"><b>Timestamp:</b></td>
-                               <td valign="top"><b>Host:</b></td>
-                               <td valign="top" colspan="5"><b>Username:</b></td>
+                               <td valign="top"><b>' . $GLOBALS['LANG']->getLL('timestamp', true) . '</b></td>
+                               <td valign="top"><b>' . $GLOBALS['LANG']->getLL('host', true) . '</b></td>
+                               <td valign="top" colspan="5"><b>' . $GLOBALS['LANG']->getLL('username', true) . '</b></td>
                        </tr>'.$outTable.'
                </table>';
 
-               $content.= $this->doc->section('Who Is Online',$outTable,0,1);
+               $content.= $this->doc->section($GLOBALS['LANG']->getLL('whoIsOnline', true),$outTable,0,1);
                return $content;
        }
 
 }
 
-// Include extension?
+
 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/beuser/mod/index.php'])       {
        include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/beuser/mod/index.php']);
 }
 
 
-
-
-
-
-
-
-
-
-
-
 // Make instance:
 $SOBE = t3lib_div::makeInstance('SC_mod_tools_be_user_index');
 $SOBE->init();