| Server IP : 37.9.174.138 / Your IP : 216.73.216.117 Web Server : Apache System : Linux vps6.backend.sk 6.12.100+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.100-1 (2026-07-30) x86_64 User : ftpuser ( 1001) PHP Version : 8.4.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/artav.sk/poradna/modules/extendedDatatable/code/ |
Upload File : |
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace modules\extendedDatatable\code;
/**
* Description of ColumnController
*
* @author maros
*/
abstract class ColumnController {
protected $column;
protected $config;
protected $filterOptions = array();
protected $isUsingLikeConditions = false;
public function __construct(string $column, &$config) {
$this->column = $column;
$this->config = $config;
}
public function renderFilterInput() {
if (!(key_exists(ExtendedDatatable::COLUMN_DISABLE_FILTER, $this->config) && $this->config[ExtendedDatatable::COLUMN_DISABLE_FILTER] === true)) {
$this->initFilterOptions();
if (count($this->filterOptions) !== 0) {
$element = new \PFBC\Element\Select("", $this->column, $this->filterOptions, array("class" => "form-control form-filter input-sm selectpickerManual", "multiple" => 1, "data-none-selected-text" => ""));
$element->render();
} else {
$element = new \PFBC\Element\Textbox("", $this->column, array("class" => "form-control form-filter input-sm"));
$element->render();
}
}
}
protected function initFilterOptions() {
if (isset($this->config[ExtendedDatatable::COLUMN_FILTER])) {
$filter = $this->config[ExtendedDatatable::COLUMN_FILTER];
if (substr($filter, 0, 6) === "SELECT") {
$idColumn = trim(substr($filter, strpos($filter, "SELECT") + 6, strpos($filter, "FROM") - 6));
$table = trim(substr($filter, strpos($filter, "FROM") + 4, strpos($filter, "WHERE") - strpos($filter, "FROM") - 4));
$collection = new \app\classes\PDOCollection($table, $idColumn, $filter, $this->getFilterOptionsBindArray());
$collection = array_column($collection->toArray(), $idColumn, $idColumn);
if (isset($this->config[ExtendedDatatable::COLUMN_TRANSLATE_FILTER_OPTIONS]) && $this->config[ExtendedDatatable::COLUMN_TRANSLATE_FILTER_OPTIONS]) {
$t = \app\classes\Translator::getInstance();
foreach ($collection as $key => $val) {
$collection[$key] = $t->_get(
(key_exists(ExtendedDatatable::COLUMN_TRANSLATE_FILTER_OPTIONS_PREFIX, $this->config) ? $this->config[ExtendedDatatable::COLUMN_TRANSLATE_FILTER_OPTIONS_PREFIX] . "_" : "")
. $val
);
}
}
$this->filterOptions = array("" => "") + $collection;
}
}
}
public function getDatatableSqlConditionValue($value) {
if (is_array($value) && count($value) === 1 && strlen(trim($value[0])) === 0) {
return false;
}
if (is_array($value)) {
return $value;
}
return '%' . $this->getDbValue($value) . '%';
}
public function getDatatableSqlCondition($sqlVarName, $bindArrayVarName, $value) {
if (is_array($value) && count($value) === 1 && strlen(trim($value[0])) === 0) {
return false;
}
if (is_array($value)) {
$vars = range(0, count($value) - 1);
foreach ($vars as $key => $val) {
$vars[$key] = $bindArrayVarName . $val;
}
return $sqlVarName . " IN (:" . implode(", :", $vars) . ")";
}
return $sqlVarName . " LIKE :" . $bindArrayVarName . " COLLATE utf8_general_ci";
}
public function getDbValue($val, $required = false) {
if ($val === "NULL") {
return NULL;
}
return $val;
}
public function getTableValue($val, $export = false) {
return $val;
}
public function getFilterOptions() {
return $this->filterOptions;
}
protected function getFilterOptionsBindArray() {
return array();
}
public function isUsingLikeConditions(){
return $this->isUsingLikeConditions;
}
}