Minor fixes

This commit is contained in:
2021-05-24 21:47:32 +02:00
parent 3b3066c83b
commit cc58284478
3 changed files with 138 additions and 140 deletions

View File

@@ -12,7 +12,7 @@ class Db extends PhpObject
const DB_NO_DATA = 'ERR_2';
const DB_NO_TABLE = 'ERR_3';
const ID_TAG = 'id_';
//Database formats
const MONTH_FORMAT = 'Ym';
const DATE_FORMAT = 'Y-m-d';
@@ -20,7 +20,7 @@ class Db extends PhpObject
public $sDbState;
private $bTrace;
/**
* SQL connection Handle
* @var mysqli
@@ -28,7 +28,7 @@ class Db extends PhpObject
private $oConnection;
private $sDatabase;
private $asOptions;
/**
* Tables & fields descriptions
* array( 'tables'=>array('table_name1'=>array('table_field1', 'table_field2', ...), 'table_name2'=>array(...)),
@@ -93,7 +93,7 @@ class Db extends PhpObject
$this->bTrace = $bTrace;
//if($bTrace) $this->setDebug(true);
}
public function getTrace()
{
return $this->bTrace;
@@ -114,10 +114,10 @@ class Db extends PhpObject
//Create tables
@array_walk($this->getInstallQueries(), array($this, 'setQuery'));
}
public function getBackup() {
$sBackupFile = uniqid('backup_').'.sql';
$sAppPath = '';
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $sAppPath = 'C:\ProgramData\xampp\mysql\bin\\';
exec($sAppPath.'mysqldump --user='.Settings::DB_LOGIN.' --password='.Settings::DB_PASS.' '.Settings::DB_NAME.' --add-drop-table --result-file='.$sBackupFile);
@@ -128,7 +128,7 @@ class Db extends PhpObject
}
else return false;
}
public function restoreBackup($sBackupFile) {
$sAppPath = '';
if(file_exists($sBackupFile)) {
@@ -137,11 +137,11 @@ class Db extends PhpObject
}
else return false;
}
public function loadFile($sFilePath) {
set_time_limit(0);
$bResult = false;
if(file_exists($sFilePath))
{
$sContent = file_get_contents($sFilePath);
@@ -162,7 +162,7 @@ class Db extends PhpObject
$bResult = false;
break;
}
$bResult = true;
$sSql = '';
}
@@ -172,7 +172,7 @@ class Db extends PhpObject
else $this->addError('File is empty: '.basename($sFilePath));
}
else $this->addError('File not found: '.$sFilePath);
return $bResult;
}
@@ -234,7 +234,7 @@ class Db extends PhpObject
}
return $oResult;
}
public function getLastError()
{
return $this->oConnection->error;
@@ -302,12 +302,12 @@ class Db extends PhpObject
$asTableIds = array_map(array('self', 'getId'), $asTables);
return in_array($sColumnName, $asTableIds);
}
private function isField($sTableFieldName)
{
$asPath = explode('.', str_replace('`', '', $sTableFieldName));
return (
is_array($asPath)
is_array($asPath)
&& count($asPath)==2
&& $this->isColumnInTable($asPath[0], $asPath[1])
);
@@ -328,17 +328,17 @@ class Db extends PhpObject
public function getTablecolumns($sTableName, $bTypes=true)
{
if(!array_key_exists($sTableName, $this->asOptions['tables'])) return false;
$asTableColumns = array(self::getId($sTableName));
foreach($this->asOptions['tables'][$sTableName] as $sFieldName) $asTableColumns[] = $sFieldName;
$asTableColumns[] = 'led';
if(!$bTypes) return $asTableColumns;
$asTableName = array_fill(0, count($asTableColumns), $sTableName);
return array_combine($asTableColumns, array_map(array('self', 'getColumnType'), $asTableColumns, $asTableName));
}
public function isColumnInTable($sTableName, $sColName) {
$asCols = $this->getTablecolumns($sTableName, false);
return ($asCols && in_array($sColName, $asCols));
@@ -383,7 +383,7 @@ class Db extends PhpObject
private function addQuotes($oData)
{
//TODO remake
$asTrustedFunc = array('CURDATE()', 'NOW()');
$asTrustedFunc = array('CURDATE()', 'NOW()', 'NULL');
$sChar = "'";
if(is_array($oData))
{
@@ -401,7 +401,7 @@ class Db extends PhpObject
{
return $this->oConnection->insert_id;
}
private function getLastImpact()
{
return ($this->oConnection->affected_rows > 0);
@@ -428,7 +428,7 @@ class Db extends PhpObject
{
$asConstraints = array($this->getId($sTableName)=>$asConstraints);
}
//Cleaning values
$this->cleanSql($sTableName);
$this->cleanSql($asData);
@@ -437,7 +437,7 @@ class Db extends PhpObject
$asConstraintsValues = $this->addQuotes($asConstraints);
$this->addColumnSelectors($asQueryValues);
$this->addColumnSelectors($asConstraintsValues);
//Building query
if(!$bLedUpdate) $asQueryValues['led'] = 'led';
$sLimit = $iLimit>0?" LIMIT $iLimit":"";
@@ -494,7 +494,7 @@ class Db extends PhpObject
$this->cleanSql($iTableId);
$bSuccess = true;
//linked tables
switch($sTableName)
{
@@ -516,13 +516,13 @@ class Db extends PhpObject
}
return $bSuccess;
}
public function emptyTable($sTableName)
{
$this->cleanSql($sTableName);
return $this->setQuery("TRUNCATE ".$sTableName);
}
public function selectList($sTableName, $sColumnName='', $asConstraints=array())
{
$sColumnName = $sColumnName==''?self::getText($sTableName):$sColumnName;
@@ -533,7 +533,7 @@ class Db extends PhpObject
true,
$sIdColumnName);
}
public function selectRows($asInfo, $sGroupBy='', $bStringOnly=true)
{
$asAttributes = array('select'=>"SELECT", 'from'=>"FROM", 'join'=>"LEFT JOIN", 'joinOn'=>"LEFT JOIN", 'constraint'=>"WHERE", 'groupBy'=>"GROUP BY", 'orderBy'=>"ORDER BY", 'limit'=>'LIMIT');
@@ -543,16 +543,16 @@ class Db extends PhpObject
//Simple selectRows
if(!is_array($asInfo)) $asInfo = array('from'=>$asInfo);
//Get table by key
if($sGroupBy===true)
{
$sGroupBy = self::getId($asInfo['from']);
//Add id to selection
if(isset($asInfo['select']) && $asInfo['select'][0]!="*") $asInfo['select'][] = $sGroupBy;
}
$sQuery = "";
foreach($asAttributes as $sStatement => $sKeyWord)
{
@@ -574,12 +574,12 @@ class Db extends PhpObject
{
if(is_array($asConstraints))
{
if(array_key_exists($sField, $asInfo['constOpe']) && $asInfo['constOpe'][$sField]=='BETWEEN') {
if(array_key_exists('constOpe', $asInfo) && array_key_exists($sField, $asInfo['constOpe']) && $asInfo['constOpe'][$sField]=='BETWEEN') {
//Between
$asSelection[$sField] = $asConstraints['from'].' AND '.$asConstraints['to'];
$asInfo['constOpe'][$sField] = " BETWEEN ";
}
else {
else {
//Multiple values (IN)
$asSelection[$sField] = "(".implode(', ', $asConstraints).")";
$asInfo['constOpe'][$sField] = " IN ";
@@ -622,7 +622,7 @@ class Db extends PhpObject
$sQuery .= " ".$sKeyWord." * ";
}
}
return $this->getArrayQuery(trim($sQuery), $bStringOnly, $sGroupBy);
}
@@ -646,7 +646,7 @@ class Db extends PhpObject
{
//Table ID directly
if(!is_array($asConstraints)) $asConstraints = array($this->getId($sTableName)=>$asConstraints);
$asRows = $this->selectRows(array('select'=>$sColumnName, 'from'=>$sTableName, 'constraint'=>$asConstraints));
$iCountNb = count($asRows);
switch($iCountNb)
@@ -661,13 +661,13 @@ class Db extends PhpObject
}
return $asResult;
}
public function selectColumn($sTableName, $asColumnNames, $asConstraints)
{
$sGroupBy = '';
if(!is_array($asColumnNames)) $asColumnNames = array($asColumnNames);
else $sGroupBy = $asColumnNames[0];
return $this->selectRows(
array(
'select' => $asColumnNames,
@@ -687,7 +687,7 @@ class Db extends PhpObject
$oResult = $this->selectRow($sTableName, $oConstraints, $sColumnName);
return empty($oResult)?false:$oResult;
}
public function selectId($sTableName, $oConstraints)
{
return $this->selectValue($sTableName, self::getId($sTableName), $oConstraints);
@@ -750,23 +750,23 @@ class Db extends PhpObject
return array_combine($asKeys, $asValues);
}
}
/*
public function select($asFields='*')
{
$oSql = new Sql($this, array('select'=>$asFields));
return $oSql;
}
public function from($sTable)
{
$oSql = new Sql($this, array('from'=>$sTable));
return $oSql;
}
public function getConnection()
{
return $this->oConnection;
}
*/
}
}