dolibarr  17.0.4
TraceableDB.php
1 <?php
2 
3 require_once DOL_DOCUMENT_ROOT.'/core/db/DoliDB.class.php';
4 
10 class TraceableDB extends DoliDB
11 {
15  public $db; // cannot be protected because of parent declaration
19  public $queries;
23  protected $startTime;
27  protected $startMemory;
31  public $type;
35  const LABEL = ''; // TODO: the right value should be $this->db::LABEL (but this is a constant? o_O)
39  const VERSIONMIN = ''; // TODO: the same thing here, $this->db::VERSIONMIN is the right value
40 
46  public function __construct($db)
47  {
48  $this->db = $db;
49  $this->type = $this->db->type;
50  $this->queries = array();
51  }
52 
61  public function ifsql($test, $resok, $resko)
62  {
63  return $this->db->ifsql($test, $resok, $resko);
64  }
65 
66  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
73  public function fetch_row($resultset)
74  {
75  // phpcs:enable
76  return $this->db->fetch_row($resultset);
77  }
78 
87  public function idate($param, $gm = 'tzserver')
88  {
89  return $this->db->idate($param, $gm);
90  }
91 
97  public function lasterrno()
98  {
99  return $this->db->lasterrno();
100  }
101 
108  public function begin($textinlog = '')
109  {
110  return $this->db->begin($textinlog);
111  }
112 
124  public function DDLCreateDb($database, $charset = '', $collation = '', $owner = '')
125  {
126  return $this->db->DDLCreateDb($database, $charset, $collation, $owner);
127  }
128 
134  public function getVersionArray()
135  {
136  return $this->db->getVersionArray();
137  }
138 
146  public static function convertSQLFromMysql($line, $type = 'ddl')
147  {
148  return self::$db->convertSQLFromMysql($line);
149  }
150 
151  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
159  public function affected_rows($resultset)
160  {
161  // phpcs:enable
162  return $this->db->affected_rows($resultset);
163  }
164 
170  public function error()
171  {
172  return $this->db->error();
173  }
174 
182  public function DDLListTables($database, $table = '')
183  {
184  return $this->db->DDLListTables($database, $table);
185  }
186 
192  public function lastquery()
193  {
194  return $this->db->lastquery();
195  }
196 
204  public function order($sortfield = null, $sortorder = null)
205  {
206  return $this->db->order($sortfield, $sortorder);
207  }
208 
215  public function decrypt($value)
216  {
217  return $this->db->decrypt($value);
218  }
219 
220  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
227  public function fetch_array($resultset)
228  {
229  // phpcs:enable
230  return $this->db->fetch_array($resultset);
231  }
232 
238  public function lasterror()
239  {
240  return $this->db->lasterror();
241  }
242 
249  public function escape($stringtoencode)
250  {
251  return $this->db->escape($stringtoencode);
252  }
253 
261  public function escapeunderscore($stringtoencode)
262  {
263  return $this->db->escapeunderscore($stringtoencode);
264  }
265 
272  public function escapeforlike($stringtoencode)
273  {
274  return str_replace(array('_', '\\', '%'), array('\_', '\\\\', '\%'), (string) $stringtoencode);
275  }
276 
277  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
285  public function last_insert_id($tab, $fieldid = 'rowid')
286  {
287  // phpcs:enable
288  return $this->db->last_insert_id($tab, $fieldid);
289  }
290 
296  public function getPathOfRestore()
297  {
298  return $this->db->getPathOfRestore();
299  }
300 
307  public function rollback($log = '')
308  {
309  return $this->db->rollback($log);
310  }
311 
322  public function query($query, $usesavepoint = 0, $type = 'auto', $result_mode = 0)
323  {
324  $this->startTracing();
325 
326  $resql = $this->db->query($query, $usesavepoint, $type, $result_mode);
327 
328  $this->endTracing($query, $resql);
329 
330  return $resql;
331  }
332 
338  protected function startTracing()
339  {
340  $this->startTime = microtime(true);
341  $this->startMemory = memory_get_usage(true);
342  }
343 
351  protected function endTracing($sql, $resql)
352  {
353  $endTime = microtime(true);
354  $duration = $endTime - $this->startTime;
355  $endMemory = memory_get_usage(true);
356  $memoryDelta = $endMemory - $this->startMemory;
357 
358  $this->queries[] = array(
359  'sql' => $sql,
360  'duration' => $duration,
361  'memory_usage' => $memoryDelta,
362  'is_success' => $resql ? true : false,
363  'error_code' => $resql ? null : $this->db->lasterrno(),
364  'error_message' => $resql ? null : $this->db->lasterror()
365  );
366  }
367 
379  public function connect($host, $login, $passwd, $name, $port = 0)
380  {
381  return $this->db->connect($host, $login, $passwd, $name, $port);
382  }
383 
391  public function plimit($limit = 0, $offset = 0)
392  {
393  return $this->db->plimit($limit, $offset);
394  }
395 
402  public function getServerParametersValues($filter = '')
403  {
404  return $this->db->getServerParametersValues($filter);
405  }
406 
413  public function getServerStatusValues($filter = '')
414  {
415  return $this->db->getServerStatusValues($filter);
416  }
417 
423  public function getDefaultCollationDatabase()
424  {
425  return $this->db->getDefaultCollationDatabase();
426  }
427 
428  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
436  public function num_rows($resultset)
437  {
438  // phpcs:enable
439  return $this->db->num_rows($resultset);
440  }
441 
447  public function getPathOfDump()
448  {
449  return $this->db->getPathOfDump();
450  }
451 
457  public function getDriverInfo()
458  {
459  return $this->db->getDriverInfo();
460  }
461 
467  public function errno()
468  {
469  return $this->db->errno();
470  }
471 
484  public function DDLCreateTable($table, $fields, $primary_key, $type, $unique_keys = null, $fulltext_keys = null, $keys = null)
485  {
486  return $this->db->DDLCreateTable($table, $fields, $primary_key, $type, $unique_keys, $fulltext_keys, $keys);
487  }
488 
495  public function DDLDropTable($table)
496  {
497  return $this->db->DDLDropTable($table);
498  }
499 
505  public function getListOfCharacterSet()
506  {
507  return $this->db->getListOfCharacterSet();
508  }
509 
519  public function DDLAddField($table, $field_name, $field_desc, $field_position = "")
520  {
521  return $this->db->DDLAddField($table, $field_name, $field_desc, $field_position);
522  }
523 
531  public function DDLDropField($table, $field_name)
532  {
533  return $this->db->DDLDropField($table, $field_name);
534  }
535 
544  public function DDLUpdateField($table, $field_name, $field_desc)
545  {
546  return $this->db->DDLUpdateField($table, $field_name, $field_desc);
547  }
548 
554  public function getListOfCollation()
555  {
556  return $this->db->getListOfCollation();
557  }
558 
566  public function DDLDescTable($table, $field = "")
567  {
568  return $this->db->DDLDescTable($table, $field);
569  }
570 
576  public function getVersion()
577  {
578  return $this->db->getVersion();
579  }
580 
587  {
588  return $this->db->getDefaultCharacterSetDatabase();
589  }
590 
600  public function DDLCreateUser($dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name)
601  {
602  return $this->db->DDLCreateUser($dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name);
603  }
604 
605  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
615  public function jdate($string, $gm = false)
616  {
617  // phpcs:enable
618  return $this->db->jdate($string, $gm);
619  }
620 
629  public function encrypt($fieldorvalue, $withQuotes = 1)
630  {
631  return $this->db->encrypt($fieldorvalue, $withQuotes);
632  }
633 
640  public function commit($log = '')
641  {
642  return $this->db->commit($log);
643  }
644 
651  public function DDLInfoTable($table)
652  {
653  return $this->db->DDLInfoTable($table);
654  }
655 
662  public function free($resultset = null)
663  {
664  $this->db->free($resultset);
665  }
666 
673  public function close()
674  {
675  return $this->db->close();
676  }
677 
683  public function lastqueryerror()
684  {
685  return $this->db->lastqueryerror();
686  }
687 
693  public function DDLGetConnectId()
694  {
695  return $this->db->DDLGetConnectId();
696  }
697 
698  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
705  public function fetch_object($resultset)
706  {
707  // phpcs:enable
708  return $this->db->fetch_object($resultset);
709  }
710 
711  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
718  public function select_db($database)
719  {
720  // phpcs:enable
721  return $this->db->select_db($database);
722  }
723 }
Class to manage Dolibarr database access.
TraceableDB class.
Definition: TraceableDB.php:11
escape($stringtoencode)
Escape a string to insert data.
const VERSIONMIN
@const Version min database
Definition: TraceableDB.php:39
jdate($string, $gm=false)
Convert (by PHP) a PHP server TZ string date into a Timestamps date (GMT if gm=true) 19700101020000 -...
static convertSQLFromMysql($line, $type='ddl')
Convert a SQL request in Mysql syntax to native syntax.
begin($textinlog='')
Start transaction.
getDriverInfo()
Return version of database client driver.
free($resultset=null)
Free last resultset used.
getPathOfDump()
Return full path of dump program.
getPathOfRestore()
Return full path of restore program.
select_db($database)
Select a database.
rollback($log='')
Cancel a transaction and go back to initial data values.
encrypt($fieldorvalue, $withQuotes=1)
Encrypt sensitive data in database Warning: This function includes the escape and add the SQL simple ...
order($sortfield=null, $sortorder=null)
Define sort criteria of request.
fetch_array($resultset)
Return datas as an array.
getVersionArray()
Return version of database server into an array.
num_rows($resultset)
Return number of lines for result of a SELECT.
escapeforlike($stringtoencode)
Escape a string to insert data into a like.
commit($log='')
Validate a database transaction.
fetch_row($resultset)
Return datas as an array.
Definition: TraceableDB.php:73
DDLCreateDb($database, $charset='', $collation='', $owner='')
Create a new database Do not use function xxx_create_db (xxx=mysql, ...) as they are deprecated We fo...
DDLAddField($table, $field_name, $field_desc, $field_position="")
Create a new field into table.
affected_rows($resultset)
Return the number o flines into the result of a request INSERT, DELETE or UPDATE.
decrypt($value)
Decrypt sensitive data in database.
DDLInfoTable($table)
List information of columns into a table.
lasterror()
Return last error label.
__construct($db)
Constructor.
Definition: TraceableDB.php:46
getDefaultCollationDatabase()
Return collation used in database.
last_insert_id($tab, $fieldid='rowid')
Get last ID after an insert INSERT.
ifsql($test, $resok, $resko)
Format a SQL IF.
Definition: TraceableDB.php:61
getServerParametersValues($filter='')
Return value of server parameters.
DDLGetConnectId()
Return connexion ID.
lastqueryerror()
Return last query in error.
getDefaultCharacterSetDatabase()
Return charset used to store data in database.
getListOfCharacterSet()
Return list of available charset that can be used to store data in database.
endTracing($sql, $resql)
End query tracing.
getListOfCollation()
Return list of available collation that can be used for database.
connect($host, $login, $passwd, $name, $port=0)
Connexion to server.
fetch_object($resultset)
Returns the current line (as an object) for the resultset cursor.
DDLDropField($table, $field_name)
Drop a field from table.
lastquery()
Return last request executed with query()
errno()
Return generic error code of last operation.
DDLDescTable($table, $field="")
Return a pointer of line with description of a table or field.
lasterrno()
Return last error code.
Definition: TraceableDB.php:97
DDLListTables($database, $table='')
List tables into a database.
plimit($limit=0, $offset=0)
Define limits and offset of request.
idate($param, $gm='tzserver')
Convert (by PHP) a GM Timestamp date into a string date with PHP server TZ to insert into a date fiel...
Definition: TraceableDB.php:87
DDLCreateTable($table, $fields, $primary_key, $type, $unique_keys=null, $fulltext_keys=null, $keys=null)
Create a table into database.
getServerStatusValues($filter='')
Return value of server status.
startTracing()
Start query tracing.
DDLUpdateField($table, $field_name, $field_desc)
Update format of a field into a table.
close()
Close database connexion.
escapeunderscore($stringtoencode)
Escape a string to insert data.
query($query, $usesavepoint=0, $type='auto', $result_mode=0)
Execute a SQL request and return the resultset.
getVersion()
Return version of database server.
error()
Return description of last error.
const LABEL
@const Database label
Definition: TraceableDB.php:35
DDLCreateUser($dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name)
Create a user and privileges to connect to database (even if database does not exists yet)
DDLDropTable($table)
Drop a table into database.
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') &&!empty($user->rights->don->lire)) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
Definition: index.php:745
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
Definition: repair.php:119
$conf db
API class for accounts.
Definition: inc.php:41