From 8b941a80788aa5e6bee688dea7575a100438a5d6 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Tue, 6 Sep 2022 05:39:52 +0000
Subject: [PATCH] cache administration: prepopulate memcached settings and fix
 message upon...

Closes #1536 and #1124

Merge request studip/studip!962
---
 app/controllers/admin/cache.php                   | 2 --
 lib/classes/StudipMemcachedCache.php              | 2 +-
 resources/vue/components/MemcachedCacheConfig.vue | 8 ++++++--
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/app/controllers/admin/cache.php b/app/controllers/admin/cache.php
index 604718b35f1..329aab7a968 100644
--- a/app/controllers/admin/cache.php
+++ b/app/controllers/admin/cache.php
@@ -112,8 +112,6 @@ class Admin_CacheController extends AuthenticatedController
         if (Config::get()->store('SYSTEMCACHE', $settings)) {
             PageLayout::postSuccess(_('Die Einstellungen wurden gespeichert.'));
             StudipCacheFactory::unconfigure();
-        } else {
-            PageLayout::postError(_('Die Einstellungen konnten nicht gespeichert werden.'));
         }
 
         $this->relocate('admin/cache/settings');
diff --git a/lib/classes/StudipMemcachedCache.php b/lib/classes/StudipMemcachedCache.php
index 4b9b628c68b..619a61ed91c 100644
--- a/lib/classes/StudipMemcachedCache.php
+++ b/lib/classes/StudipMemcachedCache.php
@@ -46,7 +46,7 @@ class StudipMemcachedCache implements StudipSystemCache
 
         if (count($this->memcache->getServerList()) === 0) {
             foreach ($servers as $server) {
-                $status = $this->memcache->addServer($server['hostname'], $server['port']);
+                $status = $this->memcache->addServer($server['hostname'], (int) $server['port']);
 
                 if (!$status) {
                     throw new Exception("Could not add server: {$server['hostname']} @ port {$server['port']}");
diff --git a/resources/vue/components/MemcachedCacheConfig.vue b/resources/vue/components/MemcachedCacheConfig.vue
index 84e8059d865..c2e46632f23 100644
--- a/resources/vue/components/MemcachedCacheConfig.vue
+++ b/resources/vue/components/MemcachedCacheConfig.vue
@@ -46,13 +46,17 @@ export default {
     },
     methods: {
         addServer () {
-            this.serverConfig.push({ server: '', port: null })
+            this.serverConfig.push({ hostname: 'localhost', port: 11211 })
         },
         removeServer (event, index) {
             this.serverConfig.splice(index, 1)
         },
         isValid () {
-            return this.serverConfig.length > 0;
+            return this.serverConfig.length > 0
+                && this.serverConfig.every(server => {
+                    return server.hostname.length > 0
+                        && server.port > 0;
+                });
         }
     },
     watch: {
-- 
GitLab