From b6e85daf65db7398fc1c11f73ea09432d09ec4b6 Mon Sep 17 00:00:00 2001
From: David Siegfried <david.siegfried@uni-vechta.de>
Date: Fri, 14 Jun 2024 11:34:07 +0000
Subject: [PATCH] add new config-option MAX_SHOW_ADMIN_COURSES, fixes #2853

Closes #2853

Merge request studip/studip!1931
---
 app/controllers/admin/courses.php             |  2 +-
 ....0.8_add_max_show_admin_courses_config.php | 32 +++++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 db/migrations/6.0.8_add_max_show_admin_courses_config.php

diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index a798880ead8..5f60442bb40 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -294,7 +294,7 @@ class Admin_CoursesController extends AuthenticatedController
         PageLayout::setTitle(_('Verwaltung von Veranstaltungen und Einrichtungen'));
         // Add admission functions.
         PageLayout::addScript('studip-admission.js');
-        $this->max_show_courses = 500;
+        $this->max_show_courses = Config::get()->MAX_SHOW_ADMIN_COURSES;
     }
 
     /**
diff --git a/db/migrations/6.0.8_add_max_show_admin_courses_config.php b/db/migrations/6.0.8_add_max_show_admin_courses_config.php
new file mode 100644
index 00000000000..dbc19297bd2
--- /dev/null
+++ b/db/migrations/6.0.8_add_max_show_admin_courses_config.php
@@ -0,0 +1,32 @@
+<?php
+
+final class AddMaxShowAdminCoursesConfig extends Migration
+{
+    public function description()
+    {
+        return 'Adds the configuration MAX_SHOW_ADMIN_COURSES, if it doesn\'t exist yet and set a default value.';
+    }
+
+    public function up()
+    {
+        DBManager::get()->exec("INSERT IGNORE INTO `config`
+             (`field`, `value`, `type`, `range`, `section`, `mkdate`, `chdate`, `description`)
+             VALUES
+             (
+              'MAX_SHOW_ADMIN_COURSES',
+              500,
+              'integer',
+              'global',
+              'MeineVeranstaltungen',
+              UNIX_TIMESTAMP(),
+              UNIX_TIMESTAMP(),
+              'Wie viele Veranstaltungen sollen auf der Admin-Veranstaltungsseite angezeigt werden.'
+             )"
+        );
+    }
+
+    public function down()
+    {
+        DBManager::get()->exec("DELETE FROM `config_values` WHERE `field` = 'MAX_SHOW_ADMIN_COURSES'");
+    }
+}
-- 
GitLab