login( $params->userid, $params->password ); return $res->getPayloadArray(); } function ProcessList ($params) { $x = ifPermission( $params->sessionId, 'PM_FACTORY' ); //if you are not an admin user, then this function will return only //your valid process if ($x == 0) { $oSessions = new Sessions(); $session = $oSessions->getSessionUser( $params->sessionId ); $userId = $session['USR_UID']; $ws = new wsBase(); $res = $ws->processListVerified( $userId ); return $res; } $ws = new wsBase(); $res = $ws->processList(); return array ("processes" => $res ); } function RoleList ($params) { $x = ifPermission( $params->sessionId, 'PM_USERS' ); if ($x == 0) { $result[] = array ('guid' => 24,'name' => G::LoadTranslation('ID_NOT_PRIVILEGES')); return $result; } $ws = new wsBase(); $res = $ws->roleList(); return array ("roles" => $res ); } function GroupList ($params) { $x = ifPermission( $params->sessionId, 'PM_USERS' ); if ($x == 0) { $result[] = array ('guid' => 24,'name' => G::LoadTranslation('ID_NOT_PRIVILEGES')); return $result; } $ws = new wsBase(); $res = $ws->groupList(); return array ("groups" => $res ); } function CaseList ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { return new wsResponse( 9, G::LoadTranslation('ID_SESSION_EXPIRED') ); } $oSessions = new Sessions(); $session = $oSessions->getSessionUser( $params->sessionId ); $userId = $session['USR_UID']; $ws = new wsBase(); $res = $ws->caseList( $userId ); return array ("cases" => $res ); } function UserList ($params) { $x = ifPermission( $params->sessionId, 'PM_USERS' ); if ($x == 0) { $result[] = array ('guid' => 24,'name' => G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $ws = new wsBase(); $res = $ws->userList(); return array ("users" => $res ); } function SendMessage ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $ws = new wsBase(); $res = $ws->sendMessage( $params->caseId, $params->from, $params->to, $params->cc, $params->bcc, $params->subject, $params->template ); return $res->getPayloadArray(); } function getCaseInfo ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result = new wsResponse( 24, "You do not have privileges" ); return $result; } $ws = new wsBase(); $res = $ws->getCaseInfo( $params->caseId, $params->delIndex ); return $res; } function SendVariables ($params) { $filter = new InputFilter(); ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $ws = new wsBase(); $variables = $params->variables; if (is_object( $variables )) { $Fields[$variables->name] = $variables->value; } if (is_array( $variables )) { foreach ($variables as $key => $val) { $name = $val->name; $value = $val->value; $val->name = $filter->validateInput($val->name); $val->value = $filter->validateInput($val->value); eval( '$Fields[ ' . $val->name . ' ]= $val->value ;' ); } } $params->variables = $Fields; $res = $ws->sendVariables( $params->caseId, $params->variables ); return $res->getPayloadArray(); } function GetVariables ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $ws = new wsBase(); $res = $ws->getVariables( $params->caseId, $params->variables ); return array ("variables" => $res ); } function DerivateCase ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $oSession = new Sessions(); $user = $oSession->getSessionUser( $params->sessionId ); $ws = new wsBase(); $res = $ws->derivateCase( $user['USR_UID'], $params->caseId, $params->delIndex ); return $res; //return $res->getPayloadArray ( ); } function executeTrigger ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $oSession = new Sessions(); $user = $oSession->getSessionUser( $params->sessionId ); $ws = new wsBase(); $delIndex = (isset( $params->delIndex )) ? $params->delIndex : 1; $res = $ws->executeTrigger( $user['USR_UID'], $params->caseId, $params->triggerIndex, $delIndex ); return $res->getPayloadArray(); } function NewCaseImpersonate ($params) { $filter = new InputFilter(); ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $ws = new wsBase(); $variables = $params->variables; foreach ($variables as $key => $val) { $name = $val->name; $value = $val->value; $val->name = $filter->validateInput($val->name); $val->value = $filter->validateInput($val->value); eval( '$Fields[ ' . $val->name . ' ]= $val->value ;' ); } $params->variables = $Fields; $res = $ws->newCaseImpersonate( $params->processId, $params->userId, $params->variables ); return $res->getPayloadArray(); } function NewCase ($params) { $filter = new InputFilter(); ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $oSessions = new Sessions(); $session = $oSessions->getSessionUser( $params->sessionId ); $userId = $session['USR_UID']; $variables = $params->variables; if (! isset( $params->variables )) { $variables = array (); $Fields = array (); } else { if (is_object( $variables )) { /*foreach ( $variables as $key=>$val ) { $name = $val->name; $value = $val->value; $Fields[ $val->name ]= $val->value ; }*/ $Fields[$variables->name] = $variables->value; } if (is_array( $variables )) { foreach ($variables as $key => $val) { $name = $val->name; $value = $val->value; if (! is_object( $val->value )) { $val->name = $filter->validateInput($val->name); $val->value = $filter->validateInput($val->value); eval( '$Fields[ ' . $val->name . ' ]= $val->value ;' ); } else { if (is_array( $val->value->item )) { $i = 1; foreach ($val->value->item as $key1 => $val1) { if (isset( $val1->value )) { if (is_array( $val1->value->item )) { foreach ($val1->value->item as $key2 => $val2) { $Fields[$val->name][$i][$val2->key] = $val2->value; } } } $i ++; } } } } } } $params->variables = $Fields; //$result = new wsResponse (900, print_r($params->variables,1)); //return $result; $ws = new wsBase(); $res = $ws->newCase( $params->processId, $userId, $params->taskId, $params->variables ); return $res; } function AssignUserToGroup ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_USERS' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $sessions = new Sessions(); $user = $sessions->getSessionUser( $params->sessionId ); if (! is_array( $user )) { return new wsResponse( 3, G::LoadTranslation('ID_USER_NOT_REGISTERED_SYSTEM') ); } $ws = new wsBase(); $res = $ws->assignUserToGroup( $params->userId, $params->groupId ); return $res->getPayloadArray(); } function CreateUser ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_USERS' ); if ($x == 0) { $result = new wsResponse( 24, G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $ws = new wsBase(); $res = $ws->createUser( $params->userId, $params->firstname, $params->lastname, $params->email, $params->role, $params->password ); return $res->getPayloadArray(); } function TaskList ($params) { $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result[] = array ('guid' => 24,'name' => G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $ws = new wsBase(); $oSessions = new Sessions(); $session = $oSessions->getSessionUser( $params->sessionId ); $userId = $session['USR_UID']; $res = $ws->taskList( $userId ); return array ("tasks" => $res ); } function TaskCase ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $x = ifPermission( $params->sessionId, 'PM_CASES' ); if ($x == 0) { $result[] = array ('guid' => 24,'name' => G::LoadTranslation('ID_NOT_PRIVILEGES') ); return $result; } $ws = new wsBase(); $res = $ws->taskCase( $params->caseId ); return array ("taskCases" => $res ); } function ReassignCase ($params) { ifSessionExpiredBreakThis( $params->sessionId ); $ws = new wsBase(); $res = $ws->reassignCase( $params->sessionId, $params->caseId, $params->delIndex, $params->userIdSource, $params->userIdTarget ); return $res; } function ifSessionExpiredBreakThis ($sessionId) { #added By Erik AO in datetime 26.06.2008 10:00:00 $oSessions = new Sessions(); $session = $oSessions->verifySession( $sessionId ); if ($session == '') { return new wsResponse( 9, G::LoadTranslation('ID_SESSION_EXPIRED') ); } } function ifPermission ($sessionId, $permission) { global $RBAC; $RBAC->initRBAC(); $oSession = new Sessions(); $user = $oSession->getSessionUser( $sessionId ); $oRBAC = RBAC::getSingleton(); $oRBAC->loadUserRolePermission( $oRBAC->sSystem, $user['USR_UID'] ); $aPermissions = $oRBAC->aUserInfo[$oRBAC->sSystem]['PERMISSIONS']; $sw = 0; foreach ($aPermissions as $aPermission) { if ($aPermission['PER_CODE'] == $permission) { $sw = 1; } } return $sw; } $server = new SoapServer( $wsdl ); $server->addFunction( "Login" ); $server->addFunction( "ProcessList" ); $server->addFunction( "CaseList" ); $server->addFunction( "RoleList" ); $server->addFunction( "GroupList" ); $server->addFunction( "UserList" ); $server->addFunction( "SendMessage" ); $server->addFunction( "SendVariables" ); $server->addFunction( "GetVariables" ); $server->addFunction( "DerivateCase" ); $server->addFunction( "executeTrigger" ); $server->addFunction( "NewCaseImpersonate" ); $server->addFunction( "NewCase" ); $server->addFunction( "AssignUserToGroup" ); $server->addFunction( "CreateUser" ); $server->addFunction( "getCaseInfo" ); $server->addFunction( "TaskList" ); $server->addFunction( "TaskCase" ); $server->addFunction( "ReassignCase" ); $server->handle();