diff options
Diffstat (limited to 'sqlbox/lib.php')
-rw-r--r-- | sqlbox/lib.php | 393 |
1 files changed, 393 insertions, 0 deletions
diff --git a/sqlbox/lib.php b/sqlbox/lib.php new file mode 100644 index 0000000..d84e480 --- /dev/null +++ b/sqlbox/lib.php @@ -0,0 +1,393 @@ +<?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/>. + +/** + * Library of interface functions and constants for module newmodule + * + * All the core Moodle functions, neeeded to allow the module to work + * integrated in Moodle should be placed here. + * All the newmodule 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 + * @subpackage newmodule + * @copyright 2011 Your Name + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** example constant */ +//define('NEWMODULE_ULTIMATE_ANSWER', 42); + +//////////////////////////////////////////////////////////////////////////////// +// Moodle core API // +//////////////////////////////////////////////////////////////////////////////// + +/** + * Returns the information on whether the module supports a feature + * + * @see plugin_supports() in lib/moodlelib.php + * @param string $feature FEATURE_xx constant for requested feature + * @return mixed true if the feature is supported, null if unknown + */ +function newmodule_supports($feature) { + switch($feature) { + case FEATURE_MOD_INTRO: return true; + default: return null; + } +} + +/** + * Saves a new instance of the newmodule into the database + * + * 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 object $newmodule An object from the form in mod_form.php + * @param mod_newmodule_mod_form $mform + * @return int The id of the newly inserted newmodule record + */ +function newmodule_add_instance(stdClass $newmodule, mod_newmodule_mod_form $mform = null) { + global $DB; + + $newmodule->timecreated = time(); + + # You may have to add extra stuff in here # + + return $DB->insert_record('newmodule', $newmodule); +} + +/** + * Updates an instance of the newmodule in the database + * + * 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 object $newmodule An object from the form in mod_form.php + * @param mod_newmodule_mod_form $mform + * @return boolean Success/Fail + */ +function newmodule_update_instance(stdClass $newmodule, mod_newmodule_mod_form $mform = null) { + global $DB; + + $newmodule->timemodified = time(); + $newmodule->id = $newmodule->instance; + + # You may have to add extra stuff in here # + + return $DB->update_record('newmodule', $newmodule); +} + +/** + * Removes an instance of the newmodule from the database + * + * 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 newmodule_delete_instance($id) { + global $DB; + + if (! $newmodule = $DB->get_record('newmodule', array('id' => $id))) { + return false; + } + + # Delete any dependent records here # + + $DB->delete_records('newmodule', array('id' => $newmodule->id)); + + return true; +} + +/** + * Returns 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. + * $return->time = the time they did it + * $return->info = a short text description + * + * @return stdClass|null + */ +function newmodule_user_outline($course, $user, $mod, $newmodule) { + + $return = new stdClass(); + $return->time = 0; + $return->info = ''; + return $return; +} + +/** + * Prints a detailed representation of what a user has done with + * a given particular instance of this module, for user activity reports. + * + * @param stdClass $course the current course record + * @param stdClass $user the record of the user we are generating report for + * @param cm_info $mod course module info + * @param stdClass $newmodule the module instance record + * @return void, is supposed to echp directly + */ +function newmodule_user_complete($course, $user, $mod, $newmodule) { +} + +/** + * Given a course and a time, this module should find recent activity + * that has occurred in newmodule activities and print it out. + * Return true if there was output, or false is there was none. + * + * @return boolean + */ +function newmodule_print_recent_activity($course, $viewfullnames, $timestart) { + return false; // True if anything was printed, otherwise false +} + +/** + * Prepares the recent activity data + * + * This callback function is supposed to populate the passed array with + * custom activity records. These records are then rendered into HTML via + * {@link newmodule_print_recent_mod_activity()}. + * + * @param array $activities sequentially indexed array of objects with the 'cmid' property + * @param int $index the index in the $activities to use for the next record + * @param int $timestart append activity since this time + * @param int $courseid the id of the course we produce the report for + * @param int $cmid course module id + * @param int $userid check for a particular user's activity only, defaults to 0 (all users) + * @param int $groupid check for a particular group's activity only, defaults to 0 (all groups) + * @return void adds items into $activities and increases $index + */ +function newmodule_get_recent_mod_activity(&$activities, &$index, $timestart, $courseid, $cmid, $userid=0, $groupid=0) { +} + +/** + * Prints single activity item prepared by {@see newmodule_get_recent_mod_activity()} + + * @return void + */ +function newmodule_print_recent_mod_activity($activity, $courseid, $detail, $modnames, $viewfullnames) { +} + +/** + * 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 + * @todo Finish documenting this function + **/ +function newmodule_cron () { + return true; +} + +/** + * Returns all other caps used in the module + * + * @example return array('moodle/site:accessallgroups'); + * @return array + */ +function newmodule_get_extra_capabilities() { + return array(); +} + +//////////////////////////////////////////////////////////////////////////////// +// Gradebook API // +//////////////////////////////////////////////////////////////////////////////// + +/** + * Is a given scale used by the instance of newmodule? + * + * This function returns if a scale is being used by one newmodule + * 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 $newmoduleid ID of an instance of this module + * @return bool true if the scale is used by the given newmodule instance + */ +function newmodule_scale_used($newmoduleid, $scaleid) { + global $DB; + + /** @example */ + if ($scaleid and $DB->record_exists('newmodule', array('id' => $newmoduleid, 'grade' => -$scaleid))) { + return true; + } else { + return false; + } +} + +/** + * Checks if scale is being used by any instance of newmodule. + * + * This is used to find out if scale used anywhere. + * + * @param $scaleid int + * @return boolean true if the scale is used by any newmodule instance + */ +function newmodule_scale_used_anywhere($scaleid) { + global $DB; + + /** @example */ + if ($scaleid and $DB->record_exists('newmodule', array('grade' => -$scaleid))) { + return true; + } else { + return false; + } +} + +/** + * Creates or updates grade item for the give newmodule instance + * + * Needed by grade_update_mod_grades() in lib/gradelib.php + * + * @param stdClass $newmodule instance object with extra cmidnumber and modname property + * @return void + */ +function newmodule_grade_item_update(stdClass $newmodule) { + global $CFG; + require_once($CFG->libdir.'/gradelib.php'); + + /** @example */ + $item = array(); + $item['itemname'] = clean_param($newmodule->name, PARAM_NOTAGS); + $item['gradetype'] = GRADE_TYPE_VALUE; + $item['grademax'] = $newmodule->grade; + $item['grademin'] = 0; + + grade_update('mod/newmodule', $newmodule->course, 'mod', 'newmodule', $newmodule->id, 0, null, $item); +} + +/** + * Update newmodule grades in the gradebook + * + * Needed by grade_update_mod_grades() in lib/gradelib.php + * + * @param stdClass $newmodule instance object with extra cmidnumber and modname property + * @param int $userid update grade of specific user only, 0 means all participants + * @return void + */ +function newmodule_update_grades(stdClass $newmodule, $userid = 0) { + global $CFG, $DB; + require_once($CFG->libdir.'/gradelib.php'); + + /** @example */ + $grades = array(); // populate array of grade objects indexed by userid + + grade_update('mod/newmodule', $newmodule->course, 'mod', 'newmodule', $newmodule->id, 0, $grades); +} + +//////////////////////////////////////////////////////////////////////////////// +// File API // +//////////////////////////////////////////////////////////////////////////////// + +/** + * Returns the lists of all browsable file areas within the given module context + * + * The file area 'intro' for the activity introduction field is added automatically + * by {@link file_browser::get_file_info_context_module()} + * + * @param stdClass $course + * @param stdClass $cm + * @param stdClass $context + * @return array of [(string)filearea] => (string)description + */ +function newmodule_get_file_areas($course, $cm, $context) { + return array(); +} + +/** + * File browsing support for newmodule file areas + * + * @package mod_newmodule + * @category files + * + * @param file_browser $browser + * @param array $areas + * @param stdClass $course + * @param stdClass $cm + * @param stdClass $context + * @param string $filearea + * @param int $itemid + * @param string $filepath + * @param string $filename + * @return file_info instance or null if not found + */ +function newmodule_get_file_info($browser, $areas, $course, $cm, $context, $filearea, $itemid, $filepath, $filename) { + return null; +} + +/** + * Serves the files from the newmodule file areas + * + * @package mod_newmodule + * @category files + * + * @param stdClass $course the course object + * @param stdClass $cm the course module object + * @param stdClass $context the newmodule's context + * @param string $filearea the name of the file area + * @param array $args extra arguments (itemid, path) + * @param bool $forcedownload whether or not force download + * @param array $options additional options affecting the file serving + */ +function newmodule_pluginfile($course, $cm, $context, $filearea, array $args, $forcedownload, array $options=array()) { + global $DB, $CFG; + + if ($context->contextlevel != CONTEXT_MODULE) { + send_file_not_found(); + } + + require_login($course, true, $cm); + + send_file_not_found(); +} + +//////////////////////////////////////////////////////////////////////////////// +// Navigation API // +//////////////////////////////////////////////////////////////////////////////// + +/** + * Extends the global navigation tree by adding newmodule nodes if there is a relevant content + * + * This can be called by an AJAX request so do not rely on $PAGE as it might not be set up properly. + * + * @param navigation_node $navref An object representing the navigation tree node of the newmodule module instance + * @param stdClass $course + * @param stdClass $module + * @param cm_info $cm + */ +function newmodule_extend_navigation(navigation_node $navref, stdclass $course, stdclass $module, cm_info $cm) { +} + +/** + * Extends the settings navigation with the newmodule settings + * + * This function is called when the context for the page is a newmodule module. This is not called by AJAX + * so it is safe to rely on the $PAGE. + * + * @param settings_navigation $settingsnav {@link settings_navigation} + * @param navigation_node $newmodulenode {@link navigation_node} + */ +function newmodule_extend_settings_navigation(settings_navigation $settingsnav, navigation_node $newmodulenode=null) { +} |