* Description:This is a class for load all additional connections; if exist in a particular proccess * Date: 15-05-2008 * * * class.dbConnections.php * * Email bugs/suggestions to erik@colosa.com */ require_once 'model/DbSource.php'; require_once 'model/Content.php'; /** * dbConnections * * * @copyright 2008 Colosa * @package workflow.engine.classes * */ class dbConnections { private $PRO_UID; public $connections; private $types; /*errors handle*/ private $errno; private $errstr; private $encodesList; /** * construct of dbConnections * * @param string $pPRO_UID * @return void */ public function __construct ($pPRO_UID = null) { $this->errno = 0; $this->errstr = ""; $this->PRO_UID = $pPRO_UID; $this->getAllConnections(); } /** * getAllConnections * * @return Array $connections */ public function getAllConnections () { if (isset( $this->PRO_UID )) { $oDBSource = new DbSource(); $oContent = new Content(); $connections = Array (); $types = Array (); $this->have_any_connectios = false; $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn( DbSourcePeer::DBS_UID ); $c->addSelectColumn( DbSourcePeer::PRO_UID ); $c->addSelectColumn( DbSourcePeer::DBS_TYPE ); $c->addSelectColumn( DbSourcePeer::DBS_SERVER ); $c->addSelectColumn( DbSourcePeer::DBS_DATABASE_NAME ); $c->addSelectColumn( DbSourcePeer::DBS_USERNAME ); $c->addSelectColumn( DbSourcePeer::DBS_PASSWORD ); $c->addSelectColumn( DbSourcePeer::DBS_PORT ); $c->addSelectColumn( DbSourcePeer::DBS_ENCODE ); $c->addSelectColumn(DbSourcePeer::DBS_CONNECTION_TYPE); $c->addSelectColumn(DbSourcePeer::DBS_TNS); $c->addSelectColumn( ContentPeer::CON_VALUE ); $c->add( DbSourcePeer::PRO_UID, $this->PRO_UID ); $c->add( ContentPeer::CON_CATEGORY, 'DBS_DESCRIPTION' ); $c->addJoin( DbSourcePeer::DBS_UID, ContentPeer::CON_ID ); $result = DbSourcePeer::doSelectRS( $c ); $result->next(); $row = $result->getRow(); while ($row = $result->getRow()) { $connections[] = array ( "DBS_UID" => $row[0], "DBS_TYPE" => $row[2], "DBS_SERVER" => $row[3], "DBS_DATABASE_NAME" => $row[4], "DBS_USERNAME" => $row[5], "DBS_PASSWORD" => $row[6], "DBS_PORT" => $row[7], "DBS_ENCODE" => $row[8], "DBS_CONNECTION_TYPE" => $row[9], "DBS_TNS" => $row[10], "CON_VALUE" => $row[11] ); $result->next(); } if (! in_array( $row[2], $types )) { $types[] = $row[2]; } $this->connections = $connections; return $connections; } } /** * getConnections * * @param string $pType * @return Array $connections */ public function getConnections ($pType) { $connections = Array (); foreach ($this->connections as $c) { if (trim( $pType ) == trim( $c['DBS_TYPE'] )) { $connections[] = $c; } } if (count( $connections ) > 0) { return $connections; } else { return false; } } /** * getConnectionsProUid * * Parameter $only list of items displayed, everything else is ignored. * * @param string $pProUid * @param string $only * @return Array $connections */ public function getConnectionsProUid ($pProUid, $only = array()) { $connections = Array (); $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn( DbSourcePeer::DBS_UID ); $c->addSelectColumn( DbSourcePeer::PRO_UID ); $c->addSelectColumn( DbSourcePeer::DBS_TYPE ); $c->addSelectColumn( DbSourcePeer::DBS_SERVER ); $c->addSelectColumn( DbSourcePeer::DBS_DATABASE_NAME ); $result = DbSourcePeer::doSelectRS( $c ); $result->next(); $row = $result->getRow(); $sw = count($only) > 0; while ($row = $result->getRow()) { if ((trim( $pProUid ) == trim( $row[1] )) && ( $sw ? in_array($row[2], $only) : true )) { $connections[] = Array ('DBS_UID' => $row[0],'DBS_NAME' => '[' . $row[3] . '] ' . $row[2] . ': ' . $row[4] ); } $result->next(); } if (count( $connections ) > 0) { return $connections; } else { return Array (); } } /** * loadAdditionalConnections * * @return void */ public function loadAdditionalConnections () { PROPEL::Init( PATH_METHODS . 'dbConnections/genericDbConnections.php' ); } /** * getDbServicesAvailables * * @return array $servicesAvailables */ public function getDbServicesAvailables () { $servicesAvailables = Array (); $dbServices = Array ('mysql' => Array ('id' => 'mysql','command' => 'mysql_connect','name' => 'MySql' ),'pgsql' => Array ('id' => 'pgsql','command' => 'pg_connect','name' => 'PostgreSql' ),'mssql' => Array ('id' => 'mssql','command' => 'mssql_connect','name' => 'Microsoft SQL Server' ),'oracle' => Array ('id' => 'oracle','command' => 'oci_connect','name' => 'Oracle' ) ); /*, 'informix'=> Array( 'id' => 'informix', 'command' => 'ifx_connect', 'name' => 'Informix' ), 'sqlite' => Array( 'id' => 'sqlite', 'command' => 'sqlite_open', 'name' => 'SQLite' ) */ foreach ($dbServices as $service) { if (@function_exists( $service['command'] )) { $servicesAvailables[] = $service; } } return $servicesAvailables; } /** * showMsg * * @return void */ public function showMsg () { if ($this->errno != 0) { $msg = "
Class NET
NET::ERROR NO -> $this->errno
NET::ERROR MSG -> $this->errstr
"; print ($msg) ; } } /** * getEncondeList * * @param string $engine * @return $this->ordx($this->encodesList); */ public function getEncondeList ($engine = '') { switch ($engine) { default: case 'mysql': $encodes = Array (Array ('big5','big5 - Big5 Traditional Chinese' ),Array ('dec8','dec8 - DEC West European' ),Array ('cp850','cp850 - DOS West European' ),Array ('hp8','hp8 - HP West European' ),Array ('koi8r','koi8r - KOI8-R Relcom Russian' ),Array ('latin1','latin1 - cp1252 West European' ),Array ('latin2','latin2 - ISO 8859-2 Central European' ),Array ('swe7','swe7 - 7bit Swedish' ),Array ('ascii','ascii - US ASCII' ),Array ('ujis','ujis - EUC-JP Japanese' ),Array ('sjis','sjis - Shift-JIS Japanese' ),Array ('hebrew','hebrew - ISO 8859-8 Hebrew' ),Array ('tis620','tis620 - TIS620 Thai' ),Array ('euckr','euckr - EUC-KR Korean' ),Array ('koi8u','koi8u - KOI8-U Ukrainian' ),Array ('gb2312','gb2312 - GB2312 Simplified Chinese' ),Array ('greek','greek - ISO 8859-7 Greek' ),Array ('cp1250','cp1250 - Windows Central European' ),Array ('gbk','gbk - GBK Simplified Chinese' ),Array ('latin5','latin5 - ISO 8859-9 Turkish' ),Array ('armscii8','armscii8 - ARMSCII-8 Armenian' ),Array ('utf8','utf8 - UTF-8 Unicode' ),Array ('ucs2','ucs2 - UCS-2 Unicode' ),Array ('cp866','cp866 - DOS Russian' ),Array ('keybcs2','keybcs2 - DOS Kamenicky Czech-Slovak' ),Array ('macce','macce - Mac Central European' ),Array ('macroman','macroman - Mac West European' ),Array ('cp852','cp852 - DOS Central European' ),Array ('latin7','atin7 - ISO 8859-13 Baltic' ),Array ('cp1251','cp1251 - Windows Cyrillic' ),Array ('cp1256','cp1256 - Windows Arabic' ),Array ('cp1257','cp1257 - Windows Baltic' ),Array ('binary','binary - Binary pseudo charset' ),Array ('geostd8','geostd8 - GEOSTD8 Georgian' ),Array ('cp932','cp932] - SJIS for Windows Japanese' ),Array ('eucjpms','eucjpms - UJIS for Windows Japanese' ) ); break; case 'pgsql': $encodes = Array (Array ("BIG5","BIG5" ),Array ("EUC_CN","EUC_CN" ),Array ("EUC_JP","EUC_JP" ),Array ("EUC_KR","EUC_KR" ),Array ("EUC_TW","EUC_TW" ),Array ("GB18030","GB18030" ),Array ("GBK","GBK" ),Array ("ISO_8859_5","ISO_8859_5" ),Array ("ISO_8859_6","ISO_8859_6" ),Array ("ISO_8859_7","ISO_8859_7" ),Array ("ISO_8859_8","ISO_8859_8" ),Array ("JOHAB","JOHAB" ),Array ("KOI8","KOI8" ),Array ("selected","LATIN1" ),Array ("LATIN2","LATIN2" ),Array ("LATIN3","LATIN3" ),Array ("LATIN4","LATIN4" ),Array ("LATIN5","LATIN5" ),Array ("LATIN6","LATIN6" ),Array ("LATIN7","LATIN7" ),Array ("LATIN8","LATIN8" ),Array ("LATIN9","LATIN9" ),Array ("LATIN10","LATIN10" ),Array ("SJIS","SJIS" ),Array ("SQL_ASCII","SQL_ASCII" ),Array ("UHC","UHC" ),Array ("UTF8","UTF8" ),Array ("WIN866","WIN866" ),Array ("WIN874","WIN874" ),Array ("WIN1250","WIN1250" ),Array ("WIN1251","WIN1251" ),Array ("WIN1252","WIN1252" ),Array ("WIN1256","WIN1256" ),Array ("WIN1258","WIN1258" ) ); break; case 'mssql': $encodes = Array (Array ('utf8','utf8 - UTF-8 Unicode' ) ); break; case 'oracle': $encodes = array ( array ("UTF8", "UTF8 - Unicode 3.0 UTF-8 Universal character set CESU-8 compliant"), array ("UTFE", "UTFE - EBCDIC form of Unicode 3.0 UTF-8 Universal character set"), array ("AL16UTF16", "AL16UTF16 - Unicode 3.1 UTF-16 Universal character set"), array ("AL32UTF8", "AL32UTF8 - Unicode 3.1 UTF-8 Universal character set") ); break; } $this->encodesList = $encodes; return $this->ordx( $this->encodesList ); } /** * getErrno * * @return integer $errno */ public function getErrno () { return $this->errno; } /** * getErrmsg * * @return string errstr */ public function getErrmsg () { return $this->errstr; } /** * getErrmsg * * @param array $m * @return array $aRet */ public function ordx ($m) { $aTmp = Array (); $aRet = Array (); for ($i = 0; $i < count( $m ); $i ++) { array_push( $aTmp, $m[$i][0] . '|' . $m[$i][1] ); } usort( $aTmp, "strnatcasecmp" ); for ($i = 0; $i < count( $aTmp ); $i ++) { $x = explode( '|', $aTmp[$i] ); array_push( $aRet, Array ($x[0],$x[1] ) ); } return $aRet; } /** * Function encryptThepassw * * @author krlos Pacha C. * @access public * @param string proUid * @return void */ public function encryptThepassw ($proUid) { $oDBSource = new DbSource(); $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn( DbSourcePeer::DBS_UID ); $c->addSelectColumn( DbSourcePeer::DBS_DATABASE_NAME ); $c->addSelectColumn( DbSourcePeer::DBS_PASSWORD ); $c->add( DbSourcePeer::PRO_UID, $proUid ); $result = DbSourcePeer::doSelectRS( $c ); $result->next(); $row = $result->getRow(); while ($row = $result->getRow()) { if ($row[2] != '') { $aPass = explode( '_', $row[2] ); if (count( $aPass ) == 1) { $passEncrypt = G::encrypt( $row[2], $row[1] ); $passEncrypt .= "_2NnV3ujj3w"; $c2 = new Criteria( 'workflow' ); $c2->add( DbSourcePeer::DBS_PASSWORD, $passEncrypt ); $c3 = new Criteria( 'workflow' ); $c3->add( DbSourcePeer::DBS_UID, $row[0] ); BasePeer::doUpdate( $c3, $c2, Propel::getConnection( 'workflow' ) ); } } $result->next(); } return 1; } /** * Function getPassWithoutEncrypt * * @author krlos Pacha C. * @access public * @param string passw * @return string */ public function getPassWithoutEncrypt ($aInfoCon) { $passw = ''; if ($aInfoCon['DBS_PASSWORD'] != '') { $aPassw = explode( '_', $aInfoCon['DBS_PASSWORD'] ); $passw = $aPassw[0]; $flagTns = ($aInfoCon["DBS_TYPE"] == "oracle" && $aInfoCon["DBS_CONNECTION_TYPE"] == "TNS")? 1 : 0; if (sizeof($aPassw) > 1 && $flagTns == 0) { $passw = ($passw == "none")? "" : G::decrypt($passw, $aInfoCon["DBS_DATABASE_NAME"]); } else { $passw = ($passw == "none")? "" : G::decrypt($passw, $aInfoCon["DBS_TNS"]); } } return $passw; } }