* 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(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], 'CON_VALUE' => $row[9], ); $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 * * @param string $pType * @return Array $connections */ public function getConnectionsProUid($pProUid) { $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(); while ($row = $result->getRow()) { if(trim($pProUid) == trim($row[1])){ $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(); 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