Files
thetool/lib/Helper/Helper.php
2024-05-10 21:03:01 +00:00

38 lines
1.6 KiB
PHP

<?php
class Helper {
/**
* Generate SQL Filter condition (space separated) for a given column.
*
* @param string|null $filterValue The filter value to match against.
* @param string $columnName The name of the column in the database table.
* @return string The SQL condition generated based on the filter value and column name.
* @noinspection PhpMissingParamTypeInspection
*/
public static function generateFilterCondition($filterValue, string $columnName, bool $exactMatch = false): string {
$sql = "";
if (is_array($filterValue)) {
if (isset($filterValue['from']) && isset($filterValue['to'])) {
$sql = " AND `$columnName` >= " . $filterValue['from'] . " AND `$columnName` <= " . $filterValue['to'];
} else if (isset($filterValue['from'])) {
$sql = " AND `$columnName` >= " . $filterValue['from'];
} else if (isset($filterValue['to'])) {
$sql = " AND `$columnName` <= " . $filterValue['to'];
}
} else if ($filterValue === "0" || $filterValue === "1") {
$sql .= " AND `$columnName` = " . $filterValue;
} else if (!empty($filterValue)) {
if ($exactMatch) {
$sql .= " AND `$columnName` = '" . $filterValue . "'";
} else {
$filterItems = explode(" ", $filterValue);
foreach ($filterItems as $item) {
$sql .= " AND `$columnName` LIKE '%" . $item . "%'";
}
}
}
return $sql;
}
}