Dropped calender group id column from notizzuordnung and update migrateKalender commands

This commit is contained in:
Ivymaster
2026-09-17 11:02:35 +02:00
parent e1af778d8f
commit bf050c9297
4 changed files with 78 additions and 46 deletions
@@ -454,14 +454,14 @@ class MigrateKalender extends CLI_Controller
$db->db->query("DELETE FROM public.tbl_notiz
WHERE notiz_id IN (
SELECT notiz_id
FROM public.tbl_notizzuordnung
FROM lehre.tbl_kalender_notiz
WHERE eindeutige_kalender_gruppen_id IN (
SELECT eindeutige_kalender_gruppen_id
FROM lehre.tbl_kalender
)
)");
$db->db->query("DELETE FROM public.tbl_notizzuordnung
$db->db->query("DELETE FROM lehre.tbl_kalender_notiz
WHERE eindeutige_kalender_gruppen_id IN (
SELECT eindeutige_kalender_gruppen_id
FROM lehre.tbl_kalender
@@ -771,7 +771,7 @@ class MigrateKalender extends CLI_Controller
$this->load->model('person/Notiz_model', 'NotizModel');
$this->load->model('system/Notiztyp_model', 'NotiztypModel');
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
$this->load->model('ressource/KalenderNotiz_model', 'KalenderNotizModel');
$checkTyp = $this->NotiztypModel->loadWhere(array('typ_kurzbz' => $notizType));
@@ -788,16 +788,16 @@ class MigrateKalender extends CLI_Controller
}
$this->NotizzuordnungModel->addJoin('tbl_notiz', 'tbl_notiz.notiz_id = tbl_notizzuordnung.notiz_id', 'LEFT');
$this->NotizzuordnungModel->db->where('tbl_notiz.typ', $notizType);
$this->NotizzuordnungModel->db->where('tbl_notiz.insertvon', $insertvonMockUser);
$oldNotizZuordnung = $this->NotizzuordnungModel->loadWhere(array('eindeutige_kalender_gruppen_id' => $eindeutige_kalender_gruppen_id));
if (isError($oldNotizZuordnung))
$this->KalenderNotizModel->addJoin('tbl_notiz', 'tbl_notiz.notiz_id = tbl_kalender_notiz.notiz_id', 'LEFT');
$this->KalenderNotizModel->db->where('tbl_notiz.typ', $notizType);
$this->KalenderNotizModel->db->where('tbl_notiz.insertvon', $insertvonMockUser);
$oldKalenderNotiz = $this->KalenderNotizModel->loadWhere(array('eindeutige_kalender_gruppen_id' => $eindeutige_kalender_gruppen_id));
if (isError($oldKalenderNotiz))
{
error("Error occurred while checking Notizzuordnung: " . $oldNotizZuordnung->message);
error("Error occurred while checking KalenderNotiz: " . $oldKalenderNotiz->message);
return false;
}
if (hasData($oldNotizZuordnung))
if (hasData($oldKalenderNotiz))
{
return $this->updateTag($eindeutige_kalender_gruppen_id, $notizText, $lastUpdatedInOldSystem);
}
@@ -819,14 +819,14 @@ class MigrateKalender extends CLI_Controller
return false;
}
$insertZuordnung = $this->NotizzuordnungModel->insert(array(
$insertKalenderNotiz = $this->KalenderNotizModel->insert(array(
'notiz_id' => $insertResult->retval,
'eindeutige_kalender_gruppen_id' => $eindeutige_kalender_gruppen_id
));
if (isError($insertZuordnung))
if (isError($insertKalenderNotiz))
{
error("Error occurred while inserting Notizzuordnung: " . $insertZuordnung->message);
error("Error occurred while inserting KalenderNotiz: " . $insertKalenderNotiz->message);
return false;
}
@@ -838,18 +838,18 @@ class MigrateKalender extends CLI_Controller
$notizType = 'hinweis';
$insertvonMockUser = 'oldToNewTempusMigration';
$this->NotizzuordnungModel->addJoin('tbl_notiz', 'tbl_notiz.notiz_id = tbl_notizzuordnung.notiz_id', 'LEFT');
$this->NotizzuordnungModel->db->where('tbl_notiz.typ', $notizType);
$this->NotizzuordnungModel->db->where('tbl_notiz.insertvon', $insertvonMockUser);
$notizZuordnungRes = $this->NotizzuordnungModel->loadWhere(array('eindeutige_kalender_gruppen_id' => $eindeutige_kalender_gruppen_id));
if (isError($notizZuordnungRes))
$this->KalenderNotizModel->addJoin('tbl_notiz', 'tbl_notiz.notiz_id = tbl_kalender_notiz.notiz_id', 'LEFT');
$this->KalenderNotizModel->db->where('tbl_notiz.typ', $notizType);
$this->KalenderNotizModel->db->where('tbl_notiz.insertvon', $insertvonMockUser);
$kalenderNotizRes = $this->KalenderNotizModel->loadWhere(array('eindeutige_kalender_gruppen_id' => $eindeutige_kalender_gruppen_id));
if (isError($kalenderNotizRes))
{
error("Error occurred while loading Notizzuordnung: " . $notizZuordnungRes->message);
error("Error occurred while loading KalenderNotiz: " . $kalenderNotizRes->message);
return false;
}
$tag = $this->NotizModel->loadWhere(array('notiz_id' => $notizZuordnungRes->retval[0]->notiz_id));
$tag = $this->NotizModel->loadWhere(array('notiz_id' => $kalenderNotizRes->retval[0]->notiz_id));
if (isError($tag))
{
error("Error occurred while loading Notiz: " . $tag->message);
@@ -858,7 +858,7 @@ class MigrateKalender extends CLI_Controller
if (!hasData($tag))
{
error("Error occurred while loading Notiz: " . $tag->message);
error("Error occurred while loading KalenderNotiz: " . $tag->message);
return false;
}
-1
View File
@@ -99,7 +99,6 @@ require_once('dbupdate_3.4/76150_perm_other_lv_plan.php');
require_once('dbupdate_3.4/68957_dashboard_bookmark_neue_Spalte_sort.php');
require_once('dbupdate_3.4/68530_Dashboard_Cleanup.php');
require_once('dbupdate_3.4/77375_ressourcen.php');
require_once('dbupdate_3.4/78052_tempus_tag_events.php');
require_once('dbupdate_3.4/78318_rename_column_of_eindeutige_gruppen_id_to_eindeutige_kalender_gruppen_id_in_tbl_kalender.php');
require_once('dbupdate_3.4/75959_StudVw_Automatische_Tags.php');
require_once('dbupdate_3.4/76160_lvv_favorites.php');
@@ -1,19 +0,0 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
$result = $db->db_query("SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'tbl_notizzuordnung'
AND column_name = 'eindeutige_kalender_gruppen_id'");
if ($db->db_num_rows($result) === 0)
{
$qry = "ALTER TABLE public.tbl_notizzuordnung
ADD COLUMN eindeutige_kalender_gruppen_id UUID NULL DEFAULT NULL";
if (!$db->db_query($qry))
echo '<strong>public.tbl_notizzuordnung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_notizzuordnung: eindeutige_kalender_gruppen_id column added';
}
@@ -32,7 +32,16 @@ if (!$result = @$db->db_query('SELECT 0 FROM lehre.tbl_kalender_notiz WHERE 0 =
echo '<br>Granted privileges to <strong>vilesci</strong> on lehre.tbl_kalender_notiz';
// Delete the related note when its calendar-note assignment no longer exists.
$qry = 'CREATE OR REPLACE FUNCTION lehre.cleanup_notiz_on_kalender_notiz_delete()
$result = $db->db_query("SELECT 1
FROM pg_catalog.pg_proc AS p
JOIN pg_catalog.pg_namespace AS n ON n.oid = p.pronamespace
WHERE n.nspname = 'lehre'
AND p.proname = 'cleanup_notiz_on_kalender_notiz_delete'
AND p.proargtypes = ''::oidvector");
if ($db->db_num_rows($result) === 0)
{
$qry = 'CREATE FUNCTION lehre.cleanup_notiz_on_kalender_notiz_delete()
RETURNS trigger
LANGUAGE plpgsql
SECURITY DEFINER
@@ -50,9 +59,15 @@ if (!$result = @$db->db_query('SELECT 0 FROM lehre.tbl_kalender_notiz WHERE 0 =
RETURN OLD;
END;
$function$;
$function$;';
CREATE TRIGGER cleanup_notiz_on_kalender_notiz_delete
if (!$db->db_query($qry))
echo '<strong>lehre.tbl_notiz cleanup function: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_notiz cleanup function created';
}
$qry = 'CREATE TRIGGER cleanup_notiz_on_kalender_notiz_delete
AFTER DELETE ON lehre.tbl_kalender_notiz
FOR EACH ROW
EXECUTE PROCEDURE lehre.cleanup_notiz_on_kalender_notiz_delete();';
@@ -65,7 +80,16 @@ if (!$result = @$db->db_query('SELECT 0 FROM lehre.tbl_kalender_notiz WHERE 0 =
// Delete note assignments after a physical delete or when every row in the
// calendar group has an inactive status.
$qry = 'CREATE OR REPLACE FUNCTION lehre.cleanup_kalender_notiz()
$result = $db->db_query("SELECT 1
FROM pg_catalog.pg_proc AS p
JOIN pg_catalog.pg_namespace AS n ON n.oid = p.pronamespace
WHERE n.nspname = 'lehre'
AND p.proname = 'cleanup_kalender_notiz'
AND p.proargtypes = ''::oidvector");
if ($db->db_num_rows($result) === 0)
{
$qry = 'CREATE FUNCTION lehre.cleanup_kalender_notiz()
RETURNS trigger
LANGUAGE plpgsql
SECURITY DEFINER
@@ -113,6 +137,7 @@ $qry = 'CREATE OR REPLACE FUNCTION lehre.cleanup_kalender_notiz()
echo '<strong>lehre.tbl_kalender_notiz cleanup function: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_kalender_notiz cleanup function created';
}
$result = $db->db_query("SELECT 1
FROM pg_catalog.pg_trigger AS t
@@ -138,7 +163,16 @@ if ($db->db_num_rows($result) === 0)
// Delete resource assignments after a physical delete or when every row in the
// calendar group has an inactive status.
$qry = 'CREATE OR REPLACE FUNCTION lehre.cleanup_betriebsmittel_kalender()
$result = $db->db_query("SELECT 1
FROM pg_catalog.pg_proc AS p
JOIN pg_catalog.pg_namespace AS n ON n.oid = p.pronamespace
WHERE n.nspname = 'lehre'
AND p.proname = 'cleanup_betriebsmittel_kalender'
AND p.proargtypes = ''::oidvector");
if ($db->db_num_rows($result) === 0)
{
$qry = 'CREATE FUNCTION lehre.cleanup_betriebsmittel_kalender()
RETURNS trigger
LANGUAGE plpgsql
SECURITY DEFINER
@@ -186,6 +220,7 @@ $qry = 'CREATE OR REPLACE FUNCTION lehre.cleanup_betriebsmittel_kalender()
echo '<strong>lehre.tbl_betriebsmittel_kalender cleanup function: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_betriebsmittel_kalender cleanup function created';
}
$result = $db->db_query("SELECT 1
FROM pg_catalog.pg_trigger AS t
@@ -225,3 +260,20 @@ if ($db->db_num_rows($result) === 1)
else
echo '<br>public.tbl_notizzuordnung: eindeutige_kalender_gruppen_id column removed';
}
$result = $db->db_query("SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'tbl_notizzuordnung'
AND column_name = 'eindeutige_gruppen_id'");
if ($db->db_num_rows($result) === 1)
{
$qry = "ALTER TABLE public.tbl_notizzuordnung
DROP COLUMN eindeutige_gruppen_id";
if (!$db->db_query($qry))
echo '<strong>public.tbl_notizzuordnung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_notizzuordnung: eindeutige_gruppen_id column removed';
}