[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