1220 lines
30 KiB
PHP
1220 lines
30 KiB
PHP
<?php
|
|
use ProcessMaker\Util\ParseSoapVariableName;
|
|
|
|
ini_set("soap.wsdl_cache_enabled", 0); //disabling WSDL cache
|
|
|
|
define( 'WEB_SERVICE_VERSION', '2.0' );
|
|
|
|
//$wsdl = PATH_METHODS . "services" . PATH_SEP . "pmos.wsdl";
|
|
$wsdl = PATH_METHODS . "services" . PATH_SEP . "pmos2.wsdl";
|
|
|
|
function login ($params)
|
|
{
|
|
$ws = new WsBase();
|
|
$res = $ws->login( $params->userid, $params->password );
|
|
|
|
return array ('status_code' => $res->status_code,'message' => $res->message,'version' => WEB_SERVICE_VERSION,'timestamp' => $res->timestamp
|
|
);
|
|
}
|
|
|
|
function ProcessList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
|
|
return array ("processes" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) != 0) {
|
|
$ws = new WsBase();
|
|
$res = $ws->processList();
|
|
|
|
return array ("processes" => $res
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_FACTORY' ) == 0) {
|
|
$o->guid = "2" . G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
|
|
return array ("processes" => $o
|
|
);
|
|
}
|
|
|
|
/**
|
|
* if you are not an admin user, then this function will return only your valid process *
|
|
*/
|
|
if (ifPermission( $params->sessionId, 'PM_FACTORY' ) == 0) {
|
|
|
|
$oSessions = new Sessions();
|
|
$session = $oSessions->getSessionUser( $params->sessionId );
|
|
$userId = $session['USR_UID'];
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->processListVerified( $userId );
|
|
|
|
return array ("processes" => $res
|
|
);
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->processList();
|
|
|
|
return array ("processes" => $res
|
|
);
|
|
}
|
|
|
|
function RoleList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
|
|
return array ("roles" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
|
|
return array ("roles" => $o
|
|
);
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->roleList();
|
|
|
|
return array ("roles" => $res
|
|
);
|
|
}
|
|
|
|
function GroupList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
|
|
return array ("groups" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
|
|
return array ("groups" => $o
|
|
);
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->groupList();
|
|
|
|
return array ("groups" => $res
|
|
);
|
|
}
|
|
|
|
function DepartmentList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
|
|
return array ("departments" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
|
|
return array ("departments" => $o
|
|
);
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->departmentList();
|
|
|
|
return array ("departments" => $res
|
|
);
|
|
}
|
|
|
|
function CaseList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
$o->status = '';
|
|
$o->delIndex = '';
|
|
$o->processId = '';
|
|
|
|
return array ("cases" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
$o->status = '';
|
|
$o->delIndex = '';
|
|
$o->processId = '';
|
|
|
|
return array ("cases" => $o
|
|
);
|
|
}
|
|
|
|
$oSessions = new Sessions();
|
|
$session = $oSessions->getSessionUser( $params->sessionId );
|
|
$userId = $session['USR_UID'];
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->caseList( $userId );
|
|
|
|
return array ("cases" => $res
|
|
);
|
|
}
|
|
|
|
function UnassignedCaseList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
$o->delIndex = '';
|
|
|
|
return array ("cases" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$o->guid = "2 Insufficient privileges to execute this function";
|
|
$o->name = '';
|
|
$o->delIndex = '';
|
|
|
|
return array ("cases" => $o
|
|
);
|
|
}
|
|
|
|
$oSessions = new Sessions();
|
|
$session = $oSessions->getSessionUser( $params->sessionId );
|
|
$userId = $session['USR_UID'];
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->unassignedCaseList( $userId );
|
|
|
|
return array ("cases" => $res
|
|
);
|
|
}
|
|
|
|
function UserList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
|
|
return array ("users" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
|
|
return array ("users" => $o
|
|
);
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->userList();
|
|
|
|
return array ("users" => $res
|
|
);
|
|
}
|
|
|
|
function triggerList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
$o->processId = '';
|
|
|
|
return array ("triggers" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
$o->processId = '';
|
|
|
|
return array ("triggers" => $o
|
|
);
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->triggerList();
|
|
|
|
return array ("triggers" => $res
|
|
);
|
|
}
|
|
|
|
function outputDocumentList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->filename = '';
|
|
$o->docId = '';
|
|
$o->version = '';
|
|
$o->createDate = '';
|
|
$o->createBy = '';
|
|
$o->type = '';
|
|
$o->index = '';
|
|
$o->link = '';
|
|
|
|
return array ("documents" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->filename = '';
|
|
$o->docId = '';
|
|
$o->version = '';
|
|
$o->createDate = '';
|
|
$o->createBy = '';
|
|
$o->type = '';
|
|
$o->index = '';
|
|
$o->link = '';
|
|
|
|
return array ("documents" => $o
|
|
);
|
|
}
|
|
|
|
$oSessions = new Sessions();
|
|
$session = $oSessions->getSessionUser( $params->sessionId );
|
|
$userId = $session['USR_UID'];
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->outputDocumentList( $params->caseId, $userId );
|
|
|
|
return array ("documents" => $res
|
|
);
|
|
}
|
|
|
|
function inputDocumentList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->filename = '';
|
|
$o->docId = '';
|
|
$o->version = '';
|
|
$o->createDate = '';
|
|
$o->createBy = '';
|
|
$o->type = '';
|
|
$o->index = '';
|
|
$o->link = '';
|
|
|
|
return array ("documents" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->filename = '';
|
|
$o->docId = '';
|
|
$o->version = '';
|
|
$o->createDate = '';
|
|
$o->createBy = '';
|
|
$o->type = '';
|
|
$o->index = '';
|
|
$o->link = '';
|
|
|
|
return array ("documents" => $o
|
|
);
|
|
}
|
|
|
|
$oSessions = new Sessions();
|
|
$session = $oSessions->getSessionUser( $params->sessionId );
|
|
$userId = $session['USR_UID'];
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->inputDocumentList( $params->caseId, $userId );
|
|
|
|
return array ("documents" => $res
|
|
);
|
|
}
|
|
|
|
function inputDocumentProcessList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
$o->description = '';
|
|
|
|
return array ("documents" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
$o->description = '';
|
|
|
|
return array ("documents" => $o
|
|
);
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->inputDocumentProcessList( $params->processId );
|
|
|
|
return array ("documents" => $res
|
|
);
|
|
}
|
|
|
|
function removeDocument ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->removeDocument( $params->appDocUid );
|
|
|
|
return $res;
|
|
}
|
|
|
|
function SendMessage ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult->getPayloadArray();
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result->getPayloadArray();
|
|
}
|
|
|
|
$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)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->getCaseInfo( $params->caseId, $params->delIndex );
|
|
|
|
return $res;
|
|
}
|
|
|
|
function SendVariables ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$variables = $params->variables;
|
|
$Fields = array ();
|
|
|
|
if (is_object( $variables )) {
|
|
$Fields[$variables->name] = $variables->value;
|
|
} elseif (is_array( $variables )) {
|
|
foreach ($variables as $index => $obj) {
|
|
if (is_object( $obj ) && isset( $obj->name ) && isset( $obj->value )) {
|
|
$Fields[$obj->name] = $obj->value;
|
|
}
|
|
}
|
|
}
|
|
|
|
$params->variables = $Fields;
|
|
$res = $ws->sendVariables( $params->caseId, $params->variables );
|
|
|
|
return $res->getPayloadArray();
|
|
}
|
|
|
|
function GetVariables ($params)
|
|
{
|
|
if (! is_array( $params->variables )) {
|
|
$params->variables = array ($params->variables
|
|
);
|
|
}
|
|
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsGetVariableResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES'), null );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
|
|
$res = $ws->getVariables( $params->caseId, $params->variables );
|
|
|
|
return $res;
|
|
}
|
|
|
|
function GetVariablesNames ($params)
|
|
{
|
|
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsGetVariableResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES'), null );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
|
|
$res = $ws->getVariablesNames( $params->caseId );
|
|
|
|
return $res;
|
|
}
|
|
|
|
function DerivateCase ($params)
|
|
{
|
|
$oSession = new Sessions();
|
|
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$user = $oSession->getSessionUser( $params->sessionId );
|
|
|
|
$oStd->stored_system_variables = true;
|
|
$oStd->wsSessionId = $params->sessionId;
|
|
|
|
$ws = new WsBase( $oStd );
|
|
$res = $ws->derivateCase($user["USR_UID"], $params->caseId, $params->delIndex, true);
|
|
|
|
return $res;
|
|
}
|
|
|
|
function RouteCase ($params)
|
|
{
|
|
$oSession = new Sessions();
|
|
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$user = $oSession->getSessionUser( $params->sessionId );
|
|
|
|
$oStd = new stdclass();
|
|
$oStd->stored_system_variables = true;
|
|
$oStd->wsSessionId = $params->sessionId;
|
|
|
|
$ws = new WsBase( $oStd );
|
|
$res = $ws->derivateCase($user["USR_UID"], $params->caseId, $params->delIndex, true);
|
|
|
|
return $res;
|
|
|
|
}
|
|
|
|
function executeTrigger ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$result = new wsResponse( 2, 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)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, "PM_CASES" ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
///////
|
|
$variables = $params->variables;
|
|
|
|
$field = array ();
|
|
|
|
if (is_object( $variables )) {
|
|
$field[$variables->name] = $variables->value;
|
|
} else {
|
|
if (is_array( $variables )) {
|
|
foreach ($variables as $index => $obj) {
|
|
if (is_object( $obj ) && isset( $obj->name ) && isset( $obj->value )) {
|
|
$field[$obj->name] = $obj->value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$params->variables = $field;
|
|
|
|
///////
|
|
$ws = new WsBase();
|
|
$res = $ws->newCaseImpersonate($params->processId, $params->userId, $params->variables, $params->taskId);
|
|
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* Begins a new case under the name of the logged-in user.
|
|
* Where the parameter value is:
|
|
* - string sessionId: The ID of the session, which is obtained during login.
|
|
* - string processId: The ID of the process where the case should start, which
|
|
* can be obtained with processList().
|
|
* - string taskId: The ID of the task where the case should start. This will
|
|
* generally be the first task in a process, which can be obtained with taskList().
|
|
* - array variables: An array of variableStruct objects which contain information
|
|
* to start the case. This array has the following format.
|
|
*
|
|
* @param object $params
|
|
*
|
|
* @return object
|
|
*/
|
|
function NewCase($params)
|
|
{
|
|
$parseSoapVariableVame = new ParseSoapVariableName();
|
|
|
|
$vsResult = isValidSession($params->sessionId);
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission($params->sessionId, 'PM_CASES') == 0) {
|
|
$result = new wsResponse(2, G::LoadTranslation('ID_NOT_PRIVILEGES'));
|
|
|
|
return $result;
|
|
}
|
|
|
|
$oSession = new Sessions();
|
|
$session = $oSession->getSessionUser($params->sessionId);
|
|
$userId = $session['USR_UID'];
|
|
$variables = $params->variables;
|
|
|
|
$field = array();
|
|
|
|
if (is_object($variables) && $variables->name === '__POST_VARIABLES__') {
|
|
$field = G::json_decode($variables->value, true);
|
|
$variables = null;
|
|
}
|
|
|
|
if (is_object($variables)) {
|
|
$field[$variables->name] = $variables->value;
|
|
}
|
|
|
|
if (is_array($variables)) {
|
|
foreach ($variables as $val) {
|
|
if (!is_object($val->value)) {
|
|
$parseSoapVariableVame->buildVariableName($field, $val->name, $val->value);
|
|
}
|
|
}
|
|
}
|
|
|
|
$params->variables = $field;
|
|
|
|
$ws = new WsBase();
|
|
|
|
$res = $ws->newCase($params->processId, $userId, $params->taskId, $params->variables, (isset($params->executeTriggers)) ? (int) ($params->executeTriggers) : 0);
|
|
|
|
// we need to register the case id for a stored session variable. like a normal Session.
|
|
$oSession->registerGlobal('APPLICATION', $res->caseId);
|
|
|
|
return $res;
|
|
}
|
|
|
|
function AssignUserToGroup ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult->getPayloadArray();
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result->getPayloadArray();
|
|
}
|
|
|
|
$sessions = new Sessions();
|
|
$user = $sessions->getSessionUser( $params->sessionId );
|
|
|
|
if (! is_array( $user )) {
|
|
return new wsResponse( 3, 'User not registered in the system' );
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->assignUserToGroup( $params->userId, $params->groupId );
|
|
|
|
return $res->getPayloadArray();
|
|
}
|
|
|
|
function AssignUserToDepartment ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult->getPayloadArray();
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result->getPayloadArray();
|
|
}
|
|
|
|
$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->AssignUserToDepartment( $params->userId, $params->departmentId, $params->manager );
|
|
|
|
return $res->getPayloadArray();
|
|
}
|
|
|
|
function CreateUser ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$result = new wsCreateUserResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
|
|
try {
|
|
$res = $ws->createUser( $params->userId, $params->firstname, $params->lastname, $params->email, $params->role, $params->password, ((isset( $params->dueDate )) ? $params->dueDate : null), ((isset( $params->status )) ? $params->status : null) );
|
|
} catch(Exception $oError) {
|
|
return $oError->getMessage();
|
|
}
|
|
|
|
return $res;
|
|
}
|
|
|
|
function updateUser ($params)
|
|
{
|
|
$result = isValidSession( $params->sessionId );
|
|
|
|
if ($result->status_code != 0) {
|
|
return $result;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, "PM_USERS" ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
|
|
$result = $ws->updateUser( $params->userUid, $params->userName, ((isset( $params->firstName )) ? $params->firstName : null), ((isset( $params->lastName )) ? $params->lastName : null), ((isset( $params->email )) ? $params->email : null), ((isset( $params->dueDate )) ? $params->dueDate : null), ((isset( $params->status )) ? $params->status : null), ((isset( $params->role )) ? $params->role : null), ((isset( $params->password )) ? $params->password : null) );
|
|
|
|
return $result;
|
|
}
|
|
|
|
function informationUser($params)
|
|
{
|
|
$result = isValidSession($params->sessionId);
|
|
|
|
if ($result->status_code != 0) {
|
|
return $result;
|
|
}
|
|
|
|
if (ifPermission($params->sessionId, "PM_USERS") == 0) {
|
|
$result = new wsResponse(2, G::LoadTranslation('ID_NOT_PRIVILEGES'));
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$result = $ws->informationUser($params->userUid);
|
|
|
|
return $result;
|
|
}
|
|
|
|
function CreateGroup ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$result = new WsCreateGroupResponse( $vsResult->status_code, $vsResult->message, '' );
|
|
|
|
return $result;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$result = new WsCreateGroupResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES'), '' );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->createGroup( $params->name );
|
|
|
|
return $res;
|
|
}
|
|
|
|
function CreateDepartment ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_USERS' ) == 0) {
|
|
$result = new wsCreateUserResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->CreateDepartment( $params->name, $params->parentUID );
|
|
|
|
return $res;
|
|
}
|
|
|
|
function TaskList ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
|
|
return array ("tasks" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$o->guid = "2" . G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
|
|
return array ("tasks" => $o
|
|
);
|
|
}
|
|
|
|
$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)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
$o->guid = $vsResult->status_code . ' ' . $vsResult->message;
|
|
$o->name = '';
|
|
|
|
return array ("taskCases" => $o
|
|
);
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, 'PM_CASES' ) == 0) {
|
|
$o->guid = "2".G::LoadTranslation('ID_INSUFFICIENT_PRIVILEGES_FUNCTION');
|
|
$o->name = '';
|
|
|
|
return array ("taskCases" => $o
|
|
);
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->taskCase( $params->caseId );
|
|
|
|
return array ("taskCases" => $res
|
|
);
|
|
}
|
|
|
|
function ReassignCase ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->reassignCase( $params->sessionId, $params->caseId, $params->delIndex, $params->userIdSource, $params->userIdTarget );
|
|
|
|
return $res;
|
|
}
|
|
|
|
function systemInformation ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->systemInformation();
|
|
|
|
return $res;
|
|
}
|
|
|
|
function getCaseNotes ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->getCaseNotes( $params->applicationID, $params->userUid );
|
|
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* **********
|
|
* #added By Erik AO <erik@colosa.com> in datetime 26.06.2008 10:00:00
|
|
* # modified 12-01-2010 by erik
|
|
*/
|
|
function isValidSession ($sessionId)
|
|
{
|
|
$oSessions = new Sessions();
|
|
$session = $oSessions->verifySession( $sessionId );
|
|
|
|
if (is_array( $session )) {
|
|
return new wsResponse( 0, G::LoadTranslation('ID_SESSION_ACTIVE') );
|
|
} else {
|
|
return new wsResponse( 9, G::LoadTranslation('ID_SESSION_EXPIRED') );
|
|
}
|
|
}
|
|
|
|
//add removeUserFromGroup
|
|
function removeUserFromGroup ($params)
|
|
{
|
|
$vsResult = isValidSession( $params->sessionId );
|
|
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->removeUserFromGroup( $params->userId, $params->groupId );
|
|
|
|
return $res;
|
|
}
|
|
|
|
//end add
|
|
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;
|
|
}
|
|
|
|
function deleteCase ($params)
|
|
{
|
|
$result = isValidSession( $params->sessionId );
|
|
|
|
if ($result->status_code != 0) {
|
|
return $result;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, "PM_CASES" ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$result = $ws->deleteCase( $params->caseUid );
|
|
|
|
return $result;
|
|
}
|
|
|
|
function cancelCase ($params)
|
|
{
|
|
$result = isValidSession( $params->sessionId );
|
|
|
|
if ($result->status_code != 0) {
|
|
return $result;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, "PM_CASES" ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$result = $ws->cancelCase( $params->caseUid, $params->delIndex, $params->userUid );
|
|
|
|
return $result;
|
|
}
|
|
|
|
function pauseCase ($params)
|
|
{
|
|
$result = isValidSession( $params->sessionId );
|
|
|
|
if ($result->status_code != 0) {
|
|
return $result;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, "PM_CASES" ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
|
|
$result = $ws->pauseCase( $params->caseUid, $params->delIndex, $params->userUid, ((isset( $params->unpauseDate )) ? $params->unpauseDate : null) );
|
|
|
|
return $result;
|
|
}
|
|
|
|
function unpauseCase ($params)
|
|
{
|
|
$result = isValidSession( $params->sessionId );
|
|
|
|
if ($result->status_code != 0) {
|
|
return $result;
|
|
}
|
|
|
|
if (ifPermission( $params->sessionId, "PM_CASES" ) == 0) {
|
|
$result = new wsResponse( 2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$result = $ws->unpauseCase( $params->caseUid, $params->delIndex, $params->userUid );
|
|
|
|
return $result;
|
|
}
|
|
|
|
function addCaseNote($params)
|
|
{
|
|
$result = isValidSession($params->sessionId);
|
|
|
|
if ($result->status_code != 0) {
|
|
return $result;
|
|
}
|
|
|
|
if (ifPermission($params->sessionId, "PM_CASES") == 0) {
|
|
$result = new wsResponse(2, G::LoadTranslation('ID_NOT_PRIVILEGES') );
|
|
|
|
return $result;
|
|
}
|
|
|
|
$ws = new WsBase();
|
|
$result = $ws->addCaseNote(
|
|
$params->caseUid,
|
|
$params->processUid,
|
|
$params->taskUid,
|
|
$params->userUid,
|
|
$params->note,
|
|
(isset($params->sendMail))? $params->sendMail : 1
|
|
);
|
|
|
|
return $result;
|
|
}
|
|
|
|
function claimCase($params)
|
|
{
|
|
$vsResult = isValidSession($params->sessionId);
|
|
if ($vsResult->status_code !== 0) {
|
|
return $vsResult;
|
|
}
|
|
|
|
if (ifPermission($params->sessionId, 'PM_CASES') == 0) {
|
|
$result = new wsResponse(2, G::LoadTranslation('ID_NOT_PRIVILEGES'));
|
|
|
|
return $result;
|
|
}
|
|
|
|
$oSessions = new Sessions();
|
|
$session = $oSessions->getSessionUser($params->sessionId);
|
|
|
|
$ws = new WsBase();
|
|
$res = $ws->claimCase($session['USR_UID'], $params->guid, $params->delIndex);
|
|
|
|
return $res;
|
|
}
|
|
|
|
$options = array(
|
|
'cache_wsdl' => WSDL_CACHE_NONE
|
|
);
|
|
$server = new SoapServer($wsdl, $options);
|
|
|
|
$server->addFunction("Login");
|
|
$server->addFunction("ProcessList");
|
|
$server->addFunction("CaseList");
|
|
$server->addFunction("UnassignedCaseList");
|
|
$server->addFunction("RoleList");
|
|
$server->addFunction("GroupList");
|
|
$server->addFunction("DepartmentList");
|
|
$server->addFunction("UserList");
|
|
$server->addFunction("TriggerList");
|
|
$server->addFunction("outputDocumentList");
|
|
$server->addFunction("inputDocumentList");
|
|
$server->addFunction("inputDocumentProcessList");
|
|
$server->addFunction("removeDocument");
|
|
$server->addFunction("SendMessage");
|
|
$server->addFunction("SendVariables");
|
|
$server->addFunction("GetVariables");
|
|
$server->addFunction("GetVariablesNames");
|
|
$server->addFunction("DerivateCase");
|
|
$server->addFunction("RouteCase");
|
|
$server->addFunction("executeTrigger");
|
|
$server->addFunction("NewCaseImpersonate");
|
|
$server->addFunction("NewCase");
|
|
$server->addFunction("AssignUserToGroup");
|
|
$server->addFunction("AssignUserToDepartment");
|
|
$server->addFunction("CreateGroup");
|
|
$server->addFunction("CreateDepartment");
|
|
$server->addFunction("CreateUser");
|
|
$server->addFunction("updateUser");
|
|
$server->addFunction("informationUser");
|
|
$server->addFunction("getCaseInfo");
|
|
$server->addFunction("TaskList");
|
|
$server->addFunction("TaskCase");
|
|
$server->addFunction("ReassignCase");
|
|
$server->addFunction("systemInformation");
|
|
$server->addFunction("removeUserFromGroup");
|
|
$server->addFunction("getCaseNotes");
|
|
$server->addFunction("deleteCase");
|
|
$server->addFunction("cancelCase");
|
|
$server->addFunction("pauseCase");
|
|
$server->addFunction("unpauseCase");
|
|
$server->addFunction("addCaseNote");
|
|
$server->addFunction("claimCase");
|
|
$server->handle();
|
|
|