From 41298e09053485a48c2e14b3039a27a6d39bea82 Mon Sep 17 00:00:00 2001 From: Roly Gutierrez Date: Thu, 30 Jun 2022 18:01:35 -0400 Subject: [PATCH] PMCORE-3876 Check Backward Incompatible Changes, specially "String to Number Comparison" --- gulliver/system/class.g.php | 2 +- rbac/engine/classes/model/Roles.php | 2 +- .../HTMLPurifier/HTMLPurifier.autoload.php | 4 - .../creole/drivers/mssql/MSSQLConnection.php | 4 +- .../creole/drivers/mysql/MySQLConnection.php | 294 ------------------ .../creole/drivers/mysql/MySQLIdGenerator.php | 75 ----- .../drivers/mysql/MySQLPreparedStatement.php | 44 --- .../creole/drivers/mysql/MySQLResultSet.php | 165 ---------- .../creole/drivers/mysql/MySQLStatement.php | 36 --- .../creole/drivers/mysql/MySQLTypes.php | 102 ------ .../mysql/metadata/MySQLDatabaseInfo.php | 66 ---- .../drivers/mysql/metadata/MySQLTableInfo.php | 252 --------------- .../drivers/mysqli/MySQLiConnection.php | 8 +- thirdparty/pear/DB.php | 1 - thirdparty/pear/DB/oci8.php | 81 +++-- thirdparty/pear/DB/pgsql.php | 8 +- thirdparty/pear/Log.php | 6 + thirdparty/pear/PEAR/Command/Remote.php | 6 +- thirdparty/pear/PEAR/Remote.php | 4 +- workflow/engine/classes/Net.php | 10 +- workflow/engine/classes/ProcessMap.php | 16 - workflow/engine/classes/WsBase.php | 4 +- .../engine/classes/XmlFormFieldToolButton.php | 3 +- .../engine/controllers/InstallerModule.php | 8 +- .../engine/controllers/caseSchedulerProxy.php | 2 +- .../controllers/processOptionsProxy.php | 4 +- workflow/engine/controllers/processProxy.php | 4 +- workflow/engine/controllers/webEntryProxy.php | 2 +- .../methods/dynaforms/dynaforms_Save_as.php | 3 +- workflow/engine/methods/events/eventsEdit.php | 2 +- workflow/engine/methods/events/eventsNew.php | 2 +- .../engine/methods/processes/ajaxListener.php | 4 +- .../methods/processes/processes_Ajax.php | 2 +- .../engine/methods/triggers/triggers_Save.php | 6 +- .../methods/triggers/triggers_WizardSave.php | 2 +- .../triggers/triggers_WizardUpdate.php | 2 +- .../src/ProcessMaker/BusinessModel/Cases.php | 2 +- .../BusinessModel/FilesManager.php | 2 +- 38 files changed, 96 insertions(+), 1144 deletions(-) delete mode 100644 thirdparty/creole/drivers/mysql/MySQLConnection.php delete mode 100644 thirdparty/creole/drivers/mysql/MySQLIdGenerator.php delete mode 100644 thirdparty/creole/drivers/mysql/MySQLPreparedStatement.php delete mode 100644 thirdparty/creole/drivers/mysql/MySQLResultSet.php delete mode 100644 thirdparty/creole/drivers/mysql/MySQLStatement.php delete mode 100644 thirdparty/creole/drivers/mysql/MySQLTypes.php delete mode 100644 thirdparty/creole/drivers/mysql/metadata/MySQLDatabaseInfo.php delete mode 100644 thirdparty/creole/drivers/mysql/metadata/MySQLTableInfo.php diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 12d20025a..433019c0e 100644 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -5981,7 +5981,7 @@ class G if ($browser == null || $version == null) { $info = G::getBrowser(); $browser = $info['name']; - $version = $info['version']; + $version = intval($info['version']); } if ( diff --git a/rbac/engine/classes/model/Roles.php b/rbac/engine/classes/model/Roles.php index 4ec3e6a34..e1912fb4b 100644 --- a/rbac/engine/classes/model/Roles.php +++ b/rbac/engine/classes/model/Roles.php @@ -796,7 +796,7 @@ class Roles extends BaseRoles $criteria->add(PermissionsPeer::PER_CODE, '%' . $filter . '%', Criteria::LIKE); } - if (!is_null($status) && ($status == 1 || $status == 0)) { + if (!is_null($status) && ($status === 1 || $status === 0)) { $criteria->add(PermissionsPeer::PER_STATUS, $status); } diff --git a/thirdparty/HTMLPurifier/HTMLPurifier.autoload.php b/thirdparty/HTMLPurifier/HTMLPurifier.autoload.php index 99664a452..1bde22ea2 100644 --- a/thirdparty/HTMLPurifier/HTMLPurifier.autoload.php +++ b/thirdparty/HTMLPurifier/HTMLPurifier.autoload.php @@ -11,8 +11,4 @@ spl_autoload_register(function($class) return HTMLPurifier_Bootstrap::autoload($class); }); -if (ini_get('zend.ze1_compatibility_mode')) { - trigger_error("HTML Purifier is not compatible with zend.ze1_compatibility_mode; please turn it off", E_USER_ERROR); -} - // vim: et sw=4 sts=4 diff --git a/thirdparty/creole/drivers/mssql/MSSQLConnection.php b/thirdparty/creole/drivers/mssql/MSSQLConnection.php index 6cd443b84..c0f8cd6c8 100644 --- a/thirdparty/creole/drivers/mssql/MSSQLConnection.php +++ b/thirdparty/creole/drivers/mssql/MSSQLConnection.php @@ -84,7 +84,9 @@ class MSSQLConnection extends ConnectionCommon implements Connection 'UID' => $user, 'PWD' => $pw, 'Database' => $dsninfo['database'], - 'CharacterSet' => 'UTF-8' + 'CharacterSet' => 'UTF-8', + 'Encrypt' => true, + 'TrustServerCertificate' => true ]; // SQLSrv is persistent always $conn = sqlsrv_connect($dbhost, $opt); diff --git a/thirdparty/creole/drivers/mysql/MySQLConnection.php b/thirdparty/creole/drivers/mysql/MySQLConnection.php deleted file mode 100644 index b41c69faa..000000000 --- a/thirdparty/creole/drivers/mysql/MySQLConnection.php +++ /dev/null @@ -1,294 +0,0 @@ -. - */ - -require_once 'creole/Connection.php'; -require_once 'creole/common/ConnectionCommon.php'; -include_once 'creole/drivers/mysql/MySQLResultSet.php'; - -/** - * MySQL implementation of Connection. - * - * - * @author Hans Lellelid - * @author Stig Bakken - * @author Lukas Smith - * @version $Revision: 1.18 $ - * @package creole.drivers.mysql - */ -class MySQLConnection extends ConnectionCommon implements Connection { - - /** Current database (used in mysql_select_db()). */ - private $database; - - /** - * Connect to a database and log in as the specified user. - * - * @param $dsn the data source name (see DB::parseDSN for syntax) - * @param $flags Any conneciton flags. - * @access public - * @throws SQLException - * @return void - */ - function connect($dsninfo, $flags = 0) - { - if (!extension_loaded('mysql')) { - throw new SQLException('mysql extension not loaded'); - } - - $this->dsn = $dsninfo; - $this->flags = $flags; - - $persistent = ($flags & Creole::PERSISTENT) === Creole::PERSISTENT; - - if (isset($dsninfo['protocol']) && $dsninfo['protocol'] == 'unix') { - $dbhost = ':' . $dsninfo['socket']; - } else { - $dbhost = $dsninfo['hostspec'] ? $dsninfo['hostspec'] : 'localhost'; - if (!empty($dsninfo['port'])) { - $dbhost .= ':' . $dsninfo['port']; - } - } - $user = $dsninfo['username']; - $pw = $dsninfo['password']; - - $encoding = !empty($dsninfo['encoding']) ? $dsninfo['encoding'] : null; - - $connect_function = $persistent ? 'mysql_pconnect' : 'mysql_connect'; - - @ini_set('track_errors', true); - if ($dbhost && $user && $pw) { - $conn = @$connect_function($dbhost, $user, $pw); - } elseif ($dbhost && $user) { - $conn = @$connect_function($dbhost, $user); - } elseif ($dbhost) { - $conn = @$connect_function($dbhost); - } else { - $conn = false; - } - @ini_restore('track_errors'); - if (empty($conn)) { - if (($err = @mysql_error()) != '') { - throw new SQLException("connect failed", $err); - } elseif (empty($php_errormsg)) { - throw new SQLException("connect failed"); - } else { - throw new SQLException("connect failed", $php_errormsg); - } - } - - if ($dsninfo['database']) { - if (!@mysql_select_db($dsninfo['database'], $conn)) { - switch(mysql_errno($conn)) { - case 1049: - $exc = new SQLException("no such database", mysql_error($conn)); - break; - case 1044: - $exc = new SQLException("access violation", mysql_error($conn)); - break; - default: - $exc = new SQLException("cannot select database", mysql_error($conn)); - } - - throw $exc; - - } - // fix to allow calls to different databases in the same script - $this->database = $dsninfo['database']; - } - - $this->dblink = $conn; - - if ($encoding) { - $this->executeUpdate("SET NAMES " . $encoding); - } - } - - /** - * @see Connection::getDatabaseInfo() - */ - public function getDatabaseInfo() - { - return new MySQLDatabaseInfo($this); - } - - /** - * @see Connection::getIdGenerator() - */ - public function getIdGenerator() - { - return new MySQLIdGenerator($this); - } - - /** - * @see Connection::prepareStatement() - */ - public function prepareStatement($sql) - { - return new MySQLPreparedStatement($this, $sql); - } - - /** - * @see Connection::prepareCall() - */ - public function prepareCall($sql) { - throw new SQLException('MySQL does not support stored procedures.'); - } - - /** - * @see Connection::createStatement() - */ - public function createStatement() - { - return new MySQLStatement($this); - } - - /** - * @see Connection::disconnect() - */ - function close() - { - $ret = mysql_close($this->dblink); - $this->dblink = null; - return $ret; - } - - /** - * @see Connection::applyLimit() - */ - public function applyLimit(&$sql, $offset, $limit) - { - if ( $limit > 0 ) { - $sql .= " LIMIT " . ($offset > 0 ? $offset . ", " : "") . $limit; - } else if ( $offset > 0 ) { - $sql .= " LIMIT " . $offset . ", 18446744073709551615"; - } - } - - /** - * @see Connection::executeQuery() - */ - function executeQuery($sql, $fetchmode = null) - { - $this->lastQuery = $sql; - if ($this->database) { - if (!@mysql_select_db($this->database, $this->dblink)) { - throw new SQLException('No database selected', mysql_error($this->dblink)); - } - }//echo $sql . '

