Skip to content
Snippets Groups Projects
Select Git revision
  • e67b28357ce04e1c2af8cf8a07d66159e44ba73a
  • main default protected
  • studip-rector
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • pipeline-improvements
  • webpack-optimizations
  • rector
  • icon-renewal
  • http-client-and-factories
  • jsonapi-atomic-operations
  • vueify-messages
  • tic-2341
  • 135-translatable-study-areas
  • extensible-sorm-action-parameters
  • sorm-configuration-trait
  • jsonapi-mvv-routes
  • docblocks-for-magic-methods
19 results

CoreOverview.class.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    IliasInterfaceModule.php 7.07 KiB
    <?php
    /**
     * Ilias Interface - navigation and meta data
     *
     * @author    André Noack <noack@data-quest.de>
     * @copyright 2019 Stud.IP Core-Group
     * @license   GPL version 2 or any later version
     * @since     4.3
     */
    
    class IliasInterfaceModule extends CorePlugin implements StudipModule, SystemPlugin
    {
        public function __construct()
        {
            parent::__construct();
            if (Config::get()->ILIAS_INTERFACE_ENABLE) {
                $ilias_interface_config = Config::get()->ILIAS_INTERFACE_BASIC_SETTINGS;
                if (Seminar_Perm::get()->have_perm('root')) {
                    Navigation::addItem('/admin/config/ilias_interface',
                        new Navigation(_('ILIAS-Schnittstelle'), 'dispatch.php/admin/ilias_interface'));
                }
                if (Seminar_Perm::get()->have_perm('tutor') || (Seminar_Perm::get()->have_perm('autor') && array_key_exists('show_tools_page', $ilias_interface_config) && $ilias_interface_config['show_tools_page'])) {
                    $ilias = new Navigation(_('ILIAS'), 'dispatch.php/my_ilias_accounts');
                    $ilias->setImage(Icon::create('ilias'));
                    $ilias->setDescription(_('Schnittstelle zu ILIAS'));
                    Navigation::addItem('/contents/my_ilias_accounts', $ilias);
                }
            }
        }
    
        public function isActivatableForContext(Range $context)
        {
            return Config::get()->ILIAS_INTERFACE_ENABLE && $context->getRangeType() === 'course';
        }
    
        public function getInfoTemplate($course_id)
        {
            return null;
        }
    
        public function getIconNavigation($course_id, $last_visit, $user_id)
        {
            if (!Config::get()->ILIAS_INTERFACE_ENABLE) {
                return;
            }
    
            $sql = "SELECT COUNT(IF(a.module_type != 'crs', module_id, NULL)) AS count_modules,
                           COUNT(IF(a.module_type = 'crs', module_id, NULL)) AS count_courses,
                           COUNT(IF((chdate > IFNULL(b.visitdate, :threshold) AND a.module_type != 'crs'), module_id, NULL)) AS neue
                    FROM object_contentmodules AS a
                    LEFT JOIN object_user_visits AS b
                      ON b.object_id = a.object_id
                         AND b.user_id = :user_id
                         AND b.plugin_id = :plugin_id
                    WHERE a.object_id = :course_id
                    GROUP BY a.object_id";
    
            $statement = DBManager::get()->prepare($sql);
            $statement->bindValue(':user_id', $user_id);
            $statement->bindValue(':course_id', $course_id);
            $statement->bindValue(':threshold', $last_visit);
            $statement->bindValue(':plugin_id', $this->getPluginId());
            $statement->execute();
            $result = $statement->fetch(PDO::FETCH_ASSOC);
    
            if (!$result) {
                return null;
            }
    
            $title = CourseConfig::get($course_id)->getValue('ILIAS_INTERFACE_MODULETITLE');