示例#1
0
function NewCase($params)
{
    G::LoadClass("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;
    }
    $oSession = new Sessions();
    $session = $oSession->getSessionUser($params->sessionId);
    $userId = $session["USR_UID"];
    $variables = $params->variables;
    /* this code is for previous version of ws, and apparently this will work for grids inside the variables..
        if (!isset($params->variables) ) {
          $variables = array();
          $field = array();
        }
        else {
          if ( is_object ($variables) ) {
            $field[ $variables->name ]= $variables->value ;
          }
    
          if ( is_array ( $variables) ) {
            foreach ( $variables as $key=>$val ) {
              $name  = $val->name;
              $value = $val->value;
              if (!is_object($val->value))
              {
                eval('$field[ ' . $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) {
                          $field[$val->name][$i][$val2->key] = $val2->value;
                        }
                      }
                    }
                    $i++;
                  }
                }
              }
            }
          }
        }
        */
    $variables = $params->variables;
    $field = array();
    if (is_object($variables)) {
        $field[$variables->name] = $variables->value;
    }
    if (is_array($variables)) {
        foreach ($variables as $key => $val) {
            if (!is_object($val->value)) {
                eval("\$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;
}