From bb2278c43c4992c2cc0fc2d468ad98a395e13962 Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Thu, 16 May 2024 10:55:44 +0000
Subject: [PATCH] remote obsolete class, fixes #3283

Closes #3283

Merge request studip/studip!2215
---
 lib/classes/WidgetHelper.php | 402 -----------------------------------
 1 file changed, 402 deletions(-)
 delete mode 100644 lib/classes/WidgetHelper.php

diff --git a/lib/classes/WidgetHelper.php b/lib/classes/WidgetHelper.php
deleted file mode 100644
index ff4d7a61268..00000000000
--- a/lib/classes/WidgetHelper.php
+++ /dev/null
@@ -1,402 +0,0 @@
-<?php
-/**
- * WidgetHelper.php - utility functions for Widget-Parameter Handling
- * @deprecated since Stud.IP 5.5
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * @author   Nadine Werner <nadine.werner@uni-osnabrueck.de>
- * @author   André Klaßen <klassen@elan-ev.de>
- * @license  http://www.gnu.org/licenses/gpl-2.0.html GPL version 2
- * @category Stud.IP
- * @package  index
- * @since    3.1
- */
-
-class WidgetHelper
-{
-    /**
-     * array of submitted widget parameter values
-     */
-    private static $params = [];
-
-    /**
-     * array of submitted widget parameter values
-     */
-    private static $activeWidget;
-
-    /**
-     * Saves the widget data of a user
-     */
-    private static $userWidgets = [];
-
-    /**
-     * Set the last active Widget
-     * @param string $activeWidget
-     */
-    public static function setActiveWidget($activeWidget)
-    {
-        self::$activeWidget = $activeWidget;
-    }
-
-    /**
-     * Returns the position in the two column layout on the Startpage
-     * If no position is stored in UserConfig, the widget will be displayed on the right side.
-     *
-     * @param string $pluginid
-     *
-     * @return the position as array matrix
-     */
-    public static function getWidgetPosition($pluginid)
-    {
-        $query = "SELECT position FROM widget_user where id = ?";
-        $statement = DBManager::get()->prepare($query);
-        $statement->execute([$pluginid]);
-        $pos = $statement->fetchColumn();
-
-        return $pos;
-    }
-
-    /**
-     * storeNewPositions - stores new Widget positions for a given user
-     *
-     * @param array $lanes array with column as index and ids array as value
-     *
-     * @return void
-     */
-    public static function storeNewPositions(array $lanes): void
-    {
-        // Query not displayed widgets to sort them to the bottom of a lane
-        $query = "SELECT `col`, `id`
-                  FROM `widget_user`
-                  WHERE `range_id` = ?
-                    AND `id` NOT IN (?)
-                  ORDER BY `col`, `position`";
-        $undisplayed = DBManager::get()->fetchGrouped($query, [
-            User::findCurrent()->id,
-            array_merge(...$lanes)
-        ], function ($row) {
-            return array_column($row, 'id');
-        });
-
-        // Set new positions
-        $query = "UPDATE `widget_user`
-                  SET `col` = :column,
-                      `position` = :position
-                  WHERE `id` = :id
-                    AND `range_id` = :user_id";
-        $statement = DBManager::get()->prepare($query);
-        $statement->bindValue(':user_id', User::findCurrent()->id);
-
-        foreach ([0, 1] as $column) {
-            $statement->bindValue(':column', $column);
-
-            $ids = array_merge(
-                $lanes[$column] ?? [],
-                $undisplayed[$column] ?? []
-            );
-
-            $position = 0;
-            foreach ($ids as $id) {
-                $statement->bindValue(':position', $position++);
-                $statement->bindValue(':id', $id);
-                $statement->execute();
-            }
-        }
-    }
-
-    /**
-     * addInitialPositons - adds the global widget default settings to an user setting
-     *
-     * @param string $col
-     * @param array $ids of widgets
-     * @param string $range_id
-     *
-     * @return void
-     */
-    public static function addInitialPositions($col, $ids, $range_id)
-    {
-        if(is_array($ids)) {
-             foreach ($ids as $pos => $id) {
-                  $pos = intVal($pos);
-                  $query = "REPLACE INTO widget_user (`pluginid`, `position`, `range_id`) VALUES (?,?,?);";
-                  $statement = DBManager::get()->prepare($query);
-                  $statement->execute([$id, $pos, $range_id]);
-             }
-        }
-    }
-
-    /**
-     * storeInitialPositions - stores the global widget default for a given perm
-     *
-     * @param string $col
-     * @param array $ids of widgets
-     * @param string $perm
-     *
-     * @return boolean success
-     */
-    public static function storeInitialPositions($col, $ids, $perm)
-    {
-        $stmt = DBManager::get()->prepare('DELETE FROM widget_default WHERE `perm` = ? AND `col` = ?;');
-        $stmt->execute([$perm, $col]);
-
-        if (is_array($ids)) {
-            foreach ($ids as $id => $pos) {
-                if ($id) {
-                    $pos = intVal($pos);
-                    $stmt = DBManager::get()->prepare("REPLACE INTO widget_default (`pluginid`,`col`, `position`, `perm`) VALUES (?,?,?,?);");
-                    $stmt->execute([$id, $col, $pos, $perm]);
-                }
-            }
-
-            return true;
-        }
-
-        return false;
-    }
-
-    public static function getInitialPositions($perm)
-    {
-        return DBManager::get()->fetchGroupedPairs("SELECT col, pluginid, position FROM widget_default "
-                . "WHERE perm = ? "
-                . "ORDER BY col ASC, position ASC", [$perm]);
-    }
-
-    /**
-     * Sets the current setting of a user as the default for a usergroup
-     *
-     * @param string $range_id The range id of the user that defines the setting
-     * @param string $group The usergroup
-     */
-    public static function setAsInitialPositions($range_id, $group)
-    {
-        DBManager::get()->execute("DELETE FROM widget_default WHERE `perm` = ?", [$group]);
-        DBManager::get()->execute('INSERT INTO widget_default (SELECT pluginid, col, position, ? as perm  FROM widget_user WHERE range_id = ?)', [$group, $range_id]);
-    }
-
-    /**
-     * setInitialPositions - copies the default to the logged on user
-     */
-    public static function setInitialPositions()
-    {
-        $query = "INSERT INTO widget_user (pluginid, position, range_id, col)
-                  SELECT pluginid, position, :user_id, col
-                  AS perm
-                  FROM widget_default
-                  WHERE perm = :perm
-
-                  UNION
-
-                  -- Dummy entry to allow no widgets
-                  SELECT -1, 0, :user_id, 2";
-        DBManager::get()->execute($query, [
-            ':user_id' => $GLOBALS['user']->id,
-            ':perm'    => $GLOBALS['perm']->get_perm(),
-        ]);
-    }
-
-    /**
-     * getUserWidgets - retrieves the widget settings for a given user
-     *
-     * @param string $id
-     *
-     * @return array $widgets
-     */
-    public static function getUserWidgets($id, $col = 0)
-    {
-        $plugin_manager = PluginManager::getInstance();
-        $query = "SELECT * FROM widget_user WHERE range_id=? AND col = ? ORDER BY position";
-        $statement = DBManager::get()->prepare($query);
-        $statement->execute([$id, $col]);
-        $widgets = [];
-        while ($db_widget = $statement->fetch(PDO::FETCH_ASSOC)) {
-            if(!is_null($plugin_manager->getPluginById($db_widget['pluginid']))){
-                $widget = clone $plugin_manager->getPluginById($db_widget['pluginid']);
-                $widget->widget_id = $db_widget['id'];
-                $widgets[$db_widget['position']] = $widget;
-            }
-        }
-        return $widgets;
-    }
-
-    /**
-     * Returns whether a user has any defined widgets.
-     * @param  string  $user_id User id
-     * @return boolean
-     */
-    public static function hasUserWidgets($user_id)
-    {
-        $query = "SELECT 1 FROM `widget_user` WHERE `range_id` = ?";
-        return (bool) DBManager::get()->fetchColumn($query, [$user_id]);
-    }
-
-    /**
-     * addWidgetUserConfig - creates user_config entry for widget newly added by a user
-     *
-     * @param string $id - user_id
-     * @param string $pluginName
-     * @param array $confArray
-     *
-     * @return void
-     */
-    public static function addWidgetUserConfig($id, $pluginName, $confArray )
-    {
-        UserConfig::get($id)->store($pluginName, $confArray );
-    }
-
-
-    /**
-     * getWidgetUserConfig - retrieves user_config entry for widget newly added by a user
-     *
-     * @param string $id user_id
-     * @param string $pluginName
-     *
-     * @return object UserConfig
-     */
-    public static function getWidgetUserConfig($id, $pluginName)
-    {
-        return UserConfig::get($id)->getValue($pluginName);
-
-    }
-
-    /**
-     * removeWidget - removes a widget for a user
-     *
-     * @param string $id - widget_id
-     * @param string $pluginName
-     * @param string $range_id e.g. user_id
-     *
-     * @return bool success
-     */
-    public static function removeWidget($id, $pluginName, $range_id)
-    {
-        UserConfig::get($range_id)->delete($pluginName);
-
-        $query = "DELETE FROM widget_user WHERE id = ? AND range_id = ?";
-        $statement = DBManager::get()->prepare($query);
-
-        return $statement->execute([$id, $range_id]);
-    }
-
-    /**
-     * addWidget - adds a widget for a given user
-     *
-     * @param string $id - widget_id
-     * @param string $range_id e.g. user_id
-     *
-     * @return bool|int false on error, id of inserted widget otherwise
-     */
-    public static function addWidget($id, $range_id)
-    {
-        $db = DBManager::get();
-        $statement = $db->prepare('SELECT MAX(position) + 1 FROM widget_user WHERE range_id = :range_id');
-        $statement->bindValue(':range_id', $range_id);
-        $statement->execute();
-        $position = $statement->fetchColumn() ?: 0;
-
-        $statement = $db->prepare('INSERT INTO widget_user (pluginid, position, range_id) VALUES (:id, :position, :range_id)');
-        $statement->bindValue(':id', $id);
-        $statement->bindValue(':position', $position);
-        $statement->bindValue(':range_id', $range_id);
-        $result = $statement->execute();
-
-        return $result ? $db->lastInsertId() : false;
-    }
-
-    /**
-     * getWidgetName - retrieves the name of a given widget
-     *
-     * @param string $id - widget_id
-     *
-     * @return string widget_name
-     */
-    public static function getWidgetName($id)
-    {
-        $query = "SELECT `pluginid` FROM `widget_user` WHERE `id`=?";
-        $statement = DBManager::get()->prepare($query);
-        $statement->execute([$id]);
-        $pid = $statement->fetch(PDO::FETCH_ASSOC);
-
-        $plugin_manager = PluginManager::getInstance();
-        $plugin_info = $plugin_manager->getPluginById($pid['pluginid']);
-        return $plugin_info ? $plugin_info->getPluginName() : false;
-
-    }
-
-
-    /**
-     * getWidget - retrieves an instance of a given widget / portal plugin
-     *
-     * @param string $pluginid
-     *
-     * @return object widget
-     */
-    public static function getWidget($pluginid)
-    {
-        return PluginManager::getInstance()->getPluginById($pluginid);
-    }
-
-    /**
-     * getAvailableWidgets - fetches all widgets that are not already in use.
-     *
-     * @param string $user_id the user to check
-     *
-     * @return array All available widgets.
-     */
-    public static function getAvailableWidgets($user_id = null)
-    {
-        $all_widgets = PluginEngine::getPlugins(PortalPlugin::class);
-
-        $used_widgets = is_null($user_id)
-                ? []
-                : DBManager::get()->fetchFirst("SELECT `pluginid` FROM `widget_user` WHERE `range_id`=? ORDER BY `pluginid`", [$user_id]);
-
-        $available = [];
-        foreach ($all_widgets as $widget) {
-            if (!in_array($widget->getPluginId(), $used_widgets)) {
-                $available[$widget->getPluginId()] = $widget;
-            }
-        }
-        return $available;
-    }
-
-    /**
-     * hasWidget - returns whether has a certain widget activated
-     *
-     * @param string $user_id Id of the user
-     * @param mixed  $widget  Id or name of the widget (you may omit the
-     *                        'Widget' in the name)
-     * @return bool indicating whether the widget is activated
-     */
-    public static function hasWidget($user_id, $widget)
-    {
-        if (!isset(self::$userWidgets[$user_id])) {
-            $statement = DBManager::get()->prepare("
-                SELECT *
-                FROM widget_user
-                WHERE range_id = :user_id
-            ");
-            $statement->execute(['user_id' => $user_id]);
-            self::$userWidgets[$user_id] = $statement->fetchAll(PDO::FETCH_ASSOC);
-        }
-
-        if (!ctype_digit($widget)) {
-            $plugin = PluginManager::getInstance()->getPlugin($widget) ?: PluginManager::getInstance()->getPlugin($widget . "Widget");
-            if ($plugin) {
-                $widget = $plugin->getPluginId();
-            } else {
-                return false;
-            }
-        }
-
-        foreach (self::$userWidgets[$user_id] as $widget_user) {
-            if ($widget_user['pluginid'] == $widget) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
-- 
GitLab