include/database/DBManager.php
\DBManager
Base database driver implementation
- Children
- \MssqlManager
- \MysqlManager
- Api
Properties

$capabilities= 'array()'
Capabilities this DB supports. Supported list: affected_rows Can report query affected rows for UPDATE/DELETE implement getAffectedRowCount() select_rows Can report row count for SELECT implement getRowCount() case_sensitive Supports case-sensitive text columns fulltext Supports fulltext search indexes inline_keys Supports defining keys together with the table auto_increment_sequence Autoincrement support implemented as sequence limit_subquery Supports LIMIT clauses in subqueries create_user Can create users for Sugar create_db Can create databases collation Supports setting collations disable_keys Supports temporarily disabling keys (for upgrades, etc.)
array()Details- Type
- n/a
- Abstract
- Special cases: fix:expandDatabase - needs expandDatabase fix, see expandDatabase.php TODO: verify if we need these cases

$dieOnError= 'false'
Indicates whether we should die when we get an error from the DB
falseDetails- Type
- n/a

$encode= 'true'
Indicates whether we should html encode the results from a query by default
trueDetails- Type
- n/a

array
$index_descriptions= 'array()'
Index descriptions
array()Details- Type
- array

array
$maxNameLengths= 'array(
'table' => 64,
'column' => 64,
'index' => 64,
'alias' => 64
)'
Maximum length of identifiers
array(
'table' => 64,
'column' => 64,
'index' => 64,
'alias' => 64
)Details- Type
- array
- Abstract

$preparedTokens= 'array()'
Array of prepared statements and their correspoding parsed tokens
array()Details- Type
- n/a

int
$priority= '0'
DB driver priority Higher priority drivers override lower priority ones
0Details- Type
- int

$standardQueries= 'array(
'ALTER TABLE' => 'verifyAlterTable',
'DROP TABLE' => 'verifyDropTable',
'CREATE TABLE' => 'verifyCreateTable',
'INSERT INTO' => 'verifyInsertInto',
'UPDATE' => 'verifyUpdate',
'DELETE FROM' => 'verifyDeleteFrom',
)'
array(
'ALTER TABLE' => 'verifyAlterTable',
'DROP TABLE' => 'verifyDropTable',
'CREATE TABLE' => 'verifyCreateTable',
'INSERT INTO' => 'verifyInsertInto',
'UPDATE' => 'verifyUpdate',
'DELETE FROM' => 'verifyDeleteFrom',
)Details- Type
- n/a

array
$table_descriptions= 'array()'
Table descriptions
array()Details- Type
- array

array
$type_class= 'array(
'int' => 'int',
'double' => 'float',
'float' => 'float',
'uint' => 'int',
'ulong' => 'bigint',
'long' => 'bigint',
'short' => 'int',
'date' => 'date',
'datetime' => 'date',
'datetimecombo' => 'date',
'time' => 'time',
'bool' => 'bool',
'tinyint' => 'int',
'currency' => 'float',
'decimal' => 'float',
'decimal2' => 'float',
)'
Type classification into: - int - bool - float - date
array(
'int' => 'int',
'double' => 'float',
'float' => 'float',
'uint' => 'int',
'ulong' => 'bigint',
'long' => 'bigint',
'short' => 'int',
'date' => 'date',
'datetime' => 'date',
'datetimecombo' => 'date',
'time' => 'time',
'bool' => 'bool',
'tinyint' => 'int',
'currency' => 'float',
'decimal' => 'float',
'decimal2' => 'float',
)Details- Type
- array
- Abstract
Methods

__get(
string $p
)
:
mixedWrapper for those trying to access the private and protected class members directly
| Name | Type | Description |
|---|---|---|
| $p | string | var name |
| Type | Description |
|---|---|
| mixed |

_emptyValue(
mixed $val, string $type
)
:
boolCheck if the value is empty value for this type
| Name | Type | Description |
|---|---|---|
| $val | mixed | Value |
| $type | string | Type (one of vardef types) |
| Type | Description |
|---|---|
| bool | true if the value if empty |

_getBooleanValue(
mixed $val
)
:
boolGet truth value for boolean type Allows 'off' to mean false, along with all 'empty' values
| Name | Type | Description |
|---|---|---|
| $val | mixed |
| Type | Description |
|---|---|
| bool |

addColumn(
string $tablename, array $fieldDefs
)
:
boolAdds a column to table identified by field def.
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $fieldDefs | array |
| Type | Description |
|---|---|
| bool | query result |

addColumnSQL(
string $tablename, array $fieldDefs
)
:
stringThis method generates sql for adding a column to table identified by field def.
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $fieldDefs | array |
| Type | Description |
|---|---|
| string | SQL statement |

addDistinctClause(
string $sql
)
:
voidaddDistinctClause This method takes a SQL statement and checks if the disable_count_query setting is enabled before altering it. The alteration modifies the way the team security queries are made by changing it from a subselect to a distinct clause; hence the name of the method.
| Name | Type | Description |
|---|---|---|
| $sql | string | value of SQL statement to alter |

addIndexes(
string $tablename, array $indexes, bool $execute
=
true
)
:
stringAdds a new indexes
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $indexes | array | indexes to add |
| $execute | bool | true if we want to execute the returned sql statement |
| Type | Description |
|---|---|
| string | SQL statement |

add_drop_constraint(
string $table, array $definition, bool $drop
=
false
)
:
stringGenerates alter constraint statement given a table name and vardef definition.
Supports both adding and droping a constraint.
| Name | Type | Description |
|---|---|---|
| $table | string | tablename |
| $definition | array | field definition |
| $drop | bool | true if we are dropping the constraint, false if we are adding it |
| Type | Description |
|---|---|
| string | SQL statement |

alterColumn(
string $tablename, array $newFieldDef, bool $ignoreRequired
=
false
)
:
boolAlters old column identified by oldFieldDef to new fieldDef.
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $newFieldDef | array | |
| $ignoreRequired | bool | optional, true if we are ignoring this being a required field |
| Type | Description |
|---|---|
| bool | query result |

