Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

<?php
// This file is part of Moodle - http://moodle.org/
//
// 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 3 of the License, or
// (at your option) any later version.
//
// This program 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/>.

/**
 * Library of interface functions and constants for module edusharing
 *
 * All the core Moodle functions, needed to allow the module to work
 * integrated in Moodle should be placed here.
 * All the edusharing specific functions, needed to implement all the module
 * logic, should go to locallib.php. This will help to save some memory when
 * Moodle is performing actions across all modules.
 *
 * @package    mod_edusharing
 * @copyright  metaVentis GmbH — http://metaventis.com
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 *
 */

use mod_edusharing\EduSharingService;
use mod_edusharing\UtilityFunctions;

defined('MOODLE_INTERNAL') || die();

set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/lib');

/**
 * Module feature detection.
 *
 * @param string $feature FEATURE_xx constant for requested feature
 * @return int|bool True if module supports feature, false if not, null if doesn't know
 */
function edusharing_supports(string $feature): int|bool {
    return match ($feature) {
        FEATURE_MOD_ARCHETYPE => MOD_ARCHETYPE_RESOURCE,
        FEATURE_MOD_INTRO, FEATURE_SHOW_DESCRIPTION, FEATURE_BACKUP_MOODLE2 => true,
        default => false,
    };
}

/**
 * Given an object containing all the necessary data,
 * (defined by the form in mod_form.php) this function
 * will create a new instance and return the id number
 * of the new instance.
 *
 * @param stdClass $edusharing An object from the form in mod_form.php
 * @return int|bool The id of the newly inserted edusharing record
 */
function edusharing_add_instance(stdClass $edusharing): int|bool {
    $service = new EduSharingService();
    try {
        $id = $service->add_instance($edusharing);
    } catch (Exception $exception) {
        debugging('Instance creation failed: ' . $exception->getMessage());
        return false;
    }
    return $id;
}

/**
 * Function edusharing_update_instance
 *
 * Given an object containing all the necessary data,
 * (defined by the form in mod_form.php) this function
 * will update an existing instance with new data.
 *
 * @param stdClass $edusharing An object from the form in mod_form.php
 * @return boolean Success/Fail
 */
function edusharing_update_instance(stdClass $edusharing): bool {
    $service = new EduSharingService();
    try {
        $service->update_instance($edusharing);
    } catch (Exception $exception) {
        debugging('Instance update failed: ' . $exception->getMessage());
        return false;
    }
    return true;
}

/**
 * Given an ID of an instance of this module,
 * this function will permanently delete the instance
 * and any data that depends on it.
 *
 * @param int $id Id of the module instance
 * @return boolean Success/Failure
 */
function edusharing_delete_instance($id): bool {
    $service = new EduSharingService();
    try {
        $service->delete_instance((string)$id);
    } catch (Exception $exception) {
        debugging('Instance deletion failed: ' . $exception->getMessage());
        return false;
    }
    return true;
}


/**
 * Return a small object with summary information about what a
 * user has done with a given particular instance of this module
 * Used for user activity reports.
 *
 * @param object $course
 * @param object $user
 * @param object $mod
 * @param object $edusharing
 *
 * @return stdClass
 */
function edusharing_user_outline($course, $user, $mod, $edusharing) {
    $return       = new stdClass;
    $return->time = time();
    $return->info = 'edusharing_user_outline() - edu-sharing activity outline.';

    return $return;
}

/**
 * Print a detailed representation of what a user has done with
 * a given particular instance of this module, for user activity reports.
 *
 * @param object $course
 * @param object $user
 * @param object $mod
 * @param object $edusharing
 *
 * @return boolean
 */
function edusharing_user_complete($course, $user, $mod, $edusharing) {
    return true;
}

/**
 * Given a course and a time, this module should find recent activity
 * that has occurred in edusharing activities and print it out.
 * Return true if there was output, or false is there was none.
 *
 * @param object $course
 * @param object $isteacher
 * @param object $timestart
 *
 * @return boolean
 */
function edusharing_print_recent_activity($course, $isteacher, $timestart) {
    return false;
}

/**
 * Function to be run periodically according to the moodle cron
 * This function searches for things that need to be done, such
 * as sending out mail, toggling flags etc ...
 *
 * @return boolean
 **/
function edusharing_cron() {
    return true;
}

/**
 * Must return an array of users who are participants for a given instance
 * of edusharing. Must include every user involved in the instance,
 * independient of his role (student, teacher, admin...). The returned
 * objects must contain at least id property.
 * See other modules as example.
 *
 * @param int $edusharingid ID of an instance of this module
 * @return boolean|array false if no participants, array of objects otherwise
 */
function edusharing_get_participants($edusharingid) {
    return false;
}

/**
 * This function returns if a scale is being used by one edusharing
 * if it has support for grading and scales. Commented code should be
 * modified if necessary. See forum, glossary or journal modules
 * as reference.
 *
 * @param int $edusharingid ID of an instance of this module
 * @param int $scaleid
 * @return mixed
 */
function edusharing_scale_used($edusharingid, $scaleid) {
    return false;
}

/**
 * Checks if scale is being used by any instance of edusharing.
 * This function was added in 1.9
 *
 * This is used to find out if scale used anywhere
 * @param int $scaleid
 * @return boolean True if the scale is used by any edusharing
 */
function edusharing_scale_used_anywhere($scaleid) {
    return false;
}

/**
 * Execute post-install actions for the module
 * This function was added in 1.9
 *
 * @return boolean true if success, false on error
 */
function edusharing_install() {
    return true;
}

/**
 * Execute post-uninstall custom actions for the module
 * This function was added in 1.9
 *
 * @return boolean true if success, false on error
 */
function edusharing_uninstall() {
    return true;
}

/**
 * Moodle will cache the outpu of this method, so it gets only called after
 * adding or updating an edu-sharing-resource, NOT every time the course
 * is shown.
 *
 * @param stdClass $coursemodule
 * @return stdClass|bool
 */
function edusharing_get_coursemodule_info(stdClass $coursemodule): cached_cm_info|bool {
    $utils = new UtilityFunctions();
    return $utils->get_course_module_info($coursemodule);
}

/**
 * Hook called before we delete a course module.
 *
 * @param \stdClass $cm The course module record.
 */
function edusharing_pre_course_module_delete($cm) {
    return false;
}

/**
 * Function edusharing_course_module_background_deletion_recommended
 *
 * @return false
 */
function edusharing_course_module_background_deletion_recommended() {
    return false;
}


/**
 * Function edusharing_pre_block_delete
 *
 * @param mixed $cm
 * @return false
 */
function edusharing_pre_block_delete($cm) {
    return false;
}

/**
 * Function edusharing_update_settings_images
 *
 * @param string $settingname
 * @return void
 */
function edusharing_update_settings_images(string $settingname) {
    $utils = new UtilityFunctions();
    $utils->update_settings_images($settingname);
}

/**
 * Function edusharing_update_settings_name
 *
 * @return void
 */
function edusharing_update_settings_name() {
    // Reset language cache.
    get_string_manager()->reset_caches();
}