[TYPO3-workflow] sys_workflows and tt_news
media.res | alex widschwendter
a.widschwendter at mediares.at
Wed May 3 11:50:15 CEST 2006
hi michael,
> Yes, I know. And no, it's not working. No idea, why...
> cya, Michael
i debugged so far that i now works (at least for me, even with tt_news).
change function queryUserWorkFlows in
class.tx_sysworkflows_definition.php to
-----
function
queryUserWorkFlows($table='',$fields='sys_workflows.*',$uid='',$checkAction='',$checkUser='create')
{
if($table) {
if(!$checkAction || substr(trim($checkAction),0,3)=='new') {
$tableChecks[] =
$GLOBALS['TYPO3_DB']->listQuery('tablename',$table,'sys_workflows');
}
if(!$checkAction || $checkAction=='version') {
$tableChecks[] =
$GLOBALS['TYPO3_DB']->listQuery('tablename_ver',$table,'sys_workflows');
}
if(!$checkAction || $checkAction=='delete') {
$tableChecks[] =
$GLOBALS['TYPO3_DB']->listQuery('tablename_del',$table,'sys_workflows');
}
if(!$checkAction || $checkAction=='move') {
$tableChecks[] =
$GLOBALS['TYPO3_DB']->listQuery('tablename_move',$table,'sys_workflows');
}
if(is_array($tableChecks)) {
$extraClauses .= ' AND ('.implode(' OR ',$tableChecks).')';
}
}
if($uid) {
$extraClauses = ' AND sys_workflows.uid='.$uid;
}
if(!$checkUser || $GLOBALS['BE_USER']->isAdmin()) {
return $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields,
'sys_workflows', 'sys_workflows.pid=0 AND
sys_workflows.hidden=0'.$extraClauses, '', 'sys_workflows.title');
} else {
$checkFields = array('create' => 'sys_workflows_algr_mm', 'edit' =>
'target_groups', 'review' => 'sys_workflows_rvuser_mm', 'publish' =>
'sys_workflows_pubuser_mm');
$checkField = $checkFields[$checkUser];
if(substr($checkField,-3)!='_mm' ) {
$groups =
explode(',',$GLOBALS['BE_USER']->groupList?$GLOBALS['BE_USER']->groupList:0);
foreach($groups as $group) {
$access_clause[] =
$GLOBALS['TYPO3_DB']->listQuery($checkField,$group,'sys_workflows');
}
return $GLOBALS['TYPO3_DB']->exec_SELECTquery(
$fields,
'sys_workflows',
'('.implode(' OR ',$access_clause).') '.'AND sys_workflows.pid=0 AND
sys_workflows.hidden=0'.$extraClauses,
'',
'sys_workflows.title'
);
} else {
if($checkUser=='create') {
#aw start
$groups =
explode(',',$GLOBALS['BE_USER']->groupList?$GLOBALS['BE_USER']->groupList:0);
foreach($groups as $group) {
$access_clause[] =
$GLOBALS['TYPO3_DB']->listQuery('usergroup',$group,'be_users');
}
$groupMembership =
$GLOBALS['BE_USER']->groupList?$GLOBALS['BE_USER']->groupList:0;
return $GLOBALS['TYPO3_DB']->exec_SELECTquery(
$fields,
'sys_workflows, sys_workflows_algr_mm, be_users',
' sys_workflows_algr_mm.uid_foreign IN ('.$groupMembership.')
AND ('.implode(' OR ',$access_clause).') '.'AND
sys_workflows.pid=0 AND sys_workflows.hidden=0'.$extraClauses,
'sys_workflows.uid',
'sys_workflows.title'
);
#aw end
#$groups =
$GLOBALS['BE_USER']->groupList?$GLOBALS['BE_USER']->groupList:0;
#$access_clause = 'uid_foreign IN ('.$groups.')';
} else {
$access_clause = 'be_users.uid='.$GLOBALS['BE_USER']->user['uid'];
}
#$access_clause =
$GLOBALS['TYPO3_DB']->listQuery($checkField,$GLOBALS['BE_USER']->user['uid'],'sys_workflows');
return $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query(
$fields,
'sys_workflows',
$checkField,
'be_users',
' AND '.$access_clause.' AND sys_workflows.pid=0 AND
sys_workflows.hidden=0'.$extraClauses,
'sys_workflows.uid',
'sys_workflows.title'
);
}
}
}
-----
and i works!
hth alex
More information about the TYPO3-project-workflow
mailing list