alterColumnSQL(
string $tablename, array $newFieldDefs, bool $ignorerequired
=
false
)
:
string | arrayThis method genrates sql for altering old column identified by oldFieldDef to new fieldDef.
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $newFieldDefs | array | |
| $ignorerequired | bool | Optional, true if we should ignor this being a required field |
| Type | Description |
|---|---|
| string | array | SQL statement(s) |

arrayQuote(
array $array
)
:
arrayQuote the strings of the passed in array
The array must only contain strings
| Name | Type | Description |
|---|---|---|
| $array | array |
| Type | Description |
|---|---|
| array | Quoted strings |

auditSQL(
\SugarBean $bean, array $changes
)
:
stringGenerate query for audit table
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean that was changed |
| $changes | array | List of changes, contains 'before' and 'after' |
| Type | Description |
|---|---|
| string | Audit table INSERT query |

canInstall(
)
:
mixedCheck special requirements for DB installation.
| Type | Description |
|---|---|
| mixed |
- Abstract
- If everything is OK, return true. If something's wrong, return array of error code and parameters

changeColumnSQL(
string $tablename, array $fieldDefs, string $action, bool $ignoreRequired
=
false
)
:
string | arrayGenerates the SQL for changing columns
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $fieldDefs | array | |
| $action | string | |
| $ignoreRequired | bool | Optional, true if we should ignor this being a required field |
| Type | Description |
|---|---|
| string | array |

checkError(
string $msg
=
'', bool $dieOnError
=
false
)
:
boolChecks for error happening in the database
| Name | Type | Description |
|---|---|---|
| $msg | string | message to prepend to the error message |
| $dieOnError | bool | true if we want to die immediately on error |
| Type | Description |
|---|---|
| bool | True if there was an error |

checkPrivilege(
string $privilege
)
:
boolCheck if connecting user has certain privilege
| Name | Type | Description |
|---|---|---|
| $privilege | string |
| Type | Description |
|---|---|
| bool | Privilege allowed? |

checkQuery(
string $sql, bool $object_name
=
false
)
:
boolScans order by to ensure that any field being ordered by is.
It will throw a warning error to the log file - fatal if slow query logging is enabled
| Name | Type | Description |
|---|---|---|
| $sql | string | query to be run |
| $object_name | bool | optional, object to look up indices in |
| Type | Description |
|---|---|
| bool | true if an index is found false otherwise |

columnSQLRep(
array $fieldDefs, bool $ignoreRequired
=
false, string $tablename
)
:
stringReturns SQL defintions for all columns in a table
| Name | Type | Description |
|---|---|---|
| $fieldDefs | array | Vardef-format field def |
| $ignoreRequired | bool | Optional, true if we should ignor this being a required field |
| $tablename | string | Optional, table name |
| Type | Description |
|---|---|
| string | SQL column definitions |

commit(
)
:
boolCommits pending changes to the database when the driver is setup to support transactions.
Note that the default implementation is applicable for transaction-less or auto commit scenarios.
| Type | Description |
|---|---|
| bool | true if commit succeeded, false if it failed |
- Abstract

compareFieldInTables(
string $name, string $table1, string $table2
)
:
arrayCompare a field in two tables
| Name | Type | Description |
|---|---|---|
| $name | string | field name |
| $table1 | string | |
| $table2 | string |
| Type | Description |
|---|---|
| array | array with keys 'msg','table1','table2' |
- Deprecated

compareVarDefs(
array $fielddef1, array $fielddef2, bool $ignoreName
=
false
)
:
boolCompares two vardefs
| Name | Type | Description |
|---|---|---|
| $fielddef1 | array | This is from the database |
| $fielddef2 | array | This is from the vardef |
| $ignoreName | bool | Ignore name-only differences? |
| Type | Description |
|---|---|
| bool | true if they match, false if they don't |

concat(
string $table, array $fields, string $space
=
' '
)
:
stringReturns the database string needed for concatinating multiple database strings together
| Name | Type | Description |
|---|---|---|
| $table | string | table name of the database fields to concat |
| $fields | array | fields in the table to concat together |
| $space | string | Separator between strings, default is single space |
| Type | Description |
|---|---|
| string |

connect(
array $configOptions
=
null, boolean $dieOnError
=
false
)
:
voidConnects to the database backend
Takes in the database settings and opens a database connection based on those will open either a persistent or non-persistent connection. If a persistent connection is desired but not available it will defualt to non-persistent
configOptions must include db_host_name - server ip db_user_name - database user name db_password - database password
| Name | Type | Description |
|---|---|---|
| $configOptions | array | |
| $dieOnError | boolean |

convert(
string $string, string $type, array $additional_parameters
=
array()
)
:
stringUse when you need to convert a database string to a different value; this function does it in a database-backend aware way Supported conversions: today return current date left Take substring from the left date_format Format date as string, supports %Y-%m-%d, %Y-%m, %Y time_format Format time as string date Convert date string to datetime value time Convert time string to datetime value datetime Convert datetime string to datetime value ifnull If var is null, use default value concat Concatenate strings quarter Quarter number of the date length Length of string month Month number of the date add_date Add specified interval to a date add_time Add time interval to a date text2char Convert text field to varchar
| Name | Type | Description |
|---|---|---|
| $string | string | database string to convert |
| $type | string | type of conversion to do |
| $additional_parameters | array | optional, additional parameters to pass to the db function |
| Type | Description |
|---|---|
| string |

createConstraintSql(
\SugarBean $bean
)
:
arrayreturns SQL to create constraints or indices
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| Type | Description |
|---|---|
| array | list of SQL statements |

createDatabase(
string $dbname
)
:
voidCreate a database
| Name | Type | Description |
|---|---|---|
| $dbname | string |

