Merged in bugfix/HOR-4886 (pull request #6643)

HOR-4886

Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
Roly
2018-10-25 19:00:16 +00:00
committed by Julio Cesar Laura Avendaño
2 changed files with 53 additions and 34 deletions

View File

@@ -1,9 +1,17 @@
<?php <?php
namespace ProcessMaker\BusinessModel; namespace ProcessMaker\BusinessModel;
use G; use Content;
use DbSource; use ContentPeer;
use Criteria;
use DbConnections; use DbConnections;
use DbSource;
use DbSourcePeer;
use Exception;
use G;
use Net;
use Process;
use ResultSet;
class DataBaseConnection class DataBaseConnection
{ {
@@ -23,8 +31,8 @@ class DataBaseConnection
$oDBSource = new DbSource(); $oDBSource = new DbSource();
$oCriteria = $oDBSource->getCriteriaDBSList($pro_uid); $oCriteria = $oDBSource->getCriteriaDBSList($pro_uid);
$rs = \DbSourcePeer::doSelectRS($oCriteria); $rs = DbSourcePeer::doSelectRS($oCriteria);
$rs->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$rs->next(); $rs->next();
$dbConnecions = array(); $dbConnecions = array();
@@ -73,13 +81,13 @@ class DataBaseConnection
$dbDescription = ''; $dbDescription = '';
$criteria2 = new \Criteria('workflow'); $criteria2 = new Criteria('workflow');
$criteria2->addSelectColumn(\ContentPeer::CON_VALUE); $criteria2->addSelectColumn(ContentPeer::CON_VALUE);
$criteria2->add(\ContentPeer::CON_ID, $aFields['DBS_UID'], \Criteria::EQUAL); $criteria2->add(ContentPeer::CON_ID, $aFields['DBS_UID'], Criteria::EQUAL);
$rsCriteria2 = \ContentPeer::doSelectRS($criteria2); $rsCriteria2 = ContentPeer::doSelectRS($criteria2);
$rsCriteria2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if ($rsCriteria2->next()) { if ($rsCriteria2->next()) {
$row2 = $rsCriteria2->getRow(); $row2 = $rsCriteria2->getRow();
@@ -97,7 +105,7 @@ class DataBaseConnection
$response = array_change_key_case($aFields, CASE_LOWER); $response = array_change_key_case($aFields, CASE_LOWER);
return $response; return $response;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
@@ -123,11 +131,9 @@ class DataBaseConnection
} }
$oDBSource = new DbSource(); $oDBSource = new DbSource();
$oContent = new \Content(); $oContent = new Content();
$dataDBConnection = array_change_key_case($dataDBConnection, CASE_UPPER); $dataDBConnection = array_change_key_case($dataDBConnection, CASE_UPPER);
$flagTns = ($dataDBConnection["DBS_TYPE"] == "oracle" && $dataDBConnection["DBS_CONNECTION_TYPE"] == "TNS")? 1 : 0;
$dataDBConnection['PRO_UID'] = $pro_uid; $dataDBConnection['PRO_UID'] = $pro_uid;
if (isset($dataDBConnection['DBS_TYPE'])) { if (isset($dataDBConnection['DBS_TYPE'])) {
@@ -137,27 +143,40 @@ class DataBaseConnection
$typesExists[] = $value['id']; $typesExists[] = $value['id'];
} }
if (!in_array($dataDBConnection['DBS_TYPE'], $typesExists)) { if (!in_array($dataDBConnection['DBS_TYPE'], $typesExists)) {
throw (new \Exception(\G::LoadTranslation("ID_DBC_TYPE_INVALID", array($dataDBConnection['DBS_TYPE'])))); throw (new Exception(G::LoadTranslation("ID_DBC_TYPE_INVALID", array($dataDBConnection['DBS_TYPE']))));
} }
} }
if ($dataDBConnection["DBS_TYPE"] == "oracle") {
if (empty($dataDBConnection["DBS_CONNECTION_TYPE"])) {
throw (new Exception(G::LoadTranslation("ID_UNDEFINED_VALUE_IS_REQUIRED", ["dbs_connection_type"])));
}
if ($dataDBConnection["DBS_CONNECTION_TYPE"] == "TNS") {
if (empty($dataDBConnection["DBS_TNS"])) {
throw (new Exception(G::LoadTranslation("ID_UNDEFINED_VALUE_IS_REQUIRED", ["dbs_tns"])));
}
}
}
$flagTns = ($dataDBConnection["DBS_TYPE"] == "oracle" && $dataDBConnection["DBS_CONNECTION_TYPE"] == "TNS") ? 1 : 0;
if (isset($dataDBConnection["DBS_SERVER"]) && $dataDBConnection["DBS_SERVER"] == "" && $flagTns == 0) { if (isset($dataDBConnection["DBS_SERVER"]) && $dataDBConnection["DBS_SERVER"] == "" && $flagTns == 0) {
throw (new \Exception(\G::LoadTranslation("ID_DBC_SERVER_INVALID", array($dataDBConnection['DBS_SERVER'])))); throw (new Exception(G::LoadTranslation("ID_DBC_SERVER_INVALID", array($dataDBConnection['DBS_SERVER']))));
} }
if (isset($dataDBConnection["DBS_DATABASE_NAME"]) && $dataDBConnection["DBS_DATABASE_NAME"] == "" && $flagTns == 0) { if (isset($dataDBConnection["DBS_DATABASE_NAME"]) && $dataDBConnection["DBS_DATABASE_NAME"] == "" && $flagTns == 0) {
throw (new \Exception(\G::LoadTranslation("ID_DBC_DBNAME_INVALID", array($dataDBConnection['DBS_DATABASE_NAME'])))); throw (new Exception(G::LoadTranslation("ID_DBC_DBNAME_INVALID", array($dataDBConnection['DBS_DATABASE_NAME']))));
} }
if (isset($dataDBConnection['DBS_PORT']) && if (isset($dataDBConnection['DBS_PORT']) &&
($dataDBConnection['DBS_PORT'] == ''|| $dataDBConnection['DBS_PORT'] == 0)) { ($dataDBConnection['DBS_PORT'] == ''|| $dataDBConnection['DBS_PORT'] == 0)) {
if ($flagTns == 0) { if ($flagTns == 0) {
throw (new \Exception(\G::LoadTranslation("ID_DBC_PORT_INVALID", array($dataDBConnection["DBS_PORT"])))); throw (new Exception(G::LoadTranslation("ID_DBC_PORT_INVALID", array($dataDBConnection["DBS_PORT"]))));
} }
} }
if (isset($dataDBConnection["DBS_TNS"]) && $dataDBConnection["DBS_TNS"] == "" && $flagTns == 1) { if (isset($dataDBConnection["DBS_TNS"]) && $dataDBConnection["DBS_TNS"] == "" && $flagTns == 1) {
throw (new \Exception(\G::LoadTranslation("ID_DBC_TNS_NOT_EXIST", array($dataDBConnection["DBS_TNS"])))); throw (new Exception(G::LoadTranslation("ID_DBC_TNS_NOT_EXIST", array($dataDBConnection["DBS_TNS"]))));
} }
if (isset($dataDBConnection['DBS_ENCODE'])) { if (isset($dataDBConnection['DBS_ENCODE'])) {
@@ -168,7 +187,7 @@ class DataBaseConnection
$encodesExists[] = $value['0']; $encodesExists[] = $value['0'];
} }
if (!in_array($dataDBConnection['DBS_ENCODE'], $encodesExists)) { if (!in_array($dataDBConnection['DBS_ENCODE'], $encodesExists)) {
throw (new \Exception(\G::LoadTranslation("ID_DBC_ENCODE_INVALID", array($dataDBConnection['DBS_ENCODE'])))); throw (new Exception(G::LoadTranslation("ID_DBC_ENCODE_INVALID", array($dataDBConnection['DBS_ENCODE']))));
} }
} }
@@ -179,9 +198,9 @@ class DataBaseConnection
$dataDBConnection['DBS_PASSWORD'] = ''; $dataDBConnection['DBS_PASSWORD'] = '';
} else { } else {
if ($flagTns == 0) { if ($flagTns == 0) {
$pass = \G::encrypt( $dataDBConnection["DBS_PASSWORD"], $dataDBConnection["DBS_DATABASE_NAME"]) . "_2NnV3ujj3w"; $pass = G::encrypt( $dataDBConnection["DBS_PASSWORD"], $dataDBConnection["DBS_DATABASE_NAME"]) . "_2NnV3ujj3w";
} else { } else {
$pass = \G::encrypt($dataDBConnection["DBS_PASSWORD"], $dataDBConnection["DBS_TNS"]) . "_2NnV3ujj3w"; $pass = G::encrypt($dataDBConnection["DBS_PASSWORD"], $dataDBConnection["DBS_TNS"]) . "_2NnV3ujj3w";
} }
$dataDBConnection['DBS_PASSWORD'] = $pass; $dataDBConnection['DBS_PASSWORD'] = $pass;
@@ -203,7 +222,7 @@ class DataBaseConnection
$dataTest = array_merge($dataDBConnection, array('DBS_PASSWORD' => $passOrigin)); $dataTest = array_merge($dataDBConnection, array('DBS_PASSWORD' => $passOrigin));
$resTest = $this->testConnection($dataTest); $resTest = $this->testConnection($dataTest);
if (!$resTest['resp']) { if (!$resTest['resp']) {
throw (new \Exception($resTest['message'])); throw (new Exception($resTest['message']));
} }
$newDBConnectionUid = $oDBSource->create($dataDBConnection); $newDBConnectionUid = $oDBSource->create($dataDBConnection);
$oContent->addContent('DBS_DESCRIPTION', '', $newDBConnectionUid, $oContent->addContent('DBS_DESCRIPTION', '', $newDBConnectionUid,
@@ -217,7 +236,7 @@ class DataBaseConnection
$dataTest = array_merge($allData, $dataDBConnection, array('DBS_PASSWORD' => $passOrigin)); $dataTest = array_merge($allData, $dataDBConnection, array('DBS_PASSWORD' => $passOrigin));
$resTest = $this->testConnection($dataTest); $resTest = $this->testConnection($dataTest);
if (!$resTest['resp']) { if (!$resTest['resp']) {
throw (new \Exception($resTest['message'])); throw (new Exception($resTest['message']));
} }
$oDBSource->update($dataDBConnection); $oDBSource->update($dataDBConnection);
if (isset($dataDBConnection['DBS_DESCRIPTION'])) { if (isset($dataDBConnection['DBS_DESCRIPTION'])) {
@@ -244,7 +263,7 @@ class DataBaseConnection
$dbs_uid = $this->validateDbsUid($dbs_uid, $pro_uid); $dbs_uid = $this->validateDbsUid($dbs_uid, $pro_uid);
$oDBSource = new DbSource(); $oDBSource = new DbSource();
$oContent = new \Content(); $oContent = new Content();
$oDBSource->remove($dbs_uid, $pro_uid); $oDBSource->remove($dbs_uid, $pro_uid);
$oContent->removeContent( 'DBS_DESCRIPTION', "", $dbs_uid ); $oContent->removeContent( 'DBS_DESCRIPTION', "", $dbs_uid );
@@ -271,7 +290,7 @@ class DataBaseConnection
$flagTns = ($dataCon["DBS_TYPE"] == "oracle" && $dataCon["DBS_CONNECTION_TYPE"] == "TNS")? 1 : 0; $flagTns = ($dataCon["DBS_TYPE"] == "oracle" && $dataCon["DBS_CONNECTION_TYPE"] == "TNS")? 1 : 0;
if ($flagTns == 0) { if ($flagTns == 0) {
$Server = new \Net($dataCon['DBS_SERVER']); $Server = new Net($dataCon['DBS_SERVER']);
// STEP 1 : Resolving Host Name // STEP 1 : Resolving Host Name
$respTest['0'] = array(); $respTest['0'] = array();
@@ -356,7 +375,7 @@ class DataBaseConnection
} }
} }
} else { } else {
$net = new \Net(); $net = new Net();
//STEP 0: Trying to open database type TNS //STEP 0: Trying to open database type TNS
$respTest["0"] = array(); $respTest["0"] = array();
@@ -441,11 +460,11 @@ class DataBaseConnection
{ {
$pro_uid = trim($pro_uid); $pro_uid = trim($pro_uid);
if ($pro_uid == '') { if ($pro_uid == '') {
throw (new \Exception(\G::LoadTranslation("ID_PROJECT_NOT_EXIST", array('prj_uid','')))); throw (new Exception(G::LoadTranslation("ID_PROJECT_NOT_EXIST", array('prj_uid',''))));
} }
$oProcess = new \Process(); $oProcess = new Process();
if (!($oProcess->processExists($pro_uid))) { if (!($oProcess->processExists($pro_uid))) {
throw (new \Exception(\G::LoadTranslation("ID_PROJECT_NOT_EXIST", array('prj_uid', $pro_uid)))); throw (new Exception(G::LoadTranslation("ID_PROJECT_NOT_EXIST", array('prj_uid', $pro_uid))));
} }
return $pro_uid; return $pro_uid;
} }
@@ -464,11 +483,11 @@ class DataBaseConnection
{ {
$dbs_uid = trim($dbs_uid); $dbs_uid = trim($dbs_uid);
if ($dbs_uid == '') { if ($dbs_uid == '') {
throw (new \Exception(\G::LoadTranslation("ID_DBC_NOT_EXIST", array('dbs_uid','')))); throw (new Exception(G::LoadTranslation("ID_DBC_NOT_EXIST", array('dbs_uid',''))));
} }
$oDBSource = new DbSource(); $oDBSource = new DbSource();
if (!($oDBSource->Exists($dbs_uid, $pro_uid))) { if (!($oDBSource->Exists($dbs_uid, $pro_uid))) {
throw (new \Exception(\G::LoadTranslation("ID_DBC_NOT_EXIST", array('dbs_uid',$dbs_uid)))); throw (new Exception(G::LoadTranslation("ID_DBC_NOT_EXIST", array('dbs_uid',$dbs_uid))));
} }
return $dbs_uid; return $dbs_uid;
} }

View File

@@ -147,8 +147,8 @@ class DataBaseConnection extends Api
* @param string $dbs_uid {@min 1} {@max 32} * @param string $dbs_uid {@min 1} {@max 32}
* @param array $request_data * @param array $request_data
* @param string $dbs_type {@from body} {@required true} * @param string $dbs_type {@from body} {@required true}
* @param string $dbs_server {@from body} {@required true} * @param string $dbs_server {@from body} {@required false}
* @param string $dbs_database_name {@from body} {@required true} * @param string $dbs_database_name {@from body} {@required false}
* @param string $dbs_username {@from body} * @param string $dbs_username {@from body}
* @param string $dbs_encode {@from body} {@required true} * @param string $dbs_encode {@from body} {@required true}
* @param string $dbs_password {@from body} * @param string $dbs_password {@from body}