add filter function for Tags, refactoring and restyling, add phrases and dbupdate

This commit is contained in:
ma0068
2025-11-13 09:19:35 +01:00
parent df63b8c1b7
commit a26bdfe385
10 changed files with 616 additions and 318 deletions
@@ -28,4 +28,67 @@ class Bookmark_model extends DB_Model
return $this->execQuery($qry, array('uid' => $uid));
}
/**
* Get Overrides of given uid and funktion_kurzbz and widget_id
* @param integer $widget_id
* @param string $uid
* @param string $funktion_kurzbz
* @return array
*/
public function getTagFilter($widgetId, $uid, $funktion_kurzbz)
{
$qry = " SELECT override -> '" . $funktion_kurzbz . "'-> 'widgets'-> '" . $widgetId . "'-> 'config' -> 'tags' AS tags FROM dashboard.tbl_dashboard_benutzer_override WHERE uid = '" . $uid . "';";
return $this->execQuery($qry);
}
/*
* updates Tagfilter
* checks and changes type of config
* if config == array -> change to object
*/
public function addAndUpdateTagFilter($widgetId, $uid, $funktion_kurzbz, $tags)
{
$params = [
$funktion_kurzbz, $widgetId,
$funktion_kurzbz, $widgetId,
$funktion_kurzbz, $widgetId,
$funktion_kurzbz, $widgetId,
$tags,
$uid
];
$qry = "
UPDATE dashboard.tbl_dashboard_benutzer_override
SET override = jsonb_set(
-- check if config is object
jsonb_set(
COALESCE(override, '{}'::jsonb),
format('{%s,widgets,%s,config}', ?, ?)::text[],
CASE
WHEN jsonb_typeof(override #> format('{%s,widgets,%s,config}', ?, ?)::text[]) = 'array'
THEN '{}'::jsonb
ELSE COALESCE((override #> format('{%s,widgets,%s,config}', ?, ?)::text[])::jsonb, '{}'::jsonb)
END,
true
),
-- insert tags
format('{%s,widgets,%s,config,tags}', ?, ?)::text[],
?::jsonb,
true
)
WHERE uid = ?
";
return $this->execQuery($qry, $params);
}
public function checkOrAddToOverride($widgetId, $uid, $funktion_kurzbz)
{
$params = [$funktion_kurzbz, $widgetId, $uid];
$qry = " SELECT override -> '" . $funktion_kurzbz . "'-> 'widgets'-> '" . $widgetId . "'-> 'widgetid' as widgetid FROM dashboard.tbl_dashboard_benutzer_override WHERE uid = '" . $uid . "';";
return $this->execQuery($qry, $params);
}
}
@@ -23,58 +23,4 @@ class Dashboard_Override_model extends DB_Model
{
return $this->loadWhere(array('dashboard_id' => $dashboard_id, 'uid'=> $uid));
}
/**
* Get Overrides of given uid and funktion_kurzbz and widget_id
* @param integer dashboard_id
* @param string $uid
* @return array
*/
//TODO(MANU) move to bookmark model
public function getTagFilter($widgetId, $uid, $funktion_kurzbz)
{
// $qry = "SELECT override -> ? -> 'widgets' -> ? -> 'tags' AS tags FROM dashboard.tbl_dashboard_benutzer_override WHERE uid = ?";
// $qry = " SELECT override -> '" . $funktion_kurzbz . "'-> 'widgets'-> '" . $widgetId . "'-> 'tags' AS tags FROM dashboard.tbl_dashboard_benutzer_override WHERE uid = '" . $uid . "';";
//unter config
$qry = " SELECT override -> '" . $funktion_kurzbz . "'-> 'widgets'-> '" . $widgetId . "'-> 'config' -> 'tags' AS tags FROM dashboard.tbl_dashboard_benutzer_override WHERE uid = '" . $uid . "';";
/* $qry = <<<SQL
SELECT
override -> ?
-> 'widgets'
-> ?
-> 'tags' AS tags
FROM dashboard.tbl_dashboard_benutzer_override
WHERE uid = ?
SQL;*/
//return $qry;
return $this->execQuery($qry);
// return $this->execQuery($qry, array($funktion_kurzbz, $widgetId, $uid));
}
//TODO(MANU) move to bookmark model
public function addTagFilter($widgetId, $uid, $funktion_kurzbz, $tags)
{
if (is_array($tags)) {
$tags = json_encode($tags); // convert PHP array to JSON string
}
$params = [$funktion_kurzbz, $widgetId, $tags, $uid];
$qry = "
UPDATE dashboard.tbl_dashboard_benutzer_override
SET override = jsonb_set(
COALESCE(override, '{}'::jsonb),
format('{%s,widgets,%s,config,tags}',? , ?)::text[],
?::jsonb,
true
)
WHERE uid = ?
";
// return $qry;
return $this->execQuery($qry, $params);
}
}