'; - $result = @mysql_query($sql, $this->dblink); - - if (!$result) { - if (!defined('DEBUG_SQL')) { - define('DEBUG_SQL', 0); - } - if (DEBUG_SQL == 1) { - throw new SQLException('Could not execute query', mysql_error($this->dblink), $sql); - } else { - throw new SQLException('It is not possible to execute the query. Please contact your system administrator'); - } - } - return new MySQLResultSet($this, $result, $fetchmode); - } - - /** - * @see Connection::executeUpdate() - */ - function executeUpdate($sql) - { - $this->lastQuery = $sql; - - if ($this->database) { - if (!@mysql_select_db($this->database, $this->dblink)) { - throw new SQLException('No database selected', mysql_error($this->dblink)); - } - } - - $result = @mysql_query($sql, $this->dblink); - if (!$result) { - throw new SQLException('Could not execute update', mysql_error($this->dblink), $sql); - } - return (int) mysql_affected_rows($this->dblink); - } - - /** - * Start a database transaction. - * @throws SQLException - * @return void - */ - protected function beginTrans() - { - $result = @mysql_query('SET AUTOCOMMIT=0', $this->dblink); - $result = @mysql_query('BEGIN', $this->dblink); - if (!$result) { - throw new SQLException('Could not begin transaction', mysql_error($this->dblink)); - } - } - - /** - * Commit the current transaction. - * @throws SQLException - * @return void - */ - protected function commitTrans() - { - if ($this->database) { - if (!@mysql_select_db($this->database, $this->dblink)) { - throw new SQLException('No database selected', mysql_error($this->dblink)); - } - } - $result = @mysql_query('COMMIT', $this->dblink); - $result = @mysql_query('SET AUTOCOMMIT=1', $this->dblink); - if (!$result) { - throw new SQLException('Can not commit transaction', mysql_error($this->dblink)); - } - } - - /** - * Roll back (undo) the current transaction. - * @throws SQLException - * @return void - */ - protected function rollbackTrans() - { - if ($this->database) { - if (!@mysql_select_db($this->database, $this->dblink)) { - throw new SQLException('No database selected', mysql_error($this->dblink)); - } - } - $result = @mysql_query('ROLLBACK', $this->dblink); - $result = @mysql_query('SET AUTOCOMMIT=1', $this->dblink); - if (!$result) { - throw new SQLException('Could not rollback transaction', mysql_error($this->dblink)); - } - } - - /** - * Gets the number of rows affected by the data manipulation - * query. - * - * @return int Number of rows affected by the last query. - */ - function getUpdateCount() - { - return (int) @mysql_affected_rows($this->dblink); - } - -} diff --git a/thirdparty/creole/drivers/mysql/MySQLIdGenerator.php b/thirdparty/creole/drivers/mysql/MySQLIdGenerator.php deleted file mode 100644 index db211ae11..000000000 --- a/thirdparty/creole/drivers/mysql/MySQLIdGenerator.php +++ /dev/null @@ -1,75 +0,0 @@ - - * @version $Revision: 1.6 $ - * @package creole.drivers.mysql - */ -class MySQLIdGenerator implements IdGenerator { - - /** Connection object that instantiated this class */ - private $conn; - - /** - * Creates a new IdGenerator class, saves passed connection for use - * later by getId() method. - * @param Connection $conn - */ - public function __construct(Connection $conn) - { - $this->conn = $conn; - } - - /** - * @see IdGenerator::isBeforeInsert() - */ - public function isBeforeInsert() - { - return false; - } - - /** - * @see IdGenerator::isAfterInsert() - */ - public function isAfterInsert() - { - return true; - } - - /** - * @see IdGenerator::getIdMethod() - */ - public function getIdMethod() - { - return self::AUTOINCREMENT; - } - - /** - * Returns last-generated auto-increment ID. - * - * Note that for very large values (2,147,483,648 to 9,223,372,036,854,775,807) a string - * will be returned, because these numbers are larger than supported by PHP's native - * numeric datatypes. - * - * @see IdGenerator::getId() - */ - public function getId($unused = null) - { - $insert_id = mysql_insert_id($this->conn->getResource()); - if ( $insert_id < 0 ) { - $insert_id = null; - $result = mysql_query('SELECT LAST_INSERT_ID()', $this->conn->getResource()); - if ( $result ) { - $row = mysql_fetch_row($result); - $insert_id = $row ? $row[0] : null; - } - } - return $insert_id; - } - -} - diff --git a/thirdparty/creole/drivers/mysql/MySQLPreparedStatement.php b/thirdparty/creole/drivers/mysql/MySQLPreparedStatement.php deleted file mode 100644 index a56f4d4e2..000000000 --- a/thirdparty/creole/drivers/mysql/MySQLPreparedStatement.php +++ /dev/null @@ -1,44 +0,0 @@ -. - */ - -require_once 'creole/PreparedStatement.php'; -require_once 'creole/common/PreparedStatementCommon.php'; - -/** - * MySQL subclass for prepared statements. - * - * @author Hans Lellelid - * @version $Revision: 1.7 $ - * @package creole.drivers.mysql - */ -class MySQLPreparedStatement extends PreparedStatementCommon implements PreparedStatement { - - /** - * Quotes string using native mysql function (mysql_real_escape_string()). - * @param string $str - * @return string - */ - protected function escape($str) - { - return mysql_real_escape_string($str, $this->conn->getResource()); - } - -} diff --git a/thirdparty/creole/drivers/mysql/MySQLResultSet.php b/thirdparty/creole/drivers/mysql/MySQLResultSet.php deleted file mode 100644 index 99586d29d..000000000 --- a/thirdparty/creole/drivers/mysql/MySQLResultSet.php +++ /dev/null @@ -1,165 +0,0 @@ -. - */ - -require_once 'creole/ResultSet.php'; -require_once 'creole/common/ResultSetCommon.php'; - -/** - * MySQL implementation of ResultSet class. - * - * MySQL supports OFFSET / LIMIT natively; this means that no adjustments or checking - * are performed. We will assume that if the lmitSQL() operation failed that an - * exception was thrown, and that OFFSET/LIMIT will never be emulated for MySQL. - * - * @author Hans Lellelid - * @version $Revision: 1.24 $ - * @package creole.drivers.mysql - */ -class MySQLResultSet extends ResultSetCommon implements ResultSet { - - /** - * @see ResultSet::seek() - */ - public function seek($rownum) - { - // MySQL rows start w/ 0, but this works, because we are - // looking to move the position _before_ the next desired position - if (!@mysql_data_seek($this->result, $rownum)) { - return false; - } - $this->cursorPos = $rownum; - return true; - } - - /** - * @see ResultSet::next() - */ - public function next() - { - $this->fields = mysql_fetch_array($this->result, $this->fetchmode); - - if (!$this->fields) { - $errno = mysql_errno($this->conn->getResource()); - if (!$errno) { - // We've advanced beyond end of recordset. - $this->afterLast(); - return false; - } else { - throw new SQLException("Error fetching result", mysql_error($this->conn->getResource())); - } - } - /*else { - if (is_array($this->fields)) { - foreach ($this->fields as $sKey => $sValue) { - if (function_exists('mb_detect_encoding')) { - if (strtoupper(mb_detect_encoding($sValue)) == 'UTF-8') { - $this->fields[$sKey] = utf8_encode($sValue); - } - } - } - } - }*/ - - if ($this->fetchmode === ResultSet::FETCHMODE_ASSOC && $this->lowerAssocCase) { - $this->fields = array_change_key_case($this->fields, CASE_LOWER); - } - - // Advance cursor position - $this->cursorPos++; - return true; - } - - /** - * @see ResultSet::getRecordCount() - */ - function getRecordCount() - { - $rows = @mysql_num_rows($this->result); - if ($rows === null) { - throw new SQLException("Error fetching num rows", mysql_error($this->conn->getResource())); - } - return (int) $rows; - } - - /** - * @see ResultSet::close() - */ - function close() - { - if(is_resource($this->result)) - @mysql_free_result($this->result); - $this->fields = array(); - } - - /** - * Get string version of column. - * No rtrim() necessary for MySQL, as this happens natively. - * @see ResultSet::getString() - */ - public function getString($column) - { - $idx = (is_int($column) ? $column - 1 : $column); - if (!array_key_exists($idx, $this->fields)) { throw new SQLException("Invalid resultset column: " . $column); } - if ($this->fields[$idx] === null) { return null; } - return (string) $this->fields[$idx]; - } - - /** - * Returns a unix epoch timestamp based on either a TIMESTAMP or DATETIME field. - * @param mixed $column Column name (string) or index (int) starting with 1. - * @return string - * @throws SQLException - If the column specified is not a valid key in current field array. - */ - function getTimestamp($column, $format='Y-m-d H:i:s') - { - if (is_int($column)) { $column--; } // because Java convention is to start at 1 - if (!array_key_exists($column, $this->fields)) { throw new SQLException("Invalid resultset column: " . (is_int($column) ? $column + 1 : $column)); } - if ($this->fields[$column] === null) { return null; } - - if (($this->fields[$column] == '0000-00-00 00:00:00') || ($this->fields[$column] == '0000-00-00')) { - $ts = '943916400'; - } - else { - $ts = strtotime($this->fields[$column]); - } - if ($ts === -1 || $ts === false) { // in PHP 5.1 return value changes to FALSE - // otherwise it's an ugly MySQL timestamp! - // YYYYMMDDHHMMSS - if (preg_match('/([\d]{4})([\d]{2})([\d]{2})([\d]{2})([\d]{2})([\d]{2})/', $this->fields[$column], $matches)) { - // YYYY MM DD HH MM SS - // $1 $2 $3 $4 $5 $6 - $ts = mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]); - } - } - if ($ts === -1 || $ts === false) { // if it's still -1, then there's nothing to be done; use a different method. - throw new SQLException("Unable to convert value at column " . (is_int($column) ? $column + 1 : $column) . " to timestamp: " . $this->fields[$column]); - } - if ($format === null) { - return $ts; - } - if (strpos($format, '%') !== false) { - return strftime($format, $ts); - } else { - return date($format, $ts); - } - } - -} diff --git a/thirdparty/creole/drivers/mysql/MySQLStatement.php b/thirdparty/creole/drivers/mysql/MySQLStatement.php deleted file mode 100644 index fbd3e2482..000000000 --- a/thirdparty/creole/drivers/mysql/MySQLStatement.php +++ /dev/null @@ -1,36 +0,0 @@ -. - */ - -require_once 'creole/Statement.php'; -require_once 'creole/common/StatementCommon.php'; - -/** - * MySQL Statement - * - * @author Hans Lellelid - * @author Stig Bakken - * @author Lukas Smith - * @version $Revision: 1.1 $ - * @package creole.drivers.mysql - */ -class MySQLStatement extends StatementCommon implements Statement { - -} diff --git a/thirdparty/creole/drivers/mysql/MySQLTypes.php b/thirdparty/creole/drivers/mysql/MySQLTypes.php deleted file mode 100644 index 27205e039..000000000 --- a/thirdparty/creole/drivers/mysql/MySQLTypes.php +++ /dev/null @@ -1,102 +0,0 @@ -. - */ - -require_once 'creole/CreoleTypes.php'; - -/** - * MySQL types / type map. - * - * @author Hans Lellelid - * @version $Revision: 1.8 $ - * @package creole.drivers.mysql - */ -class MySQLTypes extends CreoleTypes { - - /** Map MySQL native types to Creole (JDBC) types. */ - private static $typeMap = array( - 'tinyint' => CreoleTypes::TINYINT, - 'smallint' => CreoleTypes::SMALLINT, - 'mediumint' => CreoleTypes::SMALLINT, - 'int' => CreoleTypes::INTEGER, - 'integer' => CreoleTypes::INTEGER, - 'bigint' => CreoleTypes::BIGINT, - 'int24' => CreoleTypes::BIGINT, - 'real' => CreoleTypes::REAL, - 'float' => CreoleTypes::FLOAT, - 'decimal' => CreoleTypes::DECIMAL, - 'numeric' => CreoleTypes::NUMERIC, - 'double' => CreoleTypes::DOUBLE, - 'char' => CreoleTypes::CHAR, - 'varchar' => CreoleTypes::VARCHAR, - 'date' => CreoleTypes::DATE, - 'time' => CreoleTypes::TIME, - 'year' => CreoleTypes::YEAR, - 'datetime' => CreoleTypes::TIMESTAMP, - 'timestamp' => CreoleTypes::TIMESTAMP, - 'tinyblob' => CreoleTypes::BINARY, - 'blob' => CreoleTypes::VARBINARY, - 'mediumblob' => CreoleTypes::VARBINARY, - 'longblob' => CreoleTypes::VARBINARY, - 'longtext' => CreoleTypes::LONGVARCHAR, - 'tinytext' => CreoleTypes::VARCHAR, - 'mediumtext' => CreoleTypes::LONGVARCHAR, - 'text' => CreoleTypes::LONGVARCHAR, - 'enum' => CreoleTypes::CHAR, - 'set' => CreoleTypes::CHAR, - ); - - /** Reverse mapping, created on demand. */ - private static $reverseMap = null; - - /** - * This method returns the generic Creole (JDBC-like) type - * when given the native db type. - * @param string $nativeType DB native type (e.g. 'TEXT', 'byetea', etc.). - * @return int Creole native type (e.g. CreoleTypes::LONGVARCHAR, CreoleTypes::BINARY, etc.). - */ - public static function getType($nativeType) - { - $t = strtolower($nativeType); - if (isset(self::$typeMap[$t])) { - return self::$typeMap[$t]; - } else { - return CreoleTypes::OTHER; - } - } - - /** - * This method will return a native type that corresponds to the specified - * Creole (JDBC-like) type. - * If there is more than one matching native type, then the LAST defined - * native type will be returned. - * @param int $creoleType - * @return string Native type string. - */ - public static function getNativeType($creoleType) - { - if (self::$reverseMap === null) { - self::$reverseMap = array_flip(self::$typeMap); - } - return @self::$reverseMap[$creoleType]; - } - -} \ No newline at end of file diff --git a/thirdparty/creole/drivers/mysql/metadata/MySQLDatabaseInfo.php b/thirdparty/creole/drivers/mysql/metadata/MySQLDatabaseInfo.php deleted file mode 100644 index 0e032cc2c..000000000 --- a/thirdparty/creole/drivers/mysql/metadata/MySQLDatabaseInfo.php +++ /dev/null @@ -1,66 +0,0 @@ -. - */ - -require_once 'creole/metadata/DatabaseInfo.php'; - -/** - * MySQL implementation of DatabaseInfo. - * - * @author Hans Lellelid - * @version $Revision: 1.13 $ - * @package creole.drivers.mysql.metadata - */ -class MySQLDatabaseInfo extends DatabaseInfo { - - /** - * @throws SQLException - * @return void - */ - protected function initTables() - { - include_once 'creole/drivers/mysql/metadata/MySQLTableInfo.php'; - // using $this->dblink was causing tests to break - // perhaps dblink is changed by another test ... ? - $result = @mysql_query("SHOW TABLES FROM `" . $this->dbname . "`", $this->conn->getResource()); - - if (!$result) { - throw new SQLException("Could not list tables", mysql_error($this->conn->getResource())); - } - - while ($row = mysql_fetch_row($result)) { - $this->tables[strtoupper($row[0])] = new MySQLTableInfo($this, $row[0]); - } - - $this->tablesLoaded = true; - - } - - /** - * MySQL does not support sequences. - * - * @return void - * @throws SQLException - */ - protected function initSequences() - { - // throw new SQLException("MySQL does not support sequences natively."); - } -} diff --git a/thirdparty/creole/drivers/mysql/metadata/MySQLTableInfo.php b/thirdparty/creole/drivers/mysql/metadata/MySQLTableInfo.php deleted file mode 100644 index 18d412747..000000000 --- a/thirdparty/creole/drivers/mysql/metadata/MySQLTableInfo.php +++ /dev/null @@ -1,252 +0,0 @@ -. - */ - -require_once 'creole/metadata/TableInfo.php'; - -/** - * MySQL implementation of TableInfo. - * - * @author Hans Lellelid - * @version $Revision: 1.20 $ - * @package creole.drivers.mysql.metadata - */ -class MySQLTableInfo extends TableInfo { - - /** Loads the columns for this table. */ - protected function initColumns() - { - include_once 'creole/metadata/ColumnInfo.php'; - include_once 'creole/drivers/mysql/MySQLTypes.php'; - - if (!@mysql_select_db($this->dbname, $this->conn->getResource())) { - throw new SQLException('No database selected'); - } - - // To get all of the attributes we need, we use - // the MySQL "SHOW COLUMNS FROM $tablename" SQL. We cannot - // use the API functions (e.g. mysql_list_fields() because they - // do not return complete information -- e.g. precision / scale, default - // values). - - $res = mysql_query("SHOW COLUMNS FROM `" . $this->name . "`", $this->conn->getResource()); - - $defaults = array(); - $nativeTypes = array(); - $precisions = array(); - - while($row = mysql_fetch_assoc($res)) { - $name = $row['Field']; - $is_nullable = ($row['Null'] == 'YES'); - $is_auto_increment = (strpos($row['Extra'], 'auto_increment') !== false); - $size = null; - $precision = null; - $scale = null; - - if (preg_match('/^(\w+)[\(]?([\d,]*)[\)]?( |$)/', $row['Type'], $matches)) { - // colname[1] size/precision[2] - $nativeType = $matches[1]; - if ($matches[2]) { - if ( ($cpos = strpos($matches[2], ',')) !== false) { - $size = (int) substr($matches[2], 0, $cpos); - $precision = $size; - $scale = (int) substr($matches[2], $cpos + 1); - } else { - $size = (int) $matches[2]; - } - } - } elseif (preg_match('/^(\w+)\(/', $row['Type'], $matches)) { - $nativeType = $matches[1]; - } else { - $nativeType = $row['Type']; - } - //BLOBs can't have any default values in MySQL - $default = preg_match('~blob|text~', $nativeType) ? null : $row['Default']; - $this->columns[$name] = new ColumnInfo($this, - $name, - MySQLTypes::getType($nativeType), - $nativeType, - $size, - $precision, - $scale, - $is_nullable, - $default, - $is_auto_increment, - $row); - } - - $this->colsLoaded = true; - } - - /** Loads the primary key information for this table. */ - protected function initPrimaryKey() - { - include_once 'creole/metadata/PrimaryKeyInfo.php'; - - // columns have to be loaded first - if (!$this->colsLoaded) $this->initColumns(); - - if (!@mysql_select_db($this->dbname, $this->conn->getResource())) { - throw new SQLException('No database selected'); - } - - // Primary Keys - $res = mysql_query("SHOW KEYS FROM `" . $this->name . "`", $this->conn->getResource()); - - // Loop through the returned results, grouping the same key_name together - // adding each column for that key. - - while($row = mysql_fetch_assoc($res)) { - // Skip any non-primary keys. - if ($row['Key_name'] !== 'PRIMARY') { - continue; - } - $name = $row["Column_name"]; - if (!isset($this->primaryKey)) { - $this->primaryKey = new PrimaryKeyInfo($name, $row); - } - $this->primaryKey->addColumn($this->columns[$name]); - } - - $this->pkLoaded = true; - } - - /** Loads the indexes for this table. */ - protected function initIndexes() { - - include_once 'creole/metadata/IndexInfo.php'; - - // columns have to be loaded first - if (!$this->colsLoaded) $this->initColumns(); - - if (!@mysql_select_db($this->dbname, $this->conn->getResource())) { - throw new SQLException('No database selected'); - } - - // Indexes - $res = mysql_query("SHOW INDEX FROM `" . $this->name . "`", $this->conn->getResource()); - - // Loop through the returned results, grouping the same key_name together - // adding each column for that key. - - while($row = mysql_fetch_assoc($res)) { - $colName = $row["Column_name"]; - $name = $row["Key_name"]; - - if($name == "PRIMARY") { - continue; - } - - if (!isset($this->indexes[$name])) { - $isUnique = ($row["Non_unique"] == 0); - $this->indexes[$name] = new IndexInfo($name, $isUnique, $row); - } - $this->indexes[$name]->addColumn($this->columns[$colName]); - } - - $this->indexesLoaded = true; - } - - /** - * Load foreign keys for supporting versions of MySQL. - * @author Tony Bibbs - */ - protected function initForeignKeys() { - - // First make sure we have supported version of MySQL: - $res = mysql_query("SELECT VERSION()"); - $row = mysql_fetch_row($res); - - // Yes, it is OK to hardcode this...this was the first version of MySQL - // that supported foreign keys - if ($row[0] < '3.23.44') { - $this->fksLoaded = true; - return; - } - - include_once 'creole/metadata/ForeignKeyInfo.php'; - - // columns have to be loaded first - if (!$this->colsLoaded) $this->initColumns(); - if (!@mysql_select_db($this->dbname, $this->conn->getResource())) { - throw new SQLException('No database selected'); - } - // Get the CREATE TABLE syntax - $res = mysql_query("SHOW CREATE TABLE `" . $this->name . "`", $this->conn->getResource()); - $row = mysql_fetch_row($res); - - // Get the information on all the foreign keys - $regEx = '/FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)(.*)/'; - if (preg_match_all($regEx,$row[1],$matches)) { - $tmpArray = array_keys($matches[0]); - foreach ($tmpArray as $curKey) { - $name = $matches[1][$curKey]; - $ftbl = $matches[2][$curKey]; - $fcol = $matches[3][$curKey]; - $fkey = $matches[4][$curKey]; - if (!isset($this->foreignKeys[$name])) { - $this->foreignKeys[$name] = new ForeignKeyInfo($name); - if ($this->database->hasTable($ftbl)) { - $foreignTable = $this->database->getTable($ftbl); - } else { - $foreignTable = new MySQLTableInfo($this->database, $ftbl); - $this->database->addTable($foreignTable); - } - if ($foreignTable->hasColumn($fcol)) { - $foreignCol = $foreignTable->getColumn($fcol); - } else { - $foreignCol = new ColumnInfo($foreignTable, $fcol); - $foreignTable->addColumn($foreignCol); - } - - //typical for mysql is RESTRICT - $fkactions = array( - 'ON DELETE' => ForeignKeyInfo::RESTRICT, - 'ON UPDATE' => ForeignKeyInfo::RESTRICT, - ); - - if ($fkey) { - //split foreign key information -> search for ON DELETE and afterwords for ON UPDATE action - foreach (array_keys($fkactions) as $fkaction) { - $result = NULL; - preg_match('/' . $fkaction . ' (' . ForeignKeyInfo::CASCADE . '|' . ForeignKeyInfo::SETNULL . ')/', $fkey, $result); - if ($result && is_array($result) && isset($result[1])) { - $fkactions[$fkaction] = $result[1]; - } - } - } - - $this->foreignKeys[$name]->addReference($this->columns[$name], $foreignCol, $fkactions['ON DELETE'], $fkactions['ON UPDATE']); - } - } - } - $this->fksLoaded = true; - - } - - protected function initVendorSpecificInfo() - { - $res = mysql_query("SHOW TABLE STATUS LIKE '" . $this->name . "'", $this->conn->getResource()); - $this->vendorSpecificInfo = mysql_fetch_assoc($res); - - $this->vendorLoaded = true; - } - -} diff --git a/thirdparty/creole/drivers/mysqli/MySQLiConnection.php b/thirdparty/creole/drivers/mysqli/MySQLiConnection.php index 684544e81..66747a03e 100644 --- a/thirdparty/creole/drivers/mysqli/MySQLiConnection.php +++ b/thirdparty/creole/drivers/mysqli/MySQLiConnection.php @@ -75,11 +75,9 @@ class MySQLiConnection extends ConnectionCommon implements Connection { $encoding = !empty($dsninfo['encoding']) ? $dsninfo['encoding'] : null; - @ini_set('track_errors', true); - - $conn = mysqli_connect($host, $user, $pw, $database, $port, $socket); - - @ini_restore('track_errors'); + $conn = mysqli_connect($host, $user, $pw, $database, $port, $socket); + $errorGetLast = error_get_last(); + $php_errormsg = isset($errorGetLast['message']) ? $errorGetLast['message'] : ''; if (empty($conn)) { if (($err = @mysqli_error()) != '') { diff --git a/thirdparty/pear/DB.php b/thirdparty/pear/DB.php index 257cb65fe..d078e14a4 100644 --- a/thirdparty/pear/DB.php +++ b/thirdparty/pear/DB.php @@ -708,7 +708,6 @@ class DB if (!extension_loaded($name)) { $dlext = OS_WINDOWS ? '.dll' : '.so'; $dlprefix = OS_WINDOWS ? 'php_' : ''; - @dl($dlprefix . $name . $dlext); return extension_loaded($name); } return true; diff --git a/thirdparty/pear/DB/oci8.php b/thirdparty/pear/DB/oci8.php index 0d4b9da59..a5a408e12 100644 --- a/thirdparty/pear/DB/oci8.php +++ b/thirdparty/pear/DB/oci8.php @@ -20,11 +20,6 @@ // $Id: oci8.php 3355 2005-06-11 22:14:40Z nbm $ -// be aware... OCIError() only appears to return anything when given a -// statement, so functions return the generic DB_ERROR instead of more -// useful errors that have to do with feedback from the database. - - require_once 'DB/common.php'; /** @@ -127,7 +122,7 @@ class DB_oci8 extends DB_common $conn = false; } if ($conn == false) { - $error = OCIError(); + $error = oci_error(); $error = (is_array($error)) ? $error['message'] : null; return $this->raiseError(DB_ERROR_CONNECT_FAILED, null, null, null, $error); @@ -146,7 +141,7 @@ class DB_oci8 extends DB_common */ function disconnect() { - $ret = @OCILogOff($this->connection); + $ret = @oci_close($this->connection); $this->connection = null; return $ret; } @@ -169,14 +164,14 @@ class DB_oci8 extends DB_common $this->_data = array(); $this->last_query = $query; $query = $this->modifyQuery($query); - $result = @OCIParse($this->connection, $query); + $result = @oci_parse($this->connection, $query); if (!$result) { return $this->oci8RaiseError(); } if ($this->autoCommit) { - $success = @OCIExecute($result,OCI_COMMIT_ON_SUCCESS); + $success = @oci_execute($result,OCI_COMMIT_ON_SUCCESS); } else { - $success = @OCIExecute($result,OCI_DEFAULT); + $success = @oci_execute($result,OCI_DEFAULT); } if (!$success) { return $this->oci8RaiseError($result); @@ -231,14 +226,14 @@ class DB_oci8 extends DB_common return $this->raiseError(DB_ERROR_NOT_CAPABLE); } if ($fetchmode & DB_FETCHMODE_ASSOC) { - $moredata = @OCIFetchInto($result,$arr,OCI_ASSOC+OCI_RETURN_NULLS+OCI_RETURN_LOBS); + $moredata = @oci_fetch_all($result,$arr,OCI_ASSOC+OCI_RETURN_NULLS+OCI_RETURN_LOBS); if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE && $moredata) { $arr = array_change_key_case($arr, CASE_LOWER); } } else { - $moredata = OCIFetchInto($result,$arr,OCI_RETURN_NULLS+OCI_RETURN_LOBS); + $moredata = oci_fetch_all($result,$arr,OCI_RETURN_NULLS+OCI_RETURN_LOBS); } if (!$moredata) { return null; @@ -264,7 +259,7 @@ class DB_oci8 extends DB_common */ function freeResult($result) { - return @OCIFreeStatement($result); + return @oci_free_statement($result); } /** @@ -329,7 +324,7 @@ class DB_oci8 extends DB_common */ function numCols($result) { - $cols = @OCINumCols($result); + $cols = @oci_num_fields($result); if (!$cols) { return $this->oci8RaiseError($result); } @@ -341,8 +336,8 @@ class DB_oci8 extends DB_common /** * Get the native error code of the last error (if any) that occured - * on the current connection. This does not work, as OCIError does - * not work unless given a statement. If OCIError does return + * on the current connection. This does not work, as oci_error does + * not work unless given a statement. If oci_error does return * something, so will this. * * @return int native oci8 error code @@ -350,9 +345,9 @@ class DB_oci8 extends DB_common function errorNative() { if (is_resource($this->last_stmt)) { - $error = @OCIError($this->last_stmt); + $error = @oci_error($this->last_stmt); } else { - $error = @OCIError($this->connection); + $error = @oci_error($this->connection); } if (is_array($error)) { return $error['code']; @@ -422,7 +417,7 @@ class DB_oci8 extends DB_common $this->last_query = $query; $newquery = $this->modifyQuery($newquery); - if (!$stmt = @OCIParse($this->connection, $newquery)) { + if (!$stmt = @oci_parse($this->connection, $newquery)) { return $this->oci8RaiseError(); } $this->prepare_types[(int)$stmt] = $types; @@ -482,16 +477,16 @@ class DB_oci8 extends DB_common $data[$key] = fread($fp, filesize($data[$key])); fclose($fp); } - if (!@OCIBindByName($stmt, ':bind' . $i, $data[$key], -1)) { + if (!@oci_bind_by_name($stmt, ':bind' . $i, $data[$key], -1)) { $tmp = $this->oci8RaiseError($stmt); return $tmp; } $i++; } if ($this->autoCommit) { - $success = @OCIExecute($stmt, OCI_COMMIT_ON_SUCCESS); + $success = @oci_execute($stmt, OCI_COMMIT_ON_SUCCESS); } else { - $success = @OCIExecute($stmt, OCI_DEFAULT); + $success = @oci_execute($stmt, OCI_DEFAULT); } if (!$success) { $tmp = $this->oci8RaiseError($stmt); @@ -530,7 +525,7 @@ class DB_oci8 extends DB_common */ function commit() { - $result = @OCICommit($this->connection); + $result = @oci_commit($this->connection); if (!$result) { return $this->oci8RaiseError(); } @@ -547,7 +542,7 @@ class DB_oci8 extends DB_common */ function rollback() { - $result = @OCIRollback($this->connection); + $result = @oci_rollback($this->connection); if (!$result) { return $this->oci8RaiseError(); } @@ -568,7 +563,7 @@ class DB_oci8 extends DB_common if ($this->last_stmt === false) { return $this->oci8RaiseError(); } - $result = @OCIRowCount($this->last_stmt); + $result = @oci_num_rows($this->last_stmt); if ($result === false) { return $this->oci8RaiseError($this->last_stmt); } @@ -613,20 +608,20 @@ class DB_oci8 extends DB_common } else { $q_fields = "SELECT * FROM ($query) WHERE NULL = NULL"; - if (!$result = @OCIParse($this->connection, $q_fields)) { + if (!$result = @oci_parse($this->connection, $q_fields)) { $this->last_query = $q_fields; return $this->oci8RaiseError(); } - if (!@OCIExecute($result, OCI_DEFAULT)) { + if (!@oci_execute($result, OCI_DEFAULT)) { $this->last_query = $q_fields; return $this->oci8RaiseError($result); } } - $ncols = OCINumCols($result); + $ncols = oci_num_fields($result); $cols = array(); for ( $i = 1; $i <= $ncols; $i++ ) { - $cols[] = '"' . OCIColumnName($result, $i) . '"'; + $cols[] = '"' . oci_field_name($result, $i) . '"'; } $fields = implode(', ', $cols); // XXX Test that (tip by John Lim) @@ -743,11 +738,11 @@ class DB_oci8 extends DB_common function oci8RaiseError($errno = null) { if ($errno === null) { - $error = @OCIError($this->connection); + $error = @oci_error($this->connection); return $this->raiseError($this->errorCode($error['code']), null, null, null, $error['message']); } elseif (is_resource($errno)) { - $error = @OCIError($errno); + $error = @oci_error($errno); return $this->raiseError($this->errorCode($error['code']), null, null, null, $error['message']); } @@ -813,20 +808,20 @@ class DB_oci8 extends DB_common $this->last_query = $q_fields; - if (!$stmt = @OCIParse($this->connection, $q_fields)) { + if (!$stmt = @oci_parse($this->connection, $q_fields)) { return $this->oci8RaiseError(DB_ERROR_NEED_MORE_DATA); } - if (!@OCIExecute($stmt, OCI_DEFAULT)) { + if (!@oci_execute($stmt, OCI_DEFAULT)) { return $this->oci8RaiseError($stmt); } $i = 0; - while (@OCIFetch($stmt)) { + while (@oci_fetch($stmt)) { $res[$i]['table'] = $case_func($result); - $res[$i]['name'] = $case_func(@OCIResult($stmt, 1)); - $res[$i]['type'] = @OCIResult($stmt, 2); - $res[$i]['len'] = @OCIResult($stmt, 3); - $res[$i]['flags'] = (@OCIResult($stmt, 4) == 'N') ? 'not_null' : ''; + $res[$i]['name'] = $case_func(@oci_result($stmt, 1)); + $res[$i]['type'] = @oci_result($stmt, 2); + $res[$i]['len'] = @oci_result($stmt, 3); + $res[$i]['flags'] = (@oci_result($stmt, 4) == 'N') ? 'not_null' : ''; if ($mode & DB_TABLEINFO_ORDER) { $res['order'][$res[$i]['name']] = $i; @@ -840,7 +835,7 @@ class DB_oci8 extends DB_common if ($mode) { $res['num_fields'] = $i; } - @OCIFreeStatement($stmt); + @oci_free_statement($stmt); } else { if (isset($result->result)) { @@ -857,13 +852,13 @@ class DB_oci8 extends DB_common } if ($result === $this->last_stmt) { - $count = @OCINumCols($result); + $count = @oci_num_fields($result); for ($i=0; $i<$count; $i++) { $res[$i]['table'] = ''; - $res[$i]['name'] = $case_func(@OCIColumnName($result, $i+1)); - $res[$i]['type'] = @OCIColumnType($result, $i+1); - $res[$i]['len'] = @OCIColumnSize($result, $i+1); + $res[$i]['name'] = $case_func(@oci_field_name($result, $i+1)); + $res[$i]['type'] = @oci_field_type($result, $i+1); + $res[$i]['len'] = @oci_field_size($result, $i+1); $res[$i]['flags'] = ''; if ($mode & DB_TABLEINFO_ORDER) { diff --git a/thirdparty/pear/DB/pgsql.php b/thirdparty/pear/DB/pgsql.php index dea59d691..bcf4b9736 100644 --- a/thirdparty/pear/DB/pgsql.php +++ b/thirdparty/pear/DB/pgsql.php @@ -123,12 +123,8 @@ class DB_pgsql extends DB_common $connect_function = $persistent ? 'pg_pconnect' : 'pg_connect'; - $ini = ini_get('track_errors'); - if ($ini) { - $conn = @$connect_function($connstr); - } else { - $conn = @$connect_function($connstr); - } + $conn = @$connect_function($connstr); + if ($conn == false) { $lastError = error_get_last(); $errorMessage = $lastError['message'] ?? 'Connection error.'; diff --git a/thirdparty/pear/Log.php b/thirdparty/pear/Log.php index b6d4d2805..e88446fba 100644 --- a/thirdparty/pear/Log.php +++ b/thirdparty/pear/Log.php @@ -100,6 +100,12 @@ class Log '%{function}' => '%7$s', '%\{' => '%%{'); + /** + * Constructor of the class. + */ + public function __construct() + { + } /** * Attempts to return a concrete Log instance of type $handler. diff --git a/thirdparty/pear/PEAR/Command/Remote.php b/thirdparty/pear/PEAR/Command/Remote.php index 366d9daba..5227bccbf 100644 --- a/thirdparty/pear/PEAR/Command/Remote.php +++ b/thirdparty/pear/PEAR/Command/Remote.php @@ -108,9 +108,9 @@ parameter. * * @access public */ - function PEAR_Command_Remote(&$ui, &$config) + function __construct(&$ui, &$config) { - parent::PEAR_Command_Common($ui, $config); + parent::__construct($ui, $config); } // }}} @@ -281,7 +281,7 @@ parameter. return PEAR::raiseError("download expects one argument: the package to download"); } $server = $this->config->get('master_server'); - if (!ereg('^http://', $params[0])) { + if (!preg_match('/^http:\/\//', $params[0])) { $pkgfile = "http://$server/get/$params[0]"; } else { $pkgfile = $params[0]; diff --git a/thirdparty/pear/PEAR/Remote.php b/thirdparty/pear/PEAR/Remote.php index 9e348a27d..924e3b28f 100644 --- a/thirdparty/pear/PEAR/Remote.php +++ b/thirdparty/pear/PEAR/Remote.php @@ -191,7 +191,7 @@ class PEAR_Remote extends PEAR if ($is_continuous) { reset($php_val); $arr = array(); - while (list($k, $v) = each($php_val)) { + foreach ($php_val as $k => $v) { $arr[$k] = $this->_encode($v); } $xmlrpcval->addArray($arr); @@ -201,7 +201,7 @@ class PEAR_Remote extends PEAR // fall though if not numerical and continuous case "object": $arr = array(); - while (list($k, $v) = each($php_val)) { + foreach ($php_val as $k => $v) { $arr[$k] = $this->_encode($v); } $xmlrpcval->addStruct($arr); diff --git a/workflow/engine/classes/Net.php b/workflow/engine/classes/Net.php index 2e4d6f52b..a8bf21403 100644 --- a/workflow/engine/classes/Net.php +++ b/workflow/engine/classes/Net.php @@ -263,7 +263,10 @@ class Net $opt = [ 'UID' => $this->db_user, 'PWD' => $this->db_passwd, - 'Database' => $this->db_sourcename + 'Database' => $this->db_sourcename, + 'CharacterSet' => 'UTF-8', + 'Encrypt' => true, + 'TrustServerCertificate' => true ]; $link = @sqlsrv_connect($server, $opt); @@ -399,7 +402,10 @@ class Net $opt = [ 'UID' => $this->db_user, 'PWD' => $this->db_passwd, - 'Database' => $this->db_sourcename + 'Database' => $this->db_sourcename, + 'CharacterSet' => 'UTF-8', + 'Encrypt' => true, + 'TrustServerCertificate' => true ]; $link = $db = @sqlsrv_connect($server, $opt); if ($link) { diff --git a/workflow/engine/classes/ProcessMap.php b/workflow/engine/classes/ProcessMap.php index f71b6535c..c64f810b0 100644 --- a/workflow/engine/classes/ProcessMap.php +++ b/workflow/engine/classes/ProcessMap.php @@ -142,22 +142,6 @@ class ProcessMap $aRow2['FINISH'] = ''; } - /* - if (($aRow2['FINISH'] == null) && ($aRow1['TAS_UID'] == $sTask)) { - $oTask->color = '#FF0000'; - } else { - if ($aRow2['CANT'] != 0) { - if ($aRow2['FINISH'] == null) { - //$oTask->color = '#FF9900'; - $oTask->color = '#FF0000'; - } else { - $oTask->color = '#006633'; - } - } else { - $oTask->color = "#939598"; - } - } - */ if (empty($aRow2["FINISH"]) && $aRow1["TAS_UID"] == $sTask) { $oTask->color = "#FF0000"; //Red } else { diff --git a/workflow/engine/classes/WsBase.php b/workflow/engine/classes/WsBase.php index 2a70c3401..1569b9595 100644 --- a/workflow/engine/classes/WsBase.php +++ b/workflow/engine/classes/WsBase.php @@ -2424,7 +2424,7 @@ class WsBase $oAppDelay = new AppDelay(); $aRow = $oAppDelay->getCasesCancelOrPaused($caseId); if (is_array($aRow)) { - if (isset($aRow['APP_DISABLE_ACTION_USER']) && $aRow['APP_DISABLE_ACTION_USER'] != 0 && isset($aRow['APP_DISABLE_ACTION_DATE']) && $aRow['APP_DISABLE_ACTION_DATE'] != '') { + if (isset($aRow['APP_DISABLE_ACTION_USER']) && intval($aRow['APP_DISABLE_ACTION_USER']) != 0 && isset($aRow['APP_DISABLE_ACTION_DATE']) && $aRow['APP_DISABLE_ACTION_DATE'] != '') { $result = new WsResponse(19, G::LoadTranslation('ID_CASE_IN_STATUS') . " " . $aRow['APP_TYPE']); return $result; @@ -3486,7 +3486,7 @@ class WsBase $respView = $case->getAllObjectsFrom($processUid, $caseUid, $taskUid, $userUid, "VIEW"); $respBlock = $case->getAllObjectsFrom($processUid, $caseUid, $taskUid, $userUid, "BLOCK"); - if ($respView["CASES_NOTES"] == 0 && $respBlock["CASES_NOTES"] == 0) { + if (intval($respView["CASES_NOTES"]) == 0 && intval($respBlock["CASES_NOTES"]) == 0) { $result = new WsResponse(100, G::LoadTranslation("ID_CASES_NOTES_NO_PERMISSIONS")); return $result; diff --git a/workflow/engine/classes/XmlFormFieldToolButton.php b/workflow/engine/classes/XmlFormFieldToolButton.php index 855df7bab..5a6548bf2 100644 --- a/workflow/engine/classes/XmlFormFieldToolButton.php +++ b/workflow/engine/classes/XmlFormFieldToolButton.php @@ -78,7 +78,8 @@ class XmlFormFieldToolButton extends XmlFormField case 'dropdown': $html = ''; if (isset($this->owner->values['PRO_UID'])) { - $criteria = ProcessMap::getDynaformsCriteria($this->owner->values['PRO_UID']); + $processMap = new ProcessMap(); + $criteria = $processMap->getDynaformsCriteria($this->owner->values['PRO_UID']); $dataset = DynaformPeer::doSelectRS($criteria); if ($dataset->getRecordCount() > 0) { $html .= '' . G::LoadTranslation('ID_DYNAFORM'); diff --git a/workflow/engine/controllers/InstallerModule.php b/workflow/engine/controllers/InstallerModule.php index ba9b9af9f..8ac8d2f73 100644 --- a/workflow/engine/controllers/InstallerModule.php +++ b/workflow/engine/controllers/InstallerModule.php @@ -992,7 +992,13 @@ class InstallerModule extends Controller $info->wfDatabaseExists = count($response) > 0; break; case 'sqlsrv': - $arguments = array("UID" => $db_username, "PWD" => $db_password); + $arguments = [ + 'UID' => $db_username, + 'PWD' => $db_password, + 'CharacterSet' => 'UTF-8', + 'Encrypt' => true, + 'TrustServerCertificate' => true + ]; $link = @sqlsrv_connect($db_hostname, $arguments); $wfDatabase = $filter->validateInput($_REQUEST['wfDatabase'], 'nosql'); $query = "select * from sys.databases where name = '%s' "; diff --git a/workflow/engine/controllers/caseSchedulerProxy.php b/workflow/engine/controllers/caseSchedulerProxy.php index 1ddc31c12..a4ff2d9b6 100644 --- a/workflow/engine/controllers/caseSchedulerProxy.php +++ b/workflow/engine/controllers/caseSchedulerProxy.php @@ -17,7 +17,7 @@ class caseSchedulerProxy extends HttpProxyController $sch_uid = $oData['EVN_ACTION']; if ($sch_uid != '') { - $oProcessMap = new ProcessMap( new DBConnection() ); + $oProcessMap = new ProcessMap(); $rows = $oProcessMap->caseNewSchedulerList( $sch_uid ); if ($rows['SCH_OPTION'] == '3') { $sch_start_day = explode( '|', $rows['SCH_START_DAY'] ); diff --git a/workflow/engine/controllers/processOptionsProxy.php b/workflow/engine/controllers/processOptionsProxy.php index 046855fa5..21847223c 100644 --- a/workflow/engine/controllers/processOptionsProxy.php +++ b/workflow/engine/controllers/processOptionsProxy.php @@ -5,7 +5,7 @@ class processOptionsProxy extends HttpProxyController public function loadInputDocuments ($params) { - $oProcessMap = new ProcessMap( new DBConnection() ); + $oProcessMap = new ProcessMap(); $pro_uid = $params->PRO_UID; $start = isset( $params->start ) ? $params->start : 0; @@ -24,7 +24,7 @@ class processOptionsProxy extends HttpProxyController public function canDeleteInputDoc ($params) { - $oProcessMap = new ProcessMap( new DBConnection() ); + $oProcessMap = new ProcessMap(); $aRows = $oProcessMap->getAllInputDocsByTask( $params->PRO_UID ); $response = isset( $aRows[$params->IDOC_UID] ) ? false : true; $this->success = $response; diff --git a/workflow/engine/controllers/processProxy.php b/workflow/engine/controllers/processProxy.php index 2dd96d95c..1d0e9d3d9 100644 --- a/workflow/engine/controllers/processProxy.php +++ b/workflow/engine/controllers/processProxy.php @@ -279,7 +279,7 @@ class ProcessProxy extends HttpProxyController switch ($httpData->type) { case 'process': - $oProcessMap = new ProcessMap( new DBConnection() ); + $oProcessMap = new ProcessMap(); $process = $oProcessMap->editProcessNew( $httpData->UID ); $category = ProcessCategoryPeer::retrieveByPk( $process['PRO_CATEGORY'] ); $categoryName = is_object( $category ) ? $category->getCategoryName() : ''; @@ -404,7 +404,7 @@ class ProcessProxy extends HttpProxyController */ public function getPMVariables ($param) { - $oProcessMap = new ProcessMap( new DBConnection() ); + $oProcessMap = new ProcessMap(); $rows = getDynaformsVars( $param->PRO_UID ); foreach ($rows as $i => $var) { $rows[$i]['sName'] = "@@{$var['sName']}"; diff --git a/workflow/engine/controllers/webEntryProxy.php b/workflow/engine/controllers/webEntryProxy.php index fc6b40ed0..b0c9859fc 100644 --- a/workflow/engine/controllers/webEntryProxy.php +++ b/workflow/engine/controllers/webEntryProxy.php @@ -218,7 +218,7 @@ class webEntryProxy extends HttpProxyController public function load ($params) { - $oProcessMap = new ProcessMap( new DBConnection() ); + $oProcessMap = new ProcessMap(); $PRO_UID = $params->PRO_UID; $EVN_UID = $params->EVN_UID; $sOutput = $oProcessMap->listNewWebEntry( $PRO_UID, $EVN_UID ); diff --git a/workflow/engine/methods/dynaforms/dynaforms_Save_as.php b/workflow/engine/methods/dynaforms/dynaforms_Save_as.php index e480b420b..e00d8f0f3 100644 --- a/workflow/engine/methods/dynaforms/dynaforms_Save_as.php +++ b/workflow/engine/methods/dynaforms/dynaforms_Save_as.php @@ -99,7 +99,8 @@ try { fclose( $templateHd1 ); } - $criteria = ProcessMap::getDynaformsCriteria($PRO_UID); + $processMap = new ProcessMap(); + $criteria = $processMap->getDynaformsCriteria($PRO_UID); //FROM //WHERE //QUERY diff --git a/workflow/engine/methods/events/eventsEdit.php b/workflow/engine/methods/events/eventsEdit.php index 4e575911f..22f37eb75 100644 --- a/workflow/engine/methods/events/eventsEdit.php +++ b/workflow/engine/methods/events/eventsEdit.php @@ -54,7 +54,7 @@ foreach ($aAux1 as $aAux2) { } } -$oProcessMap = new ProcessMap( new DBConnection() ); +$oProcessMap = new ProcessMap(); $aTriggersList = $oProcessMap->getTriggers( $_SESSION['PROCESS'] ); $aTriggersFileds = array (); $aTriggersFileds[] = array ('TRI_UID' => 'char','TRI_TITLE' => 'char'); diff --git a/workflow/engine/methods/events/eventsNew.php b/workflow/engine/methods/events/eventsNew.php index c2a8affd9..da92598bd 100644 --- a/workflow/engine/methods/events/eventsNew.php +++ b/workflow/engine/methods/events/eventsNew.php @@ -43,7 +43,7 @@ foreach ($aAux1 as $aAux2) { } } -$oProcessMap = new ProcessMap( new DBConnection() ); +$oProcessMap = new ProcessMap(); $aTriggersList = $oProcessMap->getTriggers( $_GET['PRO_UID'] ); $aTriggersFileds = array(); diff --git a/workflow/engine/methods/processes/ajaxListener.php b/workflow/engine/methods/processes/ajaxListener.php index fadf2d975..c85583803 100644 --- a/workflow/engine/methods/processes/ajaxListener.php +++ b/workflow/engine/methods/processes/ajaxListener.php @@ -311,7 +311,7 @@ class Ajax { switch ($param['type']) { case 'process': - $oProcessMap = new ProcessMap(new DBConnection()); + $oProcessMap = new ProcessMap(); $process = $oProcessMap->editProcessNew($param['UID']); $category = ProcessCategoryPeer::retrieveByPk($process['PRO_CATEGORY']); $categoryName = is_object($category) ? $category->getCategoryName() : ''; @@ -447,7 +447,7 @@ class Ajax public function getPMVariables($param) { - $oProcessMap = new ProcessMap(new DBConnection()); + $oProcessMap = new ProcessMap(); $response->rows = getDynaformsVars($param['PRO_UID']); foreach ($response->rows as $i => $var) { $response->rows[$i]['sName'] = "@@{$var['sName']}"; diff --git a/workflow/engine/methods/processes/processes_Ajax.php b/workflow/engine/methods/processes/processes_Ajax.php index fcca140b9..f002aee20 100644 --- a/workflow/engine/methods/processes/processes_Ajax.php +++ b/workflow/engine/methods/processes/processes_Ajax.php @@ -110,7 +110,7 @@ try { $resultProcess = $infoProcess->getProcessRow($proUid); } - $oProcessMap = new ProcessMap(new DBConnection()); + $oProcessMap = new ProcessMap(); switch ($_REQUEST['action']) { case 'load': diff --git a/workflow/engine/methods/triggers/triggers_Save.php b/workflow/engine/methods/triggers/triggers_Save.php index 2e729cbaa..cfaa0f07d 100644 --- a/workflow/engine/methods/triggers/triggers_Save.php +++ b/workflow/engine/methods/triggers/triggers_Save.php @@ -32,7 +32,7 @@ if (isset( $sfunction ) && $sfunction == 'lookforNameTrigger') { try { $oTrigger = new Triggers(); - $oProcessMap = new ProcessMap( new DBConnection() ); + $oProcessMap = new ProcessMap(); if (isset( $_POST['form'] )) { $value = $_POST['form']; } else { @@ -84,10 +84,6 @@ if (isset( $sfunction ) && $sfunction == 'lookforNameTrigger') { G::auditLog("UpdateTrigger", $description); } - //if (! isset( $_POST['mode'] )) { - // $oProcessMap->triggersList( $value['PRO_UID'] ); - //} - $response["success"] = true; $response["msg"] = G::LoadTranslation("ID_TRIGGERS_SAVED"); } catch (Exception $e) { diff --git a/workflow/engine/methods/triggers/triggers_WizardSave.php b/workflow/engine/methods/triggers/triggers_WizardSave.php index c92b0bfbc..45f866d45 100644 --- a/workflow/engine/methods/triggers/triggers_WizardSave.php +++ b/workflow/engine/methods/triggers/triggers_WizardSave.php @@ -8,7 +8,7 @@ if (!class_exists('Triggers')) { } $triggers = new Triggers(); -$processMap = new ProcessMap(new DBConnection()); +$processMap = new ProcessMap(); $post = $_POST; diff --git a/workflow/engine/methods/triggers/triggers_WizardUpdate.php b/workflow/engine/methods/triggers/triggers_WizardUpdate.php index 41ccb7fca..e62d5f6f1 100644 --- a/workflow/engine/methods/triggers/triggers_WizardUpdate.php +++ b/workflow/engine/methods/triggers/triggers_WizardUpdate.php @@ -8,7 +8,7 @@ if (!class_exists('Triggers')) { } $triggers = new Triggers(); -$processMap = new ProcessMap(new DBConnection()); +$processMap = new ProcessMap(); $post = $_POST; diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 91f771ef7..1887db72d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -2208,7 +2208,7 @@ class Cases /** * Get all Tasks of Case * Based in: processmaker/workflow/engine/classes/class.processMap.php - * Method: processMap::load() + * Method: processMap::load() * * @param string $applicationUid Unique id of Case * diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/FilesManager.php b/workflow/engine/src/ProcessMaker/BusinessModel/FilesManager.php index bcab85cc2..2bd551574 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/FilesManager.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/FilesManager.php @@ -783,7 +783,7 @@ class FilesManager $sMainDirectory = 'public'; } if (file_exists($path)) { - $oProcessMap = new \ProcessMap(new \DBConnection()); + $oProcessMap = new \ProcessMap(); $oProcessMap->downloadFile($sProcessUID,$sMainDirectory,$sSubDirectory,$sFile); die(); } else {