diff options
| author | Marcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de> | 2024-06-18 13:18:06 +0000 |
|---|---|---|
| committer | Marcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de> | 2024-06-18 13:18:06 +0000 |
| commit | 33fd1358507b4a5abb3dcebe78d407d0567717c1 (patch) | |
| tree | 6bd8f6959da4c3fc1b8907c0bbc28eb9e10d4a5a /lib/models/CourseTopic.class.php | |
| parent | 42d46671c0309bddb71a91bbfdc5f2fa2e44384e (diff) | |
Deprecate `StudipAutoloader` and use composer's `autoload`
Closes #4282
Merge request studip/studip!3099
Diffstat (limited to 'lib/models/CourseTopic.class.php')
| -rw-r--r-- | lib/models/CourseTopic.class.php | 261 |
1 files changed, 0 insertions, 261 deletions
diff --git a/lib/models/CourseTopic.class.php b/lib/models/CourseTopic.class.php deleted file mode 100644 index eb26efa..0000000 --- a/lib/models/CourseTopic.class.php +++ /dev/null @@ -1,261 +0,0 @@ -<?php -/** - * 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 Rasmus Fuhse <fuhse@data-quest.de> - * @copyright 2014 Stud.IP Core-Group - * @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2 - * @category Stud.IP - * - * @property string $id alias column for issue_id - * @property string $issue_id database column - * @property string $seminar_id database column - * @property string $author_id database column - * @property I18NString $title database column - * @property I18NString $description database column - * @property int $priority database column - * @property int $paper_related database column - * @property int $mkdate database column - * @property int $chdate database column - * @property SimpleORMapCollection|Folder[] $folders has_many Folder - * @property Course $course belongs_to Course - * @property User $author belongs_to User - * @property SimpleORMapCollection|CourseDate[] $dates has_and_belongs_to_many CourseDate - * @property-read mixed $forum_thread_url additional field - */ -class CourseTopic extends SimpleORMap -{ - protected static function configure($config = []) - { - $config['db_table'] = 'themen'; - $config['has_and_belongs_to_many']['dates'] = [ - 'class_name' => CourseDate::class, - 'thru_table' => 'themen_termine', - 'order_by' => 'ORDER BY date', - 'on_delete' => 'delete', - 'on_store' => 'store' - ]; - $config['has_many']['folders'] = [ - 'class_name' => Folder::class, - 'assoc_func' => 'findByTopic_id' - ]; - $config['belongs_to']['course'] = [ - 'class_name' => Course::class, - 'foreign_key' => 'seminar_id' - ]; - $config['belongs_to']['author'] = [ - 'class_name' => User::class, - 'foreign_key' => 'author_id' - ]; - - $config['additional_fields']['forum_thread_url']['get'] = 'getForumThreadURL'; - - $config['registered_callbacks']['before_create'][] = 'cbDefaultValues'; - $config['registered_callbacks']['after_store'][] = 'cbUpdateConnectedContentModules'; - $config['registered_callbacks']['before_delete'][] = 'cbUnlinkConnectedContentModules'; - - $config['i18n_fields']['title'] = true; - $config['i18n_fields']['description'] = true; - - parent::configure($config); - } - - public static function findByTermin_id($termin_id) - { - return self::findBySQL("INNER JOIN themen_termine USING (issue_id) - WHERE themen_termine.termin_id = ? - ORDER BY priority ASC", - [$termin_id] - ); - } - - public static function findBySeminar_id($seminar_id, $order_by = 'ORDER BY priority') - { - return parent::findBySeminar_id($seminar_id, $order_by); - } - - public static function findByTitle($seminar_id, $name) - { - return self::findOneBySQL("seminar_id = ? AND title = ?", [$seminar_id, $name]); - } - - public static function getMaxPriority($seminar_id) - { - return DBManager::get()->fetchColumn("SELECT MAX(priority) FROM themen WHERE seminar_id=?", [$seminar_id]); - } - - /** - * set or update connection with document folder - */ - public function connectWithDocumentFolder() - { - if ($this->seminar_id) { - $document_module = Seminar::getInstance($this->seminar_id)->getSlotModule('documents'); - if ($document_module) { - if (!$this->folders->count()) { - $folder = new Folder(); - $folder['range_id'] = $this['seminar_id']; - $folder['parent_id'] = Folder::findTopFolder($this['seminar_id'])->getId(); - $folder['range_type'] = "course"; - $folder['folder_type'] = "CourseTopicFolder"; - $folder['data_content']['topic_id'] = $this->getId(); - $folder['user_id'] = $GLOBALS['user']->id; - $folder['name'] = $this['title']; - $folder['description'] = $this['description']; - return $folder->store(); - } - } - } - return false; - } - - /** - * set or update connection with forum thread - */ - public function connectWithForumThread() - { - if ($this->seminar_id) { - $forum_module = Seminar::getInstance($this->seminar_id)->getSlotModule('forum'); - if ($forum_module instanceOf ForumModule) { - $forum_module->setThreadForIssue($this->id, $this->title, $this->description); - return true; - } - } - return false; - } - - public function getForumThreadURL() - { - if ($this->seminar_id) { - $forum_module = Seminar::getInstance($this->seminar_id)->getSlotModule('forum'); - if ($forum_module instanceOf ForumModule) { - return html_entity_decode($forum_module->getLinkToThread($this->id)); - } - } - return ''; - } - - protected function cbUpdateConnectedContentModules() - { - if ($this->isFieldDirty('title') || $this->isFieldDirty('description')) { - if ($this->forum_thread_url) { - $this->connectWithForumThread(); - } - } - } - - /** - * Removes link information for forum topic and remove forum topic as well - * if it is empty. - */ - protected function cbUnlinkConnectedContentModules() - { - $query = "DELETE fei, fe - FROM `forum_entries_issues` AS fei - LEFT JOIN `forum_entries` AS fe - ON fei.`topic_id` = fe.`topic_id` AND fe.`rgt` = fe.`lft` + 1 - WHERE `issue_id` = ?"; - DBManager::get()->execute($query, [$this->id]); - } - - protected function cbDefaultValues() - { - if (empty($this->content['priority'])) { - $this->content['priority'] = self::getMaxPriority($this->seminar_id) + 1; - } - } - - /** - * return all filerefs belonging to this topic, permissions fpr given user are checked - * - * @param string|User $user_or_id - * @return mixed[] A mixed array with FolderType and FileRef objects. - */ - public function getAccessibleFolderFiles($user_or_id) - { - $user_id = $user_or_id instanceof User ? $user_or_id->id : $user_or_id; - $all_files = []; - $all_folders = []; - $folders = $this->folders->getArrayCopy(); - foreach ($this->dates as $date) { - $folders = array_merge($folders, $date->folders->getArrayCopy()); - } - foreach ($folders as $folder) { - [$files, $typed_folders] = array_values(FileManager::getFolderFilesRecursive($folder->getTypedFolder(), $user_id)); - foreach ($files as $file) { - $all_files[$file->id] = $file; - } - $all_folders = array_merge($all_folders, $typed_folders); - } - return ['files' => $all_files, 'folders' => $all_folders]; - } - - /** - * Increases the priority of this topic. Meaning the topic will be sorted further up. - * Be aware that this actually decreases the priority property since lower numbers - * mean higher priority. - * - * @return boolean - * @todo Deprecated, remove for Stud.IP 6.0 - */ - public function increasePriority() - { - // Update all the course's topics with a lower priority than this one - $query = "UPDATE `themen` - SET `priority` = `priority` + 1 - WHERE `seminar_id` = :course_id - AND `priority` < :current_priority - ORDER BY `priority` DESC - LIMIT 1"; - $changed = DBManager::get()->execute($query, [ - ':course_id' => $this->seminar_id, - ':current_priority' => $this->priority, - ]); - - // If anything has changed, decrease priority. Otherwise the current - // topic is already at top. - if ($changed) { - $this->priority -= 1; - $this->store(); - return true; - } - - return false; - } - - /** - * Decreases the priority of this topic. Meaning the topic will be sorted further down. - * Be aware that this actually increases the priority property since higher numbers - * mean lower priority. - * - * @todo Deprecated, remove for Stud.IP 6.0 - */ - public function decreasePriority() - { - // Update all the course's topics with a higher priority than this one - $query = "UPDATE `themen` - SET `priority` = `priority` - 1 - WHERE `seminar_id` = :course_id - AND `priority` > :current_priority - ORDER BY `priority` ASC - LIMIT 1"; - $changed = DBManager::get()->execute($query, [ - ':course_id' => $this->seminar_id, - ':current_priority' => $this->priority, - ]); - - // If anything has changed, increase priority. Otherwise the current - // topic is already at bottom. - if ($changed) { - $this->priority += 1; - $this->store(); - return true; - } - - return false; - - } -} |
