From f0e8fa34633c02bc5147f2b159551115b6377e38 Mon Sep 17 00:00:00 2001 From: dingguodong Date: Mon, 8 Apr 2024 17:16:09 +0800 Subject: [PATCH] + Add the method to set hidden projects of the server for the user. --- module/repo/tao.php | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/module/repo/tao.php b/module/repo/tao.php index 4b13bbd606..3fa4d1fa1f 100644 --- a/module/repo/tao.php +++ b/module/repo/tao.php @@ -357,4 +357,47 @@ class repoTao extends repoModel return array(); } + + /** + * Set hidden projects of the server for the user. + * + * @param string|int $server + * @param string|array $projects + * @param string $user + * @param bool $override + * @return bool + */ + protected function setHiddenProjects(string|int $server, string|array $projects, string $user = '', bool $override = true) + { + if(empty($user)) $user = 'system'; + + $hiddenProjects = $this->getHiddenProjects($user); + + if(is_string($projects) && strpos($projects, ',') !== false) $projects = explode(',', $projects); + + $server = (string) $server; + if(isset($hiddenProjects[$server]) || !empty($hiddenProjects)) + { + $hiddenProjects[$server] = $override ? $projects : array_unique(array_merge($hiddenProjects[$server], $projects)); + + $this->dao->update(TABLE_CONFIG)->set('`value`')->eq(json_encode($hiddenProjects)) + ->where('module')->eq('repo') + ->beginIF($user)->andWhere('owner')->eq($user)->fi() + ->andWhere('`key`')->eq('hiddenProjects') + ->exec(); + } + else + { + $hiddenProjects[$server] = $projects; + $hiddenProjectData = new stdclass; + $hiddenProjectData->vision = $this->config->vision; + $hiddenProjectData->owner = $user; + $hiddenProjectData->module = 'repo'; + $hiddenProjectData->key = 'hiddenProjects'; + $hiddenProjectData->value = json_encode($hiddenProjects); + $this->dao->insert(TABLE_CONFIG)->data($hiddenProjectData)->autoCheck()->exec(); + } + + return !dao::isError(); + } }