createDbUser(
string $database_name, string $host_name, string $user, string $password
)
:
voidCreate DB user
| Name | Type | Description |
|---|---|---|
| $database_name | string | |
| $host_name | string | |
| $user | string | |
| $password | string |

createIndex(
\SugarBean $bean, array $fieldDefs, string $name, bool $unique
=
true
)
:
boolCreates an index identified by name on the given fields.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| $fieldDefs | array | Field definitions, in vardef format |
| $name | string | index name |
| $unique | bool | optional, true if we want to create an unique index |
| Type | Description |
|---|---|
| bool | query result |

createIndexSQL(
\SugarBean $bean, array $fields, string $name, bool $unique
=
true
)
:
stringGenerates SQL for create index statement for a bean.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| $fields | array | fields used in the index |
| $name | string | index name |
| $unique | bool | Optional, set to true if this is an unique index |
| Type | Description |
|---|---|
| string | SQL Select Statement |

createTable(
\SugarBean $bean
)
:
voidImplements creation of a db table for a bean.
NOTE: does not handle out-of-table constraints, use createConstraintSQL for that
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | Sugarbean instance |

createTableParams(
string $tablename, array $fieldDefs, array $indices, string $engine
=
null
)
:
boolImplements creation of a db table
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $fieldDefs | array | Field definitions, in vardef format |
| $indices | array | Index definitions, in vardef format |
| $engine | string | Engine parameter, used for MySQL engine so far |
| Type | Description |
|---|---|
| bool | success value |
- Todo
- : refactor engine param to be more generic

createTableSQL(
\SugarBean $bean
)
:
stringGenerates sql for create table statement for a bean.
NOTE: does not handle out-of-table constraints, use createConstraintSQL for that
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| Type | Description |
|---|---|
| string | SQL Create Table statement |

createTableSQLParams(
string $tablename, array $fieldDefs, array $indices
)
:
stringGenerates sql for create table statement for a bean.
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $fieldDefs | array | |
| $indices | array |
| Type | Description |
|---|---|
| string | SQL Create Table statement |

dbExists(
string $dbname
)
:
voidCheck if certain database exists
| Name | Type | Description |
|---|---|---|
| $dbname | string |

delete(
\SugarBean $bean, array $where
=
array()
)
:
boolImplements a generic delete for any bean identified by id
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | Sugarbean instance |
| $where | array | values with the keys as names of fields. If we want to pass multiple values for a name, pass it as an array If where is not passed, it defaults to id of table |
| Type | Description |
|---|---|
| bool | query result |

deleteAutoIncrement(
string $table, string $field_name
)
:
voidDeletes an auto increment
| Name | Type | Description |
|---|---|---|
| $table | string | tablename |
| $field_name | string |
- Abstract

deleteColumn(
\SugarBean $bean, array $fieldDefs
)
:
boolDeletes a column identified by fieldDef.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean containing the field |
| $fieldDefs | array | Vardef definition of the field |
| Type | Description |
|---|---|
| bool | query result |

deleteColumnSQL(
\SugarBean $bean, array $fieldDefs
)
:
stringThis method generates sql that deletes a column identified by fieldDef.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | Sugarbean instance |
| $fieldDefs | array |
| Type | Description |
|---|---|
| string | SQL statement |

deleteSQL(
\SugarBean $bean, array $where
)
:
stringGenerates SQL for delete statement identified by id.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| $where | array | where conditions in an array |
| Type | Description |
|---|---|
| string | SQL Update Statement |

describeField(
string $name, string $tablename
)
:
arrayReturns the field description for a given field in table
| Name | Type | Description |
|---|---|---|
| $name | string | |
| $tablename | string |
| Type | Description |
|---|---|
| array |

describeIndex(
string $name, string $tablename
)
:
arrayReturns the index description for a given index in table
| Name | Type | Description |
|---|---|---|
| $name | string | |
| $tablename | string |
| Type | Description |
|---|---|
| array |

disableKeys(
string $tableName
)
:
voidDisable keys on the table
| Name | Type | Description |
|---|---|---|
| $tableName | string |
- Abstract

dropColumnSQL(
string $tablename, array $fieldDefs
)
:
stringThis method generates sql that drops a column identified by fieldDef.
Designed to work like the other addColumnSQL() and alterColumnSQL() functions
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $fieldDefs | array |
| Type | Description |
|---|---|
| string | SQL statement |

dropDatabase(
string $dbname
)
:
voidDrop a database
| Name | Type | Description |
|---|---|---|
| $dbname | string |

dropIndexes(
string $tablename, array $indexes, bool $execute
=
true
)
:
stringDrops indexes
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $indexes | array | indexes to drop |
| $execute | bool | true if we want to execute the returned sql statement |
| Type | Description |
|---|---|
| string | SQL statement |

dropTable(
\SugarBean $bean
)
:
boolDrops the table associated with a bean
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| Type | Description |
|---|---|
| bool | query result |

dropTableName(
string $name
)
:
boolDrops the table by name
| Name | Type | Description |
|---|---|---|
| $name | string | Table name |
| Type | Description |
|---|---|
| bool | query result |

dropTableNameSQL(
string $name
)
:
stringGenerates SQL for dropping a table.
| Name | Type | Description |
|---|---|---|
| $name | string | table name |
| Type | Description |
|---|---|
| string | SQL statement |

dropTableSQL(
\SugarBean $bean
)
:
stringGenerates SQL for dropping a table.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | Sugarbean instance |
| Type | Description |
|---|---|
| string | SQL statement |

dump_slow_queries(
string $query
)
:
booleanThis method is called by every method that runs a query.
If slow query dumping is turned on and the query time is beyond the time limit, we will log the query. This function may do additional reporting or log in a different area in the future.
| Name | Type | Description |
|---|---|---|
| $query | string | query to log |
| Type | Description |
|---|---|
| boolean | true if the query was logged, false otherwise |

emptyValue(
string $type
)
:
mixedReturn representation of an empty value depending on type The value is fully quoted, converted, etc.
| Name | Type | Description |
|---|---|---|
| $type | string |
| Type | Description |
|---|---|
| mixed | Empty value |

