dolibarr  17.0.3
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 }
TraceableDB\connect
connect($host, $login, $passwd, $name, $port=0)
Connexion to server.
Definition: TraceableDB.php:379
TraceableDB\select_db
select_db($database)
Select a database.
Definition: TraceableDB.php:718
db
$conf db
API class for accounts.
Definition: inc.php:41
TraceableDB\LABEL
const LABEL
@const Database label
Definition: TraceableDB.php:35
TraceableDB\fetch_object
fetch_object($resultset)
Returns the current line (as an object) for the resultset cursor.
Definition: TraceableDB.php:705
TraceableDB\DDLCreateDb
DDLCreateDb($database, $charset='', $collation='', $owner='')
Create a new database Do not use function xxx_create_db (xxx=mysql, ...) as they are deprecated We fo...
Definition: TraceableDB.php:124
DoliDB
Class to manage Dolibarr database access.
Definition: DoliDB.class.php:30
TraceableDB\errno
errno()
Return generic error code of last operation.
Definition: TraceableDB.php:467
TraceableDB\getServerParametersValues
getServerParametersValues($filter='')
Return value of server parameters.
Definition: TraceableDB.php:402
TraceableDB\getDefaultCollationDatabase
getDefaultCollationDatabase()
Return collation used in database.
Definition: TraceableDB.php:423
TraceableDB\getPathOfDump
getPathOfDump()
Return full path of dump program.
Definition: TraceableDB.php:447
TraceableDB\getVersionArray
getVersionArray()
Return version of database server into an array.
Definition: TraceableDB.php:134
TraceableDB\lasterrno
lasterrno()
Return last error code.
Definition: TraceableDB.php:97
TraceableDB\escapeforlike
escapeforlike($stringtoencode)
Escape a string to insert data into a like.
Definition: TraceableDB.php:272
TraceableDB\DDLDropTable
DDLDropTable($table)
Drop a table into database.
Definition: TraceableDB.php:495
TraceableDB\plimit
plimit($limit=0, $offset=0)
Define limits and offset of request.
Definition: TraceableDB.php:391
TraceableDB\getListOfCharacterSet
getListOfCharacterSet()
Return list of available charset that can be used to store data in database.
Definition: TraceableDB.php:505
TraceableDB\close
close()
Close database connexion.
Definition: TraceableDB.php:673
TraceableDB\getVersion
getVersion()
Return version of database server.
Definition: TraceableDB.php:576
TraceableDB\free
free($resultset=null)
Free last resultset used.
Definition: TraceableDB.php:662
TraceableDB\error
error()
Return description of last error.
Definition: TraceableDB.php:170
TraceableDB\VERSIONMIN
const VERSIONMIN
@const Version min database
Definition: TraceableDB.php:39
TraceableDB\DDLUpdateField
DDLUpdateField($table, $field_name, $field_desc)
Update format of a field into a table.
Definition: TraceableDB.php:544
TraceableDB\endTracing
endTracing($sql, $resql)
End query tracing.
Definition: TraceableDB.php:351
TraceableDB\commit
commit($log='')
Validate a database transaction.
Definition: TraceableDB.php:640
TraceableDB\jdate
jdate($string, $gm=false)
Convert (by PHP) a PHP server TZ string date into a Timestamps date (GMT if gm=true) 19700101020000 -...
Definition: TraceableDB.php:615
TraceableDB\fetch_array
fetch_array($resultset)
Return datas as an array.
Definition: TraceableDB.php:227
TraceableDB\encrypt
encrypt($fieldorvalue, $withQuotes=1)
Encrypt sensitive data in database Warning: This function includes the escape and add the SQL simple ...
Definition: TraceableDB.php:629
$resql
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
TraceableDB\escapeunderscore
escapeunderscore($stringtoencode)
Escape a string to insert data.
Definition: TraceableDB.php:261
TraceableDB\decrypt
decrypt($value)
Decrypt sensitive data in database.
Definition: TraceableDB.php:215
TraceableDB\escape
escape($stringtoencode)
Escape a string to insert data.
Definition: TraceableDB.php:249
TraceableDB\num_rows
num_rows($resultset)
Return number of lines for result of a SELECT.
Definition: TraceableDB.php:436
TraceableDB\last_insert_id
last_insert_id($tab, $fieldid='rowid')
Get last ID after an insert INSERT.
Definition: TraceableDB.php:285
TraceableDB\begin
begin($textinlog='')
Start transaction.
Definition: TraceableDB.php:108
TraceableDB\DDLInfoTable
DDLInfoTable($table)
List information of columns into a table.
Definition: TraceableDB.php:651
TraceableDB\getServerStatusValues
getServerStatusValues($filter='')
Return value of server status.
Definition: TraceableDB.php:413
TraceableDB\getDefaultCharacterSetDatabase
getDefaultCharacterSetDatabase()
Return charset used to store data in database.
Definition: TraceableDB.php:586
TraceableDB\DDLCreateTable
DDLCreateTable($table, $fields, $primary_key, $type, $unique_keys=null, $fulltext_keys=null, $keys=null)
Create a table into database.
Definition: TraceableDB.php:484
TraceableDB\query
query($query, $usesavepoint=0, $type='auto', $result_mode=0)
Execute a SQL request and return the resultset.
Definition: TraceableDB.php:322
TraceableDB\getPathOfRestore
getPathOfRestore()
Return full path of restore program.
Definition: TraceableDB.php:296
TraceableDB\DDLDescTable
DDLDescTable($table, $field="")
Return a pointer of line with description of a table or field.
Definition: TraceableDB.php:566
TraceableDB\DDLGetConnectId
DDLGetConnectId()
Return connexion ID.
Definition: TraceableDB.php:693
TraceableDB\fetch_row
fetch_row($resultset)
Return datas as an array.
Definition: TraceableDB.php:73
TraceableDB\order
order($sortfield=null, $sortorder=null)
Define sort criteria of request.
Definition: TraceableDB.php:204
TraceableDB\DDLDropField
DDLDropField($table, $field_name)
Drop a field from table.
Definition: TraceableDB.php:531
TraceableDB
TraceableDB class.
Definition: TraceableDB.php:10
TraceableDB\convertSQLFromMysql
static convertSQLFromMysql($line, $type='ddl')
Convert a SQL request in Mysql syntax to native syntax.
Definition: TraceableDB.php:146
TraceableDB\DDLListTables
DDLListTables($database, $table='')
List tables into a database.
Definition: TraceableDB.php:182
TraceableDB\lasterror
lasterror()
Return last error label.
Definition: TraceableDB.php:238
TraceableDB\__construct
__construct($db)
Constructor.
Definition: TraceableDB.php:46
TraceableDB\ifsql
ifsql($test, $resok, $resko)
Format a SQL IF.
Definition: TraceableDB.php:61
TraceableDB\affected_rows
affected_rows($resultset)
Return the number o flines into the result of a request INSERT, DELETE or UPDATE.
Definition: TraceableDB.php:159
TraceableDB\startTracing
startTracing()
Start query tracing.
Definition: TraceableDB.php:338
type
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
Definition: repair.php:119
TraceableDB\getListOfCollation
getListOfCollation()
Return list of available collation that can be used for database.
Definition: TraceableDB.php:554
TraceableDB\lastquery
lastquery()
Return last request executed with query()
Definition: TraceableDB.php:192
TraceableDB\lastqueryerror
lastqueryerror()
Return last query in error.
Definition: TraceableDB.php:683
TraceableDB\rollback
rollback($log='')
Cancel a transaction and go back to initial data values.
Definition: TraceableDB.php:307
TraceableDB\idate
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
TraceableDB\DDLAddField
DDLAddField($table, $field_name, $field_desc, $field_position="")
Create a new field into table.
Definition: TraceableDB.php:519
TraceableDB\DDLCreateUser
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)
Definition: TraceableDB.php:600
TraceableDB\getDriverInfo
getDriverInfo()
Return version of database client driver.
Definition: TraceableDB.php:457