forked from joomla/super-powers
Update 2024-10-16 10:35:01
This commit is contained in:
parent
ab9fb353ba
commit
9eba4b338f
@ -14,9 +14,11 @@
|
|||||||
abstract Database #Orange {
|
abstract Database #Orange {
|
||||||
# $db
|
# $db
|
||||||
# string $table
|
# string $table
|
||||||
|
# string $dateFormat
|
||||||
+ __construct()
|
+ __construct()
|
||||||
# quote(mixed $value) : mixed
|
# quote(mixed $value) : mixed
|
||||||
# getTable(string $table) : string
|
# getTable(string $table) : string
|
||||||
|
# getDateFormat() : string
|
||||||
}
|
}
|
||||||
|
|
||||||
note right of Database::__construct
|
note right of Database::__construct
|
||||||
@ -40,6 +42,13 @@ core component as needed
|
|||||||
return: string
|
return: string
|
||||||
end note
|
end note
|
||||||
|
|
||||||
|
note right of Database::getDateFormat
|
||||||
|
Get the date format to return in the quote
|
||||||
|
|
||||||
|
since: 5.0.2
|
||||||
|
return: string
|
||||||
|
end note
|
||||||
|
|
||||||
@enduml
|
@enduml
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -38,6 +38,14 @@ abstract class Database
|
|||||||
*/
|
*/
|
||||||
protected string $table;
|
protected string $table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Date format to return
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
* @since 5.0.2
|
||||||
|
*/
|
||||||
|
protected string $dateFormat = 'Y-m-d H:i:s';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@ -62,23 +70,32 @@ abstract class Database
|
|||||||
**/
|
**/
|
||||||
protected function quote($value)
|
protected function quote($value)
|
||||||
{
|
{
|
||||||
if ($value === null) // hmm the null does pose an issue (will keep an eye on this)
|
if ($value === null)
|
||||||
{
|
{
|
||||||
return 'NULL';
|
return 'NULL';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_numeric($value))
|
if (is_numeric($value))
|
||||||
{
|
{
|
||||||
|
// If the value is a numeric string (e.g., "0123"), treat it as a string to preserve the format
|
||||||
|
if (is_string($value) && ltrim($value, '0') !== $value)
|
||||||
|
{
|
||||||
|
return $this->db->quote($value);
|
||||||
|
}
|
||||||
|
|
||||||
if (filter_var($value, FILTER_VALIDATE_INT))
|
if (filter_var($value, FILTER_VALIDATE_INT))
|
||||||
{
|
{
|
||||||
return (int) $value;
|
return (int) $value;
|
||||||
}
|
}
|
||||||
elseif (filter_var($value, FILTER_VALIDATE_FLOAT))
|
|
||||||
|
if (filter_var($value, FILTER_VALIDATE_FLOAT))
|
||||||
{
|
{
|
||||||
return (float) $value;
|
return (float) $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elseif (is_bool($value)) // not sure if this will work well (but its correct)
|
|
||||||
|
// Handle boolean values
|
||||||
|
if (is_bool($value))
|
||||||
{
|
{
|
||||||
return $value ? 'TRUE' : 'FALSE';
|
return $value ? 'TRUE' : 'FALSE';
|
||||||
}
|
}
|
||||||
@ -86,10 +103,10 @@ abstract class Database
|
|||||||
// For date and datetime values
|
// For date and datetime values
|
||||||
if ($value instanceof \DateTime)
|
if ($value instanceof \DateTime)
|
||||||
{
|
{
|
||||||
return $this->db->quote($value->format('Y-m-d H:i:s'));
|
return $this->db->quote($value->format($this->getDateFormat()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// For other data types, just escape it
|
// For other types of values, quote as string
|
||||||
return $this->db->quote($value);
|
return $this->db->quote($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,5 +128,16 @@ abstract class Database
|
|||||||
|
|
||||||
return $table;
|
return $table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the date format to return in the quote
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
* @since 5.0.2
|
||||||
|
**/
|
||||||
|
protected function getDateFormat(): string
|
||||||
|
{
|
||||||
|
return $this->dateFormat;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,6 +13,14 @@
|
|||||||
*/
|
*/
|
||||||
protected string $table;
|
protected string $table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Date format to return
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
* @since 5.0.2
|
||||||
|
*/
|
||||||
|
protected string $dateFormat = 'Y-m-d H:i:s';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@ -37,23 +45,32 @@
|
|||||||
**/
|
**/
|
||||||
protected function quote($value)
|
protected function quote($value)
|
||||||
{
|
{
|
||||||
if ($value === null) // hmm the null does pose an issue (will keep an eye on this)
|
if ($value === null)
|
||||||
{
|
{
|
||||||
return 'NULL';
|
return 'NULL';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_numeric($value))
|
if (is_numeric($value))
|
||||||
{
|
{
|
||||||
|
// If the value is a numeric string (e.g., "0123"), treat it as a string to preserve the format
|
||||||
|
if (is_string($value) && ltrim($value, '0') !== $value)
|
||||||
|
{
|
||||||
|
return $this->db->quote($value);
|
||||||
|
}
|
||||||
|
|
||||||
if (filter_var($value, FILTER_VALIDATE_INT))
|
if (filter_var($value, FILTER_VALIDATE_INT))
|
||||||
{
|
{
|
||||||
return (int) $value;
|
return (int) $value;
|
||||||
}
|
}
|
||||||
elseif (filter_var($value, FILTER_VALIDATE_FLOAT))
|
|
||||||
|
if (filter_var($value, FILTER_VALIDATE_FLOAT))
|
||||||
{
|
{
|
||||||
return (float) $value;
|
return (float) $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elseif (is_bool($value)) // not sure if this will work well (but its correct)
|
|
||||||
|
// Handle boolean values
|
||||||
|
if (is_bool($value))
|
||||||
{
|
{
|
||||||
return $value ? 'TRUE' : 'FALSE';
|
return $value ? 'TRUE' : 'FALSE';
|
||||||
}
|
}
|
||||||
@ -61,10 +78,10 @@
|
|||||||
// For date and datetime values
|
// For date and datetime values
|
||||||
if ($value instanceof \DateTime)
|
if ($value instanceof \DateTime)
|
||||||
{
|
{
|
||||||
return $this->db->quote($value->format('Y-m-d H:i:s'));
|
return $this->db->quote($value->format($this->getDateFormat()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// For other data types, just escape it
|
// For other types of values, quote as string
|
||||||
return $this->db->quote($value);
|
return $this->db->quote($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,3 +103,14 @@
|
|||||||
|
|
||||||
return $table;
|
return $table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the date format to return in the quote
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
* @since 5.0.2
|
||||||
|
**/
|
||||||
|
protected function getDateFormat(): string
|
||||||
|
{
|
||||||
|
return $this->dateFormat;
|
||||||
|
}
|
@ -54,7 +54,7 @@ final class Header
|
|||||||
if ($row->getRowIndex() === $targetRow)
|
if ($row->getRowIndex() === $targetRow)
|
||||||
{
|
{
|
||||||
$cellIterator = $row->getCellIterator();
|
$cellIterator = $row->getCellIterator();
|
||||||
$cellIterator->setIterateOnlyExistingCells(false);
|
$cellIterator->setIterateOnlyExistingCells(true);
|
||||||
foreach ($cellIterator as $cell)
|
foreach ($cellIterator as $cell)
|
||||||
{
|
{
|
||||||
$headers[$cell->getColumn()] = $cell->getValue();
|
$headers[$cell->getColumn()] = $cell->getValue();
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
if ($row->getRowIndex() === $targetRow)
|
if ($row->getRowIndex() === $targetRow)
|
||||||
{
|
{
|
||||||
$cellIterator = $row->getCellIterator();
|
$cellIterator = $row->getCellIterator();
|
||||||
$cellIterator->setIterateOnlyExistingCells(false);
|
$cellIterator->setIterateOnlyExistingCells(true);
|
||||||
foreach ($cellIterator as $cell)
|
foreach ($cellIterator as $cell)
|
||||||
{
|
{
|
||||||
$headers[$cell->getColumn()] = $cell->getValue();
|
$headers[$cell->getColumn()] = $cell->getValue();
|
||||||
|
Loading…
Reference in New Issue
Block a user