enableKeys(
string $tableName
)
:
voidRe-enable keys on the table
| Name | Type | Description |
|---|---|---|
| $tableName | string |
- Abstract

escape_quote(
string $string
)
:
stringQuotes a string for storing in the database
| Name | Type | Description |
|---|---|---|
| $string | string |
| Type | Description |
|---|---|
| string |
- Deprecated
- Return value will be not surrounded by quotes

executePreparedQuery(
int $stmt, array $data
=
array()
)
:
resourceTakes a prepared stmt index and the data to replace and creates the query and runs it.
| Name | Type | Description |
|---|---|---|
| $stmt | int | The index of the prepared statement from preparedTokens |
| $data | array | The array of data to replace the tokens with. |
| Type | Description |
|---|---|
| resource | result set or false on error |

extractTableName(
string $query
)
:
stringExtract table name from a query
| Name | Type | Description |
|---|---|---|
| $query | string | SQL query |
| Type | Description |
|---|---|
| string |

fetchByAssoc(
resource $result, bool $encode
=
true
)
:
arrayFetches the next row in the query result into an associative array
| Name | Type | Description |
|---|---|---|
| $result | resource | |
| $encode | bool | Need to HTML-encode the result? |
| Type | Description |
|---|---|
| array | returns false if there are no more rows available to fetch |

fetchOne(
string $sql, bool $dieOnError
=
false, string $msg
=
'', bool $suppress
=
false
)
:
arrayRuns a query and returns a single row
| Name | Type | Description |
|---|---|---|
| $sql | string | SQL Statement to execute |
| $dieOnError | bool | True if we want to call die if the query returns errors |
| $msg | string | Message to log if error occurs |
| $suppress | bool | Message to log if error occurs |
| Type | Description |
|---|---|
| array | single row from the query |

fetchRow(
resource $result
)
:
arrayFetches the next row in the query result into an associative array
| Name | Type | Description |
|---|---|---|
| $result | resource |
| Type | Description |
|---|---|
| array | returns false if there are no more rows available to fetch |

freeDbResult(
resource $dbResult
)
:
voidFree Database result
| Name | Type | Description |
|---|---|---|
| $dbResult | resource |

freeResult(
resource | bool $result
=
false
)
:
voidFrees out previous results
| Name | Type | Description |
|---|---|---|
| $result | resource | bool | optional, pass if you want to free a single result instead of all results |

fromConvert(
string $string, string $type
)
:
stringConverts from Database data to app data
Supported types - date - time - datetime - datetimecombo - timestamp
| Name | Type | Description |
|---|---|---|
| $string | string | database string to convert |
| $type | string | type of conversion to do |
| Type | Description |
|---|---|
| string |

