error("You can't modify this course!");
}
- $modcode = "../mod/$mod->modulename/mod.php";
- if (file_exists($modcode)) {
- include($modcode);
+ $modlib = "../mod/$mod->modulename/lib.php";
+ if (file_exists($modlib)) {
+ include($modlib);
} else {
- error("This module is missing important code! (mod.php)");
+ error("This module is missing important code! ($modlib)");
}
+ $addinstancefunction = $mod->modulename."_add_instance";
+ $updateinstancefunction = $mod->modulename."_update_instance";
+ $deleteinstancefunction = $mod->modulename."_delete_instance";
switch ($mod->mode) {
case "update":
- if (! update_instance($mod)) {
+ if (! $updateinstancefunction($mod)) {
error("Could not update the $mod->modulename");
}
add_to_log($mod->course, "course", "update mod", "../mod/$mod->modulename/view.php?id=$mod->coursemodule", "$mod->modulename $mod->instance");
break;
case "add":
- if (! $mod->instance = add_instance($mod)) {
+ if (! $mod->instance = $addinstancefunction($mod)) {
error("Could not add a new instance of $mod->modulename");
}
// course_modules and course_sections each contain a reference
add_to_log($mod->course, "course", "add mod", "../mod/$mod->modulename/view.php?id=$mod->coursemodule", "$mod->modulename $mod->instance");
break;
case "delete":
- if (! delete_instance($mod->instance)) {
+ if (! $deleteinstancefunction($mod->instance)) {
notify("Could not delete the $mod->modulename (instance)");
}
if (! delete_course_module($mod->coursemodule)) {
--- /dev/null
+This directory contains all the learning modules.
+
+Standard components expected of each module:
+
+mod.html: a form to setup/update a module instance
+version.php: defines some meta-info and provides upgrading code
+icon.gif: a 16x16 icon for the module
+db/mysql.sql: an SQL dump of all the required db tables and data
+index.php: a page to list all instances in a course
+view.php: a page to view a particular instance
+lib.php: any/all functions defined by the module should be in here.
+ constants should be defined using MODULENAME_xxxxxx
+ functions should be defined using modulename_xxxxxx
+
+ There are a number of standard functions:
+
+ modulename_add_instance()
+ modulename_update_instance()
+ modulename_delete_instance()
+
+ modulename_user_complete()
+ modulename_user_outline()
+
+ modulename_cron()
+
+<?PHP // $Id$
+
+function assignment_add_instance($assignment) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will create a new instance and return the id number
+// of the new instance.
+
+ $assignment->timemodified = time();
+
+ return insert_record("assignment", $assignment);
+}
+
+
+function assignment_update_instance($assignment) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will update an existing instance with new data.
+
+ $assignment->timemodified = time();
+ $assignment->id = $assignment->instance;
+
+ return update_record("assignment", $assignment);
+}
+
+
+function assignment_delete_instance($id) {
+// Given an ID of an instance of this module,
+// this function will permanently delete the instance
+// and any data that depends on it.
+
+ if (! $assignment = get_record("assignment", "id", "$id")) {
+ return false;
+ }
+
+ $result = true;
+
+ if (! delete_records("assignment_submissions", "assignment", "$assignment->id")) {
+ $result = false;
+ }
+
+ if (! delete_records("assignment", "id", "$assignment->id")) {
+ $result = false;
+ }
+
+ return $result;
+}
+
+
+?>
+++ /dev/null
-<?PHP // $Id$
-
-/////////////////////////////////////////////////////////////
-//
-// MOD.PHP - contains functions to add, update and delete
-// an instance of this module
-//
-// Generally called from /course/mod.php
-//
-/////////////////////////////////////////////////////////////
-
-function add_instance($assignment) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will create a new instance and return the id number
-// of the new instance.
-
- $assignment->timemodified = time();
-
- return insert_record("assignment", $assignment);
-}
-
-
-function update_instance($assignment) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will update an existing instance with new data.
-
- $assignment->timemodified = time();
- $assignment->id = $assignment->instance;
-
- return update_record("assignment", $assignment);
-}
-
-
-function delete_instance($id) {
-// Given an ID of an instance of this module,
-// this function will permanently delete the instance
-// and any data that depends on it.
-
- if (! $assignment = get_record("assignment", "id", "$id")) {
- return false;
- }
-
- $result = true;
-
- if (! delete_records("assignment_submissions", "assignment", "$assignment->id")) {
- $result = false;
- }
-
- if (! delete_records("assignment", "id", "$assignment->id")) {
- $result = false;
- }
-
- return $result;
-}
-
-
-?>
}
}
+
+function choice_add_instance($choice) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will create a new instance and return the id number
+// of the new instance.
+
+ $choice->timemodified = time();
+
+ return insert_record("choice", $choice);
+}
+
+
+function choice_update_instance($choice) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will update an existing instance with new data.
+
+ $choice->id = $choice->instance;
+ $choice->timemodified = time();
+
+ return update_record("choice", $choice);
+}
+
+
+function choice_delete_instance($id) {
+// Given an ID of an instance of this module,
+// this function will permanently delete the instance
+// and any data that depends on it.
+
+ if (! $choice = get_record("choice", "id", "$id")) {
+ return false;
+ }
+
+ $result = true;
+
+ if (! delete_records("choice_answers", "choice", "$choice->id")) {
+ $result = false;
+ }
+
+ if (! delete_records("choice", "id", "$choice->id")) {
+ $result = false;
+ }
+
+ return $result;
+}
+
+
?>
+++ /dev/null
-<?PHP // $Id$
-
-/////////////////////////////////////////////////////////////
-//
-// MOD.PHP - contains functions to add, update and delete
-// an instance of this module
-//
-// Generally called from /course/mod.php
-//
-/////////////////////////////////////////////////////////////
-
-function add_instance($choice) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will create a new instance and return the id number
-// of the new instance.
-
- $choice->timemodified = time();
-
- return insert_record("choice", $choice);
-}
-
-
-function update_instance($choice) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will update an existing instance with new data.
-
- $choice->id = $choice->instance;
- $choice->timemodified = time();
-
- return update_record("choice", $choice);
-}
-
-
-function delete_instance($id) {
-// Given an ID of an instance of this module,
-// this function will permanently delete the instance
-// and any data that depends on it.
-
- if (! $choice = get_record("choice", "id", "$id")) {
- return false;
- }
-
- $result = true;
-
- if (! delete_records("choice_answers", "choice", "$choice->id")) {
- $result = false;
- }
-
- if (! delete_records("choice", "id", "$choice->id")) {
- $result = false;
- }
-
- return $result;
-}
-
-
-?>
}
+
+function forum_add_instance($forum) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will create a new instance and return the id number
+// of the new instance.
+
+ global $CFG;
+
+ $forum->timemodified = time();
+
+ if (! $forum->id = insert_record("forum", $forum)) {
+ return false;
+ }
+
+ if ($forum->type == "single") { // Create related discussion.
+
+ $discussion->course = $forum->course;
+ $discussion->forum = $forum->id;
+ $discussion->name = $forum->name;
+ $discussion->intro = $forum->intro;
+ $discussion->assessed = $forum->assessed;
+
+ if (! forum_add_discussion($discussion)) {
+ error("Could not add the discussion for this forum");
+ }
+ }
+ add_to_log($forum->course, "forum", "add", "index.php?f=$forum->id", "$forum->id");
+
+ return $forum->id;
+}
+
+
+function forum_update_instance($forum) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will update an existing instance with new data.
+
+ $forum->timemodified = time();
+ $forum->id = $forum->instance;
+
+ if ($forum->type == "single") { // Update related discussion and post.
+ if (! $discussion = get_record("forum_discussions", "forum", $forum->id)) {
+ if ($discussions = get_records("forum_discussions", "forum", $forum->id, "timemodified ASC")) {
+ notify("Warning! There is more than one discussion in this forum - using the most recent");
+ $discussion = array_pop($discussions);
+ } else {
+ error("Could not find the discussion in this forum");
+ }
+ }
+ if (! $post = get_record("forum_posts", "id", $discussion->firstpost)) {
+ error("Could not find the first post in this forum discussion");
+ }
+
+ $post->subject = $forum->name;
+ $post->message = $forum->intro;
+ $post->modified = $forum->timemodified;
+
+ if (! update_record("forum_posts", $post)) {
+ error("Could not update the first post");
+ }
+
+ $discussion->name = $forum->name;
+
+ if (! update_record("forum_discussions", $discussion)) {
+ error("Could not update the discussion");
+ }
+ }
+
+ if (update_record("forum", $forum)) {
+ add_to_log($forum->course, "forum", "update", "index.php?f=$forum->id", "$forum->id");
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+function forum_delete_instance($id) {
+// Given an ID of an instance of this module,
+// this function will permanently delete the instance
+// and any data that depends on it.
+
+ if (! $forum = get_record("forum", "id", "$id")) {
+ return false;
+ }
+
+ $result = true;
+
+ if ($discussions = get_records("forum_discussions", "forum", $forum->id)) {
+ foreach ($discussions as $discussion) {
+ if (! forum_delete_discussion($discussion)) {
+ $result = false;
+ }
+ }
+ }
+
+ if (! delete_records("forum_subscriptions", "forum", "$forum->id")) {
+ $result = false;
+ }
+
+ if (! delete_records("forum", "id", "$forum->id")) {
+ $result = false;
+ }
+
+ return $result;
+}
+
+
function forum_cron () {
// Function to be run periodically according to the moodle cron
// Finds all posts that have yet to be mailed out, and mails them
+++ /dev/null
-<?PHP // $Id$
-
-/////////////////////////////////////////////////////////////
-//
-// MOD.PHP - contains functions to add, update and delete
-// an instance of this module
-//
-// Generally called from /course/mod.php
-//
-/////////////////////////////////////////////////////////////
-
-function add_instance($forum) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will create a new instance and return the id number
-// of the new instance.
-
- global $CFG;
-
- $forum->timemodified = time();
-
- if (! $forum->id = insert_record("forum", $forum)) {
- return false;
- }
-
- if ($forum->type == "single") { // Create related discussion.
- include_once("$CFG->dirroot/mod/forum/lib.php");
-
- $discussion->course = $forum->course;
- $discussion->forum = $forum->id;
- $discussion->name = $forum->name;
- $discussion->intro = $forum->intro;
- $discussion->assessed = $forum->assessed;
-
- if (! forum_add_discussion($discussion)) {
- error("Could not add the discussion for this forum");
- }
- }
- add_to_log($forum->course, "forum", "add", "index.php?f=$forum->id", "$forum->id");
-
- return $forum->id;
-}
-
-
-function update_instance($forum) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will update an existing instance with new data.
-
- $forum->timemodified = time();
- $forum->id = $forum->instance;
-
- if ($forum->type == "single") { // Update related discussion and post.
- if (! $discussion = get_record("forum_discussions", "forum", $forum->id)) {
- if ($discussions = get_records("forum_discussions", "forum", $forum->id, "timemodified ASC")) {
- notify("Warning! There is more than one discussion in this forum - using the most recent");
- $discussion = array_pop($discussions);
- } else {
- error("Could not find the discussion in this forum");
- }
- }
- if (! $post = get_record("forum_posts", "id", $discussion->firstpost)) {
- error("Could not find the first post in this forum discussion");
- }
-
- $post->subject = $forum->name;
- $post->message = $forum->intro;
- $post->modified = $forum->timemodified;
-
- if (! update_record("forum_posts", $post)) {
- error("Could not update the first post");
- }
-
- $discussion->name = $forum->name;
-
- if (! update_record("forum_discussions", $discussion)) {
- error("Could not update the discussion");
- }
- }
-
- if (update_record("forum", $forum)) {
- add_to_log($forum->course, "forum", "update", "index.php?f=$forum->id", "$forum->id");
- return true;
- } else {
- return false;
- }
-}
-
-
-function delete_instance($id) {
-// Given an ID of an instance of this module,
-// this function will permanently delete the instance
-// and any data that depends on it.
-
- global $CFG;
-
- include_once("$CFG->dirroot/mod/forum/lib.php");
-
- if (! $forum = get_record("forum", "id", "$id")) {
- return false;
- }
-
- $result = true;
-
- if ($discussions = get_records("forum_discussions", "forum", $forum->id)) {
- foreach ($discussions as $discussion) {
- if (! forum_delete_discussion($discussion)) {
- $result = false;
- }
- }
- }
-
- if (! delete_records("forum_subscriptions", "forum", "$forum->id")) {
- $result = false;
- }
-
- if (! delete_records("forum", "id", "$forum->id")) {
- $result = false;
- }
-
- return $result;
-}
-
-
-?>
echo "</TABLE><BR CLEAR=ALL>\n";
}
+
+function journal_add_instance($journal) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will create a new instance and return the id number
+// of the new instance.
+
+ $journal->timemodified = time();
+
+ return insert_record("journal", $journal);
+}
+
+
+function journal_update_instance($journal) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will update an existing instance with new data.
+
+ $journal->timemodified = time();
+ $journal->id = $journal->instance;
+
+ return update_record("journal", $journal);
+}
+
+
+function journal_delete_instance($id) {
+// Given an ID of an instance of this module,
+// this function will permanently delete the instance
+// and any data that depends on it.
+
+ if (! $journal = get_record("journal", "id", $id)) {
+ return false;
+ }
+
+ $result = true;
+
+ if (! delete_records("journal_entries", "journal", $journal->id)) {
+ $result = false;
+ }
+
+ if (! delete_records("journal", "id", $journal->id)) {
+ $result = false;
+ }
+
+ return $result;
+
+}
+
+
?>
+++ /dev/null
-<?PHP // $Id$
-
-/////////////////////////////////////////////////////////////
-//
-// MOD.PHP - contains functions to add, update and delete
-// an instance of this module
-//
-// Generally called from /course/mod.php
-//
-/////////////////////////////////////////////////////////////
-
-function add_instance($journal) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will create a new instance and return the id number
-// of the new instance.
-
- $journal->timemodified = time();
-
- return insert_record("journal", $journal);
-}
-
-
-function update_instance($journal) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will update an existing instance with new data.
-
- $journal->timemodified = time();
- $journal->id = $journal->instance;
-
- return update_record("journal", $journal);
-}
-
-
-function delete_instance($id) {
-// Given an ID of an instance of this module,
-// this function will permanently delete the instance
-// and any data that depends on it.
-
- if (! $journal = get_record("journal", "id", $id)) {
- return false;
- }
-
- $result = true;
-
- if (! delete_records("journal_entries", "journal", $journal->id)) {
- $result = false;
- }
-
- if (! delete_records("journal", "id", $journal->id)) {
- $result = false;
- }
-
- return $result;
-
-}
-
-
-?>
"3" => "Actual and Preferred",
);
+// FUNCTIONS ////////////////////////////////////////////////////////
+
+function survey_add_instance($survey) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will create a new instance and return the id number
+// of the new instance.
+
+ if (!$template = get_record("survey", "id", $survey->template)) {
+ return 0;
+ }
+
+ $survey->questions = $template->questions;
+ $survey->timecreated = time();
+ $survey->timemodified = $survey->timecreated;
+
+ return insert_record("survey", $survey);
+
+}
+
+
+function survey_update_instance($survey) {
+// Given an object containing all the necessary data,
+// (defined by the form in mod.html) this function
+// will update an existing instance with new data.
+
+ if (!$template = get_record("survey", "id", $survey->template)) {
+ return 0;
+ }
+
+ $survey->id = $survey->instance;
+ $survey->questions = $template->questions;
+ $survey->timemodified = time();
+
+ return update_record("survey", $survey);
+}
+
+function survey_delete_instance($id) {
+// Given an ID of an instance of this module,
+// this function will permanently delete the instance
+// and any data that depends on it.
+
+ if (! $survey = get_record("survey", "id", "$id")) {
+ return false;
+ }
+
+ $result = true;
+
+ if (! delete_records("survey_analysis", "survey", "$survey->id")) {
+ $result = false;
+ }
+
+ if (! delete_records("survey_answers", "survey", "$survey->id")) {
+ $result = false;
+ }
+
+ if (! delete_records("survey", "id", "$survey->id")) {
+ $result = false;
+ }
+
+ return $result;
+}
+
+
function survey_already_done($survey, $user) {
return record_exists_sql("SELECT * FROM survey_answers WHERE survey='$survey' AND user='$user'");
}
+++ /dev/null
-<?PHP // $Id$
-
-/////////////////////////////////////////////////////////////
-//
-// MOD.PHP - contains functions to add, update and delete
-// an instance of this module
-//
-// Generally called from /course/mod.php
-//
-/////////////////////////////////////////////////////////////
-
-function add_instance($survey) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will create a new instance and return the id number
-// of the new instance.
-
- if (!$template = get_record("survey", "id", $survey->template)) {
- return 0;
- }
-
- $survey->questions = $template->questions;
- $survey->timecreated = time();
- $survey->timemodified = $survey->timecreated;
-
- return insert_record("survey", $survey);
-
-}
-
-
-function update_instance($survey) {
-// Given an object containing all the necessary data,
-// (defined by the form in mod.html) this function
-// will update an existing instance with new data.
-
- if (!$template = get_record("survey", "id", $survey->template)) {
- return 0;
- }
-
- $survey->id = $survey->instance;
- $survey->questions = $template->questions;
- $survey->timemodified = time();
-
- return update_record("survey", $survey);
-}
-
-function delete_instance($id) {
-// Given an ID of an instance of this module,
-// this function will permanently delete the instance
-// and any data that depends on it.
-
- if (! $survey = get_record("survey", "id", "$id")) {
- return false;
- }
-
- $result = true;
-
- if (! delete_records("survey_analysis", "survey", "$survey->id")) {
- $result = false;
- }
-
- if (! delete_records("survey_answers", "survey", "$survey->id")) {
- $result = false;
- }
-
- if (! delete_records("survey", "id", "$survey->id")) {
- $result = false;
- }
-
- return $result;
-}
-
-
-?>