Project

General

Profile

Bug #22397 » 14028_variables_take3.patch

Administrator Admin, 2010-05-06 21:43

View differences:

t3lib/class.t3lib_userauthgroup.php (Arbeitskopie)
// Checking authMode fields:
if (is_array($TCA[$table]['columns'])) {
foreach($TCA[$table]['columns'] as $fN => $fV) {
if (isset($idOrRow[$fN])) { //
if ($fV['config']['type']=='select' && $fV['config']['authMode'] && !strcmp($fV['config']['authMode_enforce'],'strict')) {
if (!$this->checkAuthMode($table,$fN,$idOrRow[$fN],$fV['config']['authMode'])) {
$this->errorMsg = 'ERROR: authMode "'.$fV['config']['authMode'].'" failed for field "'.$fN.'" with value "'.$idOrRow[$fN].'" evaluated';
foreach ($TCA[$table]['columns'] as $fieldName => $fieldValue) {
if (isset($idOrRow[$fieldName])) {
if ($fieldValue['config']['type'] == 'select' && $fieldValue['config']['authMode'] && !strcmp($fieldValue['config']['authMode_enforce'], 'strict')) {
if (!$this->checkAuthMode($table, $fieldName, $idOrRow[$fieldName], $fieldValue['config']['authMode'])) {
$this->errorMsg = 'ERROR: authMode "' . $fieldValue['config']['authMode'] . '" failed for field "' . $fieldName . '" with value "' . $idOrRow[$fieldName] . '" evaluated';
return FALSE;
}
}
......
}
/**
* Will check a type of permission against the compiled permission integer, $lCP, and in relation to table, $table
* Checks a type of permission against the compiled permission integer, $compiledPermissions, and in relation to table, $tableName
*
* @param integer $lCP could typically be the "compiled permissions" integer returned by ->calcPerms
* @param string $table is the tablename to check: If "pages" table then edit,new,delete and editcontent permissions can be checked. Other tables will be checked for "editcontent" only (and $type will be ignored)
* @param string For $table='pages' this can be 'edit' (2), 'new' (8 or 16), 'delete' (4), 'editcontent' (16). For all other tables this is ignored. (16 is used)
* @param integer $compiledPermissions could typically be the "compiled permissions" integer returned by ->calcPerms
* @param string $tableName is the tablename to check: If "pages" table then edit,new,delete and editcontent permissions can be checked. Other tables will be checked for "editcontent" only (and $type will be ignored)
* @param string For $tableName='pages' this can be 'edit' (2), 'new' (8 or 16), 'delete' (4), 'editcontent' (16). For all other tables this is ignored. (16 is used)
* @return boolean
* @access private
* @access public (used by typo3/alt_clickmenu.php)
*/
function isPSet($lCP,$table,$type='') {
if ($this->isAdmin()) return true;
if ($table=='pages') {
if ($type=='edit') return $lCP & 2;
if ($type=='new') return ($lCP & 8) || ($lCP & 16); // Create new page OR pagecontent
if ($type=='delete') return $lCP & 4;
if ($type=='editcontent') return $lCP & 16;
public function isPSet($compiledPermissions, $tableName, $actionType = '') {
if ($this->isAdmin()) {
$result = TRUE;
}
elseif ($tableName == 'pages') {
switch($actionType) {
case 'edit':
$result = ($compiledPermissions & 2) !== 0;
break;
case 'new':
// Create new page OR page content
$result = ($compiledPermissions & (8 + 16)) !== 0;
break;
case 'delete':
$result = ($compiledPermissions & 4) !== 0;
break;
case 'editcontent':
$result = ($compiledPermissions & 16) !== 0;
break;
default:
$result = FALSE;
}
} else {
return $lCP & 16;
$result = ($compiledPermissions & 16) !== 0;
}
return $result;
}
/**
(7-7/9)