full_text_indexing_installed(
)
:
boolCheck if the database supports fulltext indexing Note that database driver can be capable of supporting FT (see supports('fulltext)) but particular instance can still have it disabled
| Type | Description |
|---|---|
| bool |

generateInsertSQL(
\SugarBean $bean, string $select_query, int $start, int $count
=
-1, string $table, bool $is_related_query
=
false
)
:
stringGenerate a set of Insert statements based on the bean given
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | the bean from which table we will generate insert stmts |
| $select_query | string | the query which will give us the set of objects we want to place into our insert statement |
| $start | int | the first row to query |
| $count | int | the number of rows to query |
| $table | string | the table to query from |
| $is_related_query | bool |
| Type | Description |
|---|---|
| string | SQL insert statement |
- Deprecated

getAffectedRowCount(
resource $result
)
:
intReturns the number of rows affected by the last query
| Name | Type | Description |
|---|---|---|
| $result | resource | query result resource |
| Type | Description |
|---|---|
| int |
- Abstract
- See also affected_rows capability, will return 0 unless the DB supports it

getAutoIncrement(
string $table, string $field_name
)
:
stringReturns the next value for an auto increment
| Name | Type | Description |
|---|---|---|
| $table | string | Table name |
| $field_name | string | Field name |
| Type | Description |
|---|---|
| string |
- Abstract

getAutoIncrementSQL(
string $table, string $field_name
)
:
stringReturns the sql for the next value in a sequence
| Name | Type | Description |
|---|---|---|
| $table | string | Table name |
| $field_name | string | Field name |
| Type | Description |
|---|---|
| string |
- Abstract

getCollationList(
)
:
arrayList of available collation settings
| Type | Description |
|---|---|
| array |
- Abstract

getColumnType(
string $type
)
:
stringReturns the valid type for a column given the type in fieldDef
| Name | Type | Description |
|---|---|---|
| $type | string | field type |
| Type | Description |
|---|---|
| string | valid type for the given field |

getColumnWhereClause(
string $table, array $whereArray
=
array()
)
:
stringReturns a where clause without the 'where' key word
The clause returned does not have an 'and' at the beginning and the columns are joined by 'and'.
| Name | Type | Description |
|---|---|---|
| $table | string | table name |
| $whereArray | array | Optional, where conditions in an array |
| Type | Description |
|---|---|
| string |

getConstraintSql(
array $indices, string $table
)
:
arrayreturns a SQL query that creates the indices as defined in metadata
| Name | Type | Description |
|---|---|---|
| $indices | array | Assoc array with index definitions from vardefs |
| $table | string | Focus table |
| Type | Description |
|---|---|
| array | Array of SQL queries to generate indices |

getDataChanges(
\SugarBean $bean
)
:
arrayUses the audit enabled fields array to find fields whose value has changed.
The before and after values are stored in the bean. Uses $bean->fetched_row to compare
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | Sugarbean instance that was changed |
| Type | Description |
|---|---|
| array |

getDbInfo(
)
:
array | nullGet database configuration information (DB-dependent)
| Type | Description |
|---|---|
| array | null |

getDefaultCollation(
)
:
stringList of available collation settings
| Type | Description |
|---|---|
| string |
- Abstract

getFieldNameFromSelect(
string $string
)
:
stringreturns the field name used in a select
| Name | Type | Description |
|---|---|---|
| $string | string | SELECT query |
| Type | Description |
|---|---|
| string |

getFieldType(
array $fieldDef
)
:
stringReturns the type of the variable in the field
| Name | Type | Description |
|---|---|---|
| $fieldDef | array | Vardef-format field def |
| Type | Description |
|---|---|
| string |

getFieldsArray(
resource $result, boolean $make_lower_case
=
false
)
:
arrayReturns the description of fields based on the result
| Name | Type | Description |
|---|---|---|
| $result | resource | |
| $make_lower_case | boolean |
| Type | Description |
|---|---|
| array | field array |

getFromDummyTable(
)
:
stringReturns a DB specific FROM clause which can be used to select against functions.
Note that depending on the database that this may also be an empty string.
| Type | Description |
|---|---|
| string |
- Abstract

getFulltextQuery(
string $field, array $terms, array $must_terms
=
array(), array $exclude_terms
=
array()
)
:
voidGenerate fulltext query from set of terms
| Name | Type | Description |
|---|---|---|
| $field | string | Field to search against |
| $terms | array | Search terms that may be or not be in the result |
| $must_terms | array | Search terms that have to be in the result |
| $exclude_terms | array | Search terms that have to be not in the result |

getGuidSQL(
)
:
stringReturns a DB specific piece of SQL which will generate GUID (UUID) This string can be used in dynamic SQL to do multiple inserts with a single query.
I.e. generate a unique Sugar id in a sub select of an insert statement.
| Type | Description |
|---|---|
| string |
- Abstract

getHelper(
)
:
\DBManagerReturns this instance's DBHelper Actually now returns $this
| Type | Description |
|---|---|
| \DBManager |
- Deprecated

getOne(
string $sql, bool $dieOnError
=
false, string $msg
=
''
)
:
arrayRuns a query and returns a single row containing single value
| Name | Type | Description |
|---|---|---|
| $sql | string | SQL Statement to execute |
| $dieOnError | bool | True if we want to call die if the query returns errors |
| $msg | string | Message to log if error occurs |
| Type | Description |
|---|---|
| array | single value from the query |

getOption(
string $option
)
:
mixedGet DB option by name
| Name | Type | Description |
|---|---|---|
| $option | string | Option name |
| Type | Description |
|---|---|
| mixed | Option value or null if doesn't exist |

getQueryCount(
)
:
intReturns the static queryCount value
| Type | Description |
|---|---|
| int | value of the queryCount static variable |

getRowCount(
resource $result
)
:
intReturns the number of rows returned by the result
This function can't be reliably implemented on most DB, do not use it.
| Name | Type | Description |
|---|---|---|
| $result | resource |
| Type | Description |
|---|---|
| int |
- Abstract
- Deprecated

getScriptName(
)
:
stringGet DB driver name used for install/upgrade scripts
| Type | Description |
|---|---|
| string |

getSelectFieldsFromQuery(
string $selectStatement
)
:
arrayTake an SQL statement and produce a list of fields used in that select
| Name | Type | Description |
|---|---|---|
| $selectStatement | string |
| Type | Description |
|---|---|
| array |

getTableDescription(
string $tablename, bool $reload
=
false
)
:
arrayGet table description
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $reload | bool | true means load from DB, false allows using cache |
| Type | Description |
|---|---|
| array | Vardef-format table description |

getTablesArray(
)
:
array | falseReturns an array of tables for this database
| Type | Description |
|---|---|
| array | false | an array of with table names, false if no tables found |

getTypeParts(
string $type
)
:
array | boolretrieves the different components from the passed column type as it is used in the type mapping and vardefs
type format:
| Name | Type | Description |
|---|---|---|
| $type | string | Column type |
| Type | Description |
|---|---|
| array | bool | array containing the different components of the passed in type or false in case the type contains illegal characters |

getValidDBName(
string | array $name, bool | string $ensureUnique
=
false, string $type
=
'column', bool $force
=
false
)
:
string | arrayReturn a version of $proposed that can be used as a column name in any of our supported databases Practically this means no longer than 25 characters as the smallest identifier length for our supported DBs is 30 chars for Oracle plus we add on at least four characters in some places (for indicies for example)
| Name | Type | Description |
|---|---|---|
| $name | string | array | Proposed name for the column |
| $ensureUnique | bool | string | Ensure the name is unique |
| $type | string | Name type (table, column) |
| $force | bool | Force new name |
| Type | Description |
|---|---|
| string | array | Valid column name trimmed to right length and with invalid characters removed |

getWhereClause(
\SugarBean $bean, array $whereArray
=
array()
)
:
stringThis method returns a complete where clause built from the where values specified.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean that describes the table |
| $whereArray | array | Optional, where conditions in an array |
| Type | Description |
|---|---|
| string |

get_columns(
string $tablename
)
:
arrayReturns definitions of all indies for passed table.
return will is a multi-dimensional array that categorizes the index definition by types, unique, primary and index.
array (
'name' => 'field1',
'type' => 'varchar',
'len' => '200'
)
)
?>
This format is similar to how indicies are defined in vardef file.
| Name | Type | Description |
|---|---|---|
| $tablename | string |
| Type | Description |
|---|---|
| array |

get_indices(
string $tablename
)
:
arrayReturns definitions of all indies for passed table.
return will is a multi-dimensional array that categorizes the index definition by types, unique, primary and index.
array (
'name' => 'index1',
'type' => 'primary',
'fields' => array('field1','field2')
)
)
?>
This format is similar to how indicies are defined in vardef file.
| Name | Type | Description |
|---|---|---|
| $tablename | string |
| Type | Description |
|---|---|
| array |

hasLimit(
string $sql
)
:
bool| Name | Type | Description |
|---|---|---|
| $sql | string |
| Type | Description |
|---|---|
| bool |
- Abstract
- Check if query has LIMIT clause Relevant for now only for Mysql

