Merge remote-tracking branch 'origin/feature/HOR-3559' into feature/HOR-3629
This commit is contained in:
@@ -3916,3 +3916,287 @@ function PMFSendMessageToGroup(
|
||||
//Return
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Start - Private functions
|
||||
|
||||
|
||||
/**
|
||||
* Convert to string
|
||||
*
|
||||
* @param variant $vValue
|
||||
* @return string
|
||||
*/
|
||||
function pmToString($vValue)
|
||||
{
|
||||
return (string)$vValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert to integer
|
||||
*
|
||||
* @param variant $vValue
|
||||
* @return integer
|
||||
*/
|
||||
function pmToInteger($vValue)
|
||||
{
|
||||
return (int)$vValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert to float
|
||||
*
|
||||
* @param variant $vValue
|
||||
* @return float
|
||||
*/
|
||||
function pmToFloat($vValue)
|
||||
{
|
||||
return (float)$vValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert to Url
|
||||
*
|
||||
* @param variant $vValue
|
||||
* @return url
|
||||
*/
|
||||
function pmToUrl($vValue)
|
||||
{
|
||||
return urlencode($vValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert to data base escaped string
|
||||
*
|
||||
* @param variant $vValue
|
||||
* @return string
|
||||
*/
|
||||
function pmSqlEscape($vValue)
|
||||
{
|
||||
return G::sqlEscape($vValue);
|
||||
}
|
||||
|
||||
//End - Private functions
|
||||
|
||||
|
||||
/* * *************************************************************************
|
||||
* Error handler
|
||||
* author: Julio Cesar Laura Avenda<64>o <juliocesar@colosa.com>
|
||||
* date: 2009-10-01
|
||||
* ************************************************************************* */
|
||||
/**
|
||||
* @param $errno
|
||||
* @param $errstr
|
||||
* @param $errfile
|
||||
* @param $errline
|
||||
*/
|
||||
function handleErrors($errno, $errstr, $errfile, $errline)
|
||||
{
|
||||
if ($errno != 2048 && isset($_SESSION['_DATA_TRIGGER_']['_EXECUTION_TIME_'])) {
|
||||
G::logTriggerExecution($_SESSION, $errstr, '', round(microtime(true) -
|
||||
$_SESSION['_DATA_TRIGGER_']['_EXECUTION_TIME_'], 5));
|
||||
}
|
||||
|
||||
if ($errno != '' && ($errno != 8) && ($errno != 2048)) {
|
||||
if (isset($_SESSION['_CODE_'])) {
|
||||
$sCode = $_SESSION['_CODE_'];
|
||||
unset($_SESSION['_CODE_']);
|
||||
global $oPMScript;
|
||||
if (isset($oPMScript) && isset($_SESSION['APPLICATION'])) {
|
||||
$oCase = new Cases();
|
||||
$oPMScript->aFields['__ERROR__'] = $errstr;
|
||||
$oCase->updateCase($_SESSION['APPLICATION'], array('APP_DATA' => $oPMScript->aFields));
|
||||
}
|
||||
registerError(1, $errstr, $errline - 1, $sCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle Fatal Errors
|
||||
* @param variant $buffer
|
||||
* @return buffer
|
||||
*/
|
||||
|
||||
function handleFatalErrors($buffer)
|
||||
{
|
||||
if (!empty($buffer)) {
|
||||
G::logTriggerExecution($_SESSION, $buffer, 'FATAL_ERROR');
|
||||
}
|
||||
|
||||
if (preg_match('/(error<\/b>:)(.+)(<br)/', $buffer, $regs)) {
|
||||
$oCase = new Cases();
|
||||
$err = preg_replace('/<.*?>/', '', $regs[2]);
|
||||
$aAux = explode(' in ', $err);
|
||||
$sCode = isset($_SESSION['_CODE_']) ? $_SESSION['_CODE_'] : null;
|
||||
unset($_SESSION['_CODE_']);
|
||||
registerError(2, $aAux[0], 0, $sCode);
|
||||
if (strpos($_SERVER['REQUEST_URI'], '/cases/cases_Step') !== false) {
|
||||
if (strpos($_SERVER['REQUEST_URI'], '&ACTION=GENERATE') !== false) {
|
||||
$aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION']);
|
||||
if ($_SESSION['TRIGGER_DEBUG']['ISSET']) {
|
||||
$_SESSION['TRIGGER_DEBUG']['TIME'] = G::toUpper(G::loadTranslation('ID_AFTER'));
|
||||
$_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $aNextStep['PAGE'];
|
||||
$aNextStep['PAGE'] = $aNextStep['PAGE'] . '&breakpoint=triggerdebug';
|
||||
}
|
||||
global $oPMScript;
|
||||
if (isset($oPMScript) && isset($_SESSION['APPLICATION'])) {
|
||||
$oPMScript->aFields['__ERROR__'] = $aAux[0];
|
||||
$oCase->updateCase($_SESSION['APPLICATION'], array('APP_DATA' => $oPMScript->aFields));
|
||||
}
|
||||
G::header('Location: ' . $aNextStep['PAGE']);
|
||||
die();
|
||||
}
|
||||
$_SESSION['_NO_EXECUTE_TRIGGERS_'] = 1;
|
||||
global $oPMScript;
|
||||
if (isset($oPMScript) && isset($_SESSION['APPLICATION'])) {
|
||||
$oPMScript->aFields['__ERROR__'] = $aAux[0];
|
||||
$oCase->updateCase($_SESSION['APPLICATION'], array('APP_DATA' => $oPMScript->aFields));
|
||||
}
|
||||
G::header('Location: ' . $_SERVER['REQUEST_URI']);
|
||||
die();
|
||||
} else {
|
||||
$aNextStep = $oCase->getNextStep($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION']);
|
||||
if (isset($_SESSION['TRIGGER_DEBUG']['ISSET']) && $_SESSION['TRIGGER_DEBUG']['ISSET']) {
|
||||
$_SESSION['TRIGGER_DEBUG']['TIME'] = G::toUpper(G::loadTranslation('ID_AFTER'));
|
||||
$_SESSION['TRIGGER_DEBUG']['BREAKPAGE'] = $aNextStep['PAGE'];
|
||||
$aNextStep['PAGE'] = $aNextStep['PAGE'] . '&breakpoint=triggerdebug';
|
||||
}
|
||||
if (strpos($aNextStep['PAGE'], 'TYPE=ASSIGN_TASK&UID=-1') !== false) {
|
||||
G::SendMessageText('Fatal error in trigger', 'error');
|
||||
}
|
||||
global $oPMScript;
|
||||
if (isset($oPMScript) && isset($_SESSION['APPLICATION'])) {
|
||||
$oPMScript->aFields['__ERROR__'] = $aAux[0];
|
||||
$oCase->updateCase($_SESSION['APPLICATION'], array('APP_DATA' => $oPMScript->aFields));
|
||||
}
|
||||
G::header('Location: ' . $aNextStep['PAGE']);
|
||||
die();
|
||||
}
|
||||
}
|
||||
return $buffer;
|
||||
}
|
||||
|
||||
/*
|
||||
* Register Error
|
||||
* @param string $iType
|
||||
* @param string $sError
|
||||
* @param string $iLine
|
||||
* @param string $sCode
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function registerError($iType, $sError, $iLine, $sCode)
|
||||
{
|
||||
$sType = ($iType == 1 ? 'ERROR' : 'FATAL');
|
||||
$_SESSION['TRIGGER_DEBUG']['ERRORS'][][$sType] = $sError . ($iLine > 0 ? ' (line ' . $iLine . ')' : '') . ':<br /><br />' . $sCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtain engine Data Base name
|
||||
*
|
||||
* @param type $connection
|
||||
* @return type
|
||||
*/
|
||||
function getEngineDataBaseName($connection)
|
||||
{
|
||||
$aDNS = $connection->getDSN();
|
||||
return $aDNS["phptype"];
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute Queries for Oracle Database
|
||||
*
|
||||
* @param type $sql
|
||||
* @param type $connection
|
||||
*/
|
||||
function executeQueryOci($sql, $connection, $aParameter = array(), $dbsEncode = "")
|
||||
{
|
||||
$aDNS = $connection->getDSN();
|
||||
|
||||
$sUsername = $aDNS["username"];
|
||||
$sPassword = $aDNS["password"];
|
||||
$sHostspec = $aDNS["hostspec"];
|
||||
$sDatabse = $aDNS["database"];
|
||||
$sPort = $aDNS["port"];
|
||||
|
||||
if ($sPort != "1521") {
|
||||
$flagTns = ($sDatabse == "" && ($sPort . "" == "" || $sPort . "" == "0")) ? 1 : 0;
|
||||
|
||||
if ($flagTns == 0) {
|
||||
// if not default port
|
||||
$conn = oci_connect($sUsername, $sPassword, $sHostspec . ":" . $sPort . "/" . $sDatabse, $dbsEncode);
|
||||
} else {
|
||||
$conn = oci_connect($sUsername, $sPassword, $sHostspec, $dbsEncode);
|
||||
}
|
||||
} else {
|
||||
$conn = oci_connect($sUsername, $sPassword, $sHostspec . "/" . $sDatabse, $dbsEncode);
|
||||
}
|
||||
|
||||
if (!$conn) {
|
||||
$e = oci_error();
|
||||
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
|
||||
return $e;
|
||||
}
|
||||
|
||||
switch (true) {
|
||||
case preg_match("/^(SELECT|SHOW|DESCRIBE|DESC|WITH)\s/i", $sql):
|
||||
$stid = oci_parse($conn, $sql);
|
||||
|
||||
if (count($aParameter) > 0) {
|
||||
foreach ($aParameter as $key => $val) {
|
||||
oci_bind_by_name($stid, $key, $val);
|
||||
}
|
||||
}
|
||||
oci_execute($stid, OCI_DEFAULT);
|
||||
|
||||
$result = Array();
|
||||
$i = 1;
|
||||
while ($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) {
|
||||
$result[$i++] = $row;
|
||||
}
|
||||
oci_free_statement($stid);
|
||||
oci_close($conn);
|
||||
return $result;
|
||||
break;
|
||||
case preg_match("/^(INSERT|UPDATE|DELETE)\s/i", $sql):
|
||||
$stid = oci_parse($conn, $sql);
|
||||
$isValid = true;
|
||||
if (count($aParameter) > 0) {
|
||||
foreach ($aParameter as $key => $val) {
|
||||
oci_bind_by_name($stid, $key, $val);
|
||||
}
|
||||
}
|
||||
$objExecute = oci_execute($stid, OCI_DEFAULT);
|
||||
$result = oci_num_rows($stid);
|
||||
if ($objExecute) {
|
||||
oci_commit($conn);
|
||||
} else {
|
||||
oci_rollback($conn);
|
||||
$isValid = false;
|
||||
}
|
||||
oci_free_statement($stid);
|
||||
oci_close($conn);
|
||||
if ($isValid) {
|
||||
return $result;
|
||||
} else {
|
||||
return oci_error();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Stored procedures
|
||||
$stid = oci_parse($conn, $sql);
|
||||
$aParameterRet = array();
|
||||
if (count($aParameter) > 0) {
|
||||
foreach ($aParameter as $key => $val) {
|
||||
$aParameterRet[$key] = $val;
|
||||
// The third parameter ($aParameterRet[$key]) returned a value by reference.
|
||||
oci_bind_by_name($stid, $key, $aParameterRet[$key]);
|
||||
}
|
||||
}
|
||||
$objExecute = oci_execute($stid, OCI_DEFAULT);
|
||||
oci_free_statement($stid);
|
||||
oci_close($conn);
|
||||
return $aParameterRet;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user