Spaces:
Sleeping
Sleeping
processmaker-community / processmaker-files /workflow /engine /methods /dbConnections /dbConnectionsAjax.php
| /** | |
| * upgrade.php | |
| * | |
| * ProcessMaker Open Source Edition | |
| * Copyright (C) 2004 - 2008 Colosa Inc.23 | |
| * | |
| * This program is free software: you can redistribute it and/or modify | |
| * it under the terms of the GNU Affero General Public License as | |
| * published by the Free Software Foundation, either version 3 of the | |
| * License, or (at your option) any later version. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU Affero General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Affero General Public License | |
| * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| * | |
| * For more information, contact Colosa Inc, 2566 Le Jeune Rd., | |
| * Coral Gables, FL, 33134, USA, or email info@colosa.com. | |
| */ | |
| /* | |
| * Data base connections routines for ajax request | |
| * @Author Erik Amaru Ortiz <erik@colosa.com> | |
| * @Last update May 20th, 2009 | |
| * @Param var action from POST request | |
| */ | |
| $filter = new InputFilter(); | |
| $_POST = $filter->xssFilterHard($_POST); | |
| if (isset( $_POST['action'] ) || isset( $_POST['function'] )) { | |
| $action = (isset( $_POST['action'] )) ? $_POST['action'] : $_POST['function']; | |
| } else { | |
| throw new Exception( 'dbconnections Fatal error, No action defined!...' ); | |
| } | |
| if (isset( $_POST['PROCESS'] )) { | |
| $_SESSION['PROCESS'] = $_POST['PROCESS']; | |
| } | |
| #Global Definitions | |
| $G_PUBLISH = new Publisher(); | |
| global $_DBArray; | |
| switch ($action) { | |
| case 'loadInfoAssigConnecctionDB': | |
| $oStep = new Step(); | |
| return print ($oStep->loadInfoAssigConnecctionDB( $_POST['PRO_UID'], $_POST['DBS_UID'] )) ; | |
| break; | |
| case 'showDbConnectionsList': | |
| $oProcess = new ProcessMap(); | |
| $oCriteria = $oProcess->getConditionProcessList(); | |
| if (ProcessPeer::doCount( $oCriteria ) > 0) { | |
| $aProcesses = array (); | |
| $aProcesses[] = array ('PRO_UID' => 'char','PRO_TITLE' => 'char' | |
| ); | |
| $oDataset = ArrayBasePeer::doSelectRS( $oCriteria ); | |
| $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); | |
| $oDataset->next(); | |
| $sProcessUID = ''; | |
| while ($aRow = $oDataset->getRow()) { | |
| if ($sProcessUID == '') { | |
| $sProcessUID = $aRow['PRO_UID']; | |
| } | |
| $aProcesses[] = array ('PRO_UID' => (isset( $aRow['PRO_UID'] ) ? $aRow['PRO_UID'] : ''),'PRO_TITLE' => (isset( $aRow['PRO_TITLE'] ) ? $aRow['PRO_TITLE'] : '') | |
| ); | |
| $oDataset->next(); | |
| } | |
| $_DBArray['PROCESSES'] = $aProcesses; | |
| $_SESSION['_DBArray'] = $_DBArray; | |
| $_SESSION['PROCESS'] = (isset( $_POST['PRO_UID'] ) ? $_POST['PRO_UID'] : ''); | |
| $oDBSource = new DbSource(); | |
| $oCriteria = $oDBSource->getCriteriaDBSList( $_SESSION['PROCESS'] ); | |
| $G_PUBLISH->AddContent( 'propeltable', 'paged-table', 'dbConnections/dbConnections', $oCriteria ); | |
| } | |
| G::RenderPage( 'publish', 'raw' ); | |
| break; | |
| case 'showConnections': | |
| $oDBSource = new DbSource(); | |
| $oCriteria = $oDBSource->getCriteriaDBSList( $_SESSION['PROCESS'] ); | |
| $G_PUBLISH = new Publisher(); | |
| $G_PUBLISH->AddContent( 'propeltable', 'paged-table', 'dbConnections/dbConnections', $oCriteria ); | |
| G::RenderPage( 'publish', 'raw' ); | |
| break; | |
| case 'newDdConnection': | |
| $dbs = new DbConnections( $_SESSION['PROCESS'] ); | |
| $dbServices = $dbs->getDbServicesAvailables(); | |
| $dbService = $dbs->getEncondeList(); | |
| //we are updating the passwords with encrupt info | |
| $dbs->encryptThepassw( $_SESSION['PROCESS'] ); | |
| //end updating | |
| $rows[] = array ('uid' => 'char','name' => 'char' | |
| ); | |
| foreach ($dbServices as $srv) { | |
| $rows[] = array ('uid' => $srv['id'],'name' => $srv['name'] | |
| ); | |
| } | |
| $_DBArray['BDCONNECTIONS'] = $rows; | |
| $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'dbConnections/dbConnections_New', '', '' ); | |
| G::RenderPage( 'publish', 'raw' ); | |
| break; | |
| case 'editDdConnection': | |
| $dbs = new DbConnections( $_SESSION['PROCESS'] ); | |
| $dbServices = $dbs->getDbServicesAvailables(); | |
| $rows[] = array ('uid' => 'char','name' => 'char' | |
| ); | |
| foreach ($dbServices as $srv) { | |
| $rows[] = array ('uid' => $srv['id'],'name' => $srv['name'] | |
| ); | |
| } | |
| $_DBArray['BDCONNECTIONS'] = $rows; | |
| $_SESSION['_DBArray'] = $_DBArray; | |
| $o = new DbSource(); | |
| $aFields = $o->load( $_POST['DBS_UID'], $_SESSION['PROCESS'] ); | |
| if ($aFields['DBS_PORT'] == '0') { | |
| $aFields['DBS_PORT'] = ''; | |
| } | |
| $aFields['DBS_PASSWORD'] = $dbs->getPassWithoutEncrypt( $aFields ); | |
| $aFields['DBS_PASSWORD'] = ($aFields['DBS_PASSWORD'] == 'none') ? "" : $aFields['DBS_PASSWORD']; | |
| $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'dbConnections/dbConnections_Edit', '', $aFields ); | |
| G::RenderPage( 'publish', 'raw' ); | |
| break; | |
| case 'saveEditConnection': | |
| $oDBSource = new DbSource(); | |
| $oContent = new Content(); | |
| if (strpos( $_POST['server'], "\\" )) { | |
| $_POST['port'] = 'none'; | |
| } | |
| $flagTns = ($_POST["type"] == "oracle" && $_POST["connectionType"] == "TNS")? 1 : 0; | |
| if ($flagTns == 0) { | |
| $_POST["connectionType"] = "NORMAL"; | |
| $aData = array("DBS_UID" => $_POST["dbs_uid"], "PRO_UID" => $_SESSION["PROCESS"], "DBS_TYPE" => $_POST["type"], "DBS_SERVER" => $_POST["server"], "DBS_DATABASE_NAME" => $_POST["db_name"], "DBS_USERNAME" => $_POST["user"], "DBS_PASSWORD" => (($_POST["passwd"] == "none")? "" : G::encrypt($_POST["passwd"], $_POST["db_name"])) . "_2NnV3ujj3w", "DBS_PORT" => (($_POST["port"] == "none")? "" : $_POST["port"]), "DBS_ENCODE" => $_POST["enc"], "DBS_CONNECTION_TYPE" => $_POST["connectionType"], "DBS_TNS" => ""); | |
| } else { | |
| $aData = array("DBS_UID" => $_POST["dbs_uid"], "PRO_UID" => $_SESSION["PROCESS"], "DBS_TYPE" => $_POST["type"], "DBS_SERVER" => "", "DBS_DATABASE_NAME" => "", "DBS_USERNAME" => $_POST["user"], "DBS_PASSWORD" => (($_POST["passwd"] == "none")? "" : G::encrypt($_POST["passwd"], $_POST["tns"])) . "_2NnV3ujj3w", "DBS_PORT" => "", "DBS_ENCODE" => "", "DBS_CONNECTION_TYPE" => $_POST["connectionType"], "DBS_TNS" => $_POST["tns"]); | |
| } | |
| $oDBSource->update( $aData ); | |
| $oContent->addContent( 'DBS_DESCRIPTION', '', $_POST['dbs_uid'], SYS_LANG, $_POST['desc'] ); | |
| break; | |
| case 'saveConnection': | |
| $oDBSource = new DbSource(); | |
| $oContent = new Content(); | |
| if (strpos( $_POST['server'], "\\" )) { | |
| $_POST['port'] = 'none'; | |
| } | |
| $flagTns = ($_POST["type"] == "oracle" && $_POST["connectionType"] == "TNS")? 1 : 0; | |
| if ($flagTns == 0) { | |
| $_POST["connectionType"] = "NORMAL"; | |
| $aData = array("PRO_UID" => $_SESSION["PROCESS"], "DBS_TYPE" => $_POST["type"], "DBS_SERVER" => $_POST["server"], "DBS_DATABASE_NAME" => $_POST["db_name"], "DBS_USERNAME" => $_POST["user"], "DBS_PASSWORD" => (($_POST["passwd"] == "none")? "" : G::encrypt($_POST["passwd"], $_POST["db_name"])) . "_2NnV3ujj3w", "DBS_PORT" => (($_POST["port"] == "none") ? "" : $_POST["port"]), "DBS_ENCODE" => $_POST["enc"], "DBS_CONNECTION_TYPE" => $_POST["connectionType"], "DBS_TNS" => ""); | |
| } else { | |
| $aData = array("PRO_UID" => $_SESSION["PROCESS"], "DBS_TYPE" => $_POST["type"], "DBS_SERVER" => "", "DBS_DATABASE_NAME" => "", "DBS_USERNAME" => $_POST["user"], "DBS_PASSWORD" => (($_POST["passwd"] == "none")? "" : G::encrypt($_POST["passwd"], $_POST["tns"])) . "_2NnV3ujj3w", "DBS_PORT" => "", "DBS_ENCODE" => "", "DBS_CONNECTION_TYPE" => $_POST["connectionType"], "DBS_TNS" => $_POST["tns"]); | |
| } | |
| $newid = $oDBSource->create( $aData ); | |
| $sDelimiter = DBAdapter::getStringDelimiter(); | |
| $oContent->addContent( 'DBS_DESCRIPTION', '', $newid, SYS_LANG, $_POST['desc'] ); | |
| break; | |
| case 'deleteDbConnection': | |
| $result = new stdclass(); | |
| try { | |
| $oDBSource = new DbSource(); | |
| $oContent = new Content(); | |
| $DBS_UID = $_POST['dbs_uid']; | |
| $PRO_UID = $_SESSION['PROCESS']; | |
| $oDBSource->remove( $DBS_UID, $PRO_UID ); | |
| $oContent->removeContent( 'DBS_DESCRIPTION', "", $DBS_UID ); | |
| $result->success = true; | |
| $result->msg = G::LoadTranslation( 'ID_DBCONNECTION_REMOVED' ); | |
| } catch (Exception $e) { | |
| $result->success = false; | |
| $result->msg = $e->getMessage(); | |
| } | |
| print G::json_encode( $result ); | |
| break; | |
| case 'showTestConnection': | |
| $G_PUBLISH = new Publisher(); | |
| $G_PUBLISH->AddContent( 'view', 'dbConnections/dbConnections' ); | |
| G::RenderPage( 'publish', 'raw' ); | |
| break; | |
| case 'testConnection': | |
| sleep( 0 ); | |
| define("SUCCESSFULL", "SUCCESSFULL"); | |
| define("FAILED", "FAILED"); | |
| $step = $_POST["step"]; | |
| $type = $_POST["type"]; | |
| $user = $_POST["user"]; | |
| $passwd = ($_POST["passwd"] == "none")? "" : $_POST["passwd"]; | |
| $flagTns = ($_POST["type"] == "oracle" && $_POST["connectionType"] == "TNS")? 1 : 0; | |
| if ($flagTns == 0) { | |
| $server = $_POST["server"]; | |
| $db_name = $_POST["db_name"]; | |
| $port = $_POST["port"]; | |
| if ($port == "none" || $port == 0) { | |
| //setting defaults ports | |
| switch ($type) { | |
| case "mysql": | |
| $port = 3306; | |
| break; | |
| case "pgsql": | |
| $port = 5432; | |
| break; | |
| case "mssql": | |
| $port = 1433; | |
| break; | |
| case "oracle": | |
| $port = 1521; | |
| break; | |
| } | |
| } | |
| $Server = new Net($server); | |
| switch ($step) { | |
| case 1: | |
| if ($Server->getErrno() == 0) { | |
| echo SUCCESSFULL . ","; | |
| } else { | |
| echo FAILED . "," . $Server->error; | |
| } | |
| break; | |
| case 2: | |
| $Server->scannPort($port); | |
| if ($Server->getErrno() == 0) { | |
| echo SUCCESSFULL . ","; | |
| } else { | |
| echo FAILED . "," . $Server->error; | |
| } | |
| break; | |
| case 3: | |
| $Server->loginDbServer($user, $passwd); | |
| $Server->setDataBase($db_name, $port); | |
| if ($Server->errno == 0) { | |
| $response = $Server->tryConnectServer($type); | |
| if ($response->status == "SUCCESS") { | |
| echo SUCCESSFULL . ","; | |
| } else { | |
| echo FAILED . "," . $Server->error; | |
| } | |
| } else { | |
| echo FAILED . "," . $Server->error; | |
| } | |
| break; | |
| case 4: | |
| $Server->loginDbServer($user, $passwd); | |
| $Server->setDataBase($db_name, $port); | |
| if ($Server->errno == 0) { | |
| $response = $Server->tryConnectServer($type); | |
| if ($response->status == "SUCCESS") { | |
| $response = $Server->tryOpenDataBase($type); | |
| if ($response->status == "SUCCESS") { | |
| echo SUCCESSFULL . "," . $Server->error; | |
| } else { | |
| echo FAILED . "," . $Server->error; | |
| } | |
| } else { | |
| echo FAILED . "," . $Server->error; | |
| } | |
| } else { | |
| echo FAILED . "," . $Server->error; | |
| } | |
| break; | |
| default: | |
| echo "finished"; | |
| break; | |
| } | |
| } else { | |
| $connectionType = $_POST["connectionType"]; | |
| $tns = $_POST["tns"]; | |
| $net = new Net(); | |
| switch ($step) { | |
| case 1: | |
| $net->loginDbServer($user, $passwd); | |
| if ($net->errno == 0) { | |
| $arrayServerData = array("connectionType" => $connectionType, "tns" => $tns); | |
| $response = $net->tryConnectServer($type, $arrayServerData); | |
| if ($response->status == "SUCCESS") { | |
| $response = $net->tryOpenDataBase($type, $arrayServerData); | |
| if ($response->status == "SUCCESS") { | |
| echo SUCCESSFULL . "," . $net->error; | |
| } else { | |
| echo FAILED . "," . $net->error; | |
| } | |
| } else { | |
| echo FAILED . "," . $net->error; | |
| } | |
| } else { | |
| echo FAILED . "," . $net->error; | |
| } | |
| break; | |
| default: | |
| echo "finished"; | |
| break; | |
| } | |
| } | |
| break; | |
| case 'showEncodes': | |
| $filter = new InputFilter(); | |
| $engine = $_POST['engine']; | |
| if ($engine != "0") { | |
| $dbs = new DbConnections(); | |
| $var = Bootstrap::json_encode($dbs->getEncondeList($filter->xssFilterHard($engine))); | |
| G::outRes($var); | |
| } else { | |
| G::outRes('[["0","..."]]'); | |
| } | |
| break; | |
| } | |