insert(
\SugarBean $bean
)
:
boolImplements a generic insert for any bean.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| Type | Description |
|---|---|
| bool | query result |

insertParams(
string $table, array $field_defs, array $data, array $field_map
=
null, bool $execute
=
true
)
:
boolInsert data into table by parameter definition
| Name | Type | Description |
|---|---|---|
| $table | string | Table name |
| $field_defs | array | Definitions in vardef-like format |
| $data | array | Key/value to insert |
| $field_map | array | Fields map from SugarBean |
| $execute | bool | Execute or return query? |
| Type | Description |
|---|---|
| bool | query result |

insertSQL(
\SugarBean $bean
)
:
stringGenerates SQL for insert statement.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| Type | Description |
|---|---|
| string | SQL Create Table statement |

installConfig(
)
:
arrayGet install configuration for this DB
| Type | Description |
|---|---|
| array |

isBooleanType(
string $type
)
:
boolCheck if type is boolean
| Name | Type | Description |
|---|---|---|
| $type | string |
| Type | Description |
|---|---|
| bool |

isDatabaseNameValid(
string $name
)
:
boolCheck if this DB name is valid
| Name | Type | Description |
|---|---|---|
| $name | string |
| Type | Description |
|---|---|
| bool |

isFieldArray(
mixed $defArray
)
:
boolChecks to see if passed array is truely an array of defitions
Such an array may have type as a key but it will point to an array for a true array of definitions an to a col type for a definition only
| Name | Type | Description |
|---|---|---|
| $defArray | mixed |
| Type | Description |
|---|---|
| bool |

isNullable(
array $vardef
)
:
boolCan this field be null? Auto-increment and ID fields can not be null
| Name | Type | Description |
|---|---|---|
| $vardef | array |
| Type | Description |
|---|---|
| bool |

isNumericType(
string $type
)
:
boolCheck if type is a number
| Name | Type | Description |
|---|---|---|
| $type | string |
| Type | Description |
|---|---|
| bool |

isSelect(
string $query
)
:
boolCheck if the query is a select query
| Name | Type | Description |
|---|---|---|
| $query | string |
| Type | Description |
|---|---|
| bool | Is query SELECT? |

isTextType(
string $type
)
:
bool| Name | Type | Description |
|---|---|---|
| $type | string |
| Type | Description |
|---|---|
| bool |
- Abstract
- Does this type represent text (i.e., non-varchar) value?

lastDbError(
)
:
string | falseGet last database error This function should return last error as reported by DB driver and should return false if no error condition happened
| Type | Description |
|---|---|
| string | false | Error message or false if no error happened |

lastError(
)
:
stringReturn DB error message for the last query executed
| Type | Description |
|---|---|
| string | Last error message |

limitQuery(
string $sql, int $start, int $count, boolean $dieOnError
=
false, string $msg
=
'', bool $execute
=
true
)
:
resourceRuns a limit query: one where we specify where to start getting records and how many to get
| Name | Type | Description |
|---|---|---|
| $sql | string | SELECT query |
| $start | int | Starting row |
| $count | int | How many rows |
| $dieOnError | boolean | True if we want to call die if the query returns errors |
| $msg | string | Message to log if error occurs |
| $execute | bool | Execute or return SQL? |
| Type | Description |
|---|---|
| resource | query result |

limitQuerySql(
string $sql, int $start, int $count, bool $dieOnError
=
false, string $msg
=
''
)
:
resource | boolReturn limit query based on given query
| Name | Type | Description |
|---|---|---|
| $sql | string | |
| $start | int | |
| $count | int | |
| $dieOnError | bool | |
| $msg | string |
| Type | Description |
|---|---|
| resource | bool | query result |

massageFieldDef(
array $fieldDef, string $tablename
)
:
arrayMassages the field defintions to fill in anything else the DB backend may add
| Name | Type | Description |
|---|---|---|
| $fieldDef | array | |
| $tablename | string |
| Type | Description |
|---|---|
| array |

massageValue(
mixed $val, array $fieldDef
)
:
mixedOutputs a correct string for the sql statement according to value
| Name | Type | Description |
|---|---|---|
| $val | mixed | |
| $fieldDef | array | field definition |
| Type | Description |
|---|---|
| mixed |

modifyIndexes(
string $tablename, array $indexes, bool $execute
=
true
)
:
stringModifies indexes
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $indexes | array | indexes to modify |
| $execute | bool | true if we want to execute the returned sql statement |
| Type | Description |
|---|---|
| string | SQL statement |

now(
)
:
stringReturn current time in format fit for insertion into DB (with quotes)
| Type | Description |
|---|---|
| string |

number_of_columns(
string $table_name
)
:
intReturns the number of columns in a table
| Name | Type | Description |
|---|---|---|
| $table_name | string |
| Type | Description |
|---|---|
| int |

oneColumnSQLRep(
array $fieldDef, bool $ignoreRequired
=
false, string $table
=
'', bool $return_as_array
=
false
)
:
stringReturns the defintion for a single column
| Name | Type | Description |
|---|---|---|
| $fieldDef | array | Vardef-format field def |
| $ignoreRequired | bool | Optional, true if we should ignore this being a required field |
| $table | string | Optional, table name |
| $return_as_array | bool | Optional, true if we should return the result as an array instead of sql |
| Type | Description |
|---|---|
| string | or array if $return_as_array is true |

orderByEnum(
string $order_by, array $values, string $order_dir
)
:
stringCreate ORDER BY clause for ENUM type field
| Name | Type | Description |
|---|---|---|
| $order_by | string | Field name |
| $values | array | Possible enum value |
| $order_dir | string | Order direction, ASC or DESC |
| Type | Description |
|---|---|
| string |

pQuery(
string $sql, array $data
=
array()
)
:
resourceRun both prepare and execute without the client having to run both individually.
| Name | Type | Description |
|---|---|---|
| $sql | string | The sql to parse |
| $data | array | The array of data to replace the tokens with. |
| Type | Description |
|---|---|
| resource | result set or false on error |

