Documentation TYPO3 par Ameos

index.php

00001 <?php
00002 /***************************************************************
00003 *  Copyright notice
00004 *
00005 *  (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
00006 *  All rights reserved
00007 *
00008 *  This script is part of the TYPO3 project. The TYPO3 project is
00009 *  free software; you can redistribute it and/or modify
00010 *  it under the terms of the GNU General Public License as published by
00011 *  the Free Software Foundation; either version 2 of the License, or
00012 *  (at your option) any later version.
00013 *
00014 *  The GNU General Public License can be found at
00015 *  http://www.gnu.org/copyleft/gpl.html.
00016 *  A copy is found in the textfile GPL.txt and important notices to the license
00017 *  from the author is found in LICENSE.txt distributed with these scripts.
00018 *
00019 *
00020 *  This script is distributed in the hope that it will be useful,
00021 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023 *  GNU General Public License for more details.
00024 *
00025 *  This copyright notice MUST APPEAR in all copies of the script!
00026 ***************************************************************/
00062 unset($MCONF);
00063 require('conf.php');
00064 require($BACK_PATH.'init.php');
00065 require($BACK_PATH.'template.php');
00066 $LANG->includeLLFile('EXT:lang/locallang_mod_web_perm.xml');
00067 require_once (PATH_t3lib.'class.t3lib_pagetree.php');
00068 require_once (PATH_t3lib.'class.t3lib_page.php');
00069 
00070 $BE_USER->modAccess($MCONF,1);
00071 
00072 
00073 
00074 
00075 
00076 
00089 class SC_mod_web_perm_index {
00090 
00091                 // External, static:
00092         var $getLevels = 10;                    // Number of levels to enable recursive settings for
00093 
00094                 // Internal, static:
00095         var $MCONF=array();                     // Module config
00096         var $doc;                                       // Document template object
00097         var $content;                           // Content accumulation
00098 
00099         var $MOD_MENU=array();          // Module menu
00100         var $MOD_SETTINGS=array();      // Module settings, cleansed.
00101 
00102         var $perms_clause;                      // Page select permissions
00103         var $pageinfo;                          // Current page record
00104 
00105         var $color;                                     // Background color 1
00106         var $color2;                            // Background color 2
00107         var $color3;                            // Background color 3
00108 
00109         var $editingAllowed;            // Set internally if the current user either OWNS the page OR is admin user!
00110 
00111                 // Internal, static: GPvars:
00112         var $id;                                        // Page id.
00113         var $edit;                                      // If set, editing of the page permissions will occur (showing the editing screen). Notice: This value is evaluated against permissions and so it will change internally!
00114         var $return_id;                         // ID to return to after editing.
00115         var $lastEdited;                        // Id of the page which was just edited.
00116 
00117 
00123         function init() {
00124                 global $BE_USER,$BACK_PATH;
00125 
00126                         // Setting GPvars:
00127                 $this->id = intval(t3lib_div::_GP('id'));
00128                 $this->edit = t3lib_div::_GP('edit');
00129                 $this->return_id = t3lib_div::_GP('return_id');
00130                 $this->lastEdited = t3lib_div::_GP('lastEdited');
00131 
00132                         // Module name;
00133                 $this->MCONF = $GLOBALS['MCONF'];
00134 
00135                         // Page select clause:
00136                 $this->perms_clause = $BE_USER->getPagePermsClause(1);
00137 
00138                         // Initializing document template object:
00139                 $this->doc = t3lib_div::makeInstance('mediumDoc');
00140                 $this->doc->backPath = $BACK_PATH;
00141                 $this->doc->docType = 'xhtml_trans';
00142                 $this->doc->form='<form action="'.$BACK_PATH.'tce_db.php" method="post" name="editform">';
00143                 $this->doc->JScode = '<script type="text/javascript" src="'.$BACK_PATH.'t3lib/jsfunc.updateform.js"></script>';
00144                 $this->doc->JScode.= $this->doc->wrapScriptTags('
00145                         function checkChange(checknames, varname)       {       //
00146                                 var res = 0;
00147                                 for (var a=1; a<=5; a++)        {
00148                                         if (document.editform[checknames+"["+a+"]"].checked)    {
00149                                                 res|=Math.pow(2,a-1);
00150                                         }
00151                                 }
00152                                 document.editform[varname].value = res | (checknames=="check[perms_user]"?1:0) ;
00153                                 setCheck (checknames,varname);
00154                         }
00155                         function setCheck(checknames, varname)  {       //
00156                                 if (document.editform[varname]) {
00157                                         var res = document.editform[varname].value;
00158                                         for (var a=1; a<=5; a++)        {
00159                                                 document.editform[checknames+"["+a+"]"].checked = (res & Math.pow(2,a-1));
00160                                         }
00161                                 }
00162                         }
00163                         function jumpToUrl(URL) {       //
00164                                 document.location = URL;
00165                         }
00166                 ');
00167 
00168                         // Setting up the context sensitive menu:
00169                 $CMparts=$this->doc->getContextMenuCode();
00170                 $this->doc->bodyTagAdditions = $CMparts[1];
00171                 $this->doc->JScode.=$CMparts[0];
00172                 $this->doc->postCode.= $CMparts[2];
00173 
00174                         // Set up menus:
00175                 $this->menuConfig();
00176         }
00177 
00183         function menuConfig()   {
00184                 global $LANG;
00185 
00186                         // MENU-ITEMS:
00187                         // If array, then it's a selector box menu
00188                         // If empty string it's just a variable, that'll be saved.
00189                         // Values NOT in this array will not be saved in the settings-array for the module.
00190                 $temp = $LANG->getLL('levels');
00191                 $this->MOD_MENU = array(
00192                         'depth' => array(
00193                                 1 => '1 '.$temp,
00194                                 2 => '2 '.$temp,
00195                                 3 => '3 '.$temp,
00196                                 4 => '4 '.$temp,
00197                                 10 => '10 '.$temp
00198                         ),
00199                         'mode' => array(
00200                                 0 => $LANG->getLL('user_overview'),
00201                                 'perms' => $LANG->getLL('permissions')
00202                         )
00203                 );
00204 
00205                         // Clean up settings:
00206                 $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, t3lib_div::_GP('SET'), $this->MCONF['name']);
00207         }
00208 
00214         function main() {
00215                 global $BE_USER,$LANG;
00216 
00217                         // Access check...
00218                         // The page will show only if there is a valid page and if this page may be viewed by the user
00219                 $this->pageinfo = t3lib_BEfunc::readPageAccess($this->id,$this->perms_clause);
00220                 $access = is_array($this->pageinfo) ? 1 : 0;
00221 
00222                         // Checking access:
00223                 if (($this->id && $access) || ($BE_USER->user['admin'] && !$this->id))  {
00224                         if ($BE_USER->user['admin'] && !$this->id)      {
00225                                 $this->pageinfo=array('title' => '[root-level]','uid'=>0,'pid'=>0);
00226                         }
00227 
00228                                 // This decides if the editform can and will be drawn:
00229                         $this->editingAllowed = ($this->pageinfo['perms_userid']==$BE_USER->user['uid'] || $BE_USER->isAdmin());
00230                         $this->edit = $this->edit && $this->editingAllowed;
00231 
00232                                 // If $this->edit then these functions are called in the end of the page...
00233                         if ($this->edit)        {
00234                                 $this->doc->postCode.= $this->doc->wrapScriptTags('
00235                                         setCheck("check[perms_user]","data[pages]['.$this->id.'][perms_user]");
00236                                         setCheck("check[perms_group]","data[pages]['.$this->id.'][perms_group]");
00237                                         setCheck("check[perms_everybody]","data[pages]['.$this->id.'][perms_everybody]");
00238                                 ');
00239                         }
00240 
00241                                 // Draw the HTML page header.
00242                         $this->content.=$this->doc->startPage($LANG->getLL('permissions'));
00243                         $this->content.=$this->doc->header($LANG->getLL('permissions').($this->edit?': '.$LANG->getLL('Edit'):''));
00244                         $this->content.=$this->doc->spacer(5);
00245                         $this->content.=$this->doc->section('',
00246                                 $this->doc->funcMenu(
00247                                         $this->doc->getHeader('pages',$this->pageinfo,htmlspecialchars($this->pageinfo['_thePath'])).'<br />'.
00248                                                 $LANG->sL('LLL:EXT:lang/locallang_core.php:labels.path',1).': '.
00249                                                 '<span title="'.htmlspecialchars($this->pageinfo['_thePathFull']).'">'.htmlspecialchars(t3lib_div::fixed_lgd_cs($this->pageinfo['_thePath'],-50)).'</span>',
00250                                         t3lib_BEfunc::getFuncMenu($this->id,'SET[mode]',$this->MOD_SETTINGS['mode'],$this->MOD_MENU['mode'])
00251                                 ));
00252                         $this->content.=$this->doc->divider(5);
00253 
00254 
00255 
00256                         $vContent = $this->doc->getVersionSelector($this->id,1);
00257                         if ($vContent)  {
00258                                 $this->content.=$this->doc->section('',$vContent);
00259                         }
00260 
00261 
00262 
00263                                 // Main function, branching out:
00264                         if (!$this->edit)       {
00265                                 $this->notEdit();
00266                         } else {
00267                                 $this->doEdit();
00268                         }
00269 
00270                                 // ShortCut
00271                         if ($BE_USER->mayMakeShortcut())        {
00272                                 $this->content.=
00273                                         $this->doc->spacer(20).
00274                                         $this->doc->section('',$this->doc->makeShortcutIcon('id,edit,return_id',implode(',',array_keys($this->MOD_MENU)),$this->MCONF['name']));
00275                         }
00276                 } else {
00277                                 // If no access or if ID == zero
00278                         $this->content.=$this->doc->startPage($LANG->getLL('permissions'));
00279                         $this->content.=$this->doc->header($LANG->getLL('permissions'));
00280                 }
00281 
00282                         // Ending page:
00283                 $this->content.=$this->doc->endPage();
00284         }
00285 
00291         function printContent() {
00292 
00293                 echo $this->content;
00294         }
00295 
00296 
00297 
00298 
00299 
00300 
00301 
00302 
00303 
00304 
00305         /*****************************
00306          *
00307          * Listing and Form rendering
00308          *
00309          *****************************/
00310 
00317         function doEdit()       {
00318                 global $BE_USER,$LANG;
00319 
00320                         // Get usernames and groupnames
00321                 $be_group_Array=t3lib_BEfunc::getListGroupNames('title,uid');
00322                 $groupArray=array_keys($be_group_Array);
00323 
00324                 $be_user_Array = t3lib_BEfunc::getUserNames();
00325                 if (!$GLOBALS['BE_USER']->isAdmin())            $be_user_Array = t3lib_BEfunc::blindUserNames($be_user_Array,$groupArray,1);
00326                 $be_group_Array_o = $be_group_Array = t3lib_BEfunc::getGroupNames();
00327                 if (!$GLOBALS['BE_USER']->isAdmin())            $be_group_Array = t3lib_BEfunc::blindGroupNames($be_group_Array_o,$groupArray,1);
00328                 $firstGroup = $groupArray[0] ? $be_group_Array[$groupArray[0]] : '';    // data of the first group, the user is member of
00329 
00330 
00331                         // Owner selector:
00332                 $options='';
00333                 $userset=0;     // flag: is set if the page-userid equals one from the user-list
00334                 foreach($be_user_Array as $uid => $row) {
00335                         if ($uid==$this->pageinfo['perms_userid'])      {
00336                                 $userset = 1;
00337                                 $selected=' selected="selected"';
00338                         } else {$selected='';}
00339                         $options.='
00340                                 <option value="'.$uid.'"'.$selected.'>'.htmlspecialchars($row['username']).'</option>';
00341                 }
00342                 $options='
00343                                 <option value="0"></option>'.$options;
00344                 $selector='
00345                         <select name="data[pages]['.$this->id.'][perms_userid]">
00346                                 '.$options.'
00347                         </select>';
00348 
00349                 $this->content.=$this->doc->section($LANG->getLL('Owner').':',$selector);
00350 
00351 
00352                         // Group selector:
00353                 $options='';
00354                 $userset=0;
00355                 foreach($be_group_Array as $uid => $row)        {
00356                         if ($uid==$this->pageinfo['perms_groupid'])     {
00357                                 $userset = 1;
00358                                 $selected=' selected="selected"';
00359                         } else {$selected='';}
00360                         $options.='
00361                                 <option value="'.$uid.'"'.$selected.'>'.htmlspecialchars($row['title']).'</option>';
00362                 }
00363                 if (!$userset && $this->pageinfo['perms_groupid'])      {       // If the group was not set AND there is a group for the page
00364                         $options='
00365                                 <option value="'.$this->pageinfo['perms_groupid'].'" selected="selected">'.
00366                                                 htmlspecialchars($be_group_Array_o[$this->pageinfo['perms_groupid']]['title']).
00367                                                 '</option>'.
00368                                                 $options;
00369                 }
00370                 $options='
00371                                 <option value="0"></option>'.$options;
00372                 $selector='
00373                         <select name="data[pages]['.$this->id.'][perms_groupid]">
00374                                 '.$options.'
00375                         </select>';
00376 
00377                 $this->content.=$this->doc->divider(5);
00378                 $this->content.=$this->doc->section($LANG->getLL('Group').':',$selector);
00379 
00380                         // Permissions checkbox matrix:
00381                 $code='
00382                         <table border="0" cellspacing="2" cellpadding="0" id="typo3-permissionMatrix">
00383                                 <tr>
00384                                         <td></td>
00385                                         <td class="bgColor2">'.str_replace(' ','<br />',$LANG->getLL('1',1)).'</td>
00386                                         <td class="bgColor2">'.str_replace(' ','<br />',$LANG->getLL('16',1)).'</td>
00387                                         <td class="bgColor2">'.str_replace(' ','<br />',$LANG->getLL('2',1)).'</td>
00388                                         <td class="bgColor2">'.str_replace(' ','<br />',$LANG->getLL('4',1)).'</td>
00389                                         <td class="bgColor2">'.str_replace(' ','<br />',$LANG->getLL('8',1)).'</td>
00390                                 </tr>
00391                                 <tr>
00392                                         <td align="right" class="bgColor2">'.$LANG->getLL('Owner',1).'</td>
00393                                         <td class="bgColor-20">'.$this->printCheckBox('perms_user',1).'</td>
00394                                         <td class="bgColor-20">'.$this->printCheckBox('perms_user',5).'</td>
00395                                         <td class="bgColor-20">'.$this->printCheckBox('perms_user',2).'</td>
00396                                         <td class="bgColor-20">'.$this->printCheckBox('perms_user',3).'</td>
00397                                         <td class="bgColor-20">'.$this->printCheckBox('perms_user',4).'</td>
00398                                 </tr>
00399                                 <tr>
00400                                         <td align="right" class="bgColor2">'.$LANG->getLL('Group',1).'</td>
00401                                         <td class="bgColor-20">'.$this->printCheckBox('perms_group',1).'</td>
00402                                         <td class="bgColor-20">'.$this->printCheckBox('perms_group',5).'</td>
00403                                         <td class="bgColor-20">'.$this->printCheckBox('perms_group',2).'</td>
00404                                         <td class="bgColor-20">'.$this->printCheckBox('perms_group',3).'</td>
00405                                         <td class="bgColor-20">'.$this->printCheckBox('perms_group',4).'</td>
00406                                 </tr>
00407                                 <tr>
00408                                         <td align="right" class="bgColor2">'.$LANG->getLL('Everybody',1).'</td>
00409                                         <td class="bgColor-20">'.$this->printCheckBox('perms_everybody',1).'</td>
00410                                         <td class="bgColor-20">'.$this->printCheckBox('perms_everybody',5).'</td>
00411                                         <td class="bgColor-20">'.$this->printCheckBox('perms_everybody',2).'</td>
00412                                         <td class="bgColor-20">'.$this->printCheckBox('perms_everybody',3).'</td>
00413                                         <td class="bgColor-20">'.$this->printCheckBox('perms_everybody',4).'</td>
00414                                 </tr>
00415                         </table>
00416                         <br />
00417 
00418                         <input type="hidden" name="data[pages]['.$this->id.'][perms_user]" value="'.$this->pageinfo['perms_user'].'" />
00419                         <input type="hidden" name="data[pages]['.$this->id.'][perms_group]" value="'.$this->pageinfo['perms_group'].'" />
00420                         <input type="hidden" name="data[pages]['.$this->id.'][perms_everybody]" value="'.$this->pageinfo['perms_everybody'].'" />
00421                         '.$this->getRecursiveSelect($this->id,$this->perms_clause).'
00422                         <input type="submit" name="submit" value="'.$LANG->getLL('Save',1).'" />'.
00423                         '<input type="submit" value="'.$LANG->getLL('Abort',1).'" onclick="'.htmlspecialchars('jumpToUrl(\'index.php?id='.$this->id.'\'); return false;').'" />
00424                         <input type="hidden" name="redirect" value="'.htmlspecialchars(TYPO3_MOD_PATH.'index.php?mode='.$this->MOD_SETTINGS['mode'].'&depth='.$this->MOD_SETTINGS['depth'].'&id='.intval($this->return_id).'&lastEdited='.$this->id).'" />
00425                 ';
00426 
00427                         // Adding section with the permission setting matrix:
00428                 $this->content.=$this->doc->divider(5);
00429                 $this->content.=$this->doc->section($LANG->getLL('permissions').':',$code);
00430 
00431                         // CSH for permissions setting
00432                 $this->content.= t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'perm_module_setting', $GLOBALS['BACK_PATH'],'<br/><br/>');
00433 
00434                         // Adding help text:
00435                 if ($BE_USER->uc['helpText'])   {
00436                         $this->content.=$this->doc->divider(20);
00437                         $legendText = '<b>'.$LANG->getLL('1',1).'</b>: '.$LANG->getLL('1_t',1);
00438                         $legendText.= '<br /><b>'.$LANG->getLL('16',1).'</b>: '.$LANG->getLL('16_t',1);
00439                         $legendText.= '<br /><b>'.$LANG->getLL('2',1).'</b>: '.$LANG->getLL('2_t',1);
00440                         $legendText.= '<br /><b>'.$LANG->getLL('4',1).'</b>: '.$LANG->getLL('4_t',1);
00441                         $legendText.= '<br /><b>'.$LANG->getLL('8',1).'</b>: '.$LANG->getLL('8_t',1);
00442 
00443                         $code=$legendText.'<br /><br />'.$LANG->getLL('def',1);
00444                         $this->content.=$this->doc->section($LANG->getLL('Legend',1).':',$code);
00445                 }
00446         }
00447 
00454         function notEdit()      {
00455                 global $BE_USER,$LANG,$BACK_PATH;
00456 
00457                         // Get usernames and groupnames: The arrays we get in return contains only 1) users which are members of the groups of the current user, 2) groups that the current user is member of
00458                 $groupArray = $BE_USER->userGroupsUID;
00459                 $be_user_Array = t3lib_BEfunc::getUserNames();
00460                 if (!$GLOBALS['BE_USER']->isAdmin())            $be_user_Array = t3lib_BEfunc::blindUserNames($be_user_Array,$groupArray,0);
00461                 $be_group_Array = t3lib_BEfunc::getGroupNames();
00462                 if (!$GLOBALS['BE_USER']->isAdmin())            $be_group_Array = t3lib_BEfunc::blindGroupNames($be_group_Array,$groupArray,0);
00463 
00464                         // Length of strings:
00465                 $tLen= ($this->MOD_SETTINGS['mode']=='perms' ? 20 : 30);
00466 
00467 
00468                         // Selector for depth:
00469                 $code.=$LANG->getLL('Depth').': ';
00470                 $code.=t3lib_BEfunc::getFuncMenu($this->id,'SET[depth]',$this->MOD_SETTINGS['depth'],$this->MOD_MENU['depth']);
00471                 $this->content.=$this->doc->section('',$code);
00472                 $this->content.=$this->doc->spacer(5);
00473 
00474                         // Initialize tree object:
00475                 $tree = t3lib_div::makeInstance('t3lib_pageTree');
00476                 $tree->init('AND '.$this->perms_clause);
00477 
00478                 $tree->addField('perms_user',1);
00479                 $tree->addField('perms_group',1);
00480                 $tree->addField('perms_everybody',1);
00481                 $tree->addField('perms_userid',1);
00482                 $tree->addField('perms_groupid',1);
00483                 $tree->addField('hidden');
00484                 $tree->addField('fe_group');
00485                 $tree->addField('starttime');
00486                 $tree->addField('endtime');
00487                 $tree->addField('editlock');
00488 
00489                         // Creating top icon; the current page
00490                 $HTML=t3lib_iconWorks::getIconImage('pages',$this->pageinfo,$BACK_PATH,'align="top"');
00491                 $tree->tree[]=Array('row'=>$this->pageinfo,'HTML'=>$HTML);
00492 
00493                         // Create the tree from $this->id:
00494                 $tree->getTree($this->id,$this->MOD_SETTINGS['depth'],'');
00495 
00496                         // Make header of table:
00497                 $code='';
00498                 if ($this->MOD_SETTINGS['mode']=='perms')       {
00499                         $code.='
00500                                 <tr>
00501                                         <td class="bgColor2" colspan="2">&nbsp;</td>
00502                                         <td class="bgColor2"><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00503                                         <td class="bgColor2" align="center"><b>'.$LANG->getLL('Owner',1).'</b></td>
00504                                         <td class="bgColor2"><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00505                                         <td class="bgColor2" align="center"><b>'.$LANG->getLL('Group',1).'</b></td>
00506                                         <td class="bgColor2"><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00507                                         <td class="bgColor2" align="center"><b>'.$LANG->getLL('Everybody',1).'</b></td>
00508                                         <td class="bgColor2"><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00509                                         <td class="bgColor2" align="center"><b>'.$LANG->getLL('EditLock',1).'</b></td>
00510                                 </tr>
00511                         ';
00512                 } else {
00513                         $code.='
00514                                 <tr>
00515                                         <td class="bgColor2" colspan="2">&nbsp;</td>
00516                                         <td class="bgColor2"><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00517                                         <td class="bgColor2" align="center" nowrap="nowrap"><b>'.$LANG->getLL('User',1).':</b> '.$BE_USER->user['username'].'</td>
00518                                         '.(!$BE_USER->isAdmin()?'<td class="bgColor2"><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00519                                         <td class="bgColor2" align="center"><b>'.$LANG->getLL('EditLock',1).'</b></td>':'').'
00520                                 </tr>';
00521                 }
00522 
00523                         // Traverse tree:
00524                 foreach($tree->tree as $data)   {
00525                         $cells = array();
00526 
00527                                 // Background colors:
00528                         if ($this->lastEdited==$data['row']['uid'])     {$bgCol = ' class="bgColor-20"';} else {$bgCol = '';}
00529                         $lE_bgCol = $bgCol;
00530 
00531                                 // User/Group names:
00532                         $userN = $be_user_Array[$data['row']['perms_userid']] ? $be_user_Array[$data['row']['perms_userid']]['username'] : ($data['row']['perms_userid'] ? '<i>['.$data['row']['perms_userid'].']!</i>' : '');
00533                         $groupN = $be_group_Array[$data['row']['perms_groupid']] ? $be_group_Array[$data['row']['perms_groupid']]['title']  : ($data['row']['perms_groupid'] ? '<i>['.$data['row']['perms_groupid'].']!</i>' : '');
00534                         $groupN = t3lib_div::fixed_lgd_cs($groupN,20);
00535 
00536                                 // Seeing if editing of permissions are allowed for that page:
00537                         $editPermsAllowed=($data['row']['perms_userid']==$BE_USER->user['uid'] || $BE_USER->isAdmin());
00538 
00539                                 // First column:
00540                         $cells[]='
00541                                         <td align="left" nowrap="nowrap"'.$bgCol.'>'.$data['HTML'].htmlspecialchars(t3lib_div::fixed_lgd($data['row']['title'],$tLen)).'&nbsp;</td>';
00542 
00543                                 // "Edit permissions" -icon
00544                         if ($editPermsAllowed && $data['row']['uid'])   {
00545                                 $aHref = 'index.php?mode='.$this->MOD_SETTINGS['mode'].'&depth='.$this->MOD_SETTINGS['depth'].'&id='.$data['row']['uid'].'&return_id='.$this->id.'&edit=1';
00546                                 $cells[]='
00547                                         <td'.$bgCol.'><a href="'.htmlspecialchars($aHref).'"><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/edit2.gif','width="11" height="12"').' border="0" title="'.$LANG->getLL('ch_permissions',1).'" align="top" alt="" /></a></td>';
00548                         } else {
00549                                 $cells[]='
00550                                         <td'.$bgCol.'></td>';
00551                         }
00552 
00553                                 // Rest of columns (depending on mode)
00554                         if ($this->MOD_SETTINGS['mode']=='perms')       {
00555                                 $cells[]='
00556                                         <td'.$bgCol.'><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00557                                         <td'.$bgCol.' nowrap="nowrap">'.($data['row']['uid']?$this->printPerms($data['row']['perms_user']).' '.$userN:'').'</td>
00558 
00559                                         <td'.$bgCol.'><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00560                                         <td'.$bgCol.' nowrap="nowrap">'.($data['row']['uid']?$this->printPerms($data['row']['perms_group']).' '.$groupN:'').'</td>
00561 
00562                                         <td'.$bgCol.'><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00563                                         <td'.$bgCol.' nowrap="nowrap">'.($data['row']['uid']?' '.$this->printPerms($data['row']['perms_everybody']):'').'</td>
00564 
00565                                         <td'.$bgCol.'><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00566                                         <td'.$bgCol.' nowrap="nowrap">'.($data['row']['editlock']?'<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/recordlock_warning2.gif','width="22" height="16"').' title="'.$LANG->getLL('EditLock_descr',1).'" alt="" />':'').'</td>
00567                                 ';
00568                         } else {
00569                                 $cells[]='
00570                                         <td'.$bgCol.'><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>';
00571 
00572                                 if ($BE_USER->user['uid']==$data['row']['perms_userid'])        {$bgCol = ' class="bgColor-20"';} else {$bgCol = $lE_bgCol;}
00573                                 $cells[]='
00574                                         <td'.$bgCol.' nowrap="nowrap" align="center">'.($data['row']['uid']?$owner.$this->printPerms($BE_USER->calcPerms($data['row'])):'').'</td>
00575                                         '.(!$BE_USER->isAdmin()?'
00576                                         <td'.$bgCol.'><img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/line.gif','width="5" height="16"').' alt="" /></td>
00577                                         <td'.$bgCol.' nowrap="nowrap">'.($data['row']['editlock']?'<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/recordlock_warning2.gif','width="22" height="16"').' title="'.$LANG->getLL('EditLock_descr',1).'" alt="" />':'').'</td>
00578                                         ':'');
00579                                 $bgCol = $lE_bgCol;
00580                         }
00581 
00582                                 // Compile table row:
00583                         $code.='
00584                                 <tr>
00585                                         '.implode('
00586                                         ',$cells).'
00587                                 </tr>';
00588                 }
00589 
00590                         // Wrap rows in table tags:
00591                 $code='<table border="0" cellspacing="0" cellpadding="0" id="typo3-permissionList">'.$code.'</table>';
00592 
00593                         // Adding the content as a section:
00594                 $this->content.=$this->doc->section('',$code);
00595 
00596                         // CSH for permissions setting
00597                 $this->content.= t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'perm_module', $GLOBALS['BACK_PATH'],'<br/>|');
00598 
00599                         // Creating legend table:
00600                 $legendText = '<b>'.$LANG->getLL('1',1).'</b>: '.$LANG->getLL('1_t',1);
00601                 $legendText.= '<br /><b>'.$LANG->getLL('16',1).'</b>: '.$LANG->getLL('16_t',1);
00602                 $legendText.= '<br /><b>'.$LANG->getLL('2',1).'</b>: '.$LANG->getLL('2_t',1);
00603                 $legendText.= '<br /><b>'.$LANG->getLL('4',1).'</b>: '.$LANG->getLL('4_t',1);
00604                 $legendText.= '<br /><b>'.$LANG->getLL('8',1).'</b>: '.$LANG->getLL('8_t',1);
00605 
00606                 $code='<table border="0" id="typo3-legendTable">
00607                         <tr>
00608                                 <td valign="top"><img src="legend.gif" width="86" height="75" alt="" /></td>
00609                                 <td valign="top" nowrap="nowrap">'.$legendText.'</td>
00610                         </tr>
00611                 </table>';
00612                 $code.='<br />'.$LANG->getLL('def',1);
00613                 $code.='<br /><br /><span class="perm-allowed">*</span>: '.$LANG->getLL('A_Granted',1);
00614                 $code.='<br /><span class="perm-denied">x</span>: '.$LANG->getLL('A_Denied',1);
00615 
00616                         // Adding section with legend code:
00617                 $this->content.=$this->doc->spacer(20);
00618                 $this->content.=$this->doc->section($LANG->getLL('Legend').':',$code,0,1);
00619         }
00620 
00621 
00622 
00623 
00624 
00625 
00626 
00627 
00628 
00629 
00630 
00631 
00632 
00633 
00634         /*****************************
00635          *
00636          * Helper functions
00637          *
00638          *****************************/
00639 
00647         function printCheckBox($checkName,$num) {
00648                 $onClick = 'checkChange(\'check['.$checkName.']\', \'data[pages]['.$GLOBALS['SOBE']->id.']['.$checkName.']\')';
00649                 return '<input type="checkbox" name="check['.$checkName.']['.$num.']" onclick="'.htmlspecialchars($onClick).'" /><br />';
00650         }
00651 
00658         function printPerms($int)       {
00659                 $str='';
00660                 $str.= (($int&1)?'*':'<span class="perm-denied">x</span>');
00661                 $str.= (($int&16)?'*':'<span class="perm-denied">x</span>');
00662                 $str.= (($int&2)?'*':'<span class="perm-denied">x</span>');
00663                 $str.= (($int&4)?'*':'<span class="perm-denied">x</span>');
00664                 $str.= (($int&8)?'*':'<span class="perm-denied">x</span>');
00665 
00666                 return '<span class="perm-allowed">'.$str.'</span>';
00667         }
00668 
00676         function groupPerms($row,$firstGroup)   {
00677                 if (is_array($row))     {
00678                         $out=intval($row['perms_everybody']);
00679                         if ($row['perms_groupid'] && $firstGroup['uid']==$row['perms_groupid']) {
00680                                 $out|= intval($row['perms_group']);
00681                         }
00682                         return $out;
00683                 }
00684         }
00685 
00693         function getRecursiveSelect($id,$perms_clause)  {
00694 
00695                         // Initialize tree object:
00696                 $tree = t3lib_div::makeInstance('t3lib_pageTree');
00697                 $tree->init('AND '.$perms_clause);
00698                 $tree->addField('perms_userid',1);
00699                 $tree->makeHTML=0;
00700                 $tree->setRecs = 1;
00701 
00702                         // Make tree:
00703                 $tree->getTree($id,$this->getLevels,'');
00704 
00705                         // If there are a hierarchy of page ids, then...
00706                 if ($GLOBALS['BE_USER']->user['uid'] && count($tree->ids_hierarchy))    {
00707 
00708                                 // Init:
00709                         $label_recur = $GLOBALS['LANG']->getLL('recursive');
00710                         $label_levels = $GLOBALS['LANG']->getLL('levels');
00711                         $label_pA = $GLOBALS['LANG']->getLL('pages_affected');
00712                         $theIdListArr=array();
00713                         $opts='
00714                                                 <option value=""></option>';
00715 
00716                                 // Traverse the number of levels we want to allow recursive setting of permissions for:
00717                         for ($a=$this->getLevels;$a>0;$a--)     {
00718                                 if (is_array($tree->ids_hierarchy[$a])) {
00719                                         foreach($tree->ids_hierarchy[$a] as $theId)     {
00720                                                 if ($GLOBALS['BE_USER']->isAdmin() || $GLOBALS['BE_USER']->user['uid']==$tree->recs[$theId]['perms_userid'])    {
00721                                                         $theIdListArr[]=$theId;
00722                                                 }
00723                                         }
00724                                         $lKey = $this->getLevels-$a+1;
00725                                         $opts.='
00726                                                 <option value="'.htmlspecialchars(implode(',',$theIdListArr)).'">'.
00727                                                         t3lib_div::deHSCentities(htmlspecialchars($label_recur.' '.$lKey.' '.$label_levels)).' ('.count($theIdListArr).' '.$label_pA.')'.
00728                                                         '</option>';
00729                                 }
00730                         }
00731 
00732                                 // Put the selector box together:
00733                         $theRecursiveSelect = '<br />
00734                                         <select name="mirror[pages]['.$id.']">
00735                                                 '.$opts.'
00736                                         </select>
00737 
00738                                 <br /><br />';
00739                 } else {
00740                         $theRecursiveSelect = '';
00741                 }
00742 
00743                         // Return selector box element:
00744                 return $theRecursiveSelect;
00745         }
00746 }
00747 
00748 // Include extension?
00749 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/mod/web/perm/index.php'])    {
00750         include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/mod/web/perm/index.php']);
00751 }
00752 
00753 
00754 
00755 
00756 
00757 
00758 
00759 
00760 
00761 
00762 
00763 
00764 // Make instance:
00765 $SOBE = t3lib_div::makeInstance('SC_mod_web_perm_index');
00766 $SOBE->init();
00767 $SOBE->main();
00768 $SOBE->printContent();
00769 
00770 if ($TYPO3_CONF_VARS['BE']['compressionLevel']) {
00771         new gzip_encode($TYPO3_CONF_VARS['BE']['compressionLevel']);
00772 }
00773 ?>


Généré par Les spécialistes TYPO3 avec  doxygen 1.4.6