parseFulltextQuery(
string $query
)
:
arrayParse fulltext search query with mysql syntax: terms quoted by "" + means the term must be included - means the term must be excluded * or % at the end means wildcard
| Name | Type | Description |
|---|---|---|
| $query | string |
| Type | Description |
|---|---|
| array | of 3 elements - query terms, mandatory terms and excluded terms |

prepareQuery(
string $sql
)
:
intGiven a sql stmt attempt to parse it into the sql and the tokens. Then return the index of this prepared statement Tokens can come in the following forms: ? - a scalar which will be quoted ! - a literal which will not be quoted & - binary data to read from a file
| Name | Type | Description |
|---|---|---|
| $sql | string | The sql to parse |
| Type | Description |
|---|---|
| int | index of the prepared statement to be used with execute |

query(
string $sql, bool $dieOnError
=
false, string $msg
=
'', bool $suppress
=
false, bool $keepResult
=
false
)
:
resource | boolParses and runs queries
| Name | Type | Description |
|---|---|---|
| $sql | string | SQL Statement to execute |
| $dieOnError | bool | True if we want to call die if the query returns errors |
| $msg | string | Message to log if error occurs |
| $suppress | bool | Flag to suppress all error output unless in debug logging mode. |
| $keepResult | bool | Keep query result in the object? |
| Type | Description |
|---|---|
| resource | bool | result set or success/failure bool |

queryArray(
array $sqls, bool $dieOnError
=
false, string $msg
=
'', bool $suppress
=
false
)
:
resource | boolExecute multiple queries one after another
| Name | Type | Description |
|---|---|---|
| $sqls | array | Queries |
| $dieOnError | bool | Die on error, passed to query() |
| $msg | string | Error message, passed to query() |
| $suppress | bool | Supress errors, passed to query() |
| Type | Description |
|---|---|
| resource | bool | result set or success/failure bool |

quote(
string $string
)
:
stringQuote string in DB-specific manner
| Name | Type | Description |
|---|---|---|
| $string | string |
| Type | Description |
|---|---|
| string |

quoteFormEmail(
string $string
)
:
stringQuotes a string for storing in the database
| Name | Type | Description |
|---|---|---|
| $string | string |
| Type | Description |
|---|---|
| string |
- Deprecated
- Return value will be not surrounded by quotes

quoteType(
string $type, string $value
)
:
stringQuote value according to type Numerics aren't quoted Dates are converted and quoted Rest is just quoted
| Name | Type | Description |
|---|---|---|
| $type | string | |
| $value | string |
| Type | Description |
|---|---|
| string | Quoted value |

quoted(
string $string
)
:
stringReturn string properly quoted with ''
| Name | Type | Description |
|---|---|---|
| $string | string |
| Type | Description |
|---|---|
| string |

registerError(
string $userMessage, string $message, bool $dieOnError
=
false
)
:
voidRegister database error If die-on-error flag is set, logs the message and dies, otherwise sets last_error to the message
| Name | Type | Description |
|---|---|---|
| $userMessage | string | Message from function user |
| $message | string | Message from SQL driver |
| $dieOnError | bool |

renameColumnSQL(
string $tablename, string $column, string $newname
)
:
voidRename column in the DB
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $column | string | |
| $newname | string |

renameIndexDefs(
array $old_definition, array $new_definition, string $table_name
)
:
stringRenames an index using fields definition
| Name | Type | Description |
|---|---|---|
| $old_definition | array | |
| $new_definition | array | |
| $table_name | string |
| Type | Description |
|---|---|
| string | SQL statement |

repairTable(
\SugarBean $bean, bool $execute
=
true
)
:
stringImplements repair of a db table for a bean.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| $execute | bool | true if we want the action to take place, false if we just want the sql returned |
| Type | Description |
|---|---|
| string | SQL statement or empty string, depending upon $execute |

repairTableParams(
string $tablename, array $fielddefs, array $indices, bool $execute
=
true, string $engine
=
null
)
:
stringBuilds the SQL commands that repair a table structure
| Name | Type | Description |
|---|---|---|
| $tablename | string | |
| $fielddefs | array | Field definitions, in vardef format |
| $indices | array | Index definitions, in vardef format |
| $execute | bool | optional, true if we want the queries executed instead of returned |
| $engine | string | optional, MySQL engine |
| Type | Description |
|---|---|
| string |
- Todo
- : refactor engine param to be more generic

retrieve(
\SugarBean $bean, array $where
=
array()
)
:
resourceImplements a generic retrieve for any bean identified by id
If we want to pass multiple values for a name, pass it as an array If where is not passed, it defaults to id of table
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | Sugarbean instance |
| $where | array | values with the keys as names of fields. |
| Type | Description |
|---|---|
| resource | result from the query |

retrieveSQL(
\SugarBean $bean, array $where
)
:
stringGenerates SQL for select statement for any bean identified by id.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| $where | array | where conditions in an array |
| Type | Description |
|---|---|
| string | SQL Select Statement |

retrieveView(
array $beans, array $cols
=
array(), array $where
=
array()
)
:
resourceImplements a generic retrieve for a collection of beans.
These beans will be joined in the sql by the key attribute of field defs. Currently, this function does support outer joins.
| Name | Type | Description |
|---|---|---|
| $beans | array | Sugarbean instance(s) |
| $cols | array | columns to be returned with the keys as names of bean as identified by get_class of bean. Values of this array is the array of fieldDefs to be returned for a bean. If an empty array is passed, all columns are selected. |
| $where | array | values with the keys as names of bean as identified by get_class of bean Each value at the first level is an array of values for that bean identified by name of fields. If we want to pass multiple values for a name, pass it as an array If where is not passed, all the rows will be returned. |
| Type | Description |
|---|---|
| resource |

retrieveViewSQL(
array $beans, array $cols
=
array(), array $whereClause
=
array()
)
:
stringThis method implements a generic sql for a collection of beans.
Currently, this function does not support outer joins.
| Name | Type | Description |
|---|---|---|
| $beans | array | Array of values returned by get_class method as the keys and a bean as the value for that key. These beans will be joined in the sql by the key attribute of field defs. |
| $cols | array | Optional, columns to be returned with the keys as names of bean as identified by get_class of bean. Values of this array is the array of fieldDefs to be returned for a bean. If an empty array is passed, all columns are selected. |
| $whereClause | array | Optional, values with the keys as names of bean as identified by get_class of bean. Each value at the first level is an array of values for that bean identified by name of fields. If we want to pass multiple values for a name, pass it as an array. If where is not passed, all the rows will be returned. |
| Type | Description |
|---|---|
| string | SQL Select Statement |

rollback(
)
:
boolRollsback pending changes to the database when the driver is setup to support transactions.
Note that the default implementation is applicable for transaction-less or auto commit scenarios. Since rollbacks cannot be done, this implementation always returns false.
| Type | Description |
|---|---|
| bool | true if rollback succeeded, false if it failed |
- Abstract

save_audit_records(
\SugarBean $bean, array $changes
)
:
boolSaves changes to module's audit table
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | Sugarbean instance that was changed |
| $changes | array | List of changes, contains 'before' and 'after' |
| Type | Description |
|---|---|
| bool | query result |

setAutoIncrement(
string $table, string $field_name
)
:
stringEither creates an auto increment through queries or returns sql for auto increment that can be appended to the end of column defination (mysql)
| Name | Type | Description |
|---|---|---|
| $table | string | Table name |
| $field_name | string | Field name |
| Type | Description |
|---|---|
| string |
- Abstract

setAutoIncrementStart(
string $table, string $field_name, int $start_value
)
:
stringSets the next auto-increment value of a column to a specific value.
| Name | Type | Description |
|---|---|---|
| $table | string | Table name |
| $field_name | string | Field name |
| $start_value | int | Starting autoincrement value |
| Type | Description |
|---|---|
| string |
- Abstract

setDieOnError(
bool $value
)
:
voidSets the dieOnError value
| Name | Type | Description |
|---|---|---|
| $value | bool |

setOptions(
array $options
)
:
\DBManagerSet database options Options are usually db-dependant and derive from $config['dbconfigoption']
| Name | Type | Description |
|---|---|---|
| $options | array |
| Type | Description |
|---|---|
| \DBManager |

setQueryLimit(
int $limit
)
:
voidThis function sets the query threshold limit
| Name | Type | Description |
|---|---|---|
| $limit | int | value of query threshold limit |

supports(
string $cap
)
:
boolCheck if this DB supports certain capability See $this->capabilities for the list
| Name | Type | Description |
|---|---|---|
| $cap | string |
| Type | Description |
|---|---|
| bool |

tableExists(
string $tableName
)
:
boolChecks if a table with the name $tableName exists and returns true if it does or false otherwise
| Name | Type | Description |
|---|---|---|
| $tableName | string |
| Type | Description |
|---|---|
| bool |

tablesLike(
string $like
)
:
arrayGet tables like expression
| Name | Type | Description |
|---|---|---|
| $like | string | Expression describing tables |
| Type | Description |
|---|---|
| array |

track_slow_queries(
string $query
)
:
voidTracks slow queries in the tracker database table
| Name | Type | Description |
|---|---|---|
| $query | string | value of query to track |

truncate(
string $string, int $len
)
:
stringTruncates a string to a given length
| Name | Type | Description |
|---|---|---|
| $string | string | |
| $len | int | length to trim to |
| Type | Description |
|---|---|
| string |

truncateTableSQL(
string $name
)
:
stringGenerates SQL for truncating a table.
| Name | Type | Description |
|---|---|---|
| $name | string | table name |
| Type | Description |
|---|---|
| string |

update(
\SugarBean $bean, array $where
=
array()
)
:
boolImplements a generic update for any bean
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | Sugarbean instance |
| $where | array | values with the keys as names of fields. If we want to pass multiple values for a name, pass it as an array If where is not passed, it defaults to id of table |
| Type | Description |
|---|---|
| bool | query result |

updateSQL(
\SugarBean $bean, array $where
=
array()
)
:
stringGenerates SQL for update statement.
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| $where | array | Optional, where conditions in an array |
| Type | Description |
|---|---|
| string | SQL Create Table statement |

updateWhereArray(
\SugarBean $bean, array $where
=
array()
)
:
arrayThis method returns a where array so that it has id entry if where is not an array or is empty
| Name | Type | Description |
|---|---|---|
| $bean | \SugarBean | SugarBean instance |
| $where | array | Optional, where conditions in an array |
| Type | Description |
|---|---|
| array |

userExists(
string $username
)
:
voidCheck if certain DB user exists
| Name | Type | Description |
|---|---|---|
| $username | string |

validColumnType(
string $type
)
:
boolreturns true if the type can be mapped to a valid column type
| Name | Type | Description |
|---|---|---|
| $type | string |
| Type | Description |
|---|---|
| bool |

validateQuery(
string $query
)
:
boolCheck if this query is valid Validates only SELECT queries
| Name | Type | Description |
|---|---|---|
| $query | string |
| Type | Description |
|---|---|
| bool |

verifyCreateTable(
string $table, string $query
)
:
stringTests an CREATE TABLE query
| Name | Type | Description |
|---|---|---|
| $table | string | The table name to get DDL |
| $query | string | The query to test. |
| Type | Description |
|---|---|
| string | Non-empty if error found |

verifySQLStatement(
string $query, array $skipTables
)
:
stringVerify SQl statement using per-DB verification function provided the function exists
| Name | Type | Description |
|---|---|---|
| $query | string | Query to verify |
| $skipTables | array | List of blacklisted tables that aren't checked |
| Type | Description |
|---|---|
| string |