<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/37/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Danstowell</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/37/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Danstowell"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/Special:Contributions/Danstowell"/>
	<updated>2026-04-23T10:55:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=23237</id>
		<title>User:Dan Stowell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=23237"/>
		<updated>2007-05-12T17:38:05Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.elec.qmul.ac.uk/department/staff/research/dans.htm Dan Stowell]&lt;br /&gt;
&lt;br /&gt;
I&#039;ve been developing bits and bobs for Moodle for a while - for example:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;In Moodle core:&#039;&#039;&#039;&lt;br /&gt;
** [[IMS Enterprise]] enrolment module&lt;br /&gt;
** [[Fields#Latitude.2Flongitude|Latitude/longitude data type]] for database activity&lt;br /&gt;
* &#039;&#039;&#039;Optional add-ins:&#039;&#039;&#039;&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex] voice messaging tool&lt;br /&gt;
** [[Jmol filter]]&lt;br /&gt;
** [[Jmol resource type]]&lt;br /&gt;
** [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=296 Java Molecular Editor question type]&lt;br /&gt;
** [[WebCT migration]] scripts&lt;br /&gt;
&lt;br /&gt;
If you want to know more about me you might like to look at [http://www.mcld.co.uk/cv/quick/ my CV]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Coding&amp;diff=21107</id>
		<title>Development:Coding</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Coding&amp;diff=21107"/>
		<updated>2007-03-05T22:23:24Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* General rules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any collaborative project needs consistency and stability to stay strong.&lt;br /&gt;
&lt;br /&gt;
These &#039;&#039;&#039;coding guidelines&#039;&#039;&#039; are to provide a goal for all Moodle code to strive to. It&#039;s true that some of the older existing code falls short in a few areas, but it will all be fixed eventually. All new code definitely must adhere to these standards as closely as possible.&lt;br /&gt;
&lt;br /&gt;
==General rules==&lt;br /&gt;
&lt;br /&gt;
# All code files should use the .php extension.&lt;br /&gt;
# All template files should use the .html extension.&lt;br /&gt;
# All text files should use Unix-style text format (most text editors have this as an option).&lt;br /&gt;
# All php tags must be &#039;full&#039; tags like &amp;lt;?php ?&amp;gt; ... not &#039;short&#039; tags like &amp;lt;? ?&amp;gt;.&lt;br /&gt;
# All existing copyright notices must be retained. You can add your own if necessary.&lt;br /&gt;
# Each file should include the main config.php file.&lt;br /&gt;
# Each file should check that the user is authenticated correctly, using require_login() and isadmin(), isteacher(), iscreator() or isstudent().&lt;br /&gt;
# All access to databases should use the functions in &#039;&#039;lib/dmllib.php&#039;&#039; whenever possible - this allows compatibility across a wide range of databases. You should find that almost anything is possible using these functions. If you must write SQL code then make sure it is: cross-platform; restricted to specific functions within your code (usually a lib.php file); and clearly marked.&lt;br /&gt;
# Don&#039;t create or use global variables except for the standard $CFG, $SESSION, $THEME, $SITE, $COURSE and $USER.&lt;br /&gt;
# All variables should be initialised or at least tested for existence using isset() or empty() before they are used.&lt;br /&gt;
# All strings should be translatable - create new texts in the &amp;quot;lang/en_utf8&amp;quot; files with concise English lowercase names and retrieve them from your code using get_string() or print_string(). Never delete strings to ensure backwards compatibility of the language packs is maintained.&lt;br /&gt;
# All errors should be printed using print_error() to maximise translation and help for users (it automatically links to the docs wiki).&lt;br /&gt;
# All help files should be translatable - create new texts in the &amp;quot;lang/en_utf8/help&amp;quot; directory and call them using helpbutton(). If you need to update a help file:&lt;br /&gt;
#* with a minor change, where an old translation of the file would still make sense, then it&#039;s OK to make the change but you should notify translation AT moodle DOT org.&lt;br /&gt;
#* for a major change you should create a new file by adding an incrementing number (eg filename2.html) so that translators can easily see it&#039;s a new version of the file. Obviously the new code and the help index files should also be modified to point to the newest versions.&lt;br /&gt;
# Incoming data from the browser (sent via GET or POST) automatically has magic_quotes applied (regardless of the PHP settings) so that you can safely insert it straight into the database. All other raw data (from files, or from databases) must be escaped with addslashes() before inserting it into the database. Because this is so often done incorrectly, there is more explanation on this issue of adding and stripping slashes on a [[Developer:Slashes|separate page]].&lt;br /&gt;
# VERY IMPORTANT: All texts within Moodle, especially those that have come from users, should be printed using the format_text() function. This ensures that text is filtered and cleaned correctly. More information can be found on the page about [[Development:Output_functions|output functions]].&lt;br /&gt;
# User actions should be logged using the [[Development:Logs|add_to_log()]] function. These logs are used for [[Settings#Show_activity_reports|activity reports]] and [[Logs]].&lt;br /&gt;
# When generating a HTML link, always make it relative to the full site root, i.e. link to  &#039;&#039;$CFG-&amp;gt;wwwroot/mod/blonk/view.php?id=99&#039;&#039; rather than just &#039;&#039;view.php?id=99&#039;&#039;. This means that your code will work if called by a script in another folder, among other things.&lt;br /&gt;
&lt;br /&gt;
==Coding style==&lt;br /&gt;
&lt;br /&gt;
I know it can be a little annoying to change your style if you&#039;re used to something else, but balance that annoyance against the annoyance of all the people trying later on to make sense of Moodle code with mixed styles. There are obviously many good points for and against any style that people use, but the current style just is, so please stick to it.&lt;br /&gt;
&lt;br /&gt;
1. Indenting should be consistently 4 spaces. Don&#039;t use tabs AT ALL.&lt;br /&gt;
&lt;br /&gt;
2. Variable names should always be easy-to-read, meaningful lowercase English words. If you really need more than one word then run them together, but keep them short as possible. Use plural names for arrays of objects.&lt;br /&gt;
&lt;br /&gt;
      GOOD: $quiz&lt;br /&gt;
      GOOD: $errorstring&lt;br /&gt;
      GOOD: $assignments (for an array of objects)&lt;br /&gt;
      GOOD: $i (but only in little loops)&lt;br /&gt;
&lt;br /&gt;
      BAD: $Quiz&lt;br /&gt;
      BAD: $aReallyLongVariableNameWithoutAGoodReason&lt;br /&gt;
      BAD: $error_string&lt;br /&gt;
&lt;br /&gt;
3. Constants should always be in upper case, and always start with the name of the module. They should have words separated by underscores.&lt;br /&gt;
&lt;br /&gt;
      define(&amp;quot;FORUM_MODE_FLATOLDEST&amp;quot;, 1);&lt;br /&gt;
4. Function names should be simple English lowercase words, and start with the name of the module to avoid conflicts between modules. Words should be separated by underscores. Parameters should always have sensible defaults if possible. Note there is no space between the function name and the following (brackets).&lt;br /&gt;
&lt;br /&gt;
      function forum_set_display_mode($mode=0) {&lt;br /&gt;
          global $USER, $CFG;&lt;br /&gt;
          &lt;br /&gt;
          if ($mode) {&lt;br /&gt;
              $USER-&amp;gt;mode = $mode;&lt;br /&gt;
          } else if (empty($USER-&amp;gt;mode)) {&lt;br /&gt;
              $USER-&amp;gt;mode = $CFG-&amp;gt;forum_displaymode;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
5. Blocks must always be enclosed in curly braces (even if there is only one line). Moodle uses this style:&lt;br /&gt;
&lt;br /&gt;
      if ($quiz-&amp;gt;attempts) {&lt;br /&gt;
          if ($numattempts &amp;gt; $quiz-&amp;gt;attempts) {&lt;br /&gt;
              error($strtoomanyattempts, &amp;quot;view.php?id=$cm-&amp;gt;id&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
6. Strings should be defined using single quotes where possible, for increased speed.&lt;br /&gt;
&lt;br /&gt;
      $var = &#039;some text without any variables&#039;;&lt;br /&gt;
      $var = &amp;quot;with special characters like a new line \n&amp;quot;;&lt;br /&gt;
      $var = &#039;a very, very long string with a &#039;.$single.&#039; variable in it&#039;;&lt;br /&gt;
      $var = &amp;quot;some $text with $many variables $within it&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
7. Comments should be added as much as is practical, to explain the code flow and the purpose of functions and variables.&lt;br /&gt;
&lt;br /&gt;
* Every function (and class) should use the popular [http://www.phpdoc.org/ phpDoc format]. This allows code documentation to be generated automatically.&lt;br /&gt;
* Inline comments should use the // style, laid out neatly so that it fits among the code and lines up with it.&lt;br /&gt;
&lt;br /&gt;
      /**&lt;br /&gt;
      * The description should be first, with asterisks laid out exactly&lt;br /&gt;
      * like this example. If you want to refer to a another function,&lt;br /&gt;
      * do it like this: {@link clean_param()}. Then, add descriptions&lt;br /&gt;
      * for each parameter as follows.&lt;br /&gt;
      *&lt;br /&gt;
      * @param int $postid The PHP type is followed by the variable name&lt;br /&gt;
      * @param array $scale The PHP type is followed by the variable name&lt;br /&gt;
      * @param array $ratings The PHP type is followed by the variable name&lt;br /&gt;
      * @return mixed&lt;br /&gt;
      */&lt;br /&gt;
      function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {&lt;br /&gt;
          if (!$ratings) {&lt;br /&gt;
              $ratings = array();     // Initialize the empty array&lt;br /&gt;
              if ($rates = get_records(&amp;quot;forum_ratings&amp;quot;, &amp;quot;post&amp;quot;, $postid)) {&lt;br /&gt;
                  // Process each rating in turn&lt;br /&gt;
                  foreach ($rates as $rate) {&lt;br /&gt;
      ....etc&lt;br /&gt;
&lt;br /&gt;
8. Space should be used liberally - don&#039;t be afraid to spread things out a little to gain some clarity. Generally, there should be one space between brackets and normal statements, but no space between brackets and variables or functions:&lt;br /&gt;
&lt;br /&gt;
      foreach ($objects as $key =&amp;gt; $thing) {&lt;br /&gt;
          process($thing);&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      if ($x == $y) {&lt;br /&gt;
          $a = $b;&lt;br /&gt;
      } else if ($x == $z) {&lt;br /&gt;
          $a = $c;&lt;br /&gt;
      } else {&lt;br /&gt;
          $a = $d;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
9. When making a COPY of an object, always use the php5 clone() function (otherwise you may end up with just a reference to the first object).  Moodle will make sure this works consistently on php4 too.&lt;br /&gt;
&lt;br /&gt;
      BAD:   $b = $a;&lt;br /&gt;
      GOOD:  $b = clone($a);&lt;br /&gt;
&lt;br /&gt;
If the thing you want to copy is not an object, but may contain objects (eg an array of objects) then use fullclone() instead.&lt;br /&gt;
&lt;br /&gt;
==Database structures==&lt;br /&gt;
&lt;br /&gt;
# Every table must have an auto-incrementing id field (INT10) as primary index. (see [[IdColumnReasons]])&lt;br /&gt;
# The main table containing instances of each module must have the same name as the module (eg widget) and contain the following minimum fields:&lt;br /&gt;
#* id - as described above&lt;br /&gt;
#* course - the id of the course that each instance belongs to&lt;br /&gt;
#* name - the full name of each instance of the module&lt;br /&gt;
# Other tables associated with a module that contain information about &#039;things&#039; should be named widget_things (note the plural).&lt;br /&gt;
# Table and column names should avoid using [[Database reserved words|reserved words in any database]]. Please check them before creation.&lt;br /&gt;
# Column names should be always lowercase, simple and short, following the same rules as for variable names.&lt;br /&gt;
# Where possible, columns that contain a reference to the id field of another table (eg widget) should be called widgetid. (Note that this convention is newish and not followed in some older tables)&lt;br /&gt;
# Boolean fields should be implemented as small integer fields (eg INT4) containing 0 or 1, to allow for later expansion of values if necessary.&lt;br /&gt;
# Most tables should have a timemodified field (INT10) which is updated with a current timestamp obtained with the PHP time() function.&lt;br /&gt;
# Always define a default value for each field (and make it sensible)&lt;br /&gt;
# Each table name should start with the database prefix ($CFG-&amp;gt;prefix). In a lot of cases, this is taken care of for you automatically. Also, under Postgres, the name of every index must start with the prefix too.&lt;br /&gt;
# In order to guarantee [[Development:XMLDB problems#Table and column aliases - the AS keyword|cross-db compatibility]] follow these simple rules about the use of the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword (only if you need table/colum aliases, of course):&lt;br /&gt;
#* &#039;&#039;&#039;Don&#039;t use&#039;&#039;&#039; the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword for &#039;&#039;&#039;table aliases&#039;&#039;&#039;.&lt;br /&gt;
#* &#039;&#039;&#039;Do use&#039;&#039;&#039; the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword for &#039;&#039;&#039;column aliases&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Never&#039;&#039;&#039; create UNIQUE KEYs (constraints) at all. Instead use UNIQUE INDEXes. In the future, if we decide to add referential integrity to Moodle and we need UNIQUE KEYs they will be used, but not now. Please note that the XMLDB editor allows you to specify both XMLDB-only UNIQUE and FOREIGN constraints (and that&#039;s good, in order to have the XML well defined) but only underlying INDEXes will be generated. &lt;br /&gt;
# Those XMLDB-only UNIQUE KEYs (read previous point) only must be defined if such field/fields &#039;&#039;&#039;are going to be the target&#039;&#039;&#039; for some (XMLDB-only too) FOREIGN KEY. Else, create them as simple UNIQUE INDEXes.&lt;br /&gt;
# Tables associated &#039;&#039;&#039;with one block&#039;&#039;&#039; must follow this convention with their names: &#039;&#039;&#039;$CFG-&amp;gt;prefix + &amp;quot;block_&amp;quot; + name_of_the_block + anything_else&#039;&#039;&#039;. For example, assuming that $CFG-&amp;gt;prefix is &#039;mdl_&#039;, all the tables for the block &amp;quot;rss_client&amp;quot; must start by &#039;mdl_block_rss_client&#039; (being possible to add more words at the end, i.e. &#039;mdl_block_rss_client_anothertable&#039;...). This rule will be 100% enforced with Moodle 2.0, giving time to developers until then. See [http://tracker.moodle.org/browse/MDL-6786 Task 6786] for more info about this.&lt;br /&gt;
# &#039;&#039;&#039;Never&#039;&#039;&#039; make database changes in the STABLE branches.  If we did, then users upgrading from one stable version to the next would have duplicate changes occurring, which may cause serious errors.&lt;br /&gt;
&lt;br /&gt;
==Security issues (and handling form and URL data)==&lt;br /&gt;
&lt;br /&gt;
# Do not rely on &#039;register_globals&#039;. Every variable must be properly initialised in every code file. It must be obvious where the variable came from.&lt;br /&gt;
# Initialise all arrays and objects, even if empty. $a = array() or $obj = new stdClass();.&lt;br /&gt;
# Do not use the optional_variable() function (this function is now deprecated). Use the optional_param() function instead. Pick the correct PARAM_XXXX value for the data type you expect.&lt;br /&gt;
# Do not use the require_variable() function (this function is now deprecated). Use the required_param() function instead. Pick the correct PARAM_XXXX value for the data type you expect.&lt;br /&gt;
# Use data_submitted(), with care. Data must still be cleaned before use.&lt;br /&gt;
# Do not use $_GET, $_POST or $_REQUEST. Use the appropriate required_param() or optional_param() appropriate to your need.&lt;br /&gt;
# Do not check for an action using something like if (isset($_GET[&#039;something&#039;])). Use, e.g., $something = optional_param( &#039;something&#039;,-1,PARAM_INT ) and then perform proper test for it being in its expected range of values e.g., if ($something&amp;gt;=0) {....&lt;br /&gt;
# Wherever possible group all your required_param(), optional_param() and other variables initialisation at the beginning of each file to make them easy to find.&lt;br /&gt;
# Use &#039;sesskey&#039; mechanism to protect form handling routines from attack. Basic example of use: when form is generated, include &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;sesskey&amp;quot; value=&amp;quot;&amp;lt;?php echo sesskey(); ?&amp;gt;&amp;quot; /&amp;gt;. When you process the form check with if (!confirm_sesskey()) {error(&#039;Bad Session Key&#039;);}.&lt;br /&gt;
# All filenames must be &#039;cleaned&#039; using the clean_filename() function, if this has not been done already by appropriate use of required_param() or optional_param()&lt;br /&gt;
# Any data read from the database must have [[Developer:Slashes|addslashes()]] applied to it before it can be written back. A whole object of data can be hit at once with addslashes_object().&lt;br /&gt;
# Wherever possible, data to be stored in the database must come from POST data (from a form with method=&amp;quot;POST&amp;quot;) as opposed to GET data (ie, data from the URL line).&lt;br /&gt;
# Do not use data from $_SERVER if you can avoid it. This has portability issues.&lt;br /&gt;
# If it hasn&#039;t been done somewhere else, make sure all data written to the database has been through the clean_param() function using the appropriate PARAM_XXXX for the datatype.&lt;br /&gt;
# If you write custom SQL code, make very sure it is correct. In particular watch out for missing quotes around values. Possible SQL &#039;injection&#039; exploit.&lt;br /&gt;
# Check all data (particularly that written to the database) in every file it is used. Do not expect or rely on it being done somewhere else.&lt;br /&gt;
# Blocks of code to be included should contain a definite PHP structure (e.g, a class declaration, function definition(s) etc.) - straight blocks of code promote uninitialised variable usage.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
[[es:Manual de Estilo de Código]]&lt;br /&gt;
[[zh:代码指南]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Coding&amp;diff=21106</id>
		<title>Development:Coding</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Coding&amp;diff=21106"/>
		<updated>2007-03-05T22:22:41Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* General rules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any collaborative project needs consistency and stability to stay strong.&lt;br /&gt;
&lt;br /&gt;
These &#039;&#039;&#039;coding guidelines&#039;&#039;&#039; are to provide a goal for all Moodle code to strive to. It&#039;s true that some of the older existing code falls short in a few areas, but it will all be fixed eventually. All new code definitely must adhere to these standards as closely as possible.&lt;br /&gt;
&lt;br /&gt;
==General rules==&lt;br /&gt;
&lt;br /&gt;
# All code files should use the .php extension.&lt;br /&gt;
# All template files should use the .html extension.&lt;br /&gt;
# All text files should use Unix-style text format (most text editors have this as an option).&lt;br /&gt;
# All php tags must be &#039;full&#039; tags like &amp;lt;?php ?&amp;gt; ... not &#039;short&#039; tags like &amp;lt;? ?&amp;gt;.&lt;br /&gt;
# All existing copyright notices must be retained. You can add your own if necessary.&lt;br /&gt;
# Each file should include the main config.php file.&lt;br /&gt;
# Each file should check that the user is authenticated correctly, using require_login() and isadmin(), isteacher(), iscreator() or isstudent().&lt;br /&gt;
# All access to databases should use the functions in &#039;&#039;lib/dmllib.php&#039;&#039; whenever possible - this allows compatibility across a wide range of databases. You should find that almost anything is possible using these functions. If you must write SQL code then make sure it is: cross-platform; restricted to specific functions within your code (usually a lib.php file); and clearly marked.&lt;br /&gt;
# Don&#039;t create or use global variables except for the standard $CFG, $SESSION, $THEME, $SITE, $COURSE and $USER.&lt;br /&gt;
# All variables should be initialised or at least tested for existence using isset() or empty() before they are used.&lt;br /&gt;
# All strings should be translatable - create new texts in the &amp;quot;lang/en_utf8&amp;quot; files with concise English lowercase names and retrieve them from your code using get_string() or print_string(). Never delete strings to ensure backwards compatibility of the language packs is maintained.&lt;br /&gt;
# All errors should be printed using print_error() to maximise translation and help for users (it automatically links to the docs wiki).&lt;br /&gt;
# All help files should be translatable - create new texts in the &amp;quot;lang/en_utf8/help&amp;quot; directory and call them using helpbutton(). If you need to update a help file:&lt;br /&gt;
#* with a minor change, where an old translation of the file would still make sense, then it&#039;s OK to make the change but you should notify translation AT moodle DOT org.&lt;br /&gt;
#* for a major change you should create a new file by adding an incrementing number (eg filename2.html) so that translators can easily see it&#039;s a new version of the file. Obviously the new code and the help index files should also be modified to point to the newest versions.&lt;br /&gt;
# Incoming data from the browser (sent via GET or POST) automatically has magic_quotes applied (regardless of the PHP settings) so that you can safely insert it straight into the database. All other raw data (from files, or from databases) must be escaped with addslashes() before inserting it into the database. Because this is so often done incorrectly, there is more explanation on this issue of adding and stripping slashes on a [[Developer:Slashes|separate page]].&lt;br /&gt;
# VERY IMPORTANT: All texts within Moodle, especially those that have come from users, should be printed using the format_text() function. This ensures that text is filtered and cleaned correctly. More information can be found on the page about [[Development:Output_functions|output functions]].&lt;br /&gt;
# User actions should be logged using the [[Development:Logs|add_to_log()]] function. These logs are used for [[Settings#Show_activity_reports|activity reports]] and [[Logs]].&lt;br /&gt;
# When generating a HTML link, always make it relative to the full site root, i.e. link to  &#039;&#039;&#039;$CFG-&amp;gt;wwwroot/mod/blonk/view.php?id=99&#039;&#039;&#039; rather than just &#039;&#039;&#039;view.php?id=99&#039;&#039;&#039;. This means that your code will work if called by a script in another folder, among other things.&lt;br /&gt;
&lt;br /&gt;
==Coding style==&lt;br /&gt;
&lt;br /&gt;
I know it can be a little annoying to change your style if you&#039;re used to something else, but balance that annoyance against the annoyance of all the people trying later on to make sense of Moodle code with mixed styles. There are obviously many good points for and against any style that people use, but the current style just is, so please stick to it.&lt;br /&gt;
&lt;br /&gt;
1. Indenting should be consistently 4 spaces. Don&#039;t use tabs AT ALL.&lt;br /&gt;
&lt;br /&gt;
2. Variable names should always be easy-to-read, meaningful lowercase English words. If you really need more than one word then run them together, but keep them short as possible. Use plural names for arrays of objects.&lt;br /&gt;
&lt;br /&gt;
      GOOD: $quiz&lt;br /&gt;
      GOOD: $errorstring&lt;br /&gt;
      GOOD: $assignments (for an array of objects)&lt;br /&gt;
      GOOD: $i (but only in little loops)&lt;br /&gt;
&lt;br /&gt;
      BAD: $Quiz&lt;br /&gt;
      BAD: $aReallyLongVariableNameWithoutAGoodReason&lt;br /&gt;
      BAD: $error_string&lt;br /&gt;
&lt;br /&gt;
3. Constants should always be in upper case, and always start with the name of the module. They should have words separated by underscores.&lt;br /&gt;
&lt;br /&gt;
      define(&amp;quot;FORUM_MODE_FLATOLDEST&amp;quot;, 1);&lt;br /&gt;
4. Function names should be simple English lowercase words, and start with the name of the module to avoid conflicts between modules. Words should be separated by underscores. Parameters should always have sensible defaults if possible. Note there is no space between the function name and the following (brackets).&lt;br /&gt;
&lt;br /&gt;
      function forum_set_display_mode($mode=0) {&lt;br /&gt;
          global $USER, $CFG;&lt;br /&gt;
          &lt;br /&gt;
          if ($mode) {&lt;br /&gt;
              $USER-&amp;gt;mode = $mode;&lt;br /&gt;
          } else if (empty($USER-&amp;gt;mode)) {&lt;br /&gt;
              $USER-&amp;gt;mode = $CFG-&amp;gt;forum_displaymode;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
5. Blocks must always be enclosed in curly braces (even if there is only one line). Moodle uses this style:&lt;br /&gt;
&lt;br /&gt;
      if ($quiz-&amp;gt;attempts) {&lt;br /&gt;
          if ($numattempts &amp;gt; $quiz-&amp;gt;attempts) {&lt;br /&gt;
              error($strtoomanyattempts, &amp;quot;view.php?id=$cm-&amp;gt;id&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
6. Strings should be defined using single quotes where possible, for increased speed.&lt;br /&gt;
&lt;br /&gt;
      $var = &#039;some text without any variables&#039;;&lt;br /&gt;
      $var = &amp;quot;with special characters like a new line \n&amp;quot;;&lt;br /&gt;
      $var = &#039;a very, very long string with a &#039;.$single.&#039; variable in it&#039;;&lt;br /&gt;
      $var = &amp;quot;some $text with $many variables $within it&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
7. Comments should be added as much as is practical, to explain the code flow and the purpose of functions and variables.&lt;br /&gt;
&lt;br /&gt;
* Every function (and class) should use the popular [http://www.phpdoc.org/ phpDoc format]. This allows code documentation to be generated automatically.&lt;br /&gt;
* Inline comments should use the // style, laid out neatly so that it fits among the code and lines up with it.&lt;br /&gt;
&lt;br /&gt;
      /**&lt;br /&gt;
      * The description should be first, with asterisks laid out exactly&lt;br /&gt;
      * like this example. If you want to refer to a another function,&lt;br /&gt;
      * do it like this: {@link clean_param()}. Then, add descriptions&lt;br /&gt;
      * for each parameter as follows.&lt;br /&gt;
      *&lt;br /&gt;
      * @param int $postid The PHP type is followed by the variable name&lt;br /&gt;
      * @param array $scale The PHP type is followed by the variable name&lt;br /&gt;
      * @param array $ratings The PHP type is followed by the variable name&lt;br /&gt;
      * @return mixed&lt;br /&gt;
      */&lt;br /&gt;
      function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {&lt;br /&gt;
          if (!$ratings) {&lt;br /&gt;
              $ratings = array();     // Initialize the empty array&lt;br /&gt;
              if ($rates = get_records(&amp;quot;forum_ratings&amp;quot;, &amp;quot;post&amp;quot;, $postid)) {&lt;br /&gt;
                  // Process each rating in turn&lt;br /&gt;
                  foreach ($rates as $rate) {&lt;br /&gt;
      ....etc&lt;br /&gt;
&lt;br /&gt;
8. Space should be used liberally - don&#039;t be afraid to spread things out a little to gain some clarity. Generally, there should be one space between brackets and normal statements, but no space between brackets and variables or functions:&lt;br /&gt;
&lt;br /&gt;
      foreach ($objects as $key =&amp;gt; $thing) {&lt;br /&gt;
          process($thing);&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      if ($x == $y) {&lt;br /&gt;
          $a = $b;&lt;br /&gt;
      } else if ($x == $z) {&lt;br /&gt;
          $a = $c;&lt;br /&gt;
      } else {&lt;br /&gt;
          $a = $d;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
9. When making a COPY of an object, always use the php5 clone() function (otherwise you may end up with just a reference to the first object).  Moodle will make sure this works consistently on php4 too.&lt;br /&gt;
&lt;br /&gt;
      BAD:   $b = $a;&lt;br /&gt;
      GOOD:  $b = clone($a);&lt;br /&gt;
&lt;br /&gt;
If the thing you want to copy is not an object, but may contain objects (eg an array of objects) then use fullclone() instead.&lt;br /&gt;
&lt;br /&gt;
==Database structures==&lt;br /&gt;
&lt;br /&gt;
# Every table must have an auto-incrementing id field (INT10) as primary index. (see [[IdColumnReasons]])&lt;br /&gt;
# The main table containing instances of each module must have the same name as the module (eg widget) and contain the following minimum fields:&lt;br /&gt;
#* id - as described above&lt;br /&gt;
#* course - the id of the course that each instance belongs to&lt;br /&gt;
#* name - the full name of each instance of the module&lt;br /&gt;
# Other tables associated with a module that contain information about &#039;things&#039; should be named widget_things (note the plural).&lt;br /&gt;
# Table and column names should avoid using [[Database reserved words|reserved words in any database]]. Please check them before creation.&lt;br /&gt;
# Column names should be always lowercase, simple and short, following the same rules as for variable names.&lt;br /&gt;
# Where possible, columns that contain a reference to the id field of another table (eg widget) should be called widgetid. (Note that this convention is newish and not followed in some older tables)&lt;br /&gt;
# Boolean fields should be implemented as small integer fields (eg INT4) containing 0 or 1, to allow for later expansion of values if necessary.&lt;br /&gt;
# Most tables should have a timemodified field (INT10) which is updated with a current timestamp obtained with the PHP time() function.&lt;br /&gt;
# Always define a default value for each field (and make it sensible)&lt;br /&gt;
# Each table name should start with the database prefix ($CFG-&amp;gt;prefix). In a lot of cases, this is taken care of for you automatically. Also, under Postgres, the name of every index must start with the prefix too.&lt;br /&gt;
# In order to guarantee [[Development:XMLDB problems#Table and column aliases - the AS keyword|cross-db compatibility]] follow these simple rules about the use of the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword (only if you need table/colum aliases, of course):&lt;br /&gt;
#* &#039;&#039;&#039;Don&#039;t use&#039;&#039;&#039; the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword for &#039;&#039;&#039;table aliases&#039;&#039;&#039;.&lt;br /&gt;
#* &#039;&#039;&#039;Do use&#039;&#039;&#039; the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword for &#039;&#039;&#039;column aliases&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Never&#039;&#039;&#039; create UNIQUE KEYs (constraints) at all. Instead use UNIQUE INDEXes. In the future, if we decide to add referential integrity to Moodle and we need UNIQUE KEYs they will be used, but not now. Please note that the XMLDB editor allows you to specify both XMLDB-only UNIQUE and FOREIGN constraints (and that&#039;s good, in order to have the XML well defined) but only underlying INDEXes will be generated. &lt;br /&gt;
# Those XMLDB-only UNIQUE KEYs (read previous point) only must be defined if such field/fields &#039;&#039;&#039;are going to be the target&#039;&#039;&#039; for some (XMLDB-only too) FOREIGN KEY. Else, create them as simple UNIQUE INDEXes.&lt;br /&gt;
# Tables associated &#039;&#039;&#039;with one block&#039;&#039;&#039; must follow this convention with their names: &#039;&#039;&#039;$CFG-&amp;gt;prefix + &amp;quot;block_&amp;quot; + name_of_the_block + anything_else&#039;&#039;&#039;. For example, assuming that $CFG-&amp;gt;prefix is &#039;mdl_&#039;, all the tables for the block &amp;quot;rss_client&amp;quot; must start by &#039;mdl_block_rss_client&#039; (being possible to add more words at the end, i.e. &#039;mdl_block_rss_client_anothertable&#039;...). This rule will be 100% enforced with Moodle 2.0, giving time to developers until then. See [http://tracker.moodle.org/browse/MDL-6786 Task 6786] for more info about this.&lt;br /&gt;
# &#039;&#039;&#039;Never&#039;&#039;&#039; make database changes in the STABLE branches.  If we did, then users upgrading from one stable version to the next would have duplicate changes occurring, which may cause serious errors.&lt;br /&gt;
&lt;br /&gt;
==Security issues (and handling form and URL data)==&lt;br /&gt;
&lt;br /&gt;
# Do not rely on &#039;register_globals&#039;. Every variable must be properly initialised in every code file. It must be obvious where the variable came from.&lt;br /&gt;
# Initialise all arrays and objects, even if empty. $a = array() or $obj = new stdClass();.&lt;br /&gt;
# Do not use the optional_variable() function (this function is now deprecated). Use the optional_param() function instead. Pick the correct PARAM_XXXX value for the data type you expect.&lt;br /&gt;
# Do not use the require_variable() function (this function is now deprecated). Use the required_param() function instead. Pick the correct PARAM_XXXX value for the data type you expect.&lt;br /&gt;
# Use data_submitted(), with care. Data must still be cleaned before use.&lt;br /&gt;
# Do not use $_GET, $_POST or $_REQUEST. Use the appropriate required_param() or optional_param() appropriate to your need.&lt;br /&gt;
# Do not check for an action using something like if (isset($_GET[&#039;something&#039;])). Use, e.g., $something = optional_param( &#039;something&#039;,-1,PARAM_INT ) and then perform proper test for it being in its expected range of values e.g., if ($something&amp;gt;=0) {....&lt;br /&gt;
# Wherever possible group all your required_param(), optional_param() and other variables initialisation at the beginning of each file to make them easy to find.&lt;br /&gt;
# Use &#039;sesskey&#039; mechanism to protect form handling routines from attack. Basic example of use: when form is generated, include &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;sesskey&amp;quot; value=&amp;quot;&amp;lt;?php echo sesskey(); ?&amp;gt;&amp;quot; /&amp;gt;. When you process the form check with if (!confirm_sesskey()) {error(&#039;Bad Session Key&#039;);}.&lt;br /&gt;
# All filenames must be &#039;cleaned&#039; using the clean_filename() function, if this has not been done already by appropriate use of required_param() or optional_param()&lt;br /&gt;
# Any data read from the database must have [[Developer:Slashes|addslashes()]] applied to it before it can be written back. A whole object of data can be hit at once with addslashes_object().&lt;br /&gt;
# Wherever possible, data to be stored in the database must come from POST data (from a form with method=&amp;quot;POST&amp;quot;) as opposed to GET data (ie, data from the URL line).&lt;br /&gt;
# Do not use data from $_SERVER if you can avoid it. This has portability issues.&lt;br /&gt;
# If it hasn&#039;t been done somewhere else, make sure all data written to the database has been through the clean_param() function using the appropriate PARAM_XXXX for the datatype.&lt;br /&gt;
# If you write custom SQL code, make very sure it is correct. In particular watch out for missing quotes around values. Possible SQL &#039;injection&#039; exploit.&lt;br /&gt;
# Check all data (particularly that written to the database) in every file it is used. Do not expect or rely on it being done somewhere else.&lt;br /&gt;
# Blocks of code to be included should contain a definite PHP structure (e.g, a class declaration, function definition(s) etc.) - straight blocks of code promote uninitialised variable usage.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
[[es:Manual de Estilo de Código]]&lt;br /&gt;
[[zh:代码指南]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Coding&amp;diff=21105</id>
		<title>Development:Coding</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Coding&amp;diff=21105"/>
		<updated>2007-03-05T22:21:51Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* General rules */ Note about creating links with $CFG-&amp;gt;wwwroot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any collaborative project needs consistency and stability to stay strong.&lt;br /&gt;
&lt;br /&gt;
These &#039;&#039;&#039;coding guidelines&#039;&#039;&#039; are to provide a goal for all Moodle code to strive to. It&#039;s true that some of the older existing code falls short in a few areas, but it will all be fixed eventually. All new code definitely must adhere to these standards as closely as possible.&lt;br /&gt;
&lt;br /&gt;
==General rules==&lt;br /&gt;
&lt;br /&gt;
# All code files should use the .php extension.&lt;br /&gt;
# All template files should use the .html extension.&lt;br /&gt;
# All text files should use Unix-style text format (most text editors have this as an option).&lt;br /&gt;
# All php tags must be &#039;full&#039; tags like &amp;lt;?php ?&amp;gt; ... not &#039;short&#039; tags like &amp;lt;? ?&amp;gt;.&lt;br /&gt;
# All existing copyright notices must be retained. You can add your own if necessary.&lt;br /&gt;
# Each file should include the main config.php file.&lt;br /&gt;
# Each file should check that the user is authenticated correctly, using require_login() and isadmin(), isteacher(), iscreator() or isstudent().&lt;br /&gt;
# All access to databases should use the functions in &#039;&#039;lib/dmllib.php&#039;&#039; whenever possible - this allows compatibility across a wide range of databases. You should find that almost anything is possible using these functions. If you must write SQL code then make sure it is: cross-platform; restricted to specific functions within your code (usually a lib.php file); and clearly marked.&lt;br /&gt;
# Don&#039;t create or use global variables except for the standard $CFG, $SESSION, $THEME, $SITE, $COURSE and $USER.&lt;br /&gt;
# All variables should be initialised or at least tested for existence using isset() or empty() before they are used.&lt;br /&gt;
# All strings should be translatable - create new texts in the &amp;quot;lang/en_utf8&amp;quot; files with concise English lowercase names and retrieve them from your code using get_string() or print_string(). Never delete strings to ensure backwards compatibility of the language packs is maintained.&lt;br /&gt;
# All errors should be printed using print_error() to maximise translation and help for users (it automatically links to the docs wiki).&lt;br /&gt;
# All help files should be translatable - create new texts in the &amp;quot;lang/en_utf8/help&amp;quot; directory and call them using helpbutton(). If you need to update a help file:&lt;br /&gt;
#* with a minor change, where an old translation of the file would still make sense, then it&#039;s OK to make the change but you should notify translation AT moodle DOT org.&lt;br /&gt;
#* for a major change you should create a new file by adding an incrementing number (eg filename2.html) so that translators can easily see it&#039;s a new version of the file. Obviously the new code and the help index files should also be modified to point to the newest versions.&lt;br /&gt;
# Incoming data from the browser (sent via GET or POST) automatically has magic_quotes applied (regardless of the PHP settings) so that you can safely insert it straight into the database. All other raw data (from files, or from databases) must be escaped with addslashes() before inserting it into the database. Because this is so often done incorrectly, there is more explanation on this issue of adding and stripping slashes on a [[Developer:Slashes|separate page]].&lt;br /&gt;
# VERY IMPORTANT: All texts within Moodle, especially those that have come from users, should be printed using the format_text() function. This ensures that text is filtered and cleaned correctly. More information can be found on the page about [[Development:Output_functions|output functions]].&lt;br /&gt;
# User actions should be logged using the [[Development:Logs|add_to_log()]] function. These logs are used for [[Settings#Show_activity_reports|activity reports]] and [[Logs]].&lt;br /&gt;
# When generating a HTML link, always make it relative to the full site root, i.e. use $CFG-&amp;gt;wwwroot/mod/blonk/view.php?id=99 rather than just view.php?id=99. This means your code will work if called by a script in another folder, among other things.&lt;br /&gt;
&lt;br /&gt;
==Coding style==&lt;br /&gt;
&lt;br /&gt;
I know it can be a little annoying to change your style if you&#039;re used to something else, but balance that annoyance against the annoyance of all the people trying later on to make sense of Moodle code with mixed styles. There are obviously many good points for and against any style that people use, but the current style just is, so please stick to it.&lt;br /&gt;
&lt;br /&gt;
1. Indenting should be consistently 4 spaces. Don&#039;t use tabs AT ALL.&lt;br /&gt;
&lt;br /&gt;
2. Variable names should always be easy-to-read, meaningful lowercase English words. If you really need more than one word then run them together, but keep them short as possible. Use plural names for arrays of objects.&lt;br /&gt;
&lt;br /&gt;
      GOOD: $quiz&lt;br /&gt;
      GOOD: $errorstring&lt;br /&gt;
      GOOD: $assignments (for an array of objects)&lt;br /&gt;
      GOOD: $i (but only in little loops)&lt;br /&gt;
&lt;br /&gt;
      BAD: $Quiz&lt;br /&gt;
      BAD: $aReallyLongVariableNameWithoutAGoodReason&lt;br /&gt;
      BAD: $error_string&lt;br /&gt;
&lt;br /&gt;
3. Constants should always be in upper case, and always start with the name of the module. They should have words separated by underscores.&lt;br /&gt;
&lt;br /&gt;
      define(&amp;quot;FORUM_MODE_FLATOLDEST&amp;quot;, 1);&lt;br /&gt;
4. Function names should be simple English lowercase words, and start with the name of the module to avoid conflicts between modules. Words should be separated by underscores. Parameters should always have sensible defaults if possible. Note there is no space between the function name and the following (brackets).&lt;br /&gt;
&lt;br /&gt;
      function forum_set_display_mode($mode=0) {&lt;br /&gt;
          global $USER, $CFG;&lt;br /&gt;
          &lt;br /&gt;
          if ($mode) {&lt;br /&gt;
              $USER-&amp;gt;mode = $mode;&lt;br /&gt;
          } else if (empty($USER-&amp;gt;mode)) {&lt;br /&gt;
              $USER-&amp;gt;mode = $CFG-&amp;gt;forum_displaymode;&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
5. Blocks must always be enclosed in curly braces (even if there is only one line). Moodle uses this style:&lt;br /&gt;
&lt;br /&gt;
      if ($quiz-&amp;gt;attempts) {&lt;br /&gt;
          if ($numattempts &amp;gt; $quiz-&amp;gt;attempts) {&lt;br /&gt;
              error($strtoomanyattempts, &amp;quot;view.php?id=$cm-&amp;gt;id&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
6. Strings should be defined using single quotes where possible, for increased speed.&lt;br /&gt;
&lt;br /&gt;
      $var = &#039;some text without any variables&#039;;&lt;br /&gt;
      $var = &amp;quot;with special characters like a new line \n&amp;quot;;&lt;br /&gt;
      $var = &#039;a very, very long string with a &#039;.$single.&#039; variable in it&#039;;&lt;br /&gt;
      $var = &amp;quot;some $text with $many variables $within it&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
7. Comments should be added as much as is practical, to explain the code flow and the purpose of functions and variables.&lt;br /&gt;
&lt;br /&gt;
* Every function (and class) should use the popular [http://www.phpdoc.org/ phpDoc format]. This allows code documentation to be generated automatically.&lt;br /&gt;
* Inline comments should use the // style, laid out neatly so that it fits among the code and lines up with it.&lt;br /&gt;
&lt;br /&gt;
      /**&lt;br /&gt;
      * The description should be first, with asterisks laid out exactly&lt;br /&gt;
      * like this example. If you want to refer to a another function,&lt;br /&gt;
      * do it like this: {@link clean_param()}. Then, add descriptions&lt;br /&gt;
      * for each parameter as follows.&lt;br /&gt;
      *&lt;br /&gt;
      * @param int $postid The PHP type is followed by the variable name&lt;br /&gt;
      * @param array $scale The PHP type is followed by the variable name&lt;br /&gt;
      * @param array $ratings The PHP type is followed by the variable name&lt;br /&gt;
      * @return mixed&lt;br /&gt;
      */&lt;br /&gt;
      function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {&lt;br /&gt;
          if (!$ratings) {&lt;br /&gt;
              $ratings = array();     // Initialize the empty array&lt;br /&gt;
              if ($rates = get_records(&amp;quot;forum_ratings&amp;quot;, &amp;quot;post&amp;quot;, $postid)) {&lt;br /&gt;
                  // Process each rating in turn&lt;br /&gt;
                  foreach ($rates as $rate) {&lt;br /&gt;
      ....etc&lt;br /&gt;
&lt;br /&gt;
8. Space should be used liberally - don&#039;t be afraid to spread things out a little to gain some clarity. Generally, there should be one space between brackets and normal statements, but no space between brackets and variables or functions:&lt;br /&gt;
&lt;br /&gt;
      foreach ($objects as $key =&amp;gt; $thing) {&lt;br /&gt;
          process($thing);&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      if ($x == $y) {&lt;br /&gt;
          $a = $b;&lt;br /&gt;
      } else if ($x == $z) {&lt;br /&gt;
          $a = $c;&lt;br /&gt;
      } else {&lt;br /&gt;
          $a = $d;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
9. When making a COPY of an object, always use the php5 clone() function (otherwise you may end up with just a reference to the first object).  Moodle will make sure this works consistently on php4 too.&lt;br /&gt;
&lt;br /&gt;
      BAD:   $b = $a;&lt;br /&gt;
      GOOD:  $b = clone($a);&lt;br /&gt;
&lt;br /&gt;
If the thing you want to copy is not an object, but may contain objects (eg an array of objects) then use fullclone() instead.&lt;br /&gt;
&lt;br /&gt;
==Database structures==&lt;br /&gt;
&lt;br /&gt;
# Every table must have an auto-incrementing id field (INT10) as primary index. (see [[IdColumnReasons]])&lt;br /&gt;
# The main table containing instances of each module must have the same name as the module (eg widget) and contain the following minimum fields:&lt;br /&gt;
#* id - as described above&lt;br /&gt;
#* course - the id of the course that each instance belongs to&lt;br /&gt;
#* name - the full name of each instance of the module&lt;br /&gt;
# Other tables associated with a module that contain information about &#039;things&#039; should be named widget_things (note the plural).&lt;br /&gt;
# Table and column names should avoid using [[Database reserved words|reserved words in any database]]. Please check them before creation.&lt;br /&gt;
# Column names should be always lowercase, simple and short, following the same rules as for variable names.&lt;br /&gt;
# Where possible, columns that contain a reference to the id field of another table (eg widget) should be called widgetid. (Note that this convention is newish and not followed in some older tables)&lt;br /&gt;
# Boolean fields should be implemented as small integer fields (eg INT4) containing 0 or 1, to allow for later expansion of values if necessary.&lt;br /&gt;
# Most tables should have a timemodified field (INT10) which is updated with a current timestamp obtained with the PHP time() function.&lt;br /&gt;
# Always define a default value for each field (and make it sensible)&lt;br /&gt;
# Each table name should start with the database prefix ($CFG-&amp;gt;prefix). In a lot of cases, this is taken care of for you automatically. Also, under Postgres, the name of every index must start with the prefix too.&lt;br /&gt;
# In order to guarantee [[Development:XMLDB problems#Table and column aliases - the AS keyword|cross-db compatibility]] follow these simple rules about the use of the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword (only if you need table/colum aliases, of course):&lt;br /&gt;
#* &#039;&#039;&#039;Don&#039;t use&#039;&#039;&#039; the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword for &#039;&#039;&#039;table aliases&#039;&#039;&#039;.&lt;br /&gt;
#* &#039;&#039;&#039;Do use&#039;&#039;&#039; the &#039;&#039;&#039;AS&#039;&#039;&#039; keyword for &#039;&#039;&#039;column aliases&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Never&#039;&#039;&#039; create UNIQUE KEYs (constraints) at all. Instead use UNIQUE INDEXes. In the future, if we decide to add referential integrity to Moodle and we need UNIQUE KEYs they will be used, but not now. Please note that the XMLDB editor allows you to specify both XMLDB-only UNIQUE and FOREIGN constraints (and that&#039;s good, in order to have the XML well defined) but only underlying INDEXes will be generated. &lt;br /&gt;
# Those XMLDB-only UNIQUE KEYs (read previous point) only must be defined if such field/fields &#039;&#039;&#039;are going to be the target&#039;&#039;&#039; for some (XMLDB-only too) FOREIGN KEY. Else, create them as simple UNIQUE INDEXes.&lt;br /&gt;
# Tables associated &#039;&#039;&#039;with one block&#039;&#039;&#039; must follow this convention with their names: &#039;&#039;&#039;$CFG-&amp;gt;prefix + &amp;quot;block_&amp;quot; + name_of_the_block + anything_else&#039;&#039;&#039;. For example, assuming that $CFG-&amp;gt;prefix is &#039;mdl_&#039;, all the tables for the block &amp;quot;rss_client&amp;quot; must start by &#039;mdl_block_rss_client&#039; (being possible to add more words at the end, i.e. &#039;mdl_block_rss_client_anothertable&#039;...). This rule will be 100% enforced with Moodle 2.0, giving time to developers until then. See [http://tracker.moodle.org/browse/MDL-6786 Task 6786] for more info about this.&lt;br /&gt;
# &#039;&#039;&#039;Never&#039;&#039;&#039; make database changes in the STABLE branches.  If we did, then users upgrading from one stable version to the next would have duplicate changes occurring, which may cause serious errors.&lt;br /&gt;
&lt;br /&gt;
==Security issues (and handling form and URL data)==&lt;br /&gt;
&lt;br /&gt;
# Do not rely on &#039;register_globals&#039;. Every variable must be properly initialised in every code file. It must be obvious where the variable came from.&lt;br /&gt;
# Initialise all arrays and objects, even if empty. $a = array() or $obj = new stdClass();.&lt;br /&gt;
# Do not use the optional_variable() function (this function is now deprecated). Use the optional_param() function instead. Pick the correct PARAM_XXXX value for the data type you expect.&lt;br /&gt;
# Do not use the require_variable() function (this function is now deprecated). Use the required_param() function instead. Pick the correct PARAM_XXXX value for the data type you expect.&lt;br /&gt;
# Use data_submitted(), with care. Data must still be cleaned before use.&lt;br /&gt;
# Do not use $_GET, $_POST or $_REQUEST. Use the appropriate required_param() or optional_param() appropriate to your need.&lt;br /&gt;
# Do not check for an action using something like if (isset($_GET[&#039;something&#039;])). Use, e.g., $something = optional_param( &#039;something&#039;,-1,PARAM_INT ) and then perform proper test for it being in its expected range of values e.g., if ($something&amp;gt;=0) {....&lt;br /&gt;
# Wherever possible group all your required_param(), optional_param() and other variables initialisation at the beginning of each file to make them easy to find.&lt;br /&gt;
# Use &#039;sesskey&#039; mechanism to protect form handling routines from attack. Basic example of use: when form is generated, include &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;sesskey&amp;quot; value=&amp;quot;&amp;lt;?php echo sesskey(); ?&amp;gt;&amp;quot; /&amp;gt;. When you process the form check with if (!confirm_sesskey()) {error(&#039;Bad Session Key&#039;);}.&lt;br /&gt;
# All filenames must be &#039;cleaned&#039; using the clean_filename() function, if this has not been done already by appropriate use of required_param() or optional_param()&lt;br /&gt;
# Any data read from the database must have [[Developer:Slashes|addslashes()]] applied to it before it can be written back. A whole object of data can be hit at once with addslashes_object().&lt;br /&gt;
# Wherever possible, data to be stored in the database must come from POST data (from a form with method=&amp;quot;POST&amp;quot;) as opposed to GET data (ie, data from the URL line).&lt;br /&gt;
# Do not use data from $_SERVER if you can avoid it. This has portability issues.&lt;br /&gt;
# If it hasn&#039;t been done somewhere else, make sure all data written to the database has been through the clean_param() function using the appropriate PARAM_XXXX for the datatype.&lt;br /&gt;
# If you write custom SQL code, make very sure it is correct. In particular watch out for missing quotes around values. Possible SQL &#039;injection&#039; exploit.&lt;br /&gt;
# Check all data (particularly that written to the database) in every file it is used. Do not expect or rely on it being done somewhere else.&lt;br /&gt;
# Blocks of code to be included should contain a definite PHP structure (e.g, a class declaration, function definition(s) etc.) - straight blocks of code promote uninitialised variable usage.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
[[es:Manual de Estilo de Código]]&lt;br /&gt;
[[zh:代码指南]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Latest_release_notes&amp;diff=16910</id>
		<title>Latest release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Latest_release_notes&amp;diff=16910"/>
		<updated>2006-10-10T11:17:52Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Other improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{About Moodle}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
&lt;br /&gt;
Under final test phase, release expected soon. Moodle 1.7 Beta is now available from CVS or the [http://download.moodle.org Moodle download page].  This version is not recommended for production sites yet.&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10120&amp;amp;styleName=Html&amp;amp;projectId=10011&amp;amp;Create=Create This page shows details about issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Roles]]&lt;br /&gt;
:: Permissions based on fine-grained capabilities allow all kinds of roles to be created and assigned in all contexts around Moodle.  This creates a great deal more flexibility in the permissions that you can grant to people.&lt;br /&gt;
* [[XML database schema]]&lt;br /&gt;
:: added support for MS-SQL and Oracle with more databases to come.  Developers now have just one XML file to edit when changing the database structure, and there is even a very funky editor for this file built-in to Moodle&lt;br /&gt;
* New Admin interface&lt;br /&gt;
:: Completely new admin interface, with accessible design and cool features to make access to settings fast and easy.&lt;br /&gt;
* AJAX Course editing&lt;br /&gt;
:: The Topics and Weekly course formats now feature AJAX editing which means you can drag drop blocks, activities and sections (weeks/topics) and it all happens instantly.  No more page reloading!&lt;br /&gt;
* [[Unit tests|Unit testing framework]]&lt;br /&gt;
:: Making it easier for developers to write test code, which should ultimately lead to a more reliable Moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other improvements===&lt;br /&gt;
&lt;br /&gt;
* Improvements to the [[Database module]]&lt;br /&gt;
**Template/Field settings can now be saved as Presets and shared across a site.&lt;br /&gt;
**Presets are just zip files, and can also be shared between sites.&lt;br /&gt;
**Moodle 1.7 comes with one sample preset (an Image Gallery) with more to come.&lt;br /&gt;
**New latitude/longitude data type&lt;br /&gt;
&lt;br /&gt;
* Improvements to the [[Lesson module]]&lt;br /&gt;
**Now has a more unified view of lesson screens.&lt;br /&gt;
**Teacher editing:&lt;br /&gt;
***Collapsed view has a nicer format, displays more information regarding each page and allows the creation of new pages.&lt;br /&gt;
***Editing is now speedier by replacing 3 second redirect delays with a notification system.&lt;br /&gt;
**New feature: display default feedback.&lt;br /&gt;
***Default is &#039;&#039;&#039;On&#039;&#039;&#039; so previous lessons behave as before.&lt;br /&gt;
***Description: if no &#039;&#039;response&#039;&#039; is entered for a question answer and this setting is turned &#039;&#039;&#039;Off&#039;&#039;&#039;, then the user skips the feedback page.&lt;br /&gt;
**Graceful degrade of JavaScript.&lt;br /&gt;
**Several bug fixes.&lt;br /&gt;
&lt;br /&gt;
* Improvements to the [[Quiz module]]&lt;br /&gt;
:* The teacher can configure comments that are displayed to the student at the end of their attempt, with the comment displayed depending on the student&#039;s score.&lt;br /&gt;
&lt;br /&gt;
* Improvements to some core question types&lt;br /&gt;
:* All question types can now have some general feedback. This is displayed to all students after they have finished the question (depending on the quiz settings) and does not depend on what response the student gave. Use this to tell the student what the question was about, or link them to more information about the topic it covers.&lt;br /&gt;
:* [[Matching question type|Matching]] questions can have extra wrong answers, and work when two questions have the same answer.&lt;br /&gt;
:* [[Multiple Choice question type|Multiple Choice]] questions can have feedback for the whole question, as well as specific answers. This is particularly useful for multiple-response questions.&lt;br /&gt;
:* [[Numerical question type|Numerical]] questions can have different answers with different precisions and scores. (Previously this was only supported via GIFT import. Now you can edit questions like this.)&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6.3==&lt;br /&gt;
10th October, 2006&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10140&amp;amp;styleName=Text&amp;amp;projectId=10011 Full details of these issues can be found in the tracker]&lt;br /&gt;
&lt;br /&gt;
===Security Bugfix===&lt;br /&gt;
* A vulnerability was discovered that could allow SQL injections if a parameter was improperly used.  Full details of this particular issue are on the [http://security.moodle.org/ Moodle Security site].  All registered Moodle admins were notified by direct email on Saturday September 30th.&lt;br /&gt;
&lt;br /&gt;
===General Bugs Fixed===&lt;br /&gt;
* [MDL-3048] - Release note should note not to use some PHP versions&lt;br /&gt;
* [MDL-3805] - mod.html in NEWMODULE.zip is not XHTML1.0 Transitional compliant&lt;br /&gt;
* [MDL-5378] - shorten_text doesn&#039;t work for oriental languages&lt;br /&gt;
* [MDL-5601] - cloze question restore error problem&lt;br /&gt;
* [MDL-5884] - Turn Student View On&lt;br /&gt;
* [MDL-5893] - Blackboard export/backup course does not restore to Moodle correctly&lt;br /&gt;
* [MDL-6084] - Restore to new course failure notice if  logged in as course creator&lt;br /&gt;
* [MDL-6128] - 1.6, special chars and messaging system.&lt;br /&gt;
* [MDL-6193] - problem with login/index.php file&lt;br /&gt;
* [MDL-6205] - slashes not stripped when re-editing profile&lt;br /&gt;
* [MDL-6224] - Syntax error creating tables on install&lt;br /&gt;
* [MDL-6247] - Error checking for missing themes&lt;br /&gt;
* [MDL-6271] - breadcrumb problem&lt;br /&gt;
* [MDL-6272] - DB Enrolment not recording enrolment end date&lt;br /&gt;
* [MDL-6334] - Unnecessary group menu in Feedback popup window&lt;br /&gt;
* [MDL-6336] - After utf8-migration unserializing of old essay fails&lt;br /&gt;
* [MDL-6341] - &amp;quot;Student view&amp;quot; locks out designers/administrators from courses not available to students&lt;br /&gt;
* [MDL-6342] - cannot move forum post to other forum when the subject includes an apostrophe&lt;br /&gt;
* [MDL-6363] - typo in mod/forum/restorelib.php prevents grouped discussions from being accessible to group after a restore.&lt;br /&gt;
* [MDL-6375] - Uploaded assignments are not available from the student submission page once graded&lt;br /&gt;
* [MDL-6480] - Import of multichoice questions in Moodle XML format doesn&#039;t use shuffle option. Fix included&lt;br /&gt;
* [MDL-6517] - Adding or editing post produces &amp;quot;ERROR: invalid input syntax for integer: &amp;quot;Object id #XXX&amp;quot;&lt;br /&gt;
* [MDL-6518] - How to make new themes link no longer required&lt;br /&gt;
* [MDL-6521] - Single discussion forums can be splitted and it hasn&#039;t too much sense....&lt;br /&gt;
* [MDL-6537] - past students receive email from forum&lt;br /&gt;
* [MDL-6538] - Bug in hotpot upgrade script 1.6.1 -&amp;gt; 1.6.2 with MetaColumns() method&lt;br /&gt;
* [MDL-6615] - Highlighting search terms in forum search text posts fails&lt;br /&gt;
* [MDL-6632] - scorm_grade_user function in locallib.php file has errors&lt;br /&gt;
* [MDL-6649] - HTML Editor in Quiz Essay Question unreliable&lt;br /&gt;
* [MDL-6686] - Streamed Chat Locks Send Message Field&lt;br /&gt;
* [MDL-6750] - change_password.php produces JS error.&lt;br /&gt;
* [MDL-6754] - moodle.php in de_utf8 langpack has wrong locale&lt;br /&gt;
* [MDL-6757] - Insert a Chinese charachter string to label resource result error.&lt;br /&gt;
* [MDL-6770] - Student cannot see handed-in assignment&lt;br /&gt;
* [MDL-6791] - Streamed Chat JS bug Prevents Use&lt;br /&gt;
* [MDL-6824] - redundant style declaration in theme&lt;br /&gt;
* [MDL-6837] - Make a language file entry for the wording of popup blocker checker&lt;br /&gt;
* [MDL-6841] - Student View button fails when course is hidden to students&lt;br /&gt;
* [MDL-6842] - Resource frameset error in IE6&lt;br /&gt;
* [MDL-6866] - A required parameter (backup_unique_code) was missing&amp;quot; error&lt;br /&gt;
* [MDL-6876] - Grades computed incorrectly if assignment name appears more than twice in a course&lt;br /&gt;
&lt;br /&gt;
===Improvement===&lt;br /&gt;
* [MDL-6280] - Backup files should not be included in new backups&lt;br /&gt;
* [MDL-6572] - Allow students to access their uploaded documents after grading.&lt;br /&gt;
* [MDL-6662] - why footer with margin-top: 100px&lt;br /&gt;
* [MDL-6878] - Scalable Vector Graphics (SVG) files in Moodle are not correctly displayed in many Browsers&lt;br /&gt;
&lt;br /&gt;
===New Feature===&lt;br /&gt;
* [MDL-5653] - add blacklisted level into environment XML&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6.2==&lt;br /&gt;
12th September, 2006&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
* Fixed handling of uploaded files in Database module&lt;br /&gt;
* Module instance id is now properly validated when creating course module object; developers should use get_coursemodule_from_id() to get valid $cm&lt;br /&gt;
* Default error reporting level was lowered to 5, E_WARNINGs are no longer displayed on production sites with debug off.&lt;br /&gt;
* Multiple problems leading to information leakage fixed in help.php file&lt;br /&gt;
* Fixed information leakage from scheduled backups&lt;br /&gt;
* Added basic detection of dataroot accessible from Internet, web installer now better suggests dataroot location outside of web file area&lt;br /&gt;
* Swf is now disabled by default in Mediaplugin&lt;br /&gt;
* forgot_password.php does not allow remote email or username enumeration by default, the old behavior can be enabled by setting protectusernames to No in site configuration&lt;br /&gt;
* Undisclosed SQL injections fixed by automatic data conversions in adodb layer&lt;br /&gt;
* Theoretical XSS problems fixed in doc/index.php and files/index.php scripts&lt;br /&gt;
* Access to tex and algebra files is blocked when filters are disabled&lt;br /&gt;
* Request for redirection in jumpto.php protected with sesskey&lt;br /&gt;
&lt;br /&gt;
===Bug Fixes===&lt;br /&gt;
&lt;br /&gt;
* Fixed error when upgrading forum read tracking&lt;br /&gt;
* Locales from language packs should finally work - please check your configuration variables and empty the locale field&lt;br /&gt;
* Added missing link for course request&lt;br /&gt;
* Fixed several glossary problems with non-ascii characters&lt;br /&gt;
* Fixed bug where you could not regrade a quiz question where the teacher had added a comment with a &#039; character.&lt;br /&gt;
* Quiz import of BlackBoard V6 files now much more reliable&lt;br /&gt;
* Fixed scheduled backups - they were broken in 1.6 and 1.6.1&lt;br /&gt;
* Fixed missing guest icons from course listing&lt;br /&gt;
* Database sessions respect sessiontimeout setting&lt;br /&gt;
* Fixed redirect problems during upgrade resulting in &amp;quot;Table xxx already exists&amp;quot;&lt;br /&gt;
* Lesson module: the &amp;quot;(Continue)&amp;quot; no longer displays for 3 seconds after branch tables.&lt;br /&gt;
* Lesson module: now properly checks import formats for support.&lt;br /&gt;
* Lesson module: feedback is set properly during the import process.&lt;br /&gt;
* and many other smaller fixes&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
* Authorize.net Payment Gateway: Autoconfigures credit card types if the merchant does not accept some types of credit cards&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
* Broken images in published question categories&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6.1==&lt;br /&gt;
20th July, 2006&lt;br /&gt;
&lt;br /&gt;
===Bug Fixes===&lt;br /&gt;
&lt;br /&gt;
* Fixed regression in Turkish locale handling&lt;br /&gt;
* Authorize and Paypal enrolment plugin cleanup&lt;br /&gt;
* Fixed serious problem with failing Database restore&lt;br /&gt;
* Fixed restore of HotPot module containing attempts&lt;br /&gt;
* Minor Database module fixes&lt;br /&gt;
* National characters in graphs now work for most languages out of the box&lt;br /&gt;
* Reviewed and fixed all *nix locale codes in language packs&lt;br /&gt;
* Fixed problems when using Resources with Blocks on the frontpage&lt;br /&gt;
* Fixed missing events on the first day of month in calendar&lt;br /&gt;
* Fixed several problems in Lesson - scores, branch tables, HTML editor issues&lt;br /&gt;
* Fixed broken intermodule relinking of absolute paths - please do not use course backups from original 1.6&lt;br /&gt;
* PDF byteserving problems caused by incorrect partial content length solved&lt;br /&gt;
* Fixed several regressions in handling of multiple groups&lt;br /&gt;
* Fixed alphabet problems in Glossary&lt;br /&gt;
* Chameleon theme fixes and enhancements&lt;br /&gt;
* Fixed all hard coded admin paths&lt;br /&gt;
* Fixed moving of course sections&lt;br /&gt;
* Fixed grading of Essays in Quiz&lt;br /&gt;
* Several Quiz regrading problems solved&lt;br /&gt;
* Questions are now exported into backupdata directory&lt;br /&gt;
* Added workaround for problems when editting two quizes in one browser&lt;br /&gt;
* Lots of other Quiz related bugs fixed - thanks Tim!&lt;br /&gt;
&lt;br /&gt;
* Fixed IE unsecure items warning on sites with https login&lt;br /&gt;
* Improved cookie test on the login page&lt;br /&gt;
* Potential security issue with unzipping maliciously-crafted zip files fixed&lt;br /&gt;
* Satinized input parameters in help.php&lt;br /&gt;
* Calendar view.php now respects forcelogin setting&lt;br /&gt;
&lt;br /&gt;
* And lots of other minor fixes worth upgrading&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
* Enhanced frontpage settings - frontpage can now be different for logged in users, changed category list display&lt;br /&gt;
* Improved administration page layout&lt;br /&gt;
* Possibility to change graph font for all locales - moodledata/lang/default.ttf takes precedence over lib/default.ttf&lt;br /&gt;
* Local language packs may also contain default.ttf&lt;br /&gt;
* Backported improved lang.php from HEAD&lt;br /&gt;
* New config.php option $CFG-&amp;gt;allowvisiblecoursesinhiddencategories&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
&lt;br /&gt;
* Broken images in published question categories&lt;br /&gt;
* Small number of sites reports problems with Quiz upgrade - please always do a full database backup before any upgrade!&lt;br /&gt;
&lt;br /&gt;
===Related===&lt;br /&gt;
&lt;br /&gt;
* Third party modules should be already updated for 1.6.x - you must install new versions before UTF-8 migration!&lt;br /&gt;
* New integration of phpMyAdmin available - fixes upstream security problems and compatiblility with PHP 5&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6==&lt;br /&gt;
19th June, 2006&lt;br /&gt;
&lt;br /&gt;
NOTE: Moodle 1.6 requires PHP 4.3.0 (or PHP 5.1.0) and MySQL 4.1.16 (4.1.12 if you use latin languages only). Here is more info on [[Upgrading to Moodle 1.6]].&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
* [[UTF-8 migration|Unicode]]&lt;br /&gt;
::Moodle is now 100% Unicode, which means any language can be mixed together and an end to a number of problems that different character sets caused us.&lt;br /&gt;
* [[MoodleDocs development|Documentation]]&lt;br /&gt;
::A new one-stop wiki site for ALL Moodle documentation, including links from Moodle itself&lt;br /&gt;
* [[Database module]]&lt;br /&gt;
::A new activity module that allows collaborative collection of structured data, useful for many things!&lt;br /&gt;
* [[LAMS]]&lt;br /&gt;
::Integrated via a course format and an activity module&lt;br /&gt;
* [[Blogs]]&lt;br /&gt;
::Allows reflection on an ongoing basis.  Entries are marked and can be viewed by user, course, group, site etc.  Contains first new support for [[Tags]].  &lt;br /&gt;
* [[Reports]]&lt;br /&gt;
::All reports are now centralised under Course reports and Admin reports.  New reports can be written as plugins and dropped in very easily.  One big new report is the new course-based statistics system from Catalyst.&lt;br /&gt;
* [[Questions]]&lt;br /&gt;
::A centralized bank of questions with the potential to be (re-)used in a variety of modules.&lt;br /&gt;
* [[My Moodle]]&lt;br /&gt;
::A dashboard interface that allows an overview for each user of all their courses etc.&lt;br /&gt;
* [[Hive integration]]&lt;br /&gt;
::This initial integration with Hive allows teachers to upload, browse, search and select [[Resources|resources]] within the external repository.&lt;br /&gt;
* [[Multiple groups]]&lt;br /&gt;
::Users can be part of multiple groups within a course&lt;br /&gt;
* [[IMS content package]] resource type&lt;br /&gt;
::Supports the loading of any content package as a resource, with an optional repository for sharing packages between courses.&lt;br /&gt;
* [[Course backup|Granularised backup]]&lt;br /&gt;
* [[Chameleon|Chameleon theme]]&lt;br /&gt;
:: An interactive Moodle theme&lt;br /&gt;
* [[Enrolment plugins|Multi enrolment]]&lt;br /&gt;
::Moodle&#039;s enrolment plugins can be used simultaneously on the same site. Also new [[IMS Enterprise]] enrolment plugin.&lt;br /&gt;
*[[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
::New feature called &#039;Order Review&#039;. Admins and teachers may accept or deny payments before processing the credit card and they can also refund payments after processing the credit card in &#039;Payment Management&#039; page. Students may view their order details. Address Verification System (AVS) and Scheduled-Capture support added. For &#039;Manual-Capture&#039; admins are notified 5 days prior to pending orders expiring.&lt;br /&gt;
===See also===&lt;br /&gt;
*[[:Category:Moodle 1.6|Moodle 1.6 features]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5.4==&lt;br /&gt;
21st May, 2006&lt;br /&gt;
&lt;br /&gt;
(Because this release contains important security fixes, we highly advise that sites using any previous version of Moodle upgrade to this version as soon as possible.)&lt;br /&gt;
&lt;br /&gt;
===Various fixes===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Improved kses cleaning of html SC#204&lt;br /&gt;
* Prevent unwanted password change here SC#225&lt;br /&gt;
* Fix for Secunia Advisory SA18267, plus some logging of suspicious activity.&lt;br /&gt;
* AdoDB tests cleanup after Secunia Advisory SA18267&lt;br /&gt;
* Fixed $cfg-&amp;gt;forceloginforprofiles logic SC#207. Backported from HEAD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
* Various updates/improvements in the the Environmental Check allowing to check if your server suits future Moodle requirements.&lt;br /&gt;
* Bug 4619. Fixed one DB query not following coding rules.&lt;br /&gt;
* Bug 4607. Avoid duplication of course shortname on restore.&lt;br /&gt;
* Fixed one problem with auto-link filters and frames.&lt;br /&gt;
* Important fixes to muti-byte text handling routines.&lt;br /&gt;
* Small changes to the installer.&lt;br /&gt;
* Bug 3853. Some important improvements in the restore of log actions.&lt;br /&gt;
* Bug 4328. Prevent some warnings in the blocks system.&lt;br /&gt;
* Bug 4341. Extending multi-lang support to the &amp;quot;jumpto&amp;quot; menu (showed in collapsed mode).&lt;br /&gt;
* Added rss_get_url() to 1.5 to help support data module&lt;br /&gt;
* Added support for having a linked tab even if it is currently selected.&lt;br /&gt;
* RSS Client block: Removed secondary cache. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4625 Bug 4625]&lt;br /&gt;
* Email confirmation now includes lastname. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4869 Bug 4869]&lt;br /&gt;
* Database connection errors can now be reported to an admin. See $CFG-&amp;gt;emailconnectionerrors in config-dist.php.&lt;br /&gt;
* Metacourses: Fixed a problem with self enrolment in child courses.&lt;br /&gt;
* Several MySQL v5 compatibility fixes&lt;br /&gt;
* Avoid listing more than 200 courses in my courses block, and course listing pages.&lt;br /&gt;
* SCORM: Fixed lesson status skin support&lt;br /&gt;
* Skype: Added webstatus icon&lt;br /&gt;
* File uploads: Only create a directory if needed, [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4659 bug 4659]&lt;br /&gt;
* Admin Block. Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4627 bug 4627]: Hide &amp;quot;change password&amp;quot; link in admin block if the user is restricted. Credits for report &amp;amp; patch go to Joseph Rezeau.&lt;br /&gt;
* HTMLArea: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4562 bug 4562]. Fix posted by sgarcia.&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4626 bug 4626] - weblib.php: $course object conversion error in &amp;amp;quot;print_footer &amp;amp;quot; function&lt;br /&gt;
* Messaging: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4621 bug 4621] errors in MySQL v3.23 with message backup.&lt;br /&gt;
* Introducing Admin-&amp;gt;Environment to help users assess installed software prior to the 1.6 upgrade&lt;br /&gt;
* Course Restore: Now we avoid duplicates. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4607 Bug 4607]&lt;br /&gt;
* Assignment: Guests can no longer submit an online assignment. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4604 Bug 4604]&lt;br /&gt;
* File Downloads: Fixed problems for slow (dial up) clients, and avoid hogging memory when PHP&#039;s output compression is on.&lt;br /&gt;
* Wiki: Supports initial load of contents from course file area. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=3830 Bug 3830]&lt;br /&gt;
* Lesson: Now when a teacher edits a page with the &amp;quot;Edit page contents&amp;quot; button and then saves or cancels, s/he gets redirected back to the lesson navigation. This will help to streamline the editing.&lt;br /&gt;
* Activity Modules Block - [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4586 bug 4586]&lt;br /&gt;
* Metacourse: Fixes unenrolling [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4541 bug 4541]&lt;br /&gt;
* File uploads: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4533 bug 4533] - Max upload size at course level ignored.&lt;br /&gt;
* Enrol/Authorize.net: Added Address Verification System (AVS) support.&lt;br /&gt;
* Online Users Block: Limit the number of students displayed.&lt;br /&gt;
* Unicode Support: Typo3 Library updated to newest version.&lt;br /&gt;
* Course Categories: Fixed courses and subcategories in an invisible category being visible. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4074 Bug 4074]&lt;br /&gt;
* Wiki: Fixed a fatal error updating wiki pages.&lt;br /&gt;
* Added autocomplete=off in form tag to avoid browser autocomplete [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4423 bug:4423]&lt;br /&gt;
* Password change: Primary administrator password can only be changed by the administraror him/herself.&lt;br /&gt;
* Enrol/Authorize.net: Some changes:- allow_internal is not need anymore. Shows two option if enrolment key of course is set.- login_https is required for payment pages. My credit card is important. If you haven&#039;t a certificate forgot this module. (security)- Expiry date of credit card is more friendly :).&lt;br /&gt;
* User profile: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4400 bug 4400]&lt;br /&gt;
* Removed old THEME variable.&lt;br /&gt;
* Added some more CSS hooks for the correctness feedback&lt;br /&gt;
* Fix [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4366 bug 4366]&lt;br /&gt;
* Makes autologinguest possible at site level&lt;br /&gt;
* Micro-increment version number to 2.0.10&lt;br /&gt;
* Corrected adjustment of relative URLs in &amp;lt;EMBED&amp;gt; tag&lt;br /&gt;
* Merging from HEAD:Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4371 bug 4371] (also SC#199):Now manually created users with admin privileges and force change passwordcannot change their username with impunity.&lt;br /&gt;
* Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4067 bug 4067] - allow user to update assignment when not yet marked&lt;br /&gt;
* Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4314 bug 4314]&lt;br /&gt;
* Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4206 bug 4206]&lt;br /&gt;
* Delayed merge from HEAD - If tablelib is going to do fullname voodoo, allow default sort field to be firstname/lastname&lt;br /&gt;
* Log actions must be strored to DB without &amp;amp;amp;print_log() takes care of it! [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=3853 Bug 3853]&lt;br /&gt;
* Fixes [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4354 bug 4354]&lt;br /&gt;
* shorten_text() AFTER format properly. See [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4355 bug  4355]&lt;br /&gt;
* Prevent a warning when params is empty. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4328 Bug 4328]&lt;br /&gt;
* Now the section &amp;quot;jumpto&amp;quot; menu (showed in collapse mode), supportsthe multilang filter. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4341 Bug 4341]&lt;br /&gt;
* Print performance info if exists and $CFG-&amp;gt;perfdebug is enabled.&lt;br /&gt;
* Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4351 bug 4351]. New parasmeter for get_record_sql to disableauto-added LIMIT (in case we are using our own)&lt;br /&gt;
* Solved bug found when trying to backup all users! http://moodle.org/mod/forum/discuss.php?d=27105&lt;br /&gt;
* Fixing [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4345 bug 4345]: merging problem when fixing [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4303 bug 4303]&lt;br /&gt;
* Mimic changes from &amp;quot;Ought to mention the improved assignment grading!&amp;quot;Merged from HEAD&lt;br /&gt;
* Ought to mention the improved assignment grading!&lt;br /&gt;
* Fixes [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4086 bug 4086] spelling mistake&lt;br /&gt;
* Commenting out gz_handler since it seem to cause problemsmore on http://moodle.org/mod/forum/discuss.php?d=34376&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Assignment&#039;&#039;&#039;&lt;br /&gt;
* Fixed bug in &amp;quot;Prevent late submissions&amp;quot;, thanks to Samuli, [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4780 bug 4780]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enrolment&#039;&#039;&#039;&lt;br /&gt;
* Enrolment: Better explanation of flat file enrolment format. Re-formatted the imporved flat file enorlment description&lt;br /&gt;
* Auth/LDAP: Better support for ActiveDirectory&lt;br /&gt;
* Enrol/Authorize.net: PostgreSQL support and some indexes for speed.&lt;br /&gt;
* Authorize.net: Address Verification System (AVS) support added.&lt;br /&gt;
* Authorize.net: $CGF-&amp;gt;login_https must be ON for payment pages.&lt;br /&gt;
* Authorize.net: Shows two forms if the enrolment key of the course is set (internal and authorize forms).&lt;br /&gt;
* Authorize.net: IIS https fix. It doesn&#039;t recognize empty($_SERVER[&#039;HTTPS&#039;]) but accepts HTTPS=off.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forum Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Bug 4355. Solved one visualisation problem in the page showing the list of forums.&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4360 bug 4360]&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4431 bug 4431], affecting site course, added function forum_user_can_view_post in lib.php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Glossary Module&#039;&#039;&#039;&lt;br /&gt;
* Bug 4543, 4713. Fixed some problems with entries and categories containing more than one word in their title.&lt;br /&gt;
* Bug 4858. Fixed one problem with formats, not being detected properly.&lt;br /&gt;
* Bug 4915. Entrylist format now displays the &amp;quot;Send Ratings&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hotpot Module&#039;&#039;&#039;&lt;br /&gt;
* Add support for HP5 quizzes (including JBC and old JQuiz)&lt;br /&gt;
* Removed weighting from questiontext in JCloze import&lt;br /&gt;
* Fixed import of JCloze into quiz module as a MULTIANSWER question&lt;br /&gt;
* Fixed bug in restoring attempts from backup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lesson Module&lt;br /&gt;
* Lesson: $navigation and $grade_value were undefined when lesson was added to site main page&lt;br /&gt;
* Lesson: Lesson Essay Question Can&#039;t be Graded when attempt not finished. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4174 Bug 4174]&lt;br /&gt;
* Lesson: Added cancel button. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4216 Bug 4216] - cancel button&lt;br /&gt;
* Lesson: Fixed [http://moodle.org/mod/forum/discuss.php?d=37537 problem with storing the answerid for numerical questions].&lt;br /&gt;
* Lesson: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=1187 bug 1187]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quiz Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fixed bug 4250: Added missing percentages to the grade selector&lt;br /&gt;
* Fixed bug 4495: Don&#039;t apply lateness check when teacher previews&lt;br /&gt;
* Fixed bug 4544: Incorrect path to exported files in some language packs&lt;br /&gt;
* Fixed bug 4780: Bug in &amp;quot;Prevent late submissions&amp;quot; setting fixed&lt;br /&gt;
* Fixed bug 5070: Students can&#039;t see quizzes when they are closed&lt;br /&gt;
* Turned off regrading of quizzes that have the attemptonlast option set&lt;br /&gt;
* A number of other minor interface fixes&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4319 bug 4319]. Thanks to Jaroslav&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4217 bug 4217]&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4829 bug 4829]&lt;br /&gt;
* Now we avoid checking for lateness when teacher previews. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4495 Bug 4495]&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4688 bug 4688]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=39548 Rounding errors could lead to &amp;quot;Partially correct&amp;quot; for correct answers]&lt;br /&gt;
* Added missing percentages to the grade selector, [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4250 bug 4250]&lt;br /&gt;
* Avoid error messages in case $quiz-&amp;gt;sumgrades is zero, [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4454 bug 4454]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=27730#181773 get_actual_response() method for cloze question type] contributed by Jean-Michel&lt;br /&gt;
* Better PostgreSQL support&lt;br /&gt;
* Now With Nicer Presentation of Questions&lt;br /&gt;
* Summary text shouldn&#039;t be cleaned as only entered by teacher.&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4345 bug 4345]. Report performance improvements caused regression with MySQLv3&lt;br /&gt;
* Now we turn off browser-based autocomplete. Fixes [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4423 bug 4423] - Short Answer Quiz Q&#039;s Saving Form Entries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Solved one problem on restore that was causing some links to become corrupted.&lt;br /&gt;
* Slightly changes to the delete_instance() function in resources to allow future improvements.&lt;br /&gt;
* Resource restore: Solved bug when [http://moodle.org/mod/forum/discuss.php?d=38801 decoding encoded links for resource]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wiki Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Solved one problem sending double-slashed info to DB.&lt;br /&gt;
* Bug 3830. Load of initial content from course file area is now allowed.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5.3==&lt;br /&gt;
&lt;br /&gt;
11th November, 2005&lt;br /&gt;
&lt;br /&gt;
(Because this release contains important security fixes, we highly advise that sites using any previous version of Moodle upgrade to this version as soon as possible.)&lt;br /&gt;
&lt;br /&gt;
===A few new things===&lt;br /&gt;
&lt;br /&gt;
* We now have SCORM 1.3 (SCORM 2004) support!&lt;br /&gt;
* Much improved Assignment grading interface, including &amp;quot;quick grading&amp;quot; options&lt;br /&gt;
* A new Single-Sign-On API is available&lt;br /&gt;
&lt;br /&gt;
===Various fixes===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Contains warnings when Moodle is used on an PHP configuration known to be insecure&lt;br /&gt;
* Contains fixes for some recently reported security problems (see [http://security.moodle.org/ security.moodle.org])&lt;br /&gt;
* Backups now runs a lot faster medium/large installs. Many issues fixed in this area&lt;br /&gt;
* Listing of directory sizes can be made much faster on Linux/Unix servers, thanks to a performance fix you can enable from Admin-&amp;gt;Variables: &amp;quot;path_to_du&amp;quot;&lt;br /&gt;
* We now log more meaningful IP addresses when the server or the clients are working behind a proxy&lt;br /&gt;
* Fixed some issues with PHP accelerators&lt;br /&gt;
* Upgrade scripts have been refined and work much better for PostgreSQL installations&lt;br /&gt;
* General PostgreSQL port code cleanup&lt;br /&gt;
* Upgrading to 1.5.3 will fix any legacy Journal to Online Assignment upgrade issues&lt;br /&gt;
* RSS libraries now support RSS 2.0 categories, see bug 3654&lt;br /&gt;
* Better accesibilty in file uploads, see bug 3662&lt;br /&gt;
* Better support for site-wide HTTPS, see bug 3848&lt;br /&gt;
* We now send away bots (like Googlebot) from that try mangled URLs, see bug 3958&lt;br /&gt;
* Better DST support for non-logged-in users&lt;br /&gt;
* Better DST support for repeat events in Calendar&lt;br /&gt;
* Small fixes to the lesson, choice and grade modules&lt;br /&gt;
* Minor CSS improvements to formal_white and orangewhite themes&lt;br /&gt;
* Better pagination in course listing and loglive pages&lt;br /&gt;
* Fixed an IE-only bug related to HTMLArea content where user-edited tables could float and hide part of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fixes to change password/forgotten password with external auth&lt;br /&gt;
* Data fetched from external DB or LDAP is now truncated correctly&lt;br /&gt;
* Fixed bug 4305 -- better login block behaviour when using secureforms&lt;br /&gt;
* Better support for utf-8 user data from external auth&lt;br /&gt;
* LDAP: General fixes covering sync_users script and logging of errors&lt;br /&gt;
* LDAP: Fixed bug 3141 - Can&#039;t update external data with LDAP authentication&lt;br /&gt;
* LDAP: Fixed bug 3992 - LDAP password including a quote does not work - credits go to Kita&lt;br /&gt;
* LDAP: Better support for ActiveDirectory.&lt;br /&gt;
* LDAP: Fixed bug #3594&lt;br /&gt;
* LDAP: Better handling of multi-source field mapping&lt;br /&gt;
* LDAP: Fix for using DN as idnumber - thanks fo Jeff Graham - http://moodle.org/mod/forum/discuss.php?d=28840&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enrolment and metacourses&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Metacourses: Prevent normal users to gain access to meta courses via manual enrolment&lt;br /&gt;
* Metacourses: better support for MySQL v3.23.x&lt;br /&gt;
* DB: Enrolment lookups now work reliably with Moodle on MySQL and Postgres&lt;br /&gt;
* DB: Non-MySQL databases work again as external enrolment databases&lt;br /&gt;
* LDAP: Fixed a wrong call to add_teacher in LDAP plugin.&lt;br /&gt;
* LDAP: Servers being down or unavailable no longer prevent logins&lt;br /&gt;
* LDAP: Course auto-creation works again&lt;br /&gt;
* LDAP: Fixed several bugs reported by Jeff Graham and Barron Koralesky -- including bugs 3912 and 3974&lt;br /&gt;
* LDAP: We can now bind non-anonymously to LDAP&lt;br /&gt;
* Authorize.net: several fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Avoid linking to empty or unlinkable activity names&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forums&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Big and small optimizations to tracking of read/unread messages, specially for PostgreSQL&lt;br /&gt;
* Fixed some PostgreSQL bugs&lt;br /&gt;
* Some more actions are now supported by backup/restore when processing log records, see bug 3582&lt;br /&gt;
* Now message forum RSS feeds are including category data -- useful under some RSS agregators able to group messages, see bug 3654&lt;br /&gt;
* Fixed paging on forum search&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blocks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Several performance improvements&lt;br /&gt;
* Fixes to the upgrade process, including PostgreSQL syntax and lower memory usage&lt;br /&gt;
* Brought in several bugfixes from 1.6dev&lt;br /&gt;
* Fixed bug 3478: Cannot add RSS feed as course creator&lt;br /&gt;
* Fixed bug 3793: Prevent warning message when configuring a glossary_random block in a course which has no glossaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quiz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Some CSS style fixes&lt;br /&gt;
* Better compatibility with themes that contain forms in the headers&lt;br /&gt;
* Highlighting of correct answers can now be turned off&lt;br /&gt;
* Fixed bug 3986: Too many random questions. (mindforge)&lt;br /&gt;
* Fixed missing action icons&lt;br /&gt;
* Fixed bug 3899 and removed some &#039;missing course object&#039; messages&lt;br /&gt;
* Fixed bug 3950: Ee-attempt button inconsistency for multi-attempt quizzes&lt;br /&gt;
* Fixed bug 3953: Quiz/report.php pagesize can be set to 0, credits to Jean-Michel&lt;br /&gt;
* Fixed potential data data corruption bug 3915&lt;br /&gt;
* Fixed bug 3884: Quiz correct highlights missing for 2 of 3 options.&lt;br /&gt;
* Fix for the Student review highlight doesn&#039;t seem to work bug&lt;br /&gt;
* Fixed bug 3804: Differences in question types between 1.5 and 1.6&lt;br /&gt;
* Fixed bug 3822: don&#039;t count previews as attempts&lt;br /&gt;
* Fixed bug 3807: Question numbering issue&lt;br /&gt;
* Fixes for the item analysis plug-in, assembled by Jean-Michel&lt;br /&gt;
* Now we reset the timeout counter to avoid timeouts&lt;br /&gt;
* Several improvements contributed by Jean-Michel Vedrine. You can now change the number of attempts per page displayed on screen, and download results to Excel/text file, including detailed grades&lt;br /&gt;
* Fixed export bug with non-English languages&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCORM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* We now support SCORM 1.3 (SCORM 2004)!&lt;br /&gt;
* Fixed a bug with next and prev SCO search&lt;br /&gt;
* Fixed bugs related to masteryscore&lt;br /&gt;
* Fixed a problem in AICC course tracking&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Now paging of older versions is showed and working properly, see bug 3750&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Mediaplugin filter now finds multi-line links in HTML code&lt;br /&gt;
* Censor filter: Added original word as title to the blacked-out version. The filter can obscure actual important words by mistake (eg Dickens) and there needs to be some way to recover the meaning&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5.2==&lt;br /&gt;
&lt;br /&gt;
16th July, 2005&lt;br /&gt;
&lt;br /&gt;
=== Various fixes ===&lt;br /&gt;
&lt;br /&gt;
*  Journal -&amp;gt; Assignment upgrade now works properly :-/&lt;br /&gt;
* Assignment submodules now upgrade as expected&lt;br /&gt;
* Various other bugs with new Assignments fixed&lt;br /&gt;
* Journal module is now disabled by default on new installations&lt;br /&gt;
* Login page is now 100% HTTPS if required&lt;br /&gt;
* Various small standard theme tweaks&lt;br /&gt;
* Fix for recent matching questions display bug in Quiz&lt;br /&gt;
* Language editor no longer creates empty files when not necessary (caused country list bug)&lt;br /&gt;
* Fixed some manifest parsing problems in SCORM module&lt;br /&gt;
* Multilang filter now deals with pack names that contain numbers&lt;br /&gt;
* Files are now force-downloaded (fixes IE problems and some security issues)&lt;br /&gt;
* Relinking debugging output is escaped&lt;br /&gt;
* Large MP3 player now displays ID3 tags properly again&lt;br /&gt;
* Some chat daemon improvements&lt;br /&gt;
&lt;br /&gt;
=== Some new things ===&lt;br /&gt;
&lt;br /&gt;
* Orangewhite theme optimised for use on PDA&lt;br /&gt;
* Forum user posts page can be called without userid&lt;br /&gt;
* Altavista BabelFish now allowed in as guest when Google is&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5.1==&lt;br /&gt;
&lt;br /&gt;
8th July, 2005&lt;br /&gt;
&lt;br /&gt;
===Various fixes===&lt;br /&gt;
&lt;br /&gt;
* Several potential security problems solved&lt;br /&gt;
* Allowobjectembed setting now works correctly&lt;br /&gt;
* Speed problem on IE, caused by tab hover fixed.&lt;br /&gt;
* Cut and paste in editor on Firefox has a more helpful warning message&lt;br /&gt;
* Fixed a session problem when logged on as admin during upgrade from very old Moodle version&lt;br /&gt;
* Fixed editing problem in Main menu of site&lt;br /&gt;
* Minor CSS display problems in a few areas were fixed&lt;br /&gt;
* Fixed the adding of a single discussion forum&lt;br /&gt;
* Fixed Lesson problems with calculating grades, and dates&lt;br /&gt;
* Fixed Lesson problems with entering a cluster after a page&lt;br /&gt;
* Censor filter was fixed to make it work better with old themes&lt;br /&gt;
&lt;br /&gt;
===Some new things===&lt;br /&gt;
&lt;br /&gt;
* New theme: Wood&lt;br /&gt;
* Metal theme updated for 1.5&lt;br /&gt;
* Many language updates for most languages, including a new language: Khmer&lt;br /&gt;
* Block classes can now run custom code when an instance is created/deleted (this is useful for blocks that need to set up non-trivial data structures)&lt;br /&gt;
* Wizard for Calculated Questions in Quiz was rewritten&lt;br /&gt;
* Backup/Restore module selection is now improved and much easier&lt;br /&gt;
* Backup/Restore module has much improved relinking support, it&#039;s now faster and easier to implement in new modules&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5==&lt;br /&gt;
&lt;br /&gt;
5th June, 2005&lt;br /&gt;
&lt;br /&gt;
Here you can find the release notes of the current stable version of Moodle. &#039;&#039;&#039;If you experience any bugs in this release, please report them at [http://moodle.org/bugs moodle.org/bugs] so we can fix them in the next release.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Headline features ===&lt;br /&gt;
&lt;br /&gt;
* Web pages are compliant with XHTML Transitional 1.0&lt;br /&gt;
* Improved &#039;&#039;&#039;Accessibility&#039;&#039;&#039;, aiming for compliance with WAI (W3C), SENDA (UK) and Section 508 (US) criteria.&lt;br /&gt;
* Very strong &#039;&#039;&#039;new Themes system&#039;&#039;&#039;, allowing cascading themes, user themes, course themes, with very fine control of every page in Moodle via CSS.&lt;br /&gt;
* Integrated &#039;&#039;&#039;Messaging&#039;&#039;&#039; feature for direct communication between all users in the site, featuring realtime popup windows, notification, email copies, blocking, history, WYSIWYG editor, etc&lt;br /&gt;
* Forum read/unread tracking with highlights allows you to see new postings at a glance and to control how these are displayed (per forum, per user or per site).&lt;br /&gt;
* New &#039;&#039;&#039;Blocks&#039;&#039;&#039; system, allowing multiple copies of blocks and better block configuration&lt;br /&gt;
* Full support for &#039;&#039;&#039;Daylight Savings Time&#039;&#039;&#039; in every locality around the globe, so everyone always see the correct local time for all events.&lt;br /&gt;
* New &#039;&#039;&#039;extended gradebook&#039;&#039;&#039; allowing custom weighting of different activities, setting extra grades (or taking out others) and improved display and sorting options&lt;br /&gt;
* Users can be required to agree to a &#039;&#039;&#039;Site Policy&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Other major system-wide improvements ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Admin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* New &amp;quot;maintenance mode&amp;quot; allows the admin to temporarily disable a site (during upgrades, for example).&lt;br /&gt;
* Moodle can automatically download a new list of timezones from moodle.org or elsewhere and install it to the database (Olson files are supported too)&lt;br /&gt;
* New version of Moodle MySQL Admin module (available separately)&lt;br /&gt;
* New calendar options page provides user interface to configure the behavior of the calendar&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* New Shibboleth Support&lt;br /&gt;
* New CAS Support&lt;br /&gt;
* New PAM Support&lt;br /&gt;
* Improved LDAP integration, so that LDAP can now control course creation, group assignments. Increased performance and scalability performing user synchronisation.&lt;br /&gt;
* Certain user fields can be locked by the admin when using external authentication&lt;br /&gt;
* Improved session handling now detects &amp;quot;crossover&amp;quot; sessions that we have found in some buggy PHP installations and prevents them&lt;br /&gt;
* Sessions can now be stored in the database (good for clustered installations!)&lt;br /&gt;
* Users can be forced to change their password&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Standardised file browsing in all areas&lt;br /&gt;
* Improved uploading, with support for automated Virus scanning of new documents using ClamAV.&lt;br /&gt;
* Slasharguments now work also on IIS (upgrade to PHP 4.3.11 needed for ISAPI)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Standardised filter library makes it trivial to write new filters that require searching and highlighting of text.&lt;br /&gt;
* Huge efficiency improvements for complex filters like the Glossary filter&lt;br /&gt;
* New Tidy filter uses the W3C Tidy program to (optionally) clean all user-entered texts throughout the site and convert it to valid XHTML code&lt;br /&gt;
* Improved censorship filter, now &amp;quot;blacks out&amp;quot; words using styles and uses a word list from the language packs.&lt;br /&gt;
* Improved Flash MP3 player, now shows progress bar while downloading and playing&lt;br /&gt;
* Improved Multi-language filter is faster, more forgiving of syntax errors, and uses new editor-friendly syntax: &amp;lt;span lang=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* Auto-linking filters (glossary, activities) can work to link all the occurrences (old behaviour), once for each text block or only once for the whole page ($CFG-&amp;gt;filtermatchonepertext, $CFG-&amp;gt;filtermatchoneperpage).&lt;br /&gt;
* More text can now be filtered in Moodle, including activity names, headings and other such small texts. This makes it possible to design completely multi-lingual sites in Moodle that fully appears in the user&#039;s chosen language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Modules can provide standard styles&lt;br /&gt;
* Themes can override required styles of other themes&lt;br /&gt;
* Users and courses can choose their own themes if the admin allows it&lt;br /&gt;
* Implementation of tabs interface on many pages&lt;br /&gt;
* Modules, Blocks and Languages can define their own standard styles&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTML Editor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The toolbuttons offered in the editor toolbar are now configurable by the admin&lt;br /&gt;
* Search and Replace text within the editor text area (with optional use of regular expressions)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Course management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Transparent Blackboard 5.5 course importing (partial 6.0 support)&lt;br /&gt;
* The new meta-courses allow to get users automatically enroled in a general course (the metacourse) when enroled in any of the metacourse-linked courses&lt;br /&gt;
* New tool to copy content from a course to other.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New blocks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML block: allowing to place arbitrary content (text, images links) in any course mainpage&lt;br /&gt;
* Remote RSS feed: allows to display external news channels inside a Moodle course&lt;br /&gt;
* Glossary Selection: to choose and display content from a Moodle glossary in course mainpage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calendar&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Major speed improvements for sites with a large number of courses using groups&lt;br /&gt;
* Repeating events can now be modified or deleted all at the same time or separately as before&lt;br /&gt;
* New &amp;quot;remember filter settings&amp;quot; preference that allows calendar filters to remember their status between logins&lt;br /&gt;
&lt;br /&gt;
=== Activity module improvements ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Assignment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Completely refactored into a new class-based design, allowing new plugin-assignment types&lt;br /&gt;
* New Online Text assignment type that doesn&#039;t require files and allows inline comments when grading - this new type effectively replaces the old Journal module&lt;br /&gt;
* Vastly improved grading interface for handling large classes&lt;br /&gt;
* New configuration options to disable late submission and to e-mail alerts to teachers when students submit new work&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Streamlined interface looks smoother, works faster, even without using the optional server daemon&lt;br /&gt;
* Blocks can now be added to chat pages (e.g. for additional information)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Choice&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Rewritten to allow any number of choices&lt;br /&gt;
* The number of users per choice can be limited, which allows it to be used as tool for &amp;quot;signing up&amp;quot; to an array of options.&lt;br /&gt;
* You can now download the results of the choice to XLS or a TXT file&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forum&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Powerful new Google-like forum searching tools&lt;br /&gt;
* Forum read/unread tracking - unread messages are highlighted on the course page, forum page, discussion listing and the discussion view&lt;br /&gt;
* The tracking system may be disabled by teachers/users&lt;br /&gt;
* User profiles show all posts by a user, as well as all discussions&lt;br /&gt;
* When admins edit user messages, a notice is attached&lt;br /&gt;
* Discussion listing shows the last user who posted to each discussion and when it was, with a direct link to that post&lt;br /&gt;
* In group-enabled forums the discussion listing shows the group the thread applies to, with a link to the group description page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Glossary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* New setting to enable/disable the print view of each glossary.&lt;br /&gt;
* New search system looks for words everywhere (instead of doing exact phrase match).&lt;br /&gt;
* More information is sent to logs to be able to track activity better.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Journal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The Journal module has not changed since 1.4, and is now deprecated. The upgrade procedure will convert all your Journal activities into Online Assignments, and hide all the old Journal activities. If you don&#039;t want this to happen, then define this in your config.php: $CFG-&amp;gt;noconvertjournals = true;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lesson&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Now supports timed Lessons&lt;br /&gt;
* Can create practice Lessons (grades are not stored)&lt;br /&gt;
* Option for students to view points earned while taking the Lesson&lt;br /&gt;
* Allow students to review their answers before submitting the Lesson&lt;br /&gt;
* New Slide Show Mode (only branch tables are displayed as slides)&lt;br /&gt;
* New Left Menu (for enabled branch tables only)&lt;br /&gt;
* Lessons can now be Password Protected&lt;br /&gt;
* A Tree View can be used for the Lesson creation screen&lt;br /&gt;
* Students can post their high scores&lt;br /&gt;
* New option to save a Lesson&#039;s settings as defaults for new lessons in the same course&lt;br /&gt;
* Can delete a student&#039;s attempts&lt;br /&gt;
* New page Jumps:&lt;br /&gt;
** Previous Page&lt;br /&gt;
** Unseen question within a branch&lt;br /&gt;
** Random question within a branch&lt;br /&gt;
** Unseen question within a cluster&lt;br /&gt;
* Added functionality to view Lesson statistics&lt;br /&gt;
* New question type: Essay. Teachers can view each essay and write comments, assign a grade, and then email it all to the student&lt;br /&gt;
* New question creation interface&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quiz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Can handle adaptive questions, i.e., questions that allow the student to interact with them repeatedly within the same quiz attempt and that can change in response to student answers.&lt;br /&gt;
* Student can be allowed to try a question again immediately within the same quiz attempt until they get the answer right.&lt;br /&gt;
* There is a penalty mechanism that deducts a specified fraction of the mark for each wrong attempt at a question.&lt;br /&gt;
* Allows questions rendered and scored externally (e.g., by mathematical assessment engines) to be integrated seamlessly into Moodle quizzes via the RQP web services protocol.&lt;br /&gt;
* Is prepared for the handling of IMS QTI questions once web services for these become available.&lt;br /&gt;
* New tabbed teacher interface for previewing, editing, and reviewing quizzes.&lt;br /&gt;
* New &amp;quot;improved security&amp;quot; mode shows quiz in a separate full-screen window, with many browser features disabled&lt;br /&gt;
* Quizzes can be presented to students in several pages. The number of questions per page is selectable by the teacher.&lt;br /&gt;
* Blocks can now be added to quiz pages (to show results table, or additional information etc)&lt;br /&gt;
* Better and cleaner interface for question selection and management in the database. Selected questions can be added to quiz, moved to other categories or deleted en mass.&lt;br /&gt;
* Random questions are now added to the quiz question list with a dedicated button, leaving a cleaner interface at questions database without phantom placeholders&lt;br /&gt;
* Final grade can be a fractional number, with teacher-defined decimal figures&lt;br /&gt;
* Improved results page with user-selectable display of columns, cleaner sorting and new mark display options&lt;br /&gt;
* Questions can be edited with one click from the improved quiz preview and question preview screens.&lt;br /&gt;
* Questions can be copied with one click, to allow question variations to be created with ease.&lt;br /&gt;
* Revamped question categories structures and editing interface.&lt;br /&gt;
* Categories now can contain nested subcategories and can be re-ordered.&lt;br /&gt;
* It is possible to select whether questions from categories, and or their subcategories are displayed on the question edit page.&lt;br /&gt;
* It is now possible to select whether to add random questions from a parent category alone, or from a parent category and its sub-categories.&lt;br /&gt;
* Quiz creators are prevented from changing the question set of quizes that have had student responses.&lt;br /&gt;
* Recognition, and rejection, of overlapping/redundant questions has been improved.&lt;br /&gt;
* The display of questions in longer quiz categories on the quiz editing page is now paginated.&lt;br /&gt;
* New export types - IMS QTI (2.0) and xhtml. Improvements &amp;amp; fixes to others.&lt;br /&gt;
* New import type - Hot Potato. Improvements &amp;amp; fixes to others.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scorm&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The module is now fully conformant with the SCORM 1.2 standard.&lt;br /&gt;
* User result data storage and reporting was improved.&lt;br /&gt;
* AICC packages can now be imported.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Survey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Graph formatting has been improved (labels are more readable)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Changes to wiki pages are now monitored and displayed in Recent Activity block&lt;br /&gt;
* Several under the hood improvements to backup/restore and other routines that enhance the reliability of wikis&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
*[[Old releases|1.4.5 release notes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Core]]&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
&lt;br /&gt;
[[pt:Versões do Moodle]]&lt;br /&gt;
[[es:Notas de versiones]]&lt;br /&gt;
[[fr:Notes de mise à jour]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Latest_release_notes&amp;diff=16906</id>
		<title>Latest release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Latest_release_notes&amp;diff=16906"/>
		<updated>2006-10-10T09:39:37Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Moodle 1.6.3 */  Changed subheadings to make it clear to non-techies that the bugs are fixed ;)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{About Moodle}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
&lt;br /&gt;
Under final test phase, release expected soon. Moodle 1.7 Beta is now available from CVS or the [http://download.moodle.org Moodle download page].  This version is not recommended for production sites yet.&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10120&amp;amp;styleName=Html&amp;amp;projectId=10011&amp;amp;Create=Create This page shows details about issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Roles]]&lt;br /&gt;
:: Permissions based on fine-grained capabilities allow all kinds of roles to be created and assigned in all contexts around Moodle.  This creates a great deal more flexibility in the permissions that you can grant to people.&lt;br /&gt;
* [[XML database schema]]&lt;br /&gt;
:: added support for MS-SQL and Oracle with more databases to come.  Developers now have just one XML file to edit when changing the database structure, and there is even a very funky editor for this file built-in to Moodle&lt;br /&gt;
* New Admin interface&lt;br /&gt;
:: Completely new admin interface, with accessible design and cool features to make access to settings fast and easy.&lt;br /&gt;
* AJAX Course editing&lt;br /&gt;
:: The Topics and Weekly course formats now feature AJAX editing which means you can drag drop blocks, activities and sections (weeks/topics) and it all happens instantly.  No more page reloading!&lt;br /&gt;
* [[Unit tests|Unit testing framework]]&lt;br /&gt;
:: Making it easier for developers to write test code, which should ultimately lead to a more reliable Moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other improvements===&lt;br /&gt;
&lt;br /&gt;
* Improvements to the [[Database module]]&lt;br /&gt;
**Template/Field settings can now be saved as Presets and shared across a site.&lt;br /&gt;
**Presets are just zip files, and can also be shared between sites.&lt;br /&gt;
**Moodle 1.7 comes with one sample preset (an Image Gallery) with more to come.&lt;br /&gt;
&lt;br /&gt;
* Improvements to the [[Lesson module]]&lt;br /&gt;
**Now has a more unified view of lesson screens.&lt;br /&gt;
**Teacher editing:&lt;br /&gt;
***Collapsed view has a nicer format, displays more information regarding each page and allows the creation of new pages.&lt;br /&gt;
***Editing is now speedier by replacing 3 second redirect delays with a notification system.&lt;br /&gt;
**New feature: display default feedback.&lt;br /&gt;
***Default is &#039;&#039;&#039;On&#039;&#039;&#039; so previous lessons behave as before.&lt;br /&gt;
***Description: if no &#039;&#039;response&#039;&#039; is entered for a question answer and this setting is turned &#039;&#039;&#039;Off&#039;&#039;&#039;, then the user skips the feedback page.&lt;br /&gt;
**Graceful degrade of JavaScript.&lt;br /&gt;
**Several bug fixes.&lt;br /&gt;
&lt;br /&gt;
* Improvements to the [[Quiz module]]&lt;br /&gt;
:* The teacher can configure comments that are displayed to the student at the end of their attempt, with the comment displayed depending on the student&#039;s score.&lt;br /&gt;
&lt;br /&gt;
* Improvements to some core question types&lt;br /&gt;
:* All question types can now have some general feedback. This is displayed to all students after they have finished the question (depending on the quiz settings) and does not depend on what response the student gave. Use this to tell the student what the question was about, or link them to more information about the topic it covers.&lt;br /&gt;
:* [[Matching question type|Matching]] questions can have extra wrong answers, and work when two questions have the same answer.&lt;br /&gt;
:* [[Multiple Choice question type|Multiple Choice]] questions can have feedback for the whole question, as well as specific answers. This is particularly useful for multiple-response questions.&lt;br /&gt;
:* [[Numerical question type|Numerical]] questions can have different answers with different precisions and scores. (Previously this was only supported via GIFT import. Now you can edit questions like this.)&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6.3==&lt;br /&gt;
10th October, 2006&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10140&amp;amp;styleName=Text&amp;amp;projectId=10011 Full details of these issues can be found in the tracker]&lt;br /&gt;
&lt;br /&gt;
===Security Bugfix===&lt;br /&gt;
* A vulnerability was discovered that could allow SQL injections if a parameter was improperly used.  Full details of this particular issue are on the [http://security.moodle.org/ Moodle Security site].  All registered Moodle admins were notified by direct email on Saturday September 30th.&lt;br /&gt;
&lt;br /&gt;
===General Bugs Fixed===&lt;br /&gt;
* [MDL-3048] - Release note should note not to use some PHP versions&lt;br /&gt;
* [MDL-3805] - mod.html in NEWMODULE.zip is not XHTML1.0 Transitional compliant&lt;br /&gt;
* [MDL-5378] - shorten_text doesn&#039;t work for oriental languages&lt;br /&gt;
* [MDL-5601] - cloze question restore error problem&lt;br /&gt;
* [MDL-5884] - Turn Student View On&lt;br /&gt;
* [MDL-5893] - Blackboard export/backup course does not restore to Moodle correctly&lt;br /&gt;
* [MDL-6084] - Restore to new course failure notice if  logged in as course creator&lt;br /&gt;
* [MDL-6128] - 1.6, special chars and messaging system.&lt;br /&gt;
* [MDL-6193] - problem with login/index.php file&lt;br /&gt;
* [MDL-6205] - slashes not stripped when re-editing profile&lt;br /&gt;
* [MDL-6224] - Syntax error creating tables on install&lt;br /&gt;
* [MDL-6247] - Error checking for missing themes&lt;br /&gt;
* [MDL-6271] - breadcrumb problem&lt;br /&gt;
* [MDL-6272] - DB Enrolment not recording enrolment end date&lt;br /&gt;
* [MDL-6334] - Unnecessary group menu in Feedback popup window&lt;br /&gt;
* [MDL-6336] - After utf8-migration unserializing of old essay fails&lt;br /&gt;
* [MDL-6341] - &amp;quot;Student view&amp;quot; locks out designers/administrators from courses not available to students&lt;br /&gt;
* [MDL-6342] - cannot move forum post to other forum when the subject includes an apostrophe&lt;br /&gt;
* [MDL-6363] - typo in mod/forum/restorelib.php prevents grouped discussions from being accessible to group after a restore.&lt;br /&gt;
* [MDL-6375] - Uploaded assignments are not available from the student submission page once graded&lt;br /&gt;
* [MDL-6480] - Import of multichoice questions in Moodle XML format doesn&#039;t use shuffle option. Fix included&lt;br /&gt;
* [MDL-6517] - Adding or editing post produces &amp;quot;ERROR: invalid input syntax for integer: &amp;quot;Object id #XXX&amp;quot;&lt;br /&gt;
* [MDL-6518] - How to make new themes link no longer required&lt;br /&gt;
* [MDL-6521] - Single discussion forums can be splitted and it hasn&#039;t too much sense....&lt;br /&gt;
* [MDL-6537] - past students receive email from forum&lt;br /&gt;
* [MDL-6538] - Bug in hotpot upgrade script 1.6.1 -&amp;gt; 1.6.2 with MetaColumns() method&lt;br /&gt;
* [MDL-6615] - Highlighting search terms in forum search text posts fails&lt;br /&gt;
* [MDL-6632] - scorm_grade_user function in locallib.php file has errors&lt;br /&gt;
* [MDL-6649] - HTML Editor in Quiz Essay Question unreliable&lt;br /&gt;
* [MDL-6686] - Streamed Chat Locks Send Message Field&lt;br /&gt;
* [MDL-6750] - change_password.php produces JS error.&lt;br /&gt;
* [MDL-6754] - moodle.php in de_utf8 langpack has wrong locale&lt;br /&gt;
* [MDL-6757] - Insert a Chinese charachter string to label resource result error.&lt;br /&gt;
* [MDL-6770] - Student cannot see handed-in assignment&lt;br /&gt;
* [MDL-6791] - Streamed Chat JS bug Prevents Use&lt;br /&gt;
* [MDL-6824] - redundant style declaration in theme&lt;br /&gt;
* [MDL-6837] - Make a language file entry for the wording of popup blocker checker&lt;br /&gt;
* [MDL-6841] - Student View button fails when course is hidden to students&lt;br /&gt;
* [MDL-6842] - Resource frameset error in IE6&lt;br /&gt;
* [MDL-6866] - A required parameter (backup_unique_code) was missing&amp;quot; error&lt;br /&gt;
* [MDL-6876] - Grades computed incorrectly if assignment name appears more than twice in a course&lt;br /&gt;
&lt;br /&gt;
===Improvement===&lt;br /&gt;
* [MDL-6280] - Backup files should not be included in new backups&lt;br /&gt;
* [MDL-6572] - Allow students to access their uploaded documents after grading.&lt;br /&gt;
* [MDL-6662] - why footer with margin-top: 100px&lt;br /&gt;
* [MDL-6878] - Scalable Vector Graphics (SVG) files in Moodle are not correctly displayed in many Browsers&lt;br /&gt;
&lt;br /&gt;
===New Feature===&lt;br /&gt;
* [MDL-5653] - add blacklisted level into environment XML&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6.2==&lt;br /&gt;
12th September, 2006&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
* Fixed handling of uploaded files in Database module&lt;br /&gt;
* Module instance id is now properly validated when creating course module object; developers should use get_coursemodule_from_id() to get valid $cm&lt;br /&gt;
* Default error reporting level was lowered to 5, E_WARNINGs are no longer displayed on production sites with debug off.&lt;br /&gt;
* Multiple problems leading to information leakage fixed in help.php file&lt;br /&gt;
* Fixed information leakage from scheduled backups&lt;br /&gt;
* Added basic detection of dataroot accessible from Internet, web installer now better suggests dataroot location outside of web file area&lt;br /&gt;
* Swf is now disabled by default in Mediaplugin&lt;br /&gt;
* forgot_password.php does not allow remote email or username enumeration by default, the old behavior can be enabled by setting protectusernames to No in site configuration&lt;br /&gt;
* Undisclosed SQL injections fixed by automatic data conversions in adodb layer&lt;br /&gt;
* Theoretical XSS problems fixed in doc/index.php and files/index.php scripts&lt;br /&gt;
* Access to tex and algebra files is blocked when filters are disabled&lt;br /&gt;
* Request for redirection in jumpto.php protected with sesskey&lt;br /&gt;
&lt;br /&gt;
===Bug Fixes===&lt;br /&gt;
&lt;br /&gt;
* Fixed error when upgrading forum read tracking&lt;br /&gt;
* Locales from language packs should finally work - please check your configuration variables and empty the locale field&lt;br /&gt;
* Added missing link for course request&lt;br /&gt;
* Fixed several glossary problems with non-ascii characters&lt;br /&gt;
* Fixed bug where you could not regrade a quiz question where the teacher had added a comment with a &#039; character.&lt;br /&gt;
* Quiz import of BlackBoard V6 files now much more reliable&lt;br /&gt;
* Fixed scheduled backups - they were broken in 1.6 and 1.6.1&lt;br /&gt;
* Fixed missing guest icons from course listing&lt;br /&gt;
* Database sessions respect sessiontimeout setting&lt;br /&gt;
* Fixed redirect problems during upgrade resulting in &amp;quot;Table xxx already exists&amp;quot;&lt;br /&gt;
* Lesson module: the &amp;quot;(Continue)&amp;quot; no longer displays for 3 seconds after branch tables.&lt;br /&gt;
* Lesson module: now properly checks import formats for support.&lt;br /&gt;
* Lesson module: feedback is set properly during the import process.&lt;br /&gt;
* and many other smaller fixes&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
* Authorize.net Payment Gateway: Autoconfigures credit card types if the merchant does not accept some types of credit cards&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
* Broken images in published question categories&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6.1==&lt;br /&gt;
20th July, 2006&lt;br /&gt;
&lt;br /&gt;
===Bug Fixes===&lt;br /&gt;
&lt;br /&gt;
* Fixed regression in Turkish locale handling&lt;br /&gt;
* Authorize and Paypal enrolment plugin cleanup&lt;br /&gt;
* Fixed serious problem with failing Database restore&lt;br /&gt;
* Fixed restore of HotPot module containing attempts&lt;br /&gt;
* Minor Database module fixes&lt;br /&gt;
* National characters in graphs now work for most languages out of the box&lt;br /&gt;
* Reviewed and fixed all *nix locale codes in language packs&lt;br /&gt;
* Fixed problems when using Resources with Blocks on the frontpage&lt;br /&gt;
* Fixed missing events on the first day of month in calendar&lt;br /&gt;
* Fixed several problems in Lesson - scores, branch tables, HTML editor issues&lt;br /&gt;
* Fixed broken intermodule relinking of absolute paths - please do not use course backups from original 1.6&lt;br /&gt;
* PDF byteserving problems caused by incorrect partial content length solved&lt;br /&gt;
* Fixed several regressions in handling of multiple groups&lt;br /&gt;
* Fixed alphabet problems in Glossary&lt;br /&gt;
* Chameleon theme fixes and enhancements&lt;br /&gt;
* Fixed all hard coded admin paths&lt;br /&gt;
* Fixed moving of course sections&lt;br /&gt;
* Fixed grading of Essays in Quiz&lt;br /&gt;
* Several Quiz regrading problems solved&lt;br /&gt;
* Questions are now exported into backupdata directory&lt;br /&gt;
* Added workaround for problems when editting two quizes in one browser&lt;br /&gt;
* Lots of other Quiz related bugs fixed - thanks Tim!&lt;br /&gt;
&lt;br /&gt;
* Fixed IE unsecure items warning on sites with https login&lt;br /&gt;
* Improved cookie test on the login page&lt;br /&gt;
* Potential security issue with unzipping maliciously-crafted zip files fixed&lt;br /&gt;
* Satinized input parameters in help.php&lt;br /&gt;
* Calendar view.php now respects forcelogin setting&lt;br /&gt;
&lt;br /&gt;
* And lots of other minor fixes worth upgrading&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
* Enhanced frontpage settings - frontpage can now be different for logged in users, changed category list display&lt;br /&gt;
* Improved administration page layout&lt;br /&gt;
* Possibility to change graph font for all locales - moodledata/lang/default.ttf takes precedence over lib/default.ttf&lt;br /&gt;
* Local language packs may also contain default.ttf&lt;br /&gt;
* Backported improved lang.php from HEAD&lt;br /&gt;
* New config.php option $CFG-&amp;gt;allowvisiblecoursesinhiddencategories&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
&lt;br /&gt;
* Broken images in published question categories&lt;br /&gt;
* Small number of sites reports problems with Quiz upgrade - please always do a full database backup before any upgrade!&lt;br /&gt;
&lt;br /&gt;
===Related===&lt;br /&gt;
&lt;br /&gt;
* Third party modules should be already updated for 1.6.x - you must install new versions before UTF-8 migration!&lt;br /&gt;
* New integration of phpMyAdmin available - fixes upstream security problems and compatiblility with PHP 5&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.6==&lt;br /&gt;
19th June, 2006&lt;br /&gt;
&lt;br /&gt;
NOTE: Moodle 1.6 requires PHP 4.3.0 (or PHP 5.1.0) and MySQL 4.1.16 (4.1.12 if you use latin languages only). Here is more info on [[Upgrading to Moodle 1.6]].&lt;br /&gt;
&lt;br /&gt;
===New features===&lt;br /&gt;
&lt;br /&gt;
* [[UTF-8 migration|Unicode]]&lt;br /&gt;
::Moodle is now 100% Unicode, which means any language can be mixed together and an end to a number of problems that different character sets caused us.&lt;br /&gt;
* [[MoodleDocs development|Documentation]]&lt;br /&gt;
::A new one-stop wiki site for ALL Moodle documentation, including links from Moodle itself&lt;br /&gt;
* [[Database module]]&lt;br /&gt;
::A new activity module that allows collaborative collection of structured data, useful for many things!&lt;br /&gt;
* [[LAMS]]&lt;br /&gt;
::Integrated via a course format and an activity module&lt;br /&gt;
* [[Blogs]]&lt;br /&gt;
::Allows reflection on an ongoing basis.  Entries are marked and can be viewed by user, course, group, site etc.  Contains first new support for [[Tags]].  &lt;br /&gt;
* [[Reports]]&lt;br /&gt;
::All reports are now centralised under Course reports and Admin reports.  New reports can be written as plugins and dropped in very easily.  One big new report is the new course-based statistics system from Catalyst.&lt;br /&gt;
* [[Questions]]&lt;br /&gt;
::A centralized bank of questions with the potential to be (re-)used in a variety of modules.&lt;br /&gt;
* [[My Moodle]]&lt;br /&gt;
::A dashboard interface that allows an overview for each user of all their courses etc.&lt;br /&gt;
* [[Hive integration]]&lt;br /&gt;
::This initial integration with Hive allows teachers to upload, browse, search and select [[Resources|resources]] within the external repository.&lt;br /&gt;
* [[Multiple groups]]&lt;br /&gt;
::Users can be part of multiple groups within a course&lt;br /&gt;
* [[IMS content package]] resource type&lt;br /&gt;
::Supports the loading of any content package as a resource, with an optional repository for sharing packages between courses.&lt;br /&gt;
* [[Course backup|Granularised backup]]&lt;br /&gt;
* [[Chameleon|Chameleon theme]]&lt;br /&gt;
:: An interactive Moodle theme&lt;br /&gt;
* [[Enrolment plugins|Multi enrolment]]&lt;br /&gt;
::Moodle&#039;s enrolment plugins can be used simultaneously on the same site. Also new [[IMS Enterprise]] enrolment plugin.&lt;br /&gt;
*[[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
::New feature called &#039;Order Review&#039;. Admins and teachers may accept or deny payments before processing the credit card and they can also refund payments after processing the credit card in &#039;Payment Management&#039; page. Students may view their order details. Address Verification System (AVS) and Scheduled-Capture support added. For &#039;Manual-Capture&#039; admins are notified 5 days prior to pending orders expiring.&lt;br /&gt;
===See also===&lt;br /&gt;
*[[:Category:Moodle 1.6|Moodle 1.6 features]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5.4==&lt;br /&gt;
21st May, 2006&lt;br /&gt;
&lt;br /&gt;
(Because this release contains important security fixes, we highly advise that sites using any previous version of Moodle upgrade to this version as soon as possible.)&lt;br /&gt;
&lt;br /&gt;
===Various fixes===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Improved kses cleaning of html SC#204&lt;br /&gt;
* Prevent unwanted password change here SC#225&lt;br /&gt;
* Fix for Secunia Advisory SA18267, plus some logging of suspicious activity.&lt;br /&gt;
* AdoDB tests cleanup after Secunia Advisory SA18267&lt;br /&gt;
* Fixed $cfg-&amp;gt;forceloginforprofiles logic SC#207. Backported from HEAD&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
* Various updates/improvements in the the Environmental Check allowing to check if your server suits future Moodle requirements.&lt;br /&gt;
* Bug 4619. Fixed one DB query not following coding rules.&lt;br /&gt;
* Bug 4607. Avoid duplication of course shortname on restore.&lt;br /&gt;
* Fixed one problem with auto-link filters and frames.&lt;br /&gt;
* Important fixes to muti-byte text handling routines.&lt;br /&gt;
* Small changes to the installer.&lt;br /&gt;
* Bug 3853. Some important improvements in the restore of log actions.&lt;br /&gt;
* Bug 4328. Prevent some warnings in the blocks system.&lt;br /&gt;
* Bug 4341. Extending multi-lang support to the &amp;quot;jumpto&amp;quot; menu (showed in collapsed mode).&lt;br /&gt;
* Added rss_get_url() to 1.5 to help support data module&lt;br /&gt;
* Added support for having a linked tab even if it is currently selected.&lt;br /&gt;
* RSS Client block: Removed secondary cache. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4625 Bug 4625]&lt;br /&gt;
* Email confirmation now includes lastname. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4869 Bug 4869]&lt;br /&gt;
* Database connection errors can now be reported to an admin. See $CFG-&amp;gt;emailconnectionerrors in config-dist.php.&lt;br /&gt;
* Metacourses: Fixed a problem with self enrolment in child courses.&lt;br /&gt;
* Several MySQL v5 compatibility fixes&lt;br /&gt;
* Avoid listing more than 200 courses in my courses block, and course listing pages.&lt;br /&gt;
* SCORM: Fixed lesson status skin support&lt;br /&gt;
* Skype: Added webstatus icon&lt;br /&gt;
* File uploads: Only create a directory if needed, [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4659 bug 4659]&lt;br /&gt;
* Admin Block. Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4627 bug 4627]: Hide &amp;quot;change password&amp;quot; link in admin block if the user is restricted. Credits for report &amp;amp; patch go to Joseph Rezeau.&lt;br /&gt;
* HTMLArea: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4562 bug 4562]. Fix posted by sgarcia.&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4626 bug 4626] - weblib.php: $course object conversion error in &amp;amp;quot;print_footer &amp;amp;quot; function&lt;br /&gt;
* Messaging: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4621 bug 4621] errors in MySQL v3.23 with message backup.&lt;br /&gt;
* Introducing Admin-&amp;gt;Environment to help users assess installed software prior to the 1.6 upgrade&lt;br /&gt;
* Course Restore: Now we avoid duplicates. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4607 Bug 4607]&lt;br /&gt;
* Assignment: Guests can no longer submit an online assignment. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4604 Bug 4604]&lt;br /&gt;
* File Downloads: Fixed problems for slow (dial up) clients, and avoid hogging memory when PHP&#039;s output compression is on.&lt;br /&gt;
* Wiki: Supports initial load of contents from course file area. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=3830 Bug 3830]&lt;br /&gt;
* Lesson: Now when a teacher edits a page with the &amp;quot;Edit page contents&amp;quot; button and then saves or cancels, s/he gets redirected back to the lesson navigation. This will help to streamline the editing.&lt;br /&gt;
* Activity Modules Block - [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4586 bug 4586]&lt;br /&gt;
* Metacourse: Fixes unenrolling [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4541 bug 4541]&lt;br /&gt;
* File uploads: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4533 bug 4533] - Max upload size at course level ignored.&lt;br /&gt;
* Enrol/Authorize.net: Added Address Verification System (AVS) support.&lt;br /&gt;
* Online Users Block: Limit the number of students displayed.&lt;br /&gt;
* Unicode Support: Typo3 Library updated to newest version.&lt;br /&gt;
* Course Categories: Fixed courses and subcategories in an invisible category being visible. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4074 Bug 4074]&lt;br /&gt;
* Wiki: Fixed a fatal error updating wiki pages.&lt;br /&gt;
* Added autocomplete=off in form tag to avoid browser autocomplete [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4423 bug:4423]&lt;br /&gt;
* Password change: Primary administrator password can only be changed by the administraror him/herself.&lt;br /&gt;
* Enrol/Authorize.net: Some changes:- allow_internal is not need anymore. Shows two option if enrolment key of course is set.- login_https is required for payment pages. My credit card is important. If you haven&#039;t a certificate forgot this module. (security)- Expiry date of credit card is more friendly :).&lt;br /&gt;
* User profile: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4400 bug 4400]&lt;br /&gt;
* Removed old THEME variable.&lt;br /&gt;
* Added some more CSS hooks for the correctness feedback&lt;br /&gt;
* Fix [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4366 bug 4366]&lt;br /&gt;
* Makes autologinguest possible at site level&lt;br /&gt;
* Micro-increment version number to 2.0.10&lt;br /&gt;
* Corrected adjustment of relative URLs in &amp;lt;EMBED&amp;gt; tag&lt;br /&gt;
* Merging from HEAD:Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4371 bug 4371] (also SC#199):Now manually created users with admin privileges and force change passwordcannot change their username with impunity.&lt;br /&gt;
* Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4067 bug 4067] - allow user to update assignment when not yet marked&lt;br /&gt;
* Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4314 bug 4314]&lt;br /&gt;
* Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4206 bug 4206]&lt;br /&gt;
* Delayed merge from HEAD - If tablelib is going to do fullname voodoo, allow default sort field to be firstname/lastname&lt;br /&gt;
* Log actions must be strored to DB without &amp;amp;amp;print_log() takes care of it! [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=3853 Bug 3853]&lt;br /&gt;
* Fixes [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4354 bug 4354]&lt;br /&gt;
* shorten_text() AFTER format properly. See [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4355 bug  4355]&lt;br /&gt;
* Prevent a warning when params is empty. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4328 Bug 4328]&lt;br /&gt;
* Now the section &amp;quot;jumpto&amp;quot; menu (showed in collapse mode), supportsthe multilang filter. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4341 Bug 4341]&lt;br /&gt;
* Print performance info if exists and $CFG-&amp;gt;perfdebug is enabled.&lt;br /&gt;
* Fix for [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4351 bug 4351]. New parasmeter for get_record_sql to disableauto-added LIMIT (in case we are using our own)&lt;br /&gt;
* Solved bug found when trying to backup all users! http://moodle.org/mod/forum/discuss.php?d=27105&lt;br /&gt;
* Fixing [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4345 bug 4345]: merging problem when fixing [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4303 bug 4303]&lt;br /&gt;
* Mimic changes from &amp;quot;Ought to mention the improved assignment grading!&amp;quot;Merged from HEAD&lt;br /&gt;
* Ought to mention the improved assignment grading!&lt;br /&gt;
* Fixes [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4086 bug 4086] spelling mistake&lt;br /&gt;
* Commenting out gz_handler since it seem to cause problemsmore on http://moodle.org/mod/forum/discuss.php?d=34376&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Assignment&#039;&#039;&#039;&lt;br /&gt;
* Fixed bug in &amp;quot;Prevent late submissions&amp;quot;, thanks to Samuli, [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4780 bug 4780]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enrolment&#039;&#039;&#039;&lt;br /&gt;
* Enrolment: Better explanation of flat file enrolment format. Re-formatted the imporved flat file enorlment description&lt;br /&gt;
* Auth/LDAP: Better support for ActiveDirectory&lt;br /&gt;
* Enrol/Authorize.net: PostgreSQL support and some indexes for speed.&lt;br /&gt;
* Authorize.net: Address Verification System (AVS) support added.&lt;br /&gt;
* Authorize.net: $CGF-&amp;gt;login_https must be ON for payment pages.&lt;br /&gt;
* Authorize.net: Shows two forms if the enrolment key of the course is set (internal and authorize forms).&lt;br /&gt;
* Authorize.net: IIS https fix. It doesn&#039;t recognize empty($_SERVER[&#039;HTTPS&#039;]) but accepts HTTPS=off.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forum Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Bug 4355. Solved one visualisation problem in the page showing the list of forums.&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4360 bug 4360]&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4431 bug 4431], affecting site course, added function forum_user_can_view_post in lib.php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Glossary Module&#039;&#039;&#039;&lt;br /&gt;
* Bug 4543, 4713. Fixed some problems with entries and categories containing more than one word in their title.&lt;br /&gt;
* Bug 4858. Fixed one problem with formats, not being detected properly.&lt;br /&gt;
* Bug 4915. Entrylist format now displays the &amp;quot;Send Ratings&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hotpot Module&#039;&#039;&#039;&lt;br /&gt;
* Add support for HP5 quizzes (including JBC and old JQuiz)&lt;br /&gt;
* Removed weighting from questiontext in JCloze import&lt;br /&gt;
* Fixed import of JCloze into quiz module as a MULTIANSWER question&lt;br /&gt;
* Fixed bug in restoring attempts from backup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lesson Module&lt;br /&gt;
* Lesson: $navigation and $grade_value were undefined when lesson was added to site main page&lt;br /&gt;
* Lesson: Lesson Essay Question Can&#039;t be Graded when attempt not finished. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4174 Bug 4174]&lt;br /&gt;
* Lesson: Added cancel button. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4216 Bug 4216] - cancel button&lt;br /&gt;
* Lesson: Fixed [http://moodle.org/mod/forum/discuss.php?d=37537 problem with storing the answerid for numerical questions].&lt;br /&gt;
* Lesson: Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=1187 bug 1187]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quiz Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fixed bug 4250: Added missing percentages to the grade selector&lt;br /&gt;
* Fixed bug 4495: Don&#039;t apply lateness check when teacher previews&lt;br /&gt;
* Fixed bug 4544: Incorrect path to exported files in some language packs&lt;br /&gt;
* Fixed bug 4780: Bug in &amp;quot;Prevent late submissions&amp;quot; setting fixed&lt;br /&gt;
* Fixed bug 5070: Students can&#039;t see quizzes when they are closed&lt;br /&gt;
* Turned off regrading of quizzes that have the attemptonlast option set&lt;br /&gt;
* A number of other minor interface fixes&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4319 bug 4319]. Thanks to Jaroslav&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4217 bug 4217]&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4829 bug 4829]&lt;br /&gt;
* Now we avoid checking for lateness when teacher previews. [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4495 Bug 4495]&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4688 bug 4688]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=39548 Rounding errors could lead to &amp;quot;Partially correct&amp;quot; for correct answers]&lt;br /&gt;
* Added missing percentages to the grade selector, [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4250 bug 4250]&lt;br /&gt;
* Avoid error messages in case $quiz-&amp;gt;sumgrades is zero, [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4454 bug 4454]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=27730#181773 get_actual_response() method for cloze question type] contributed by Jean-Michel&lt;br /&gt;
* Better PostgreSQL support&lt;br /&gt;
* Now With Nicer Presentation of Questions&lt;br /&gt;
* Summary text shouldn&#039;t be cleaned as only entered by teacher.&lt;br /&gt;
* Fixed [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4345 bug 4345]. Report performance improvements caused regression with MySQLv3&lt;br /&gt;
* Now we turn off browser-based autocomplete. Fixes [http://moodle.org/bugs/bug.php?op=show&amp;amp;bugid=4423 bug 4423] - Short Answer Quiz Q&#039;s Saving Form Entries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resource Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Solved one problem on restore that was causing some links to become corrupted.&lt;br /&gt;
* Slightly changes to the delete_instance() function in resources to allow future improvements.&lt;br /&gt;
* Resource restore: Solved bug when [http://moodle.org/mod/forum/discuss.php?d=38801 decoding encoded links for resource]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wiki Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Solved one problem sending double-slashed info to DB.&lt;br /&gt;
* Bug 3830. Load of initial content from course file area is now allowed.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5.3==&lt;br /&gt;
&lt;br /&gt;
11th November, 2005&lt;br /&gt;
&lt;br /&gt;
(Because this release contains important security fixes, we highly advise that sites using any previous version of Moodle upgrade to this version as soon as possible.)&lt;br /&gt;
&lt;br /&gt;
===A few new things===&lt;br /&gt;
&lt;br /&gt;
* We now have SCORM 1.3 (SCORM 2004) support!&lt;br /&gt;
* Much improved Assignment grading interface, including &amp;quot;quick grading&amp;quot; options&lt;br /&gt;
* A new Single-Sign-On API is available&lt;br /&gt;
&lt;br /&gt;
===Various fixes===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Contains warnings when Moodle is used on an PHP configuration known to be insecure&lt;br /&gt;
* Contains fixes for some recently reported security problems (see [http://security.moodle.org/ security.moodle.org])&lt;br /&gt;
* Backups now runs a lot faster medium/large installs. Many issues fixed in this area&lt;br /&gt;
* Listing of directory sizes can be made much faster on Linux/Unix servers, thanks to a performance fix you can enable from Admin-&amp;gt;Variables: &amp;quot;path_to_du&amp;quot;&lt;br /&gt;
* We now log more meaningful IP addresses when the server or the clients are working behind a proxy&lt;br /&gt;
* Fixed some issues with PHP accelerators&lt;br /&gt;
* Upgrade scripts have been refined and work much better for PostgreSQL installations&lt;br /&gt;
* General PostgreSQL port code cleanup&lt;br /&gt;
* Upgrading to 1.5.3 will fix any legacy Journal to Online Assignment upgrade issues&lt;br /&gt;
* RSS libraries now support RSS 2.0 categories, see bug 3654&lt;br /&gt;
* Better accesibilty in file uploads, see bug 3662&lt;br /&gt;
* Better support for site-wide HTTPS, see bug 3848&lt;br /&gt;
* We now send away bots (like Googlebot) from that try mangled URLs, see bug 3958&lt;br /&gt;
* Better DST support for non-logged-in users&lt;br /&gt;
* Better DST support for repeat events in Calendar&lt;br /&gt;
* Small fixes to the lesson, choice and grade modules&lt;br /&gt;
* Minor CSS improvements to formal_white and orangewhite themes&lt;br /&gt;
* Better pagination in course listing and loglive pages&lt;br /&gt;
* Fixed an IE-only bug related to HTMLArea content where user-edited tables could float and hide part of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fixes to change password/forgotten password with external auth&lt;br /&gt;
* Data fetched from external DB or LDAP is now truncated correctly&lt;br /&gt;
* Fixed bug 4305 -- better login block behaviour when using secureforms&lt;br /&gt;
* Better support for utf-8 user data from external auth&lt;br /&gt;
* LDAP: General fixes covering sync_users script and logging of errors&lt;br /&gt;
* LDAP: Fixed bug 3141 - Can&#039;t update external data with LDAP authentication&lt;br /&gt;
* LDAP: Fixed bug 3992 - LDAP password including a quote does not work - credits go to Kita&lt;br /&gt;
* LDAP: Better support for ActiveDirectory.&lt;br /&gt;
* LDAP: Fixed bug #3594&lt;br /&gt;
* LDAP: Better handling of multi-source field mapping&lt;br /&gt;
* LDAP: Fix for using DN as idnumber - thanks fo Jeff Graham - http://moodle.org/mod/forum/discuss.php?d=28840&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Enrolment and metacourses&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Metacourses: Prevent normal users to gain access to meta courses via manual enrolment&lt;br /&gt;
* Metacourses: better support for MySQL v3.23.x&lt;br /&gt;
* DB: Enrolment lookups now work reliably with Moodle on MySQL and Postgres&lt;br /&gt;
* DB: Non-MySQL databases work again as external enrolment databases&lt;br /&gt;
* LDAP: Fixed a wrong call to add_teacher in LDAP plugin.&lt;br /&gt;
* LDAP: Servers being down or unavailable no longer prevent logins&lt;br /&gt;
* LDAP: Course auto-creation works again&lt;br /&gt;
* LDAP: Fixed several bugs reported by Jeff Graham and Barron Koralesky -- including bugs 3912 and 3974&lt;br /&gt;
* LDAP: We can now bind non-anonymously to LDAP&lt;br /&gt;
* Authorize.net: several fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Avoid linking to empty or unlinkable activity names&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forums&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Big and small optimizations to tracking of read/unread messages, specially for PostgreSQL&lt;br /&gt;
* Fixed some PostgreSQL bugs&lt;br /&gt;
* Some more actions are now supported by backup/restore when processing log records, see bug 3582&lt;br /&gt;
* Now message forum RSS feeds are including category data -- useful under some RSS agregators able to group messages, see bug 3654&lt;br /&gt;
* Fixed paging on forum search&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blocks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Several performance improvements&lt;br /&gt;
* Fixes to the upgrade process, including PostgreSQL syntax and lower memory usage&lt;br /&gt;
* Brought in several bugfixes from 1.6dev&lt;br /&gt;
* Fixed bug 3478: Cannot add RSS feed as course creator&lt;br /&gt;
* Fixed bug 3793: Prevent warning message when configuring a glossary_random block in a course which has no glossaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quiz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Some CSS style fixes&lt;br /&gt;
* Better compatibility with themes that contain forms in the headers&lt;br /&gt;
* Highlighting of correct answers can now be turned off&lt;br /&gt;
* Fixed bug 3986: Too many random questions. (mindforge)&lt;br /&gt;
* Fixed missing action icons&lt;br /&gt;
* Fixed bug 3899 and removed some &#039;missing course object&#039; messages&lt;br /&gt;
* Fixed bug 3950: Ee-attempt button inconsistency for multi-attempt quizzes&lt;br /&gt;
* Fixed bug 3953: Quiz/report.php pagesize can be set to 0, credits to Jean-Michel&lt;br /&gt;
* Fixed potential data data corruption bug 3915&lt;br /&gt;
* Fixed bug 3884: Quiz correct highlights missing for 2 of 3 options.&lt;br /&gt;
* Fix for the Student review highlight doesn&#039;t seem to work bug&lt;br /&gt;
* Fixed bug 3804: Differences in question types between 1.5 and 1.6&lt;br /&gt;
* Fixed bug 3822: don&#039;t count previews as attempts&lt;br /&gt;
* Fixed bug 3807: Question numbering issue&lt;br /&gt;
* Fixes for the item analysis plug-in, assembled by Jean-Michel&lt;br /&gt;
* Now we reset the timeout counter to avoid timeouts&lt;br /&gt;
* Several improvements contributed by Jean-Michel Vedrine. You can now change the number of attempts per page displayed on screen, and download results to Excel/text file, including detailed grades&lt;br /&gt;
* Fixed export bug with non-English languages&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCORM&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* We now support SCORM 1.3 (SCORM 2004)!&lt;br /&gt;
* Fixed a bug with next and prev SCO search&lt;br /&gt;
* Fixed bugs related to masteryscore&lt;br /&gt;
* Fixed a problem in AICC course tracking&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Now paging of older versions is showed and working properly, see bug 3750&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Mediaplugin filter now finds multi-line links in HTML code&lt;br /&gt;
* Censor filter: Added original word as title to the blacked-out version. The filter can obscure actual important words by mistake (eg Dickens) and there needs to be some way to recover the meaning&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5.2==&lt;br /&gt;
&lt;br /&gt;
16th July, 2005&lt;br /&gt;
&lt;br /&gt;
=== Various fixes ===&lt;br /&gt;
&lt;br /&gt;
*  Journal -&amp;gt; Assignment upgrade now works properly :-/&lt;br /&gt;
* Assignment submodules now upgrade as expected&lt;br /&gt;
* Various other bugs with new Assignments fixed&lt;br /&gt;
* Journal module is now disabled by default on new installations&lt;br /&gt;
* Login page is now 100% HTTPS if required&lt;br /&gt;
* Various small standard theme tweaks&lt;br /&gt;
* Fix for recent matching questions display bug in Quiz&lt;br /&gt;
* Language editor no longer creates empty files when not necessary (caused country list bug)&lt;br /&gt;
* Fixed some manifest parsing problems in SCORM module&lt;br /&gt;
* Multilang filter now deals with pack names that contain numbers&lt;br /&gt;
* Files are now force-downloaded (fixes IE problems and some security issues)&lt;br /&gt;
* Relinking debugging output is escaped&lt;br /&gt;
* Large MP3 player now displays ID3 tags properly again&lt;br /&gt;
* Some chat daemon improvements&lt;br /&gt;
&lt;br /&gt;
=== Some new things ===&lt;br /&gt;
&lt;br /&gt;
* Orangewhite theme optimised for use on PDA&lt;br /&gt;
* Forum user posts page can be called without userid&lt;br /&gt;
* Altavista BabelFish now allowed in as guest when Google is&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5.1==&lt;br /&gt;
&lt;br /&gt;
8th July, 2005&lt;br /&gt;
&lt;br /&gt;
===Various fixes===&lt;br /&gt;
&lt;br /&gt;
* Several potential security problems solved&lt;br /&gt;
* Allowobjectembed setting now works correctly&lt;br /&gt;
* Speed problem on IE, caused by tab hover fixed.&lt;br /&gt;
* Cut and paste in editor on Firefox has a more helpful warning message&lt;br /&gt;
* Fixed a session problem when logged on as admin during upgrade from very old Moodle version&lt;br /&gt;
* Fixed editing problem in Main menu of site&lt;br /&gt;
* Minor CSS display problems in a few areas were fixed&lt;br /&gt;
* Fixed the adding of a single discussion forum&lt;br /&gt;
* Fixed Lesson problems with calculating grades, and dates&lt;br /&gt;
* Fixed Lesson problems with entering a cluster after a page&lt;br /&gt;
* Censor filter was fixed to make it work better with old themes&lt;br /&gt;
&lt;br /&gt;
===Some new things===&lt;br /&gt;
&lt;br /&gt;
* New theme: Wood&lt;br /&gt;
* Metal theme updated for 1.5&lt;br /&gt;
* Many language updates for most languages, including a new language: Khmer&lt;br /&gt;
* Block classes can now run custom code when an instance is created/deleted (this is useful for blocks that need to set up non-trivial data structures)&lt;br /&gt;
* Wizard for Calculated Questions in Quiz was rewritten&lt;br /&gt;
* Backup/Restore module selection is now improved and much easier&lt;br /&gt;
* Backup/Restore module has much improved relinking support, it&#039;s now faster and easier to implement in new modules&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.5==&lt;br /&gt;
&lt;br /&gt;
5th June, 2005&lt;br /&gt;
&lt;br /&gt;
Here you can find the release notes of the current stable version of Moodle. &#039;&#039;&#039;If you experience any bugs in this release, please report them at [http://moodle.org/bugs moodle.org/bugs] so we can fix them in the next release.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Headline features ===&lt;br /&gt;
&lt;br /&gt;
* Web pages are compliant with XHTML Transitional 1.0&lt;br /&gt;
* Improved &#039;&#039;&#039;Accessibility&#039;&#039;&#039;, aiming for compliance with WAI (W3C), SENDA (UK) and Section 508 (US) criteria.&lt;br /&gt;
* Very strong &#039;&#039;&#039;new Themes system&#039;&#039;&#039;, allowing cascading themes, user themes, course themes, with very fine control of every page in Moodle via CSS.&lt;br /&gt;
* Integrated &#039;&#039;&#039;Messaging&#039;&#039;&#039; feature for direct communication between all users in the site, featuring realtime popup windows, notification, email copies, blocking, history, WYSIWYG editor, etc&lt;br /&gt;
* Forum read/unread tracking with highlights allows you to see new postings at a glance and to control how these are displayed (per forum, per user or per site).&lt;br /&gt;
* New &#039;&#039;&#039;Blocks&#039;&#039;&#039; system, allowing multiple copies of blocks and better block configuration&lt;br /&gt;
* Full support for &#039;&#039;&#039;Daylight Savings Time&#039;&#039;&#039; in every locality around the globe, so everyone always see the correct local time for all events.&lt;br /&gt;
* New &#039;&#039;&#039;extended gradebook&#039;&#039;&#039; allowing custom weighting of different activities, setting extra grades (or taking out others) and improved display and sorting options&lt;br /&gt;
* Users can be required to agree to a &#039;&#039;&#039;Site Policy&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Other major system-wide improvements ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Admin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* New &amp;quot;maintenance mode&amp;quot; allows the admin to temporarily disable a site (during upgrades, for example).&lt;br /&gt;
* Moodle can automatically download a new list of timezones from moodle.org or elsewhere and install it to the database (Olson files are supported too)&lt;br /&gt;
* New version of Moodle MySQL Admin module (available separately)&lt;br /&gt;
* New calendar options page provides user interface to configure the behavior of the calendar&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authentication&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* New Shibboleth Support&lt;br /&gt;
* New CAS Support&lt;br /&gt;
* New PAM Support&lt;br /&gt;
* Improved LDAP integration, so that LDAP can now control course creation, group assignments. Increased performance and scalability performing user synchronisation.&lt;br /&gt;
* Certain user fields can be locked by the admin when using external authentication&lt;br /&gt;
* Improved session handling now detects &amp;quot;crossover&amp;quot; sessions that we have found in some buggy PHP installations and prevents them&lt;br /&gt;
* Sessions can now be stored in the database (good for clustered installations!)&lt;br /&gt;
* Users can be forced to change their password&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Standardised file browsing in all areas&lt;br /&gt;
* Improved uploading, with support for automated Virus scanning of new documents using ClamAV.&lt;br /&gt;
* Slasharguments now work also on IIS (upgrade to PHP 4.3.11 needed for ISAPI)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Standardised filter library makes it trivial to write new filters that require searching and highlighting of text.&lt;br /&gt;
* Huge efficiency improvements for complex filters like the Glossary filter&lt;br /&gt;
* New Tidy filter uses the W3C Tidy program to (optionally) clean all user-entered texts throughout the site and convert it to valid XHTML code&lt;br /&gt;
* Improved censorship filter, now &amp;quot;blacks out&amp;quot; words using styles and uses a word list from the language packs.&lt;br /&gt;
* Improved Flash MP3 player, now shows progress bar while downloading and playing&lt;br /&gt;
* Improved Multi-language filter is faster, more forgiving of syntax errors, and uses new editor-friendly syntax: &amp;lt;span lang=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* Auto-linking filters (glossary, activities) can work to link all the occurrences (old behaviour), once for each text block or only once for the whole page ($CFG-&amp;gt;filtermatchonepertext, $CFG-&amp;gt;filtermatchoneperpage).&lt;br /&gt;
* More text can now be filtered in Moodle, including activity names, headings and other such small texts. This makes it possible to design completely multi-lingual sites in Moodle that fully appears in the user&#039;s chosen language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Themes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Modules can provide standard styles&lt;br /&gt;
* Themes can override required styles of other themes&lt;br /&gt;
* Users and courses can choose their own themes if the admin allows it&lt;br /&gt;
* Implementation of tabs interface on many pages&lt;br /&gt;
* Modules, Blocks and Languages can define their own standard styles&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HTML Editor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The toolbuttons offered in the editor toolbar are now configurable by the admin&lt;br /&gt;
* Search and Replace text within the editor text area (with optional use of regular expressions)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Course management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Transparent Blackboard 5.5 course importing (partial 6.0 support)&lt;br /&gt;
* The new meta-courses allow to get users automatically enroled in a general course (the metacourse) when enroled in any of the metacourse-linked courses&lt;br /&gt;
* New tool to copy content from a course to other.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New blocks&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML block: allowing to place arbitrary content (text, images links) in any course mainpage&lt;br /&gt;
* Remote RSS feed: allows to display external news channels inside a Moodle course&lt;br /&gt;
* Glossary Selection: to choose and display content from a Moodle glossary in course mainpage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Calendar&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Major speed improvements for sites with a large number of courses using groups&lt;br /&gt;
* Repeating events can now be modified or deleted all at the same time or separately as before&lt;br /&gt;
* New &amp;quot;remember filter settings&amp;quot; preference that allows calendar filters to remember their status between logins&lt;br /&gt;
&lt;br /&gt;
=== Activity module improvements ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Assignment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Completely refactored into a new class-based design, allowing new plugin-assignment types&lt;br /&gt;
* New Online Text assignment type that doesn&#039;t require files and allows inline comments when grading - this new type effectively replaces the old Journal module&lt;br /&gt;
* Vastly improved grading interface for handling large classes&lt;br /&gt;
* New configuration options to disable late submission and to e-mail alerts to teachers when students submit new work&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Streamlined interface looks smoother, works faster, even without using the optional server daemon&lt;br /&gt;
* Blocks can now be added to chat pages (e.g. for additional information)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Choice&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Rewritten to allow any number of choices&lt;br /&gt;
* The number of users per choice can be limited, which allows it to be used as tool for &amp;quot;signing up&amp;quot; to an array of options.&lt;br /&gt;
* You can now download the results of the choice to XLS or a TXT file&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Forum&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Powerful new Google-like forum searching tools&lt;br /&gt;
* Forum read/unread tracking - unread messages are highlighted on the course page, forum page, discussion listing and the discussion view&lt;br /&gt;
* The tracking system may be disabled by teachers/users&lt;br /&gt;
* User profiles show all posts by a user, as well as all discussions&lt;br /&gt;
* When admins edit user messages, a notice is attached&lt;br /&gt;
* Discussion listing shows the last user who posted to each discussion and when it was, with a direct link to that post&lt;br /&gt;
* In group-enabled forums the discussion listing shows the group the thread applies to, with a link to the group description page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Glossary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* New setting to enable/disable the print view of each glossary.&lt;br /&gt;
* New search system looks for words everywhere (instead of doing exact phrase match).&lt;br /&gt;
* More information is sent to logs to be able to track activity better.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Journal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The Journal module has not changed since 1.4, and is now deprecated. The upgrade procedure will convert all your Journal activities into Online Assignments, and hide all the old Journal activities. If you don&#039;t want this to happen, then define this in your config.php: $CFG-&amp;gt;noconvertjournals = true;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lesson&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Now supports timed Lessons&lt;br /&gt;
* Can create practice Lessons (grades are not stored)&lt;br /&gt;
* Option for students to view points earned while taking the Lesson&lt;br /&gt;
* Allow students to review their answers before submitting the Lesson&lt;br /&gt;
* New Slide Show Mode (only branch tables are displayed as slides)&lt;br /&gt;
* New Left Menu (for enabled branch tables only)&lt;br /&gt;
* Lessons can now be Password Protected&lt;br /&gt;
* A Tree View can be used for the Lesson creation screen&lt;br /&gt;
* Students can post their high scores&lt;br /&gt;
* New option to save a Lesson&#039;s settings as defaults for new lessons in the same course&lt;br /&gt;
* Can delete a student&#039;s attempts&lt;br /&gt;
* New page Jumps:&lt;br /&gt;
** Previous Page&lt;br /&gt;
** Unseen question within a branch&lt;br /&gt;
** Random question within a branch&lt;br /&gt;
** Unseen question within a cluster&lt;br /&gt;
* Added functionality to view Lesson statistics&lt;br /&gt;
* New question type: Essay. Teachers can view each essay and write comments, assign a grade, and then email it all to the student&lt;br /&gt;
* New question creation interface&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Quiz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Can handle adaptive questions, i.e., questions that allow the student to interact with them repeatedly within the same quiz attempt and that can change in response to student answers.&lt;br /&gt;
* Student can be allowed to try a question again immediately within the same quiz attempt until they get the answer right.&lt;br /&gt;
* There is a penalty mechanism that deducts a specified fraction of the mark for each wrong attempt at a question.&lt;br /&gt;
* Allows questions rendered and scored externally (e.g., by mathematical assessment engines) to be integrated seamlessly into Moodle quizzes via the RQP web services protocol.&lt;br /&gt;
* Is prepared for the handling of IMS QTI questions once web services for these become available.&lt;br /&gt;
* New tabbed teacher interface for previewing, editing, and reviewing quizzes.&lt;br /&gt;
* New &amp;quot;improved security&amp;quot; mode shows quiz in a separate full-screen window, with many browser features disabled&lt;br /&gt;
* Quizzes can be presented to students in several pages. The number of questions per page is selectable by the teacher.&lt;br /&gt;
* Blocks can now be added to quiz pages (to show results table, or additional information etc)&lt;br /&gt;
* Better and cleaner interface for question selection and management in the database. Selected questions can be added to quiz, moved to other categories or deleted en mass.&lt;br /&gt;
* Random questions are now added to the quiz question list with a dedicated button, leaving a cleaner interface at questions database without phantom placeholders&lt;br /&gt;
* Final grade can be a fractional number, with teacher-defined decimal figures&lt;br /&gt;
* Improved results page with user-selectable display of columns, cleaner sorting and new mark display options&lt;br /&gt;
* Questions can be edited with one click from the improved quiz preview and question preview screens.&lt;br /&gt;
* Questions can be copied with one click, to allow question variations to be created with ease.&lt;br /&gt;
* Revamped question categories structures and editing interface.&lt;br /&gt;
* Categories now can contain nested subcategories and can be re-ordered.&lt;br /&gt;
* It is possible to select whether questions from categories, and or their subcategories are displayed on the question edit page.&lt;br /&gt;
* It is now possible to select whether to add random questions from a parent category alone, or from a parent category and its sub-categories.&lt;br /&gt;
* Quiz creators are prevented from changing the question set of quizes that have had student responses.&lt;br /&gt;
* Recognition, and rejection, of overlapping/redundant questions has been improved.&lt;br /&gt;
* The display of questions in longer quiz categories on the quiz editing page is now paginated.&lt;br /&gt;
* New export types - IMS QTI (2.0) and xhtml. Improvements &amp;amp; fixes to others.&lt;br /&gt;
* New import type - Hot Potato. Improvements &amp;amp; fixes to others.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scorm&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The module is now fully conformant with the SCORM 1.2 standard.&lt;br /&gt;
* User result data storage and reporting was improved.&lt;br /&gt;
* AICC packages can now be imported.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Survey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Graph formatting has been improved (labels are more readable)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Changes to wiki pages are now monitored and displayed in Recent Activity block&lt;br /&gt;
* Several under the hood improvements to backup/restore and other routines that enhance the reliability of wikis&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
*[[Old releases|1.4.5 release notes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Core]]&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
&lt;br /&gt;
[[pt:Versões do Moodle]]&lt;br /&gt;
[[es:Notas de versiones]]&lt;br /&gt;
[[fr:Notes de mise à jour]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=IMS&amp;diff=16307</id>
		<title>IMS</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=IMS&amp;diff=16307"/>
		<updated>2006-09-25T19:20:19Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IMS is a standards body. IMS standards implemented in Moodle include:&lt;br /&gt;
&lt;br /&gt;
* [[IMS Enterprise]] enrolment data plugin&lt;br /&gt;
** Also IMS Enterprise Web Services, to be developed as an early application of Moodle&#039;s [[Web Services API]]&lt;br /&gt;
* [[IMS content package|IMS content packaging]]&lt;br /&gt;
* IMS Learning Design - Moodle 2.0 is [[Roadmap|planned]] to conform to this standard&lt;br /&gt;
* IMS QTI - for exchanging questions and tests between systems&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [http://imsglobal.org/ IMS official website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{disambig}}&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=IMS&amp;diff=16306</id>
		<title>IMS</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=IMS&amp;diff=16306"/>
		<updated>2006-09-25T19:18:52Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IMS is a standards body. IMS standards implemented in Moodle include:&lt;br /&gt;
&lt;br /&gt;
* [[IMS Enterprise]] enrolment data plugin&lt;br /&gt;
** Also IMS Enterprise Web Services, to be developed as an early application of Moodle&#039;s [[Web Services API]]&lt;br /&gt;
* [[IMS content package|IMS content packaging]]&lt;br /&gt;
* IMS Learning Design - Moodle 2.0 is planned to conform to this standard&lt;br /&gt;
* IMS QTI - for exchanging questions and tests between systems&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [http://imsglobal.org/ IMS official website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{disambig}}&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=IMS&amp;diff=16305</id>
		<title>IMS</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=IMS&amp;diff=16305"/>
		<updated>2006-09-25T19:18:18Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: Created disambiguation page in case people type &amp;quot;IMS&amp;quot; in search box&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IMS is a standards body. IMS standards implemented in Moodle include:&lt;br /&gt;
&lt;br /&gt;
* [[IMS Enterprise]] enrolment data plugin&lt;br /&gt;
** Also IMS Enterprise Web Services, to be developed as an early application of Moodle&#039;s [[Web Services API]]&lt;br /&gt;
* [[IMS content package|IMS content packaging]]&lt;br /&gt;
* IMS Learning Design - Moodle 2.0 is planned to conform to this standard&lt;br /&gt;
* IMS QTI - for exchanging questions and tests between systems&lt;br /&gt;
&lt;br /&gt;
{{disambig}}&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Performance_recommendations&amp;diff=15889</id>
		<title>Performance recommendations</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Performance_recommendations&amp;diff=15889"/>
		<updated>2006-09-15T13:53:50Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Web server performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle can be made to perform very well, at small usage levels or scaling up to many thousands of users. The factors involved in performance are basically the same as for any PHP-based database-driven system, and Moodle&#039;s design (with clear separation of application layers) allows for strongly scalable setups. (Please check the list of [[Large installations|large Moodle installations]].)&lt;br /&gt;
&lt;br /&gt;
Large sites usually separate the web server and database onto separate servers, although for smaller installations this is typically not necessary.&lt;br /&gt;
&lt;br /&gt;
It is possible to load-balance a Moodle installation, for example by using more than one webserver. The separate webservers should query the same database and refer to the same filestore area, but otherwise the separation of the application layers is complete enough to make this kind of clustering feasible. Similarly, the database could be a cluster of servers (e.g. a MySQL cluster).&lt;br /&gt;
&lt;br /&gt;
:::The above comment makes it sound easy to run a database cluster. It is not. It is easy to run the webservers in cluster with LVM and other solutions. The only &amp;quot;easy&amp;quot; cluster database is MySQL Cluster and there are several issues with it. --[[User:Martin Langhoff|Martin Langhoff]] 18:53, 31 August 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Web server performance==&lt;br /&gt;
&lt;br /&gt;
* The amount of &#039;&#039;&#039;RAM&#039;&#039;&#039; on your web server is the strongest factor in performance - get as much as possible (eg 4GB).&lt;br /&gt;
* Linux or Unix is the recommended &#039;&#039;&#039;operating system&#039;&#039;&#039; for the server. They perform much better than Mac OSX or Windows servers at high loads.&lt;br /&gt;
* You are strongly recommended to use a &#039;&#039;&#039;PHP accelerator&#039;&#039;&#039; to ease CPU load, such as Turck MMCache, PHPA or eAccelerator. (Take care to choose a PHP accelerator that is known to work well with your version of PHP etc.)&lt;br /&gt;
* Performance of PHP is better when installed as an Apache module (rather than a CGI).&lt;br /&gt;
* On a Unix/Linux system, performance can be greatly improved by allowing the webserver to use the system &#039;&#039;&#039;zip/unzip&#039;&#039;&#039; commands (rather than PHP-based zip libraries) - visit Admin/Configure/Variables and enter the path to the relevant executables. (Similarly, filling in the path to &#039;&#039;&#039;du&#039;&#039;&#039; will improve Moodle&#039;s speed at listing directory contents.)&lt;br /&gt;
* Note that using &#039;&#039;&#039;secure web connections&#039;&#039;&#039; (&#039;&#039;&#039;https&#039;&#039;&#039; rather than &#039;&#039;&#039;http&#039;&#039;&#039;) carries a higher processing burden, both for the webserver and the client - particularly because cacheing cannot be used as effectively, so the number of file requests is likely to increase dramatically. For this reason using https for all Moodle pages is not recommended. You can enable https just for the login screen, simply from Moodle&#039;s config page.&lt;br /&gt;
* You can increase performance by using the light-weight webserver [http://www.lighttpd.org/ lighttpd] in combination with PHP in fastCGI-mode instead of Apache, due to much lower memory consumption. One single apache process requires more RAM than the whole lighttpd with all of its fastCGI-processes together. Note that this may not be a good solution if you can afford lots of hardware power, because administration takes a little more time.&lt;br /&gt;
* Consider lowering MaxRequestsPerChild in httpd.conf to as low as 20-30 (if you set it any lower the overhead of forking begins to outweigh the benefits). Also check the memory_limit in php.ini, reduce it to at least 16M. ([http://moodle.org/mod/forum/discuss.php?d=39656 Suggested by Rory Allford])&lt;br /&gt;
&lt;br /&gt;
==Database performance==&lt;br /&gt;
&lt;br /&gt;
* [[Arguments in favour of PostgreSQL]]&lt;br /&gt;
* [[Increasing the database connection lifetime]]&lt;br /&gt;
* [http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html Tuning MySQL parameters] (advice from the MySQL manual)&lt;br /&gt;
&lt;br /&gt;
==Performance of different Moodle modules==&lt;br /&gt;
&lt;br /&gt;
Moodle&#039;s activity modules, filters, and other plugins can be activated/deactivated. If necessary, you may wish to deactivate some features (such as chat) if not required - but this isn&#039;t necessary. Some notes on the performance of certain modules:&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;Chat&#039;&#039;&#039; module is [http://moodle.org/mod/forum/discuss.php?d=37979&amp;amp;parent=175079 said] to be a hog in terms of frequent HTTP requests to the main server. This can be reduced by setting the module to use &#039;&#039;Streamed&#039;&#039; updates, or, if you&#039;re using a Unix-based webserver, by running the chat in daemon mode.&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=25616&amp;amp;parent=120770 Brief report on performance for 55 students simultaneously using &#039;&#039;&#039;Quiz&#039;&#039;&#039;]&lt;br /&gt;
* The Moodle &#039;&#039;&#039;cron&#039;&#039;&#039; task is triggered by calling the script &#039;&#039;cron.php&#039;&#039;. If this is called over HTTP (e.g. using wget or curl) it can take a large amount of memory on large installations. If it is called by directly invoking the php command (e.g. &#039;&#039;php -f /path/to/moodle/directory/admin/cron.php&#039;&#039;) efficiency can be much improved.&lt;br /&gt;
* Having too many filters active can have serious effects on server load, especially on lower-end systems. The number of active filters has a direct effect on the perceived latency of your site; that is the time taken for each page impression. For best performance, leave the text cache enabled and do not &amp;quot;Filter all strings&amp;quot; unless you have a specific need. If in doubt [[Performance profiling|profile the performance]], and see how your changes affect the processing time.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/view.php?f=94 Servers and Performance] forum&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
[[Category:Performance]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Performance_recommendations&amp;diff=15888</id>
		<title>Performance recommendations</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Performance_recommendations&amp;diff=15888"/>
		<updated>2006-09-15T13:53:29Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Web server performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle can be made to perform very well, at small usage levels or scaling up to many thousands of users. The factors involved in performance are basically the same as for any PHP-based database-driven system, and Moodle&#039;s design (with clear separation of application layers) allows for strongly scalable setups. (Please check the list of [[Large installations|large Moodle installations]].)&lt;br /&gt;
&lt;br /&gt;
Large sites usually separate the web server and database onto separate servers, although for smaller installations this is typically not necessary.&lt;br /&gt;
&lt;br /&gt;
It is possible to load-balance a Moodle installation, for example by using more than one webserver. The separate webservers should query the same database and refer to the same filestore area, but otherwise the separation of the application layers is complete enough to make this kind of clustering feasible. Similarly, the database could be a cluster of servers (e.g. a MySQL cluster).&lt;br /&gt;
&lt;br /&gt;
:::The above comment makes it sound easy to run a database cluster. It is not. It is easy to run the webservers in cluster with LVM and other solutions. The only &amp;quot;easy&amp;quot; cluster database is MySQL Cluster and there are several issues with it. --[[User:Martin Langhoff|Martin Langhoff]] 18:53, 31 August 2006 (CDT)&lt;br /&gt;
&lt;br /&gt;
==Web server performance==&lt;br /&gt;
&lt;br /&gt;
* The amount of &#039;&#039;&#039;RAM&#039;&#039;&#039; on your web server is the strongest factor in performance - get as much as possible (eg 4GB).&lt;br /&gt;
* Linux or Unix is the recommended &#039;&#039;&#039;operating system&#039;&#039;&#039; for the server. They perform much better than Mac OSX or Windows servers at high loads.&lt;br /&gt;
* You are strongly recommended to use a &#039;&#039;&#039;PHP accelerator&#039;&#039;&#039; to ease CPU load, such as [http://turck-mmcache.sourceforge.net/ Turck MMCache] or PHPA or eAccelerator. (Take care to choose a PHP accelerator that is known to work well with your version of PHP etc.)&lt;br /&gt;
* Performance of PHP is better when installed as an Apache module (rather than a CGI).&lt;br /&gt;
* On a Unix/Linux system, performance can be greatly improved by allowing the webserver to use the system &#039;&#039;&#039;zip/unzip&#039;&#039;&#039; commands (rather than PHP-based zip libraries) - visit Admin/Configure/Variables and enter the path to the relevant executables. (Similarly, filling in the path to &#039;&#039;&#039;du&#039;&#039;&#039; will improve Moodle&#039;s speed at listing directory contents.)&lt;br /&gt;
* Note that using &#039;&#039;&#039;secure web connections&#039;&#039;&#039; (&#039;&#039;&#039;https&#039;&#039;&#039; rather than &#039;&#039;&#039;http&#039;&#039;&#039;) carries a higher processing burden, both for the webserver and the client - particularly because cacheing cannot be used as effectively, so the number of file requests is likely to increase dramatically. For this reason using https for all Moodle pages is not recommended. You can enable https just for the login screen, simply from Moodle&#039;s config page.&lt;br /&gt;
* You can increase performance by using the light-weight webserver [http://www.lighttpd.org/ lighttpd] in combination with PHP in fastCGI-mode instead of Apache, due to much lower memory consumption. One single apache process requires more RAM than the whole lighttpd with all of its fastCGI-processes together. Note that this may not be a good solution if you can afford lots of hardware power, because administration takes a little more time.&lt;br /&gt;
* Consider lowering MaxRequestsPerChild in httpd.conf to as low as 20-30 (if you set it any lower the overhead of forking begins to outweigh the benefits). Also check the memory_limit in php.ini, reduce it to at least 16M. ([http://moodle.org/mod/forum/discuss.php?d=39656 Suggested by Rory Allford])&lt;br /&gt;
&lt;br /&gt;
==Database performance==&lt;br /&gt;
&lt;br /&gt;
* [[Arguments in favour of PostgreSQL]]&lt;br /&gt;
* [[Increasing the database connection lifetime]]&lt;br /&gt;
* [http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html Tuning MySQL parameters] (advice from the MySQL manual)&lt;br /&gt;
&lt;br /&gt;
==Performance of different Moodle modules==&lt;br /&gt;
&lt;br /&gt;
Moodle&#039;s activity modules, filters, and other plugins can be activated/deactivated. If necessary, you may wish to deactivate some features (such as chat) if not required - but this isn&#039;t necessary. Some notes on the performance of certain modules:&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;Chat&#039;&#039;&#039; module is [http://moodle.org/mod/forum/discuss.php?d=37979&amp;amp;parent=175079 said] to be a hog in terms of frequent HTTP requests to the main server. This can be reduced by setting the module to use &#039;&#039;Streamed&#039;&#039; updates, or, if you&#039;re using a Unix-based webserver, by running the chat in daemon mode.&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=25616&amp;amp;parent=120770 Brief report on performance for 55 students simultaneously using &#039;&#039;&#039;Quiz&#039;&#039;&#039;]&lt;br /&gt;
* The Moodle &#039;&#039;&#039;cron&#039;&#039;&#039; task is triggered by calling the script &#039;&#039;cron.php&#039;&#039;. If this is called over HTTP (e.g. using wget or curl) it can take a large amount of memory on large installations. If it is called by directly invoking the php command (e.g. &#039;&#039;php -f /path/to/moodle/directory/admin/cron.php&#039;&#039;) efficiency can be much improved.&lt;br /&gt;
* Having too many filters active can have serious effects on server load, especially on lower-end systems. The number of active filters has a direct effect on the perceived latency of your site; that is the time taken for each page impression. For best performance, leave the text cache enabled and do not &amp;quot;Filter all strings&amp;quot; unless you have a specific need. If in doubt [[Performance profiling|profile the performance]], and see how your changes affect the processing time.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/view.php?f=94 Servers and Performance] forum&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
[[Category:Performance]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Template:Large_Installations&amp;diff=15885</id>
		<title>Template:Large Installations</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Template:Large_Installations&amp;diff=15885"/>
		<updated>2006-09-15T11:11:04Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: Removed the &amp;quot;these lists are new&amp;quot; message&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=85% align=center style=&amp;quot;background: #F8EABA; border: 1px solid #aaa; margin: 0 auto 10px auto; text-align: center;&amp;quot; &lt;br /&gt;
| style=&amp;quot;font-size: 90%; padding-right: 4px; padding-left: 4px;&amp;quot;|&lt;br /&gt;
::[[Installations 1000 plus]] - [[Installations 5000 plus]] - [[Installations 10000 plus]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15353</id>
		<title>User:Dan Stowell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15353"/>
		<updated>2006-09-04T10:27:32Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ve been developing bits and bobs for Moodle for a while - for example:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;In Moodle core:&#039;&#039;&#039;&lt;br /&gt;
** [[IMS Enterprise]] enrolment module&lt;br /&gt;
** [[Fields#Latitude.2Flongitude|Latitude/longitude data type]] for database activity&lt;br /&gt;
* &#039;&#039;&#039;Optional add-ins:&#039;&#039;&#039;&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex] voice messaging tool&lt;br /&gt;
** [[Jmol filter]]&lt;br /&gt;
** [[Jmol resource type]]&lt;br /&gt;
** [http://moodle.org/mod/data/view.php?d=13&amp;amp;rid=296 Java Molecular Editor question type]&lt;br /&gt;
** [[WebCT migration]] scripts&lt;br /&gt;
&lt;br /&gt;
If you want to know more about me you might like to look at [http://www.mcld.co.uk/cv/quick/ my CV]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15351</id>
		<title>User:Dan Stowell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15351"/>
		<updated>2006-09-04T10:24:37Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ve been developing bits and bobs for Moodle for a while - for example:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;In Moodle core:&#039;&#039;&#039;&lt;br /&gt;
** [[IMS Enterprise]] enrolment module&lt;br /&gt;
** [[Fields#Latitude.2Flongitude|Latitude/longitude data type]] for database activity&lt;br /&gt;
* &#039;&#039;&#039;Optional add-ins:&#039;&#039;&#039;&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex] voice messaging tool&lt;br /&gt;
** [[Jmol filter]]&lt;br /&gt;
** [[Jmol resource type]]&lt;br /&gt;
** [[WebCT migration]] scripts&lt;br /&gt;
&lt;br /&gt;
If you want to know more about me you might like to look at [http://www.mcld.co.uk/cv/quick/ my CV]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15350</id>
		<title>User:Dan Stowell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15350"/>
		<updated>2006-09-04T10:23:44Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ve been developing bits and bobs for Moodle for a while - for example:&lt;br /&gt;
&lt;br /&gt;
* In Moodle core:&lt;br /&gt;
** [[IMS Enterprise]] enrolment module&lt;br /&gt;
** [[Fields#Latitude.2Flongitude|Latitude/longitude data type]] for database activity&lt;br /&gt;
* Optional add-ins&lt;br /&gt;
** [http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex] voice messaging tool&lt;br /&gt;
** [[Jmol filter]]&lt;br /&gt;
** [[Jmol resource type]]&lt;br /&gt;
** [[WebCT migration]] scripts&lt;br /&gt;
&lt;br /&gt;
If you want to know more about me you might like to look at [http://www.mcld.co.uk/cv/quick/ my CV]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15349</id>
		<title>User:Dan Stowell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15349"/>
		<updated>2006-09-04T10:22:51Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ve been developing bits and bobs for Moodle for a while - for example:&lt;br /&gt;
&lt;br /&gt;
* [[IMS Enterprise]] enrolment module&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex] voice messaging tool&lt;br /&gt;
* [[Jmol filter]]&lt;br /&gt;
* [[Jmol resource type]]&lt;br /&gt;
* [[WebCT migration]] scripts&lt;br /&gt;
* [[Fields#Latitude.2Flongitude|Latitude/longitude data type]] for database activity&lt;br /&gt;
&lt;br /&gt;
If you want to know more about me you might like to look at [http://www.mcld.co.uk/cv/quick/ my CV]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15348</id>
		<title>User:Dan Stowell</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=User:Dan_Stowell&amp;diff=15348"/>
		<updated>2006-09-04T10:18:15Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;ve been developing bits and bobs for Moodle for a while - for example:&lt;br /&gt;
&lt;br /&gt;
* [[IMS Enterprise]] enrolment module&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex] voice messaging tool&lt;br /&gt;
* [[Jmol filter]]&lt;br /&gt;
* [[Jmol resource type]]&lt;br /&gt;
* [[WebCT migration]] scripts&lt;br /&gt;
&lt;br /&gt;
If you want to know more about me you might like to look at [http://www.mcld.co.uk/cv/quick/ my CV]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=15052</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=15052"/>
		<updated>2006-08-29T11:08:39Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Version 2.0 - Expected early 2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This roadmap collects the best information about upcoming features in Moodle.   It is not 100% certain - features may change according to available funding and developers.&lt;br /&gt;
&lt;br /&gt;
== Version 1.7 - Expected September 2006 ==&lt;br /&gt;
&lt;br /&gt;
* [[Roles]] - Moodle.com&lt;br /&gt;
::This new system will allow the creation of custom roles at site, course and activity level&lt;br /&gt;
* [[XML Database Schema]] - Moodle.com &lt;br /&gt;
::Conversion to full database independence using new XML schema for ADOdb.  This will give us support for MS SQL, Oracle etc.&lt;br /&gt;
* New admin interface with admin plugins&lt;br /&gt;
* New AJAX course format (drag and drop!)&lt;br /&gt;
* Database module can now save and load presets (fields and templates in a package).&lt;br /&gt;
* [[Fields#Latitude.2Flongitude|Latitude/longitude data type]] - Dan Stowell&lt;br /&gt;
::A new field type for database activities, storing geographic locations, with integrated links with [http://earth.google.com Google Earth], [http://www.openstreetmap.org/ OpenStreetMap], and more.&lt;br /&gt;
* Assorted quiz and question type improvements, as listed in the [[Release Notes|release notes]].&lt;br /&gt;
&lt;br /&gt;
== Version 1.8 - Expected December 2006 ==&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
::Full compliance with all major accessibility standards&lt;br /&gt;
* [[Repository API]] - Open University&lt;br /&gt;
::Abstract all file operations to an API that allows plugins for different external repositories&lt;br /&gt;
* [[Gradebook]] - Arab Open University&lt;br /&gt;
::The gradebook system will be revamped for performance, switching from our older &amp;quot;pull&amp;quot; model to a &amp;quot;push&amp;quot; model where all modules will now publish grades as necessary into a central table.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza?&lt;br /&gt;
* [[Learning Design export]] - Moodle.com and Open University of The Netherlands&lt;br /&gt;
::We plan to have a very simple export for any Moodle course into IMS LD format, as a proof of concept and to help the community start learning about IMS LD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version 2.0 - Expected early 2007 ==&lt;br /&gt;
&lt;br /&gt;
* [[IMS Learning Design]] - Moodle.com&lt;br /&gt;
::Support for importing/exporting LD, converting Moodle activities and sequences of activities into a standard format for sharing, and importing standard sequences into Moodle courses&lt;br /&gt;
* [[Conditional activities]] - Moodle.com&lt;br /&gt;
::Allowing dependencies and forced paths through the content&lt;br /&gt;
* [[Metadata]] - Moodle.com&lt;br /&gt;
::Build on the keywords in 1.6 to provide metadata for all activities and courses, linkable to standard lists of metadata such as State-based learning outomes and curricula&lt;br /&gt;
* [[Web Services API]]&lt;br /&gt;
::Providing remote control and access of Moodle services by other systems, as well as sharing of information between Moodle sites with trust relationships.&lt;br /&gt;
* [[Student Information API]]&lt;br /&gt;
::API for integrating external systems for managing student information&lt;br /&gt;
* [[Community hub]] - Moodle.com &lt;br /&gt;
::Leverage above improvements into a system to network Moodles together&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: Moodle 2.0 will require PHP 5.1 as a minimum, because of certain improvements not available in PHP 4.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Version 2.1 ==&lt;br /&gt;
&lt;br /&gt;
* [[Site groups|Groups]] &lt;br /&gt;
::Groups can also be defined at the site level, and activities can be assigned to course groups&lt;br /&gt;
* [[Portfolio API]]&lt;br /&gt;
::Interface Moodle activities and repositories to help produce portfolios for internal assessment AND external publication&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
[[es:Planificación]]&lt;br /&gt;
[[fr:Planification]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=15051</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=15051"/>
		<updated>2006-08-29T11:06:55Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Version 2.0 - Expected early 2007 */  Added note re PHP 5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This roadmap collects the best information about upcoming features in Moodle.   It is not 100% certain - features may change according to available funding and developers.&lt;br /&gt;
&lt;br /&gt;
== Version 1.7 - Expected September 2006 ==&lt;br /&gt;
&lt;br /&gt;
* [[Roles]] - Moodle.com&lt;br /&gt;
::This new system will allow the creation of custom roles at site, course and activity level&lt;br /&gt;
* [[XML Database Schema]] - Moodle.com &lt;br /&gt;
::Conversion to full database independence using new XML schema for ADOdb.  This will give us support for MS SQL, Oracle etc.&lt;br /&gt;
* New admin interface with admin plugins&lt;br /&gt;
* New AJAX course format (drag and drop!)&lt;br /&gt;
* Database module can now save and load presets (fields and templates in a package).&lt;br /&gt;
* [[Fields#Latitude.2Flongitude|Latitude/longitude data type]] - Dan Stowell&lt;br /&gt;
::A new field type for database activities, storing geographic locations, with integrated links with [http://earth.google.com Google Earth], [http://www.openstreetmap.org/ OpenStreetMap], and more.&lt;br /&gt;
* Assorted quiz and question type improvements, as listed in the [[Release Notes|release notes]].&lt;br /&gt;
&lt;br /&gt;
== Version 1.8 - Expected December 2006 ==&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
::Full compliance with all major accessibility standards&lt;br /&gt;
* [[Repository API]] - Open University&lt;br /&gt;
::Abstract all file operations to an API that allows plugins for different external repositories&lt;br /&gt;
* [[Gradebook]] - Arab Open University&lt;br /&gt;
::The gradebook system will be revamped for performance, switching from our older &amp;quot;pull&amp;quot; model to a &amp;quot;push&amp;quot; model where all modules will now publish grades as necessary into a central table.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza?&lt;br /&gt;
* [[Learning Design export]] - Moodle.com and Open University of The Netherlands&lt;br /&gt;
::We plan to have a very simple export for any Moodle course into IMS LD format, as a proof of concept and to help the community start learning about IMS LD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version 2.0 - Expected early 2007 ==&lt;br /&gt;
&lt;br /&gt;
* [[IMS Learning Design]] - Moodle.com&lt;br /&gt;
::Support for importing/exporting LD, converting Moodle activities and sequences of activities into a standard format for sharing, and importing standard sequences into Moodle courses&lt;br /&gt;
* [[Conditional activities]] - Moodle.com&lt;br /&gt;
::Allowing dependencies and forced paths through the content&lt;br /&gt;
* [[Metadata]] - Moodle.com&lt;br /&gt;
::Build on the keywords in 1.6 to provide metadata for all activities and courses, linkable to standard lists of metadata such as State-based learning outomes and curricula&lt;br /&gt;
* [[Web Services API]]&lt;br /&gt;
::Providing remote control and access of Moodle services by other systems, as well as sharing of information between Moodle sites with trust relationships.&lt;br /&gt;
* [[Student Information API]]&lt;br /&gt;
::API for integrating external systems for managing student information&lt;br /&gt;
* [[Community hub]] - Moodle.com &lt;br /&gt;
::Leverage above improvements into a system to network Moodles together&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note:&#039;&#039; Moodle 2.0 will require PHP 5.1 as a minimum, because of certain improvements not available in PHP 4.&lt;br /&gt;
&lt;br /&gt;
== Version 2.1 ==&lt;br /&gt;
&lt;br /&gt;
* [[Site groups|Groups]] &lt;br /&gt;
::Groups can also be defined at the site level, and activities can be assigned to course groups&lt;br /&gt;
* [[Portfolio API]]&lt;br /&gt;
::Interface Moodle activities and repositories to help produce portfolios for internal assessment AND external publication&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
[[es:Planificación]]&lt;br /&gt;
[[fr:Planification]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Assign_roles&amp;diff=15021</id>
		<title>Assign roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Assign_roles&amp;diff=15021"/>
		<updated>2006-08-28T09:45:31Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To assign a role to another user, first choose the type of role you wish to assign. For example, if we wanted to assign a Course Creator role to Ali, we&#039;d choose &amp;quot;Course Creator&amp;quot; from the drop-down list. (&amp;quot;Course Creator&amp;quot; is one of the default role types that comes with Moodle - your installation may have a modified set of roles.)&lt;br /&gt;
&lt;br /&gt;
Once you have selected a role, two lists appear: the list of users who currently have that role, and the list of users who don&#039;t. We can locate Ali in the second list, and use the left-facing arrow button to add Ali&#039;s account to the list of Course Creators.&lt;br /&gt;
&lt;br /&gt;
{{Moodle 1.7}}&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
[[Category:Roles]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Database_fields&amp;diff=14759</id>
		<title>Development:Database fields</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Database_fields&amp;diff=14759"/>
		<updated>2006-08-23T12:38:47Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle&#039;s [[Database module]] has some predefined [[Fields|field types]] (text, date, URL, picture, etc), but you can customise this to create new field types. For example, you might like to create:&lt;br /&gt;
&lt;br /&gt;
; Discipline-specific field types : e.g. &amp;quot;Protein PDB code&amp;quot; - people can enter the PDB code for a protein, and then the display could (for example) include a 3D viewer for the protein structure, or link out to molecular databases.&lt;br /&gt;
; Institution-specific field types :  e.g. &amp;quot;library reference number&amp;quot; - people can enter a number into the field, and this is automatically turned into a direct link to your library webpages&lt;br /&gt;
; Module-specific field types : e.g. &amp;quot;wiki page&amp;quot; - people see a drop-down list containing the names of pages in your wiki, and can choose which page this particular entry refers to&lt;br /&gt;
&lt;br /&gt;
==Basic concepts==&lt;br /&gt;
&lt;br /&gt;
To create a new field type in Moodle we need to create a new folder in /moodle/mod/data/field. Inside this folder will be PHP code telling Moodle:&lt;br /&gt;
&lt;br /&gt;
# What HTML to output when people are looking at a record in the database&lt;br /&gt;
# What form fields to output when people are adding/editing a record in the database&lt;br /&gt;
# What to do (what info to store) when someone submits the record-add/edit form&lt;br /&gt;
# What form fields to output when the teacher is adding/editing an instance of the field&lt;br /&gt;
# What to do (what info to store) when the teacher submits the field-add/edit form&lt;br /&gt;
&lt;br /&gt;
==The files==&lt;br /&gt;
&lt;br /&gt;
The best way to get an understanding of the plugin architecture is to look at an existing field type - I recommend you look at &#039;&#039;&#039;the URL field type&#039;&#039;&#039;, stored in /moodle/mod/data/field/url. There are three files:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;field.class.php&#039;&#039;&#039; - the most important file, this defines a PHP class which defines the majority of the data field&#039;s behaviour. See below for more detail on this.&lt;br /&gt;
* &#039;&#039;&#039;mod.html&#039;&#039;&#039; - contains a HTML &amp;quot;fragment&amp;quot; defining how the form fields will appear when the teacher is adding/editing an instance of the field.&lt;br /&gt;
* &#039;&#039;&#039;icon.gif&#039;&#039;&#039; - the icon to be displayed along with the field, as a visual cue to the teacher about what sort of data is stored in this field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The PHP class==&lt;br /&gt;
&lt;br /&gt;
If you look at the file &amp;quot;field.class.php&amp;quot; for the URL field type you&#039;ll see that the class is named &amp;quot;data_field_url&amp;quot; and it is a subclass of &amp;quot;data_field_base&amp;quot;. This is very important - the class &amp;quot;data_field_base&amp;quot; (defined in /moodle/mod/data/lib.php, by the way) defines some of the core behaviours without which your field will not work.&lt;br /&gt;
&lt;br /&gt;
Your class&#039;s name should match the subfolder you have created. For example, if we&#039;re creating a new data type called &amp;quot;Tastiness&amp;quot;, we want to create our plugin in a folder &amp;quot;tastiness&amp;quot; and the PHP class should be data_field_tastiness. The class should also define a class variable $type, which again should use the same name - in our example, we&#039;d give it the value &#039;tastiness&#039;. So the top of our field.class.php would look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 class data_field_tastiness extends data_field_base {&lt;br /&gt;
    var $type = &#039;tastiness&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to take an existing field type, duplicate it, and rename it to a new type (which you can modify later), this is all you need to do. You might like to try this (again, the URL field is a good one to start with) and see how it works.&lt;br /&gt;
&lt;br /&gt;
The base class defines some simple behaviours which you can override in your subclass, to make the plugin do exactly what you want. For example:&lt;br /&gt;
&lt;br /&gt;
 function display_add_field($recordid=0) // Return some HTML for use when a user is adding/editing a record&lt;br /&gt;
 function display_browse_field($recordid, $template) // Return some HTML for displaying a record&lt;br /&gt;
 function update_content($recordid, $value, $name=&#039;&#039;) // Used when a user stores data for a record&lt;br /&gt;
 function get_sort_sql($fieldname) // Specify SQL for how this field should be sorted&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t bother to specify these functions inside your new class, then the default behaviours specified by data_field_base will be used. Simply add these functions to your new class to make something different happen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be continued...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Database_fields&amp;diff=14758</id>
		<title>Development:Database fields</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Database_fields&amp;diff=14758"/>
		<updated>2006-08-23T12:38:27Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle&#039;s [[Database module]] has some predefined [[Fields|field types]] (text, date, URL, picture, etc), but you can customise this to create new field types. For example, you might like to create:&lt;br /&gt;
&lt;br /&gt;
; Discipline-specific field types : e.g. &amp;quot;Protein PDB code&amp;quot; - people can enter the PDB code for a protein, and then the display could (for example) include a 3D viewer for the protein structure, or link out to molecular databases.&lt;br /&gt;
; Institution-specific field types :  e.g. &amp;quot;library reference number&amp;quot; - people can enter a number into the field, and this is automatically turned into a direct link to your library webpages&lt;br /&gt;
; Module-specific field types : e.g. &amp;quot;wiki page&amp;quot; - people see a drop-down list containing the names of pages in your wiki, and can choose which page this particular entry refers to&lt;br /&gt;
&lt;br /&gt;
==Basic concepts==&lt;br /&gt;
&lt;br /&gt;
To create a new field type in Moodle we need to create a new folder in /moodle/mod/data/field. Inside this folder will be PHP code telling Moodle:&lt;br /&gt;
&lt;br /&gt;
# What HTML to output when people are looking at a record in the database&lt;br /&gt;
# What form fields to output when people are adding/editing a record in the database&lt;br /&gt;
# What to do (what info to store) when someone submits the record-add/edit form&lt;br /&gt;
# What form fields to output when the teacher is adding/editing an instance of the field&lt;br /&gt;
# What to do (what info to store) when the teacher submits the field-add/edit form&lt;br /&gt;
&lt;br /&gt;
==The files==&lt;br /&gt;
&lt;br /&gt;
The best way to get an understanding of the plugin architecture is to look at an existing field type - I recommend you look at &#039;&#039;&#039;the URL field type&#039;&#039;&#039;, stored in /moodle/mod/data/field/url. There are three files:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;field.class.php&#039;&#039;&#039; - the most important file, this defines a PHP class which defines the majority of the data field&#039;s behaviour. See below for more detail on this.&lt;br /&gt;
* &#039;&#039;&#039;mod.html&#039;&#039;&#039; - contains a HTML &amp;quot;fragment&amp;quot; defining how the form fields will appear when the teacher is adding/editing an instance of the field.&lt;br /&gt;
* &#039;&#039;&#039;icon.gif&#039;&#039;&#039; - the icon to be displayed along with the field, as a visual cue to the teacher about what sort of data is stored in this field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The PHP class==&lt;br /&gt;
&lt;br /&gt;
If you look at the file &amp;quot;field.class.php&amp;quot; for the URL field type you&#039;ll see that the class is named &amp;quot;data_field_url&amp;quot; and it is a subclass of &amp;quot;data_field_base&amp;quot;. This is very important - the class &amp;quot;data_field_base&amp;quot; (defined in /moodle/mod/data/lib.php, by the way) defines some of the core behaviours without which your field will not work.&lt;br /&gt;
&lt;br /&gt;
Your class&#039;s name should match the subfolder you have created. For example, if we&#039;re creating a new data type called &amp;quot;Tastiness&amp;quot;, we want to create our plugin in a folder &amp;quot;tastiness&amp;quot; and the PHP class should be data_field_tastiness. The class should also define a class variable $type, which again should use the same name - in our example, we&#039;d give it the value &#039;tastiness&#039;. So the top of our field.class.php would look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 class data_field_tastiness extends data_field_base {&lt;br /&gt;
    var $type = &#039;tastiness&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to take an existing field type, duplicate it, and rename it to a new type (which you can modify later), this is all you need to do. You might like to try this (again, the URL field is a good one to start with) and see how it works.&lt;br /&gt;
&lt;br /&gt;
The base class defines some simple behaviours which you can override in your subclass, to make the plugin do exactly what you want. For example:&lt;br /&gt;
&lt;br /&gt;
 function display_add_field($recordid=0) // Return some HTML for use when a user is adding/editing a record&lt;br /&gt;
 function display_browse_field($recordid, $template) // Return some HTML for displaying a record&lt;br /&gt;
 function update_content($recordid, $value, $name=&#039;&#039;) // Used when a user stores data for a record&lt;br /&gt;
 function get_sort_sql($fieldname) // Specify SQL for how this field should be sorted&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t bother to specify these functions inside your new class, then the default behaviours specified by data_field_base will be used. Simply add these functions to your new class to make something different happen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be continued...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{Developer}}&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Database_fields&amp;diff=14757</id>
		<title>Development:Database fields</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Database_fields&amp;diff=14757"/>
		<updated>2006-08-23T12:36:43Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle&#039;s [[Database module]] has some predefined [[Fields|field types]] (text, date, URL, picture, etc), but you can customise this to create new field types. For example, you might like to create:&lt;br /&gt;
&lt;br /&gt;
; Discipline-specific field types : e.g. &amp;quot;Protein PDB code&amp;quot; - people can enter the PDB code for a protein, and then the display could (for example) include a 3D viewer for the protein structure, or link out to molecular databases.&lt;br /&gt;
; Institution-specific field types :  e.g. &amp;quot;library reference number&amp;quot; - people can enter a number into the field, and this is automatically turned into a direct link to your library webpages&lt;br /&gt;
; Module-specific field types : e.g. &amp;quot;wiki page&amp;quot; - people see a drop-down list containing the names of pages in your wiki, and can choose which page this particular entry refers to&lt;br /&gt;
&lt;br /&gt;
==Basic concepts==&lt;br /&gt;
&lt;br /&gt;
To create a new field type in Moodle we need to create a new folder in /moodle/mod/data/field. Inside this folder will be PHP code telling Moodle:&lt;br /&gt;
&lt;br /&gt;
# What HTML to output when people are looking at a record in the database&lt;br /&gt;
# What form fields to output when people are adding/editing a record in the database&lt;br /&gt;
# What to do (what info to store) when someone submits the record-add/edit form&lt;br /&gt;
# What form fields to output when the teacher is adding/editing an instance of the field&lt;br /&gt;
# What to do (what info to store) when the teacher submits the field-add/edit form&lt;br /&gt;
&lt;br /&gt;
==The files==&lt;br /&gt;
&lt;br /&gt;
The best way to get an understanding of the plugin architecture is to look at an existing field type - I recommend you look at &#039;&#039;&#039;the URL field type&#039;&#039;&#039;, stored in /moodle/mod/data/field/url. There are three files:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;field.class.php&#039;&#039;&#039; - the most important file, this defines a PHP class which defines the majority of the data field&#039;s behaviour. See below for more detail on this.&lt;br /&gt;
* &#039;&#039;&#039;mod.html&#039;&#039;&#039; - contains a HTML &amp;quot;fragment&amp;quot; defining how the form fields will appear when the teacher is adding/editing an instance of the field.&lt;br /&gt;
* &#039;&#039;&#039;icon.gif&#039;&#039;&#039; - the icon to be displayed along with the field, as a visual cue to the teacher about what sort of data is stored in this field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The PHP class==&lt;br /&gt;
&lt;br /&gt;
If you look at the file &amp;quot;field.class.php&amp;quot; for the URL field type you&#039;ll see that the class is named &amp;quot;data_field_url&amp;quot; and it is a subclass of &amp;quot;data_field_base&amp;quot;. This is very important - the class &amp;quot;data_field_base&amp;quot; (defined in /moodle/mod/data/lib.php, by the way) defines some of the core behaviours without which your field will not work.&lt;br /&gt;
&lt;br /&gt;
Your class&#039;s name should match the subfolder you have created. For example, if we&#039;re creating a new data type called &amp;quot;Tastiness&amp;quot;, we want to create our plugin in a folder &amp;quot;tastiness&amp;quot; and the PHP class should be data_field_tastiness. The class should also define a class variable $type, which again should use the same name - in our example, we&#039;d give it the value &#039;tastiness&#039;. So the top of our field.class.php would look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 class data_field_tastiness extends data_field_base {&lt;br /&gt;
    var $type = &#039;tastiness&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to take an existing field type, duplicate it, and rename it to a new type (which you can modify later), this is all you need to do. You might like to try this (again, the URL field is a good one to start with) and see how it works.&lt;br /&gt;
&lt;br /&gt;
The base class defines some simple behaviours which you can override in your subclass, to make the plugin do exactly what you want. For example:&lt;br /&gt;
&lt;br /&gt;
 function display_add_field($recordid=0) // Return some HTML for use when a user is adding/editing a record&lt;br /&gt;
 function display_browse_field($recordid, $template) // Return some HTML for displaying a record&lt;br /&gt;
 function update_content($recordid, $value, $name=&#039;&#039;) // Used when a user stores data for a record&lt;br /&gt;
 function get_sort_sql($fieldname) // Specify SQL for how this field should be sorted&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t bother to specify these functions inside your new class, then the default behaviours specified by data_field_base will be used. Simply add these functions to your new class to make something different happen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be continued...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Database_fields&amp;diff=14756</id>
		<title>Development:Database fields</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Database_fields&amp;diff=14756"/>
		<updated>2006-08-23T12:35:45Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: Adding some developer docs for database fields&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle&#039;s [[Database module]] has some predefined [[Fields|field types]] (text, date, URL, picture, etc), but you can customise this to create new field types. For example, you might like to create:&lt;br /&gt;
&lt;br /&gt;
* Discipline-specific field types&lt;br /&gt;
** e.g. &amp;quot;Protein PDB code&amp;quot; - people can enter the PDB code for a protein, and then the display could (for example) include a 3D viewer for the protein structure, or link out to molecular databases.&lt;br /&gt;
* Institution-specific field types&lt;br /&gt;
** e.g. &amp;quot;library reference number&amp;quot; - people can enter a number into the field, and this is automatically turned into a direct link to your library webpages&lt;br /&gt;
* Module-specific field types&lt;br /&gt;
** e.g. &amp;quot;wiki page&amp;quot; - people see a drop-down list containing the names of pages in your wiki, and can choose which page this particular entry refers to&lt;br /&gt;
&lt;br /&gt;
==Basic concepts==&lt;br /&gt;
&lt;br /&gt;
To create a new field type in Moodle we need to create a new folder in /moodle/mod/data/field. Inside this folder will be PHP code telling Moodle:&lt;br /&gt;
&lt;br /&gt;
# What HTML to output when people are looking at a record in the database&lt;br /&gt;
# What form fields to output when people are adding/editing a record in the database&lt;br /&gt;
# What to do (what info to store) when someone submits the record-add/edit form&lt;br /&gt;
# What form fields to output when the teacher is adding/editing an instance of the field&lt;br /&gt;
# What to do (what info to store) when the teacher submits the field-add/edit form&lt;br /&gt;
&lt;br /&gt;
==The files==&lt;br /&gt;
&lt;br /&gt;
The best way to get an understanding of the plugin architecture is to look at an existing field type - I recommend you look at &#039;&#039;&#039;the URL field type&#039;&#039;&#039;, stored in /moodle/mod/data/field/url. There are three files:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;field.class.php&#039;&#039;&#039; - the most important file, this defines a PHP class which defines the majority of the data field&#039;s behaviour. See below for more detail on this.&lt;br /&gt;
* &#039;&#039;&#039;mod.html&#039;&#039;&#039; - contains a HTML &amp;quot;fragment&amp;quot; defining how the form fields will appear when the teacher is adding/editing an instance of the field.&lt;br /&gt;
* &#039;&#039;&#039;icon.gif&#039;&#039;&#039; - the icon to be displayed along with the field, as a visual cue to the teacher about what sort of data is stored in this field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The PHP class==&lt;br /&gt;
&lt;br /&gt;
If you look at the file &amp;quot;field.class.php&amp;quot; for the URL field type you&#039;ll see that the class is named &amp;quot;data_field_url&amp;quot; and it is a subclass of &amp;quot;data_field_base&amp;quot;. This is very important - the class &amp;quot;data_field_base&amp;quot; (defined in /moodle/mod/data/lib.php, by the way) defines some of the core behaviours without which your field will not work.&lt;br /&gt;
&lt;br /&gt;
Your class&#039;s name should match the subfolder you have created. For example, if we&#039;re creating a new data type called &amp;quot;Tastiness&amp;quot;, we want to create our plugin in a folder &amp;quot;tastiness&amp;quot; and the PHP class should be data_field_tastiness. The class should also define a class variable $type, which again should use the same name - in our example, we&#039;d give it the value &#039;tastiness&#039;. So the top of our field.class.php would look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 class data_field_tastiness extends data_field_base {&lt;br /&gt;
    var $type = &#039;tastiness&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to take an existing field type, duplicate it, and rename it to a new type (which you can modify later), this is all you need to do. You might like to try this (again, the URL field is a good one to start with) and see how it works.&lt;br /&gt;
&lt;br /&gt;
The base class defines some simple behaviours which you can override in your subclass, to make the plugin do exactly what you want. For example:&lt;br /&gt;
&lt;br /&gt;
 function display_add_field($recordid=0) // Return some HTML for use when a user is adding/editing a record&lt;br /&gt;
 function display_browse_field($recordid, $template) // Return some HTML for displaying a record&lt;br /&gt;
 function update_content($recordid, $value, $name=&#039;&#039;) // Used when a user stores data for a record&lt;br /&gt;
 function get_sort_sql($fieldname) // Specify SQL for how this field should be sorted&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t bother to specify these functions inside your new class, then the default behaviours specified by data_field_base will be used. Simply add these functions to your new class to make something different happen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be continued...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=14755</id>
		<title>Development:Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=14755"/>
		<updated>2006-08-23T12:04:54Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* How you can contribute */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Guidelines==&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle architecture]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
*[[Tracker]] explains the Moodle Tracker for keeping track of bugs, issues, feature requests etc &lt;br /&gt;
&lt;br /&gt;
== Resources and tools ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[http://tracker.moodle.org/ Moodle bug tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
*[http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
*[http://moodle.cvs.sourceforge.net/moodle/moodle/ CVS code] - browse the Moodle code via the web&lt;br /&gt;
*[http://moodle.org/xref/nav.html?index.html Cross reference] - phpxref output for browsing Moodle source code&lt;br /&gt;
*[http://moodle.sourceforge.net/dhawes-phpdoc/ Moodle PHP doc reference] - automatically generated documentation&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
*[http://developer.yahoo.com/yui YUI documentation] - YUI is the official AJAX library in moodle.&lt;br /&gt;
*[[Setting up Eclipse for Moodle development]] - Eclipse is a great editor to use for php development, if you can work out how to set it up.&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to HEAD&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for &#039;Modular&#039;. There are many different types of components that you can contribute that can be plugged into Moodle to provide additional functionality. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. The following types of plugins currently exist (in alphabetical order):&lt;br /&gt;
*[[Modules (developer)|Activity modules]]&lt;br /&gt;
*[[Assignment types]]&lt;br /&gt;
*[[Authentication|Authentication methods]]&lt;br /&gt;
*[[Blocks Howto|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Database fields (developer)|Database fields]]&lt;br /&gt;
*[[Database presets]]&lt;br /&gt;
*[[Enrolment plugins (developer)|Enrolment plugins]]&lt;br /&gt;
*[[Filters (developer)|Filters]]&lt;br /&gt;
*[[Question import/export formats]]&lt;br /&gt;
*[[Question types]]&lt;br /&gt;
*[[Quiz reports]]&lt;br /&gt;
*[[Resource types]]&lt;br /&gt;
*[[SSO plugins]]&lt;br /&gt;
&lt;br /&gt;
There are also ways you can contribute that don&#039;t involve PHP programming:&lt;br /&gt;
*[[Themes]]&lt;br /&gt;
*[[Translation]]&lt;br /&gt;
*[[Database Schemas|Database schemas]]&lt;br /&gt;
&lt;br /&gt;
You can also help a lot by&lt;br /&gt;
*[[Tests|Testing]]&lt;br /&gt;
*[[Bug tracker|Participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystalize on the forums they can be summarized in this wiki, either as part of the [[Roadmap]] or in the form of [[Developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer conference|Developer conferences]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes]] or on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for contributed code==&lt;br /&gt;
Many Moodle users contribute code for the benefit of other Moodle users. This can take the form of new activity modules, blocks, themes, resource plug-ins, assignment plug-ins, question type plug-ins, question import/export formats, quiz report plug-ins, course formats, ... This code is initially posted on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course and then often go into the [http://cvs.sourceforge.net/viewcvs.py/moodle/contrib/ contrib area] of the Moodle [[CVS]] repository. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. Developer documentation for these components should be listed here.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[es:Documentación para Desarrolladores]]&lt;br /&gt;
[[fr:Documentation développeur]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=14754</id>
		<title>Development:Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=14754"/>
		<updated>2006-08-23T12:04:42Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* How you can contribute */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Guidelines==&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle architecture]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
*[[Tracker]] explains the Moodle Tracker for keeping track of bugs, issues, feature requests etc &lt;br /&gt;
&lt;br /&gt;
== Resources and tools ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[http://tracker.moodle.org/ Moodle bug tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
*[http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
*[http://moodle.cvs.sourceforge.net/moodle/moodle/ CVS code] - browse the Moodle code via the web&lt;br /&gt;
*[http://moodle.org/xref/nav.html?index.html Cross reference] - phpxref output for browsing Moodle source code&lt;br /&gt;
*[http://moodle.sourceforge.net/dhawes-phpdoc/ Moodle PHP doc reference] - automatically generated documentation&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
*[http://developer.yahoo.com/yui YUI documentation] - YUI is the official AJAX library in moodle.&lt;br /&gt;
*[[Setting up Eclipse for Moodle development]] - Eclipse is a great editor to use for php development, if you can work out how to set it up.&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to HEAD&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for &#039;Modular&#039;. There are many different types of components that you can contribute that can be plugged into Moodle to provide additional functionality. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. The following types of plugins currently exist (in alphabetical order):&lt;br /&gt;
*[[Modules (developer)|Activity modules]]&lt;br /&gt;
*[[Assignment types]]&lt;br /&gt;
*[[Authentication|Authentication methods]]&lt;br /&gt;
*[[Blocks Howto|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Database fields(developer)|Database fields]]&lt;br /&gt;
*[[Database presets]]&lt;br /&gt;
*[[Enrolment plugins (developer)|Enrolment plugins]]&lt;br /&gt;
*[[Filters (developer)|Filters]]&lt;br /&gt;
*[[Question import/export formats]]&lt;br /&gt;
*[[Question types]]&lt;br /&gt;
*[[Quiz reports]]&lt;br /&gt;
*[[Resource types]]&lt;br /&gt;
*[[SSO plugins]]&lt;br /&gt;
&lt;br /&gt;
There are also ways you can contribute that don&#039;t involve PHP programming:&lt;br /&gt;
*[[Themes]]&lt;br /&gt;
*[[Translation]]&lt;br /&gt;
*[[Database Schemas|Database schemas]]&lt;br /&gt;
&lt;br /&gt;
You can also help a lot by&lt;br /&gt;
*[[Tests|Testing]]&lt;br /&gt;
*[[Bug tracker|Participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystalize on the forums they can be summarized in this wiki, either as part of the [[Roadmap]] or in the form of [[Developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer conference|Developer conferences]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes]] or on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for contributed code==&lt;br /&gt;
Many Moodle users contribute code for the benefit of other Moodle users. This can take the form of new activity modules, blocks, themes, resource plug-ins, assignment plug-ins, question type plug-ins, question import/export formats, quiz report plug-ins, course formats, ... This code is initially posted on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course and then often go into the [http://cvs.sourceforge.net/viewcvs.py/moodle/contrib/ contrib area] of the Moodle [[CVS]] repository. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. Developer documentation for these components should be listed here.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[es:Documentación para Desarrolladores]]&lt;br /&gt;
[[fr:Documentation développeur]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=14258</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=14258"/>
		<updated>2006-08-11T13:37:58Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Version 1.7 - Expected August 2006 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This roadmap collects the best information about upcoming features in Moodle.   It is not 100% certain - features may change according to available funding and developers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version 1.7 - Expected August 2006 ==&lt;br /&gt;
&lt;br /&gt;
* [[Roles]] - Moodle.com&lt;br /&gt;
::This new system will allow the creation of custom roles at site, course and activity level&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
::Full compliance with all major accessibility standards&lt;br /&gt;
* [[XML Database Schema]] - Moodle.com &lt;br /&gt;
::Conversion to full database independence using new XML schema for ADOdb.  This will give us support for MS SQL, Oracle etc.&lt;br /&gt;
* [[Repository API]] - Open University&lt;br /&gt;
::Abstract all file operations to an API that allows plugins for different external repositories&lt;br /&gt;
* [[Gradebook]] - Arab Open University&lt;br /&gt;
::The gradebook system will be revamped for performance, switching from our older &amp;quot;pull&amp;quot; model to a &amp;quot;push&amp;quot; model where all modules will now publish grades as necessary into a central table.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza?&lt;br /&gt;
* [[Learning Design export]] - Moodle.com and Open University of The Netherlands&lt;br /&gt;
::We plan to have a very simple export for any Moodle course into IMS LD format, as a proof of concept and to help the community start learning about IMS LD.&lt;br /&gt;
* [[Fields#Latitude.2Flongitude|Latitude/longitude data type]] - Dan Stowell&lt;br /&gt;
::A new field type for database activities, storing geographic locations, with integrated links with [http://earth.google.com Google Earth], [http://www.openstreetmap.org/ OpenStreetMap], and more.&lt;br /&gt;
&lt;br /&gt;
== Version 2.0 - Expected early 2007 ==&lt;br /&gt;
&lt;br /&gt;
* [[IMS Learning Design]] - Moodle.com&lt;br /&gt;
::Support for importing/exporting LD, converting Moodle activities and sequences of activities into a standard format for sharing, and importing standard sequences into Moodle courses&lt;br /&gt;
* [[Conditional activities]] - Moodle.com&lt;br /&gt;
::Allowing dependencies and forced paths through the content&lt;br /&gt;
* [[Metadata]] - Moodle.com&lt;br /&gt;
::Build on the keywords in 1.6 to provide metadata for all activities and courses, linkable to standard lists of metadata such as State-based learning outomes and curricula&lt;br /&gt;
* [[Web Services API]]&lt;br /&gt;
::Providing remote control and access of Moodle services by other systems, as well as sharing of information between Moodle sites with trust relationships.&lt;br /&gt;
* [[Student Information API]]&lt;br /&gt;
::API for integrating external systems for managing student information&lt;br /&gt;
* [[Community hub]] - Moodle.com &lt;br /&gt;
::Leverage above improvements into a system to network Moodles together&lt;br /&gt;
&lt;br /&gt;
== Version 2.1 ==&lt;br /&gt;
&lt;br /&gt;
* [[Site groups|Groups]] &lt;br /&gt;
::Groups can also be defined at the site level, and activities can be assigned to course groups&lt;br /&gt;
* [[Portfolio API]]&lt;br /&gt;
::Interface Moodle activities and repositories to help produce portfolios for internal assessment AND external publication&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
[[es:Planificación]]&lt;br /&gt;
[[fr:Planification]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Database_fields&amp;diff=14257</id>
		<title>Database fields</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Database_fields&amp;diff=14257"/>
		<updated>2006-08-11T13:35:44Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: Added lat/long&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Databases}}&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;field&#039;&#039;&#039; is a named unit of information. Each entry in a [[Database module|database]] can have multiple fields of multiple types e.g. a text field called &#039;favourite color&#039; which allows you to type in your favourite shade, or a menu called &#039;state&#039; that lets you choose one from a list of the 50 that make up the United States of America. By combining several fields with appropriate names and types you should be able to capture all the relevant information about the items in your database.&lt;br /&gt;
&lt;br /&gt;
== Field name and description ==&lt;br /&gt;
&lt;br /&gt;
All fields ask you for a name and a description when you create them. &lt;br /&gt;
NB: You cannot change the field type after it&#039;s saved. You&#039;ll have to create a new field with desired field type. Field names must be unique and they should be short, and sensible! Moodle will not warn you before submitting that you are using a duplicate field name.&lt;br /&gt;
&lt;br /&gt;
Spaces in your field names will automatically be_filled_with_underscores. It appears that at least some special characters are also stripped: &#039;&amp;quot;...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For ex: &amp;quot;I personally achieved...&amp;quot;  will become &amp;lt;nowiki&amp;gt;_I_personally_achieved._&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Field types ==&lt;br /&gt;
&lt;br /&gt;
=== Checkbox ===&lt;br /&gt;
&lt;br /&gt;
Allows one or more checkboxes. Each line in the options box is a different checkbox. The text entered is what will be the case if the checkbox is checked e.g. &#039;valid&#039; for something that can be valid or not. This word will appear beside the checkbox on entry, and then by itself when viewing if the box has been checked. If you wish to ensure that the user actively selects one of the options you can use [[Fields#Radio buttons|radio buttons]] instead&lt;br /&gt;
&lt;br /&gt;
Multiple checboxes could be use, for example, in a movie database that has Horror, Comedy, Western etc. checkboxes for different film genres, and you would be able to check more than one in the case of Horror-Comedies or Comedy-Westerns. The [[Fields#Menu (multi-select)|menu (multi-select)]] field also achieves this, but clicking multiple checkboxes is usually a more obvious interface.&lt;br /&gt;
&lt;br /&gt;
=== Date ===&lt;br /&gt;
&lt;br /&gt;
Allows users to enter a date by picking a day, month and year from a drop down list.&lt;br /&gt;
&lt;br /&gt;
=== File ===&lt;br /&gt;
&lt;br /&gt;
Asks users to upload a file from their computer. If it is an image file then the picture field may be a better choice.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
&lt;br /&gt;
The text entered in the &#039;&#039;options&#039;&#039; area will be presented as a drop-down list for the user to choose from. Each line become a different option.&lt;br /&gt;
&lt;br /&gt;
=== Menu (Multi-select) ===&lt;br /&gt;
&lt;br /&gt;
The text entered in the &#039;&#039;options&#039;&#039; area will be presented as a list for the user to choose from and each line become a different option. By holding down control or shift as they click, users will be able to select multiple options. This is a fairly advanced computer skill so it may be wise to use multiple checkboxes instead.&lt;br /&gt;
&lt;br /&gt;
=== Number ===&lt;br /&gt;
&lt;br /&gt;
Asks the user to enter a number. The number must be an integer, though it can be negative ( e.g. ...,-2,-1,0,1,2,3,...). If you enter anything else but numbers and a leading minus sign the number will be truncated or converted to zero e.g. &amp;quot;3.14&amp;quot; becomes &amp;quot;3&amp;quot;, &amp;quot;1,000,000&amp;quot; becomes &amp;quot;1&amp;quot; and &amp;quot;six&amp;quot; becomes &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Picture ===&lt;br /&gt;
&lt;br /&gt;
The user can upload an image file from their computer.&lt;br /&gt;
&lt;br /&gt;
=== Radio buttons ===&lt;br /&gt;
&lt;br /&gt;
Allows the user to choose one from a range of options. If the user doesn&#039;t select any of these options then they will be prompted to do so and can only submit the entry when one option is chosen.&lt;br /&gt;
&lt;br /&gt;
If you only have two options and they are opposites (true/false, yes/no) then you could simply use a single checkbox instead. However checkboxes default to their unchecked status and so people could submit without actively selecting one of the options. This may not always be appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
&lt;br /&gt;
Users can enter text up to 60 characters in length. For longer text, or for text that requires formatting such as headers and bullet points, you can use a textarea field.&lt;br /&gt;
&lt;br /&gt;
=== Textarea ===&lt;br /&gt;
&lt;br /&gt;
Allows users to enter a long piece of text including formatting similar to that found when creating forum posts.&lt;br /&gt;
Max number of characters in text area = ?&lt;br /&gt;
&lt;br /&gt;
=== URL ===&lt;br /&gt;
&lt;br /&gt;
Ask the user to enter a URL. If you select &#039;&#039;autolink&#039;&#039; then the URL becomes a clickable link. If you also enter a &#039;&#039;forced name for the link&#039;&#039; then that text will be used for the hyperlink. For example in a database of authors you may wish people to enter the author&#039;s website. If you enter the text &#039;homepage&#039; as a forced name then clicking on text &amp;quot;homepage&amp;quot; will take you to the entered URL.&lt;br /&gt;
&lt;br /&gt;
=== Latitude/longitude ===&lt;br /&gt;
&lt;br /&gt;
Users can enter a geographic location, by specifying the location&#039;s latitude and longitude. For example, [http://moodle.com/hq/ Moodle HQ] is at latitude -31.9545, longitude 115.877. When viewing the record, links are automatically generated linking to geographic data services such as [http://earth.google.com Google Earth], [http://www.openstreetmap.org/ OpenStreetMap], [http://www.geabios.com/ GeaBios], and more. (The teacher can choose which of those links appear, if any.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Teacher]]&lt;br /&gt;
[[Category:Database]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=14254</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=14254"/>
		<updated>2006-08-11T13:21:18Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Version 1.7 - Expected August 2006 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This roadmap collects the best information about upcoming features in Moodle.   It is not 100% certain - features may change according to available funding and developers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version 1.7 - Expected August 2006 ==&lt;br /&gt;
&lt;br /&gt;
* [[Roles]] - Moodle.com&lt;br /&gt;
::This new system will allow the creation of custom roles at site, course and activity level&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
::Full compliance with all major accessibility standards&lt;br /&gt;
* [[XML Database Schema]] - Moodle.com &lt;br /&gt;
::Conversion to full database independence using new XML schema for ADOdb.  This will give us support for MS SQL, Oracle etc.&lt;br /&gt;
* [[Repository API]] - Open University&lt;br /&gt;
::Abstract all file operations to an API that allows plugins for different external repositories&lt;br /&gt;
* [[Gradebook]] - Arab Open University&lt;br /&gt;
::The gradebook system will be revamped for performance, switching from our older &amp;quot;pull&amp;quot; model to a &amp;quot;push&amp;quot; model where all modules will now publish grades as necessary into a central table.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza?&lt;br /&gt;
* [[Learning Design export]] - Moodle.com and Open University of The Netherlands&lt;br /&gt;
::We plan to have a very simple export for any Moodle course into IMS LD format, as a proof of concept and to help the community start learning about IMS LD.&lt;br /&gt;
* Latitude/longitude data type - Dan Stowell&lt;br /&gt;
::A new field type for database activities, storing geographic locations, with integrated links with [http://earth.google.com Google Earth], [http://www.openstreetmap.org/ OpenStreetMap], and more.&lt;br /&gt;
&lt;br /&gt;
== Version 2.0 - Expected early 2007 ==&lt;br /&gt;
&lt;br /&gt;
* [[IMS Learning Design]] - Moodle.com&lt;br /&gt;
::Support for importing/exporting LD, converting Moodle activities and sequences of activities into a standard format for sharing, and importing standard sequences into Moodle courses&lt;br /&gt;
* [[Conditional activities]] - Moodle.com&lt;br /&gt;
::Allowing dependencies and forced paths through the content&lt;br /&gt;
* [[Metadata]] - Moodle.com&lt;br /&gt;
::Build on the keywords in 1.6 to provide metadata for all activities and courses, linkable to standard lists of metadata such as State-based learning outomes and curricula&lt;br /&gt;
* [[Web Services API]]&lt;br /&gt;
::Providing remote control and access of Moodle services by other systems, as well as sharing of information between Moodle sites with trust relationships.&lt;br /&gt;
* [[Student Information API]]&lt;br /&gt;
::API for integrating external systems for managing student information&lt;br /&gt;
* [[Community hub]] - Moodle.com &lt;br /&gt;
::Leverage above improvements into a system to network Moodles together&lt;br /&gt;
&lt;br /&gt;
== Version 2.1 ==&lt;br /&gt;
&lt;br /&gt;
* [[Site groups|Groups]] &lt;br /&gt;
::Groups can also be defined at the site level, and activities can be assigned to course groups&lt;br /&gt;
* [[Portfolio API]]&lt;br /&gt;
::Interface Moodle activities and repositories to help produce portfolios for internal assessment AND external publication&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
[[es:Planificación]]&lt;br /&gt;
[[fr:Planification]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=14253</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Roadmap&amp;diff=14253"/>
		<updated>2006-08-11T13:20:58Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Version 1.7 - Expected August 2006 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This roadmap collects the best information about upcoming features in Moodle.   It is not 100% certain - features may change according to available funding and developers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version 1.7 - Expected August 2006 ==&lt;br /&gt;
&lt;br /&gt;
* [[Roles]] - Moodle.com&lt;br /&gt;
::This new system will allow the creation of custom roles at site, course and activity level&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
::Full compliance with all major accessibility standards&lt;br /&gt;
* [[XML Database Schema]] - Moodle.com &lt;br /&gt;
::Conversion to full database independence using new XML schema for ADOdb.  This will give us support for MS SQL, Oracle etc.&lt;br /&gt;
* [[Repository API]] - Open University&lt;br /&gt;
::Abstract all file operations to an API that allows plugins for different external repositories&lt;br /&gt;
* [[Gradebook]] - Arab Open University&lt;br /&gt;
::The gradebook system will be revamped for performance, switching from our older &amp;quot;pull&amp;quot; model to a &amp;quot;push&amp;quot; model where all modules will now publish grades as necessary into a central table.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza?&lt;br /&gt;
* [[Learning Design export]] - Moodle.com and Open University of The Netherlands&lt;br /&gt;
::We plan to have a very simple export for any Moodle course into IMS LD format, as a proof of concept and to help the community start learning about IMS LD.&lt;br /&gt;
* Latitude/longitude data type - Dan Stowell&lt;br /&gt;
::A new field type for database activities, storing geographic locations, with integrated links with [http://earth.google.com Google Earth], [http://www.openstreetmap.org/OpenStreetMap], and more.&lt;br /&gt;
&lt;br /&gt;
== Version 2.0 - Expected early 2007 ==&lt;br /&gt;
&lt;br /&gt;
* [[IMS Learning Design]] - Moodle.com&lt;br /&gt;
::Support for importing/exporting LD, converting Moodle activities and sequences of activities into a standard format for sharing, and importing standard sequences into Moodle courses&lt;br /&gt;
* [[Conditional activities]] - Moodle.com&lt;br /&gt;
::Allowing dependencies and forced paths through the content&lt;br /&gt;
* [[Metadata]] - Moodle.com&lt;br /&gt;
::Build on the keywords in 1.6 to provide metadata for all activities and courses, linkable to standard lists of metadata such as State-based learning outomes and curricula&lt;br /&gt;
* [[Web Services API]]&lt;br /&gt;
::Providing remote control and access of Moodle services by other systems, as well as sharing of information between Moodle sites with trust relationships.&lt;br /&gt;
* [[Student Information API]]&lt;br /&gt;
::API for integrating external systems for managing student information&lt;br /&gt;
* [[Community hub]] - Moodle.com &lt;br /&gt;
::Leverage above improvements into a system to network Moodles together&lt;br /&gt;
&lt;br /&gt;
== Version 2.1 ==&lt;br /&gt;
&lt;br /&gt;
* [[Site groups|Groups]] &lt;br /&gt;
::Groups can also be defined at the site level, and activities can be assigned to course groups&lt;br /&gt;
* [[Portfolio API]]&lt;br /&gt;
::Interface Moodle activities and repositories to help produce portfolios for internal assessment AND external publication&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
[[es:Planificación]]&lt;br /&gt;
[[fr:Planification]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Wikindx&amp;diff=14096</id>
		<title>Development:Wikindx</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Wikindx&amp;diff=14096"/>
		<updated>2006-08-09T07:59:53Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Notes on the possible integration of [http://wikindx.sourceforge.net/index2.html WIKINDX] with Moodle.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://wikindx.sourceforge.net/index2.html WIKINDX]is a free bibliographic and quotations/notes management and article authoring system designed either for single use (on a variety of operating sytems) or multi-user collaborative use across the internet.&lt;br /&gt;
&lt;br /&gt;
Please also see the Moodle Discussion at http://moodle.org/mod/forum/discuss.php?d=23022&lt;br /&gt;
&lt;br /&gt;
==Wikindx filter for Moodle==&lt;br /&gt;
&lt;br /&gt;
Dan Stowell has created a &amp;quot;Wikindx filter&amp;quot; for Moodle which allows you to cross-link to a wikindx entry by typing (for example) wikindx:646. The filter is in contrib CVS, named &amp;quot;filter_wikindx&amp;quot; or can be downloaded at http://download.moodle.org/download.php/modules/filter_wikindx.zip&lt;br /&gt;
&lt;br /&gt;
==Outline thoughts on integration...==&lt;br /&gt;
&lt;br /&gt;
1. Do we need to allowing a user already logged into a Moodle site to be seamlessly logged in to a wikindx? Or maybe just use the same login details between the two (like the way that Moodle.org and MoodleDocs works).  If necessary, something could be added to wikindx to enable this. In most cases though, with the right config settings, wikindx will allow any read only request without requiring login.&lt;br /&gt;
&lt;br /&gt;
2. Another issue is how to integrate the paper writing function of Wikindx into Moodle. What about use of the HTML editor? Could it be integrated some way with the Netpublish module? Imagine students or professors being able to use it to write academic papers and then publish those on the Moodle site.  Currently wikindx publishes papers solely to RTF.  It should be simple to publish to HTML since that&#039;s what the raw document is anyway (a matter of adding HTML header/footer, formatting citations and appending bibliographies -- most of this code is already in wikindx but not (yet) made available to the word processor).  Compared to other HTML editors, the only additional options wikindx offers in its version are buttons to import citations, metadata and insert footnotes.  All the rest (barring stats, timestamps, save etc.) are font/text formatting.&lt;br /&gt;
&lt;br /&gt;
3. For the filter above, how do you decide what bibliographic style to present in (APA, Chicago, IEEE etc.)?  Presumably, this is something that could be set in the filter config file.  (Although I haven&#039;t seen the filter in operation, I&#039;m assuming it picks up a properly formatted reference for insert.  Either short (Grimshaw, 2006) or long (Grimshaw, Mark N. 2006, WIKINDX [OSS].) for example. Is the only method of citation available parenthetical? Is it possible to use endnotes (or footnotes) as well?  Yes, endnote/footnote styles are available as well.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Note from DS: No, at present the Wikindx filter simply displays the text &amp;quot;wikindx:646&amp;quot; (for example). It&#039;s a very simple start and I hope that people with more knowledge of Wikindx will be able to modify it to extract the properly-formatted reference direct from Wikindx. If wikindx had a system whereby a certain URL call would supply the reference text in whatever style was configured for wikindx, this would be a good way to display the citation nicely within Moodle. Does such a call exist? I don&#039;t think so. Something like mywikindx.com/index.php?&#039;&#039;&#039;action=resourceGrabCitation&#039;&#039;&#039;&amp;amp;id=501 would be required.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
4. Mark, your remarks in 2 have gotten me thinking. Although not everyone likes the Moodle HTML area editor that much, it still is the standard way of creating text in Moodle and perhaps a way of integrating Wikindx would be to add buttons for Wikindx to it, just like the kind described above in Wikindx&#039;s native editor. I needed to integrate a hieroglyph editor into my site and Janne Mikkonen helped me to add it through a button in the html editor that pops up a window, in which the student type the hieroglyphs they need, and then click a button to have them inserted back into the editor-similar to the way the insert image popup works. I would imagine something similar could be done with Wikindx. The advantage of this is that it would make Wikindx accessible anywhere within Moodle, rather than just as a separate module. You might also want a standalone module option whereby students could collaborate on creating bibliographies together.  Adding the appropriate buttons would be my suggestion.  In wikindx, citations are added by the popup automatically adding something like&lt;br /&gt;
[cite]146:22-23[/cite]&lt;br /&gt;
where 146 is the resource ID in the database and 22-23 are the page nos. This can be added via a cite button or will be appended to an inserted quotation/paraphrase via the wikindx &#039;insert metadata&#039; button.  Footnotes (i.e. parenthetical thoughts as opposed to citation footnotes - WIKINDX does handle those footnotes/endnotes as well) are inserted via a button which encloses the inserted footnote in:&lt;br /&gt;
[footnote]....[/footnote]&lt;br /&gt;
&lt;br /&gt;
Exporting to RTF, the cite tags are substituted with the formatted citation marker (in-text or footnote/endnote), bibliographic information is extracted and appended to a bibliography and footnote tags are converted to RTF footnotes.  Of course, all HTML code (font/text formatting, tables, lists, images etc.) are converted to their appropriate RTF code too.&lt;br /&gt;
&lt;br /&gt;
5. Re the citation/bibliographic formatting, the PHP code for this has been extracted from wikindx and made available to other OSS apps at http://bibliophile.sourceforge.net (I think Aigaion and Bibliograph use it or are about to) so it may be easy enough for Moodle to use this too.  In fact doubly easy if moodle interfaces with a wikindx because the quickest way to set up the formatting engine is to provide data to it in exactly the same PHP associative array that wikindx natively expects.&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Wikindx&amp;diff=14095</id>
		<title>Development:Wikindx</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Wikindx&amp;diff=14095"/>
		<updated>2006-08-09T07:59:37Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Notes on the possible integration of [http://wikindx.sourceforge.net/index2.html WIKINDX] with Moodle.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://wikindx.sourceforge.net/index2.html WIKINDX]is a free bibliographic and quotations/notes management and article authoring system designed either for single use (on a variety of operating sytems) or multi-user collaborative use across the internet.&lt;br /&gt;
&lt;br /&gt;
Please also see the Moodle Discussion at http://moodle.org/mod/forum/discuss.php?d=23022&lt;br /&gt;
&lt;br /&gt;
==Wikindx filter for Moodle==&lt;br /&gt;
&lt;br /&gt;
Dan Stowell has created a &amp;quot;Wikindx filter&amp;quot; for Moodle which allows you to cross-link to a wikindx entry by typing (for example) wikindx:646. The filter is in contrib CVS, named &amp;quot;filter_wikindx&amp;quot; or can be downloaded at http://download.moodle.org/download.php/modules/filter_wikindx.zip&lt;br /&gt;
&lt;br /&gt;
==Outline thoughts on integration...==&lt;br /&gt;
&lt;br /&gt;
1. Do we need to allowing a user already logged into a Moodle site to be seamlessly logged in to a wikindx? Or maybe just use the same login details between the two (like the way that Moodle.org and MoodleDocs works).  If necessary, something could be added to wikindx to enable this. In most cases though, with the right config settings, wikindx will allow any read only request without requiring login.&lt;br /&gt;
&lt;br /&gt;
2. Another issue is how to integrate the paper writing function of Wikindx into Moodle. What about use of the HTML editor? Could it be integrated some way with the Netpublish module? Imagine students or professors being able to use it to write academic papers and then publish those on the Moodle site.  Currently wikindx publishes papers solely to RTF.  It should be simple to publish to HTML since that&#039;s what the raw document is anyway (a matter of adding HTML header/footer, formatting citations and appending bibliographies -- most of this code is already in wikindx but not (yet) made available to the word processor).  Compared to other HTML editors, the only additional options wikindx offers in its version are buttons to import citations, metadata and insert footnotes.  All the rest (barring stats, timestamps, save etc.) are font/text formatting.&lt;br /&gt;
&lt;br /&gt;
3. For the filter above, how do you decide what bibliographic style to present in (APA, Chicago, IEEE etc.)?  Presumably, this is something that could be set in the filter config file.  (Although I haven&#039;t seen the filter in operation, I&#039;m assuming it picks up a properly formatted reference for insert.  Either short (Grimshaw, 2006) or long (Grimshaw, Mark N. 2006, WIKINDX [OSS].) for example. Is the only method of citation available parenthetical? Is it possible to use endnotes (or footnotes) as well?  Yes, endnote/footnote styles are available as well.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Note from DS: No, at present the Wikindx filter simply displays the text &amp;quot;wikindx:646&amp;quot; (for example). It&#039;s a very simple start and I hope that people with more knowledge of Wikindx will be able to modify it to extract the properly-formatted reference direct from Wikindx. If wikindx had a system whereby a certain URL call would supply the reference text in whatever style was configured for wikindx, this would be a good way to display the citation nicely within Moodle. Does such a call exist? I don&#039;t think so. Something like mywikindx.com/index.php&amp;amp;&#039;&#039;&#039;action=resourceGrabCitation&#039;&#039;&#039;&amp;amp;id=501 would be required.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
4. Mark, your remarks in 2 have gotten me thinking. Although not everyone likes the Moodle HTML area editor that much, it still is the standard way of creating text in Moodle and perhaps a way of integrating Wikindx would be to add buttons for Wikindx to it, just like the kind described above in Wikindx&#039;s native editor. I needed to integrate a hieroglyph editor into my site and Janne Mikkonen helped me to add it through a button in the html editor that pops up a window, in which the student type the hieroglyphs they need, and then click a button to have them inserted back into the editor-similar to the way the insert image popup works. I would imagine something similar could be done with Wikindx. The advantage of this is that it would make Wikindx accessible anywhere within Moodle, rather than just as a separate module. You might also want a standalone module option whereby students could collaborate on creating bibliographies together.  Adding the appropriate buttons would be my suggestion.  In wikindx, citations are added by the popup automatically adding something like&lt;br /&gt;
[cite]146:22-23[/cite]&lt;br /&gt;
where 146 is the resource ID in the database and 22-23 are the page nos. This can be added via a cite button or will be appended to an inserted quotation/paraphrase via the wikindx &#039;insert metadata&#039; button.  Footnotes (i.e. parenthetical thoughts as opposed to citation footnotes - WIKINDX does handle those footnotes/endnotes as well) are inserted via a button which encloses the inserted footnote in:&lt;br /&gt;
[footnote]....[/footnote]&lt;br /&gt;
&lt;br /&gt;
Exporting to RTF, the cite tags are substituted with the formatted citation marker (in-text or footnote/endnote), bibliographic information is extracted and appended to a bibliography and footnote tags are converted to RTF footnotes.  Of course, all HTML code (font/text formatting, tables, lists, images etc.) are converted to their appropriate RTF code too.&lt;br /&gt;
&lt;br /&gt;
5. Re the citation/bibliographic formatting, the PHP code for this has been extracted from wikindx and made available to other OSS apps at http://bibliophile.sourceforge.net (I think Aigaion and Bibliograph use it or are about to) so it may be easy enough for Moodle to use this too.  In fact doubly easy if moodle interfaces with a wikindx because the quickest way to set up the formatting engine is to provide data to it in exactly the same PHP associative array that wikindx natively expects.&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Wikindx&amp;diff=14094</id>
		<title>Development:Wikindx</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Wikindx&amp;diff=14094"/>
		<updated>2006-08-09T07:38:41Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Notes on the possible integration of [http://wikindx.sourceforge.net/index2.html WIKINDX] with Moodle.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://wikindx.sourceforge.net/index2.html WIKINDX]is a free bibliographic and quotations/notes management and article authoring system designed either for single use (on a variety of operating sytems) or multi-user collaborative use across the internet.&lt;br /&gt;
&lt;br /&gt;
Please also see the Moodle Discussion at http://moodle.org/mod/forum/discuss.php?d=23022&lt;br /&gt;
&lt;br /&gt;
==Wikindx filter for Moodle==&lt;br /&gt;
&lt;br /&gt;
Dan Stowell has created a &amp;quot;Wikindx filter&amp;quot; for Moodle which allows you to cross-link to a wikindx entry by typing (for example) wikindx:646. The filter is in contrib CVS, named &amp;quot;filter_wikindx&amp;quot; or can be downloaded at http://download.moodle.org/download.php/modules/filter_wikindx.zip&lt;br /&gt;
&lt;br /&gt;
==Outline thoughts on integration...==&lt;br /&gt;
&lt;br /&gt;
1. Do we need to allowing a user already logged into a Moodle site to be seamlessly logged in to a wikindx? Or maybe just use the same login details between the two (like the way that Moodle.org and MoodleDocs works).  If necessary, something could be added to wikindx to enable this. In most cases though, with the right config settings, wikindx will allow any read only request without requiring login.&lt;br /&gt;
&lt;br /&gt;
2. Another issue is how to integrate the paper writing function of Wikindx into Moodle. What about use of the HTML editor? Could it be integrated some way with the Netpublish module? Imagine students or professors being able to use it to write academic papers and then publish those on the Moodle site.  Currently wikindx publishes papers solely to RTF.  It should be simple to publish to HTML since that&#039;s what the raw document is anyway (a matter of adding HTML header/footer, formatting citations and appending bibliographies -- most of this code is already in wikindx but not (yet) made available to the word processor).  Compared to other HTML editors, the only additional options wikindx offers in its version are buttons to import citations, metadata and insert footnotes.  All the rest (barring stats, timestamps, save etc.) are font/text formatting.&lt;br /&gt;
&lt;br /&gt;
3. For the filter above, how do you decide what bibliographic style to present in (APA, Chicago, IEEE etc.)?  Presumably, this is something that could be set in the filter config file.  (Although I haven&#039;t seen the filter in operation, I&#039;m assuming it picks up a properly formatted reference for insert.  Either short (Grimshaw, 2006) or long (Grimshaw, Mark N. 2006, WIKINDX [OSS].) for example. Is the only method of citation available parenthetical? Is it possible to use endnotes (or footnotes) as well?  Yes, endnote/footnote styles are available as well.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Note from DS: No, at present the Wikindx filter simply displays the text &amp;quot;wikindx:646&amp;quot; (for example). It&#039;s a very simple start and I hope that people with more knowledge of Wikindx will be able to modify it to extract the properly-formatted reference direct from Wikindx. If wikindx had a system whereby a certain URL call would supply the reference text in whatever style was configured for wikindx, this would be a good way to display the citation nicely within Moodle. Does such a call exist?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
4. Mark, your remarks in 2 have gotten me thinking. Although not everyone likes the Moodle HTML area editor that much, it still is the standard way of creating text in Moodle and perhaps a way of integrating Wikindx would be to add buttons for Wikindx to it, just like the kind described above in Wikindx&#039;s native editor. I needed to integrate a hieroglyph editor into my site and Janne Mikkonen helped me to add it through a button in the html editor that pops up a window, in which the student type the hieroglyphs they need, and then click a button to have them inserted back into the editor-similar to the way the insert image popup works. I would imagine something similar could be done with Wikindx. The advantage of this is that it would make Wikindx accessible anywhere within Moodle, rather than just as a separate module. You might also want a standalone module option whereby students could collaborate on creating bibliographies together.  Adding the appropriate buttons would be my suggestion.  In wikindx, citations are added by the popup automatically adding something like&lt;br /&gt;
[cite]146:22-23[/cite]&lt;br /&gt;
where 146 is the resource ID in the database and 22-23 are the page nos. This can be added via a cite button or will be appended to an inserted quotation/paraphrase via the wikindx &#039;insert metadata&#039; button.  Footnotes (i.e. parenthetical thoughts as opposed to citation footnotes - WIKINDX does handle those footnotes/endnotes as well) are inserted via a button which encloses the inserted footnote in:&lt;br /&gt;
[footnote]....[/footnote]&lt;br /&gt;
&lt;br /&gt;
Exporting to RTF, the cite tags are substituted with the formatted citation marker (in-text or footnote/endnote), bibliographic information is extracted and appended to a bibliography and footnote tags are converted to RTF footnotes.  Of course, all HTML code (font/text formatting, tables, lists, images etc.) are converted to their appropriate RTF code too.&lt;br /&gt;
&lt;br /&gt;
5. Re the citation/bibliographic formatting, the PHP code for this has been extracted from wikindx and made available to other OSS apps at http://bibliophile.sourceforge.net (I think Aigaion and Bibliograph use it or are about to) so it may be easy enough for Moodle to use this too.  In fact doubly easy if moodle interfaces with a wikindx because the quickest way to set up the formatting engine is to provide data to it in exactly the same PHP associative array that wikindx natively expects.&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Wikindx&amp;diff=14093</id>
		<title>Development:Wikindx</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Wikindx&amp;diff=14093"/>
		<updated>2006-08-09T07:37:01Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Notes on the possible integration of [http://wikindx.sourceforge.net/index2.html WIKINDX] with Moodle.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://wikindx.sourceforge.net/index2.html WIKINDX]is a free bibliographic and quotations/notes management and article authoring system designed either for single use (on a variety of operating sytems) or multi-user collaborative use across the internet.&lt;br /&gt;
&lt;br /&gt;
Please also see the Moodle Discussion at http://moodle.org/mod/forum/discuss.php?d=23022&lt;br /&gt;
&lt;br /&gt;
==Wikindx filter for Moodle==&lt;br /&gt;
&lt;br /&gt;
Dan Stowell has created a &amp;quot;Wikindx filter&amp;quot; for Moodle which allows you to cross-link to a wikindx entry by typing (for example) wikindx:646. The filter is in contrib CVS, named &amp;quot;filter_wikindx&amp;quot; or can be downloaded at http://download.moodle.org/download.php/modules/filter_wikindx.zip&lt;br /&gt;
&lt;br /&gt;
==Outline thoughts on integration...==&lt;br /&gt;
&lt;br /&gt;
1. Do we need to allowing a user already logged into a Moodle site to be seamlessly logged in to a wikindx? Or maybe just use the same login details between the two (like the way that Moodle.org and MoodleDocs works).  If necessary, something could be added to wikindx to enable this. In most cases though, with the right config settings, wikindx will allow any read only request without requiring login.&lt;br /&gt;
&lt;br /&gt;
2. Another issue is how to integrate the paper writing function of Wikindx into Moodle. What about use of the HTML editor? Could it be integrated some way with the Netpublish module? Imagine students or professors being able to use it to write academic papers and then publish those on the Moodle site.  Currently wikindx publishes papers solely to RTF.  It should be simple to publish to HTML since that&#039;s what the raw document is anyway (a matter of adding HTML header/footer, formatting citations and appending bibliographies -- most of this code is already in wikindx but not (yet) made available to the word processor).  Compared to other HTML editors, the only additional options wikindx offers in its version are buttons to import citations, metadata and insert footnotes.  All the rest (barring stats, timestamps, save etc.) are font/text formatting.&lt;br /&gt;
&lt;br /&gt;
3. For the filter above, how do you decide what bibliographic style to present in (APA, Chicago, IEEE etc.)?  Presumably, this is something that could be set in the filter config file.  (Although I haven&#039;t seen the filter in operation, I&#039;m assuming it picks up a properly formatted reference for insert.  Either short (Grimshaw, 2006) or long (Grimshaw, Mark N. 2006, WIKINDX [OSS].) for example. Is the only method of citation available parenthetical? Is it possible to use endnotes (or footnotes) as well?  Yes, endnote/footnote styles are available as well.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Note from DS: No, at present the Wikindx filter simply displays the text &amp;quot;wikindx:646&amp;quot; (for example). It&#039;s a very simple start and I hope that people with more knowledge of Wikindx will be able to modify it to extract the properly-formatted reference direct from Wikindx.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
4. Mark, your remarks in 2 have gotten me thinking. Although not everyone likes the Moodle HTML area editor that much, it still is the standard way of creating text in Moodle and perhaps a way of integrating Wikindx would be to add buttons for Wikindx to it, just like the kind described above in Wikindx&#039;s native editor. I needed to integrate a hieroglyph editor into my site and Janne Mikkonen helped me to add it through a button in the html editor that pops up a window, in which the student type the hieroglyphs they need, and then click a button to have them inserted back into the editor-similar to the way the insert image popup works. I would imagine something similar could be done with Wikindx. The advantage of this is that it would make Wikindx accessible anywhere within Moodle, rather than just as a separate module. You might also want a standalone module option whereby students could collaborate on creating bibliographies together.  Adding the appropriate buttons would be my suggestion.  In wikindx, citations are added by the popup automatically adding something like&lt;br /&gt;
[cite]146:22-23[/cite]&lt;br /&gt;
where 146 is the resource ID in the database and 22-23 are the page nos. This can be added via a cite button or will be appended to an inserted quotation/paraphrase via the wikindx &#039;insert metadata&#039; button.  Footnotes (i.e. parenthetical thoughts as opposed to citation footnotes - WIKINDX does handle those footnotes/endnotes as well) are inserted via a button which encloses the inserted footnote in:&lt;br /&gt;
[footnote]....[/footnote]&lt;br /&gt;
&lt;br /&gt;
Exporting to RTF, the cite tags are substituted with the formatted citation marker (in-text or footnote/endnote), bibliographic information is extracted and appended to a bibliography and footnote tags are converted to RTF footnotes.  Of course, all HTML code (font/text formatting, tables, lists, images etc.) are converted to their appropriate RTF code too.&lt;br /&gt;
&lt;br /&gt;
5. Re the citation/bibliographic formatting, the PHP code for this has been extracted from wikindx and made available to other OSS apps at http://bibliophile.sourceforge.net (I think Aigaion and Bibliograph use it or are about to) so it may be easy enough for Moodle to use this too.  In fact doubly easy if moodle interfaces with a wikindx because the quickest way to set up the formatting engine is to provide data to it in exactly the same PHP associative array that wikindx natively expects.&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Speech_tools&amp;diff=14052</id>
		<title>Speech tools</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Speech_tools&amp;diff=14052"/>
		<updated>2006-08-08T10:11:43Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle has no built-in tools for speech messaging or audioconferencing. However, there are some interesting projects which are working towards enabling the use of voice tools within Moodle, at various stages of maturity:&lt;br /&gt;
&lt;br /&gt;
==Free tools==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.covell.org COVCELL]&#039;&#039;&#039;, an EU-funded project to provide various enhancements for online language learning, including audio conferencing. See also [http://moodle.org/mod/forum/view.php?id=5368 COVCELL discussion forum on moodle.org] The audio conferencing will use a RED5 Flash-based server.&lt;br /&gt;
* Integration of Moodle with &#039;&#039;&#039;[http://gong.ust.hk/ Gong]&#039;&#039;&#039; (requires a Java server)&lt;br /&gt;
* Integration of Moodle with &#039;&#039;&#039;[http://www.dimdim.com/ dimdim]&#039;&#039;&#039; open-source webconferencing system. (Not sure what the server requirements are.)&lt;br /&gt;
* &#039;&#039;&#039;[http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex]&#039;&#039;&#039; Java applets for voice messaging (note: does not require any modifications/additions to the server setup)&lt;br /&gt;
&lt;br /&gt;
==Commercial tools==&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;Horizon Wimba&#039;&#039;&#039; company provides a subsription-based service providing [http://www.horizonwimba.com/products/voicetools/ voice tools] for use in VLEs. Moodle integration of these tools is forthcoming.&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Language_teaching&amp;diff=13979</id>
		<title>Language teaching</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Language_teaching&amp;diff=13979"/>
		<updated>2006-08-06T13:07:08Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [http://moodle.org/course/view.php?id=31 Moodle for language teaching] community area&lt;br /&gt;
* [[Speech tools]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Teacher]]&lt;br /&gt;
[[Category:Discipline-specific Moodling]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Voice_tools&amp;diff=13978</id>
		<title>Voice tools</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Voice_tools&amp;diff=13978"/>
		<updated>2006-08-06T13:04:11Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Speech tools]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Audioconferencing&amp;diff=13977</id>
		<title>Audioconferencing</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Audioconferencing&amp;diff=13977"/>
		<updated>2006-08-06T13:03:47Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Speech tools]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Speech_tools&amp;diff=13976</id>
		<title>Speech tools</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Speech_tools&amp;diff=13976"/>
		<updated>2006-08-06T13:03:18Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle has no built-in tools for speech messaging or audioconferencing. However, there are some interesting projects which are working towards enabling the use of voice tools within Moodle, at various stages of maturity:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.covell.org COVCELL]&#039;&#039;&#039;, an EU-funded project to provide various enhancements for online language learning, including audio conferencing. See also [http://moodle.org/mod/forum/view.php?id=5368 COVCELL discussion forum on moodle.org] The audio conferencing will use a RED5 Flash-based server.&lt;br /&gt;
* Integration of Moodle with &#039;&#039;&#039;[http://gong.ust.hk/ Gong]&#039;&#039;&#039; (requires a Java server)&lt;br /&gt;
* Integration of Moodle with &#039;&#039;&#039;[http://www.dimdim.com/ dimdim]&#039;&#039;&#039; open-source webconferencing system. (Not sure what the server requirements are.)&lt;br /&gt;
* &#039;&#039;&#039;[http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex]&#039;&#039;&#039; Java applets for voice messaging (note: does not require any modifications/additions to the server setup)&lt;br /&gt;
* The &#039;&#039;&#039;Horizon Wimba&#039;&#039;&#039; company provides a subsription-based service providing [http://www.horizonwimba.com/products/voicetools/ voice tools] for use in VLEs. Moodle integration of these tools is forthcoming.&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Speech_tools&amp;diff=13975</id>
		<title>Speech tools</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Speech_tools&amp;diff=13975"/>
		<updated>2006-08-06T13:02:17Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle has no built-in tools for speech messaging or audioconferencing. However, there are some interesting projects which are working towards enabling the use of voice tools within Moodle, at various stages of maturity:&lt;br /&gt;
&lt;br /&gt;
* [http://www.covell.org COVCELL], an EU-funded project to provide various enhancements for online language learning, including audio conferencing. See also [http://moodle.org/mod/forum/view.php?id=5368 COVCELL discussion forum on moodle.org] The audio conferencing will use a RED5 Flash-based server.&lt;br /&gt;
* Integration of Moodle with [http://gong.ust.hk/ Gong] (requires a Java server)&lt;br /&gt;
* Integration of Moodle with [http://www.dimdim.com/ dimdim] open-source webconferencing system. (Not sure what the server requirements are.)&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex] Java applets for voice messaging (note: does not require any modifications/additions to the server setup)&lt;br /&gt;
* The Horizon Wimba company provides a subsription-based service providing [http://www.horizonwimba.com/products/voicetools/ voice tools] for use in VLEs. Moodle integration of these tools is forthcoming.&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=13293</id>
		<title>Development:Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=13293"/>
		<updated>2006-07-21T16:59:18Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Guidelines==&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle architecture]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
&lt;br /&gt;
== Resources and tools ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[http://moodle.org/bugs/ Moodle bug tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
*[http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
*[http://moodle.cvs.sourceforge.net/moodle/moodle/ CVS code] - browse the Moodle code via the web&lt;br /&gt;
*[http://moodle.org/xref/nav.html?index.html Cross reference] - phpxref output for browsing Moodle source code&lt;br /&gt;
*[http://moodle.sourceforge.net/dhawes-phpdoc/ Moodle PHP doc reference] - automatically generated documentation&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to HEAD&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for &#039;Modular&#039;. There are many different types of components that you can contribute that can be plugged into Moodle to provide additional functionality. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. The following types of plugins currently exist (in alphabetical order):&lt;br /&gt;
*[[Modules (developer)|Activity modules]]&lt;br /&gt;
*[[Assignment types]]&lt;br /&gt;
*[[Authentication|Authentication methods]]&lt;br /&gt;
*[[Blocks Howto|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Database fields]]&lt;br /&gt;
*[[Database presets]]&lt;br /&gt;
*[[Enrolment plugins (developer)|Enrolment plugins]]&lt;br /&gt;
*[[Filters (developer)|Filters]]&lt;br /&gt;
*[[Question import/export formats]]&lt;br /&gt;
*[[Question types]]&lt;br /&gt;
*[[Quiz reports]]&lt;br /&gt;
*[[Resource types]]&lt;br /&gt;
*[[SSO plugins]]&lt;br /&gt;
&lt;br /&gt;
There are also ways you can contribute that don&#039;t involve PHP programming:&lt;br /&gt;
*[[Themes]]&lt;br /&gt;
*[[Translation]]&lt;br /&gt;
*[[Database Schemas|Database schemas]]&lt;br /&gt;
&lt;br /&gt;
You can also help a lot by&lt;br /&gt;
*[[Tests|Testing]]&lt;br /&gt;
*[[Bug tracker|Participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystalize on the forums they can be summarized in this wiki, either as part of the [[Roadmap]] or in the form of [[Developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer conference|Developer conferences]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes]] or on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for contributed code==&lt;br /&gt;
Many Moodle users contribute code for the benefit of other Moodle users. This can take the form of new activity modules, blocks, themes, resource plug-ins, assignment plug-ins, question type plug-ins, question import/export formats, quiz report plug-ins, course formats, ... This code is initially posted on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course and then often go into the [http://cvs.sourceforge.net/viewcvs.py/moodle/contrib/ contrib area] of the Moodle [[CVS]] repository. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. Developer documentation for these components should be listed here.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[es:Documentación para Desarrolladores]]&lt;br /&gt;
[[fr:Documentation développeur]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=13292</id>
		<title>Development:Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=13292"/>
		<updated>2006-07-21T16:59:01Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Guidelines==&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle architecture]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
&lt;br /&gt;
== Resources and tools ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[http://moodle.org/bugs/ Moodle bug tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
*[http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
*[http://moodle.cvs.sourceforge.net/moodle/moodle/ CVS code] - browse the Moodle code via the web&lt;br /&gt;
*[http://moodle.org/xref/nav.html?index.html Cross reference] - phpxref output for browsing Moodle source code&lt;br /&gt;
*[http://moodle.sourceforge.net/dhawes-phpdoc/ Moodle PHP doc reference] - automatically generated documentation&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to HEAD&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for &#039;Modular&#039;. There are many different types of components that you can contribute that can be plugged into Moodle to provide additional functionality. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. The following types of plugins currently exist (in alphabetical order):&lt;br /&gt;
*[[Modules (developer)|Activity modules]]&lt;br /&gt;
*[[Assignment types]]&lt;br /&gt;
*[[Authentication|Authentication methods]]&lt;br /&gt;
*[[Blocks Howto|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Database fields]]&lt;br /&gt;
*[[Database presets]]&lt;br /&gt;
*[[Enrolment plugins (developer)|Enrolment plugins]]&lt;br /&gt;
*[[Filters (developer)|Filters]]&lt;br /&gt;
*[[Question import/export formats]]&lt;br /&gt;
*[[Question types]]&lt;br /&gt;
*[[Quiz reports]]&lt;br /&gt;
*[[Resource types]]&lt;br /&gt;
*[[SSO plugins]]&lt;br /&gt;
&lt;br /&gt;
There are also ways you can contribute that don&#039;t involve PHP programming:&lt;br /&gt;
*[[Themes]]&lt;br /&gt;
*[[Translation]]&lt;br /&gt;
*[[Database Schemas|Database schemas]]&lt;br /&gt;
&lt;br /&gt;
You can also help a lot by&lt;br /&gt;
*[[Tests|Testing]]&lt;br /&gt;
*[[Bug tracker|Participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystalize on the forums they can be summarized in this wiki, either as part of the [[Roadmap]] or in the form of [[Developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer conference|Developer conferences]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes]] or on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for contributed code==&lt;br /&gt;
Many Moodle users contribute code for the benefit of other Moodle users. This can take the form of new activity modules, blocks, themes, resource plug-ins, assignment plug-ins, question type plug-ins, question import/export formats, quiz report plug-ins, course formats, ... This code is initially posted on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course and then often go into the [http://cvs.sourceforge.net/viewcvs.py/moodle/contrib/ contrib area] of the Moodle [[CVS]] repository. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. Developer documentation for these components should be listed here.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
*[[Developer FAQ]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[es:Documentación para Desarrolladores]]&lt;br /&gt;
[[fr:Documentation développeur]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=13291</id>
		<title>Development:Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Developer_documentation&amp;diff=13291"/>
		<updated>2006-07-21T16:58:22Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Guidelines==&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle architecture]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
&lt;br /&gt;
== Resources and tools ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[http://moodle.org/bugs/ Moodle bug tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
*[http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
*[http://moodle.cvs.sourceforge.net/moodle/moodle/ CVS code] - browse the Moodle code via the web&lt;br /&gt;
*[http://moodle.org/xref/nav.html?index.html Cross reference] - phpxref output for browsing Moodle source code&lt;br /&gt;
*[http://moodle.sourceforge.net/dhawes-phpdoc/ Moodle PHP doc reference] - automatically generated documentation&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to HEAD&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for &#039;Modular&#039;. There are many different types of components that you can contribute that can be plugged into Moodle to provide additional functionality. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. The following types of plugins currently exist (in alphabetical order):&lt;br /&gt;
*[[Modules (developer)|Activity modules]]&lt;br /&gt;
*[[Assignment types]]&lt;br /&gt;
*[[Authentication|Authentication methods]]&lt;br /&gt;
*[[Blocks Howto|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Database fields]]&lt;br /&gt;
*[[Database presets]]&lt;br /&gt;
*[[Enrolment plugins (developer)|Enrolment plugins]]&lt;br /&gt;
*[[Filters (developer)|Filters]]&lt;br /&gt;
*[[Question import/export formats]]&lt;br /&gt;
*[[Question types]]&lt;br /&gt;
*[[Quiz reports]]&lt;br /&gt;
*[[Resource types]]&lt;br /&gt;
*[[SSO plugins]]&lt;br /&gt;
&lt;br /&gt;
There are also ways you can contribute that don&#039;t involve PHP programming:&lt;br /&gt;
*[[Themes]]&lt;br /&gt;
*[[Translation]]&lt;br /&gt;
*[[Database Schemas|Database schemas]]&lt;br /&gt;
&lt;br /&gt;
You can also help a lot by&lt;br /&gt;
*[[Tests|Testing]]&lt;br /&gt;
*[[Bug tracker|Participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystalize on the forums they can be summarized in this wiki, either as part of the [[Roadmap]] or in the form of [[Developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer conference|Developer conferences]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes]] or on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for contributed code==&lt;br /&gt;
Many Moodle users contribute code for the benefit of other Moodle users. This can take the form of new activity modules, blocks, themes, resource plug-ins, assignment plug-ins, question type plug-ins, question import/export formats, quiz report plug-ins, course formats, ... This code is initially posted on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course and then often go into the [http://cvs.sourceforge.net/viewcvs.py/moodle/contrib/ contrib area] of the Moodle [[CVS]] repository. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. Developer documentation for these components should be listed here.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
*[Developer FAQ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[es:Documentación para Desarrolladores]]&lt;br /&gt;
[[fr:Documentation développeur]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Jmol_filter&amp;diff=13290</id>
		<title>Jmol filter</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Jmol_filter&amp;diff=13290"/>
		<updated>2006-07-21T13:44:28Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Jmol-quiz-example.png|thumb|200px|right|An example of the Jmol filter in action]]&lt;br /&gt;
&lt;br /&gt;
Jmol is open-source Java software for interactive 3D viewing of molecular structures. It can easily be embedded into a webpage... including a Moodle page.&lt;br /&gt;
&lt;br /&gt;
The Moodle Jmol filter makes it incredibly simple for teachers to embed these viewers into teaching material (quizzes, discussion messages, etc).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://download.moodle.org/download.php/modules/filter_jmol.zip Download the Jmol filter]&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Jmol filter is very useful for including a molecule viewer in a variety of situations - e.g. in a [[Label]], a [[Forums | Forum]] discussion, or a [[Quizzes| Quiz]] question. If you wish to load a molecule data file as a &amp;quot;resource&amp;quot;, you should also consider installing the [[Jmol resource module]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It requires no additional capability on your web server, but requires both Java and a JavaScript-enabled browser for the user.&lt;br /&gt;
&lt;br /&gt;
* [http://moodle.yeovil.ac.uk/course/view.php?id=63 See it in action in this course] (Log in as guest)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How to use===&lt;br /&gt;
&lt;br /&gt;
# Upload a molecule data file to the Moodle server. (This is important - Jmol refuses to display data files held on other servers, so you can&#039;t just link to a file that exists somewhere else on the web.)&lt;br /&gt;
# Simply create a link to the molecule file, wherever you want the molecule viewer to appear.&lt;br /&gt;
## Parameters can be added to the end of the URL to specify certain display options. Add &#039;&#039;&#039;?c=0&#039;&#039;&#039; to hide the controls, or &#039;&#039;&#039;?s=150&#039;&#039;&#039; to set the viewer&#039;s size at 150 pixels. Or &#039;&#039;&#039;?c=0&amp;amp;s=150&#039;&#039;&#039; to do both.&lt;br /&gt;
## The filter will output its own form tags. If you&#039;re displaying the molecule inside an existing form, please make sure you use the &#039;&#039;&#039;?f=0&#039;&#039;&#039; parameter to make sure the filter doesn&#039;t output its own form tags. This will ensure things work correctly in most web browsers.&lt;br /&gt;
# If you wish to run extra [http://jmol.sourceforge.net/scripting/ Jmol script] upon intialisation, write &#039;&#039;&#039;JMOLSCRIPT{}&#039;&#039;&#039; straight after the link, and put your code inside the braces. For example:&lt;br /&gt;
&lt;br /&gt;
 [http://cvs.sf.net/viewcvs.py/*checkout*/moodle/contrib/filter_jmol/filter/jmol/manywater.pdb Water molecules] JMOLSCRIPT{rotate x 15; zoom 50; set axes on;}&lt;br /&gt;
&lt;br /&gt;
===Important: Using the filter in quizzes===&lt;br /&gt;
&lt;br /&gt;
The filter can be used to display molecular viewers in quiz questions. But &#039;&#039;&#039;please make sure you use the ?f=0 parameter at the end of each URL&#039;&#039;&#039;, to prevent the filter outputting its own &amp;quot;form&amp;quot; tags.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
[[Category:Filter]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Roles&amp;diff=13288</id>
		<title>Development:Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Roles&amp;diff=13288"/>
		<updated>2006-07-21T11:30:55Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Core-level Capabilities */  Added moodle/user:viewdetails&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capability($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might need refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. It is important that capability names are unique. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their child&#039;s data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
I could use a canview at a course level, if I understand what that means exactly.--[[User:N Hansen|N Hansen]] 19:43, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capabilitie names start with &#039;moodle/&#039;. The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
Do we still keep student view? What is a student view?&lt;br /&gt;
&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later)&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now)&lt;br /&gt;
#moodle/site:backup - can create a course backup&lt;br /&gt;
#moodle/site:restore - can restore into this context&lt;br /&gt;
#moodle/site:import - can import other courses into this context&lt;br /&gt;
#moodle/blog:view - read blogs&lt;br /&gt;
#moodle/blog:create - write new blog posts&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:managepersonaltags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries&lt;br /&gt;
#moodle/course:create - create courses&lt;br /&gt;
#moodle/course:delete - create courses&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?)&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete&lt;br /&gt;
#moodle/course:visibility - hide/show courses&lt;br /&gt;
#moodle/category:create - create category&lt;br /&gt;
#moodle/category:delete - create category&lt;br /&gt;
#moodle/category:update - update category settings&lt;br /&gt;
#moodle/category:visibility - hide/show categories&lt;br /&gt;
#moodle/user:create - create user&lt;br /&gt;
#moodle/user:delete - create user&lt;br /&gt;
#moodle/user:update - update user settings&lt;br /&gt;
#moodle/user:viewdetails - view personally-identifying user details (e.g. name, photo). This ties in with the &amp;quot;visitor&amp;quot; scenario described below.&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;. The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:readentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewforum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:attachments&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:view - read entries&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:readrate - view rating?&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:view&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##TBD&lt;br /&gt;
#Lesson&lt;br /&gt;
##TBD&lt;br /&gt;
#Quiz&lt;br /&gt;
##TBD&lt;br /&gt;
#Resource&lt;br /&gt;
##mod/resource:view&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:view&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##Waiting on new wiki&lt;br /&gt;
#Workshop&lt;br /&gt;
##Waiting on new Workshop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Questions==&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in [http://www.moodle.org/bugs/bug.php?op=show&amp;amp;bugid=6118&amp;amp;pos= bug 6118].&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Has this one been missed?&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inpectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
Is this the same as &#039;&#039;&#039;ALUMNUS&#039;&#039;&#039; ? An ALUMNUS should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a seperate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when an ALUMNUS is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===PROCESS ROLES===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
&amp;lt;li&amp;gt;1. Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
&amp;lt;li&amp;gt;2. Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
&amp;lt;li&amp;gt;3. Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
&amp;lt;li&amp;gt;4. Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&amp;lt;li&amp;gt;5. ..&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ru:Роли]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Roles&amp;diff=13287</id>
		<title>Development:Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Roles&amp;diff=13287"/>
		<updated>2006-07-21T11:27:17Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Former Student */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capability($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might need refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. It is important that capability names are unique. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their child&#039;s data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
I could use a canview at a course level, if I understand what that means exactly.--[[User:N Hansen|N Hansen]] 19:43, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capabilitie names start with &#039;moodle/&#039;. The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
Do we still keep student view? What is a student view?&lt;br /&gt;
&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later)&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now)&lt;br /&gt;
#moodle/site:backup - can create a course backup&lt;br /&gt;
#moodle/site:restore - can restore into this context&lt;br /&gt;
#moodle/site:import - can import other courses into this context&lt;br /&gt;
#moodle/blog:view - read blogs&lt;br /&gt;
#moodle/blog:create - write new blog posts&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:managepersonaltags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries&lt;br /&gt;
#moodle/course:create - create courses&lt;br /&gt;
#moodle/course:delete - create courses&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?)&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete&lt;br /&gt;
#moodle/course:visibility - hide/show courses&lt;br /&gt;
#moodle/category:create - create category&lt;br /&gt;
#moodle/category:delete - create category&lt;br /&gt;
#moodle/category:update - update category settings&lt;br /&gt;
#moodle/category:visibility - hide/show categories&lt;br /&gt;
#moodle/user:create - create user&lt;br /&gt;
#moodle/user:delete - create user&lt;br /&gt;
#moodle/user:update - update user settings&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;. The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:readentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewforum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:attachments&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:view - read entries&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:readrate - view rating?&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:view&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##TBD&lt;br /&gt;
#Lesson&lt;br /&gt;
##TBD&lt;br /&gt;
#Quiz&lt;br /&gt;
##TBD&lt;br /&gt;
#Resource&lt;br /&gt;
##mod/resource:view&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:view&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##Waiting on new wiki&lt;br /&gt;
#Workshop&lt;br /&gt;
##Waiting on new Workshop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Questions==&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in [http://www.moodle.org/bugs/bug.php?op=show&amp;amp;bugid=6118&amp;amp;pos= bug 6118].&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Has this one been missed?&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inpectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
Is this the same as &#039;&#039;&#039;ALUMNUS&#039;&#039;&#039; ? An ALUMNUS should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a seperate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when an ALUMNUS is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===PROCESS ROLES===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
&amp;lt;li&amp;gt;1. Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
&amp;lt;li&amp;gt;2. Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
&amp;lt;li&amp;gt;3. Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
&amp;lt;li&amp;gt;4. Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&amp;lt;li&amp;gt;5. ..&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ru:Роли]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Roles&amp;diff=13286</id>
		<title>Development:Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Roles&amp;diff=13286"/>
		<updated>2006-07-21T11:25:00Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Peer observer (teacher) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capability($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might need refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. It is important that capability names are unique. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their child&#039;s data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
I could use a canview at a course level, if I understand what that means exactly.--[[User:N Hansen|N Hansen]] 19:43, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capabilitie names start with &#039;moodle/&#039;. The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
Do we still keep student view? What is a student view?&lt;br /&gt;
&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later)&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now)&lt;br /&gt;
#moodle/site:backup - can create a course backup&lt;br /&gt;
#moodle/site:restore - can restore into this context&lt;br /&gt;
#moodle/site:import - can import other courses into this context&lt;br /&gt;
#moodle/blog:view - read blogs&lt;br /&gt;
#moodle/blog:create - write new blog posts&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:managepersonaltags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries&lt;br /&gt;
#moodle/course:create - create courses&lt;br /&gt;
#moodle/course:delete - create courses&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?)&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete&lt;br /&gt;
#moodle/course:visibility - hide/show courses&lt;br /&gt;
#moodle/category:create - create category&lt;br /&gt;
#moodle/category:delete - create category&lt;br /&gt;
#moodle/category:update - update category settings&lt;br /&gt;
#moodle/category:visibility - hide/show categories&lt;br /&gt;
#moodle/user:create - create user&lt;br /&gt;
#moodle/user:delete - create user&lt;br /&gt;
#moodle/user:update - update user settings&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;. The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:readentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewforum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:attachments&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:view - read entries&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:readrate - view rating?&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:view&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##TBD&lt;br /&gt;
#Lesson&lt;br /&gt;
##TBD&lt;br /&gt;
#Quiz&lt;br /&gt;
##TBD&lt;br /&gt;
#Resource&lt;br /&gt;
##mod/resource:view&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:view&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##Waiting on new wiki&lt;br /&gt;
#Workshop&lt;br /&gt;
##Waiting on new Workshop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Questions==&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in [http://www.moodle.org/bugs/bug.php?op=show&amp;amp;bugid=6118&amp;amp;pos= bug 6118].&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Has this one been missed?&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inpectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
Is this the same as &#039;&#039;&#039;ALUMNI&#039;&#039;&#039; ? An ALUMNI should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a seperate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when a ALUMNI is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===PROCESS ROLES===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
&amp;lt;li&amp;gt;1. Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
&amp;lt;li&amp;gt;2. Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
&amp;lt;li&amp;gt;3. Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
&amp;lt;li&amp;gt;4. Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&amp;lt;li&amp;gt;5. ..&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ru:Роли]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:Roles&amp;diff=13285</id>
		<title>Development:Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:Roles&amp;diff=13285"/>
		<updated>2006-07-21T11:24:34Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Scenarios */ Added peer reviewer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Roles and capabilities&#039;&#039;&#039; are planned to be included in Moodle 1.7. For now, we have some basic ideas of how to implement such a structure in Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Please note that none of the following is finalised.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
By roles, we mean an identifier of the user&#039;s status, for example, teacher, student and forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a permission to access some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;forum_canreadpost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
Currently in Moodle, we have a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can performed are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles. Each role can have a customizable set of capabilities in every context. A context can be the whole Moodle site, a course, or a module instance, e.g. quiz 5 in &#039;Introduction to Photography&#039;. An authorized user will be able to assign an arbitrary number of roles to each user. Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by giving roles different &#039;priorities&#039;. For example, to prevent a naughty student from posting, one could assign him a &#039;naughty student&#039; role that does not allow him to post. This role should have a priority higher than that of a normal &#039;student&#039; role. &lt;br /&gt;
&lt;br /&gt;
To facilitate exceptional cases in roles and capabilities, we can use exception rules. For example, we can specify a rule saying that all students are able to mark/read other students&#039; assignment in this particular course. Note that such rules need to have a priority as well. The capability of a user, in any context is then resolved by finding the highest priority role/rule.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the exisiting capabilities will be retained. This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, which pretty much is what we have  in 1.6. The whole process is automatic so there&#039;s nothing to worry about =). With no modifications, Moodle will operate exactly the same before and after the upgrade.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The plan==&lt;br /&gt;
&lt;br /&gt;
There are a few major things that need to be done. Here&#039;s a list (in no particular order):&lt;br /&gt;
&lt;br /&gt;
#Identify permissions required for site/course/each module.&lt;br /&gt;
#Define the database structure for storing roles and capabilities.&lt;br /&gt;
#Recode the whole of Moodle, including all modules to support the new structure. Instead of using &amp;lt;code&amp;gt;isteacher()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isstudent()&amp;lt;/code&amp;gt; we should be using &amp;lt;code&amp;gt;has_capability($capability, $instanceid)&amp;lt;/code&amp;gt; etc. A new API for handling roles and capabilities will be implemented (accesslib.php).&lt;br /&gt;
#Add storage of capabilities for each module. Can be done either in a file, e.g. db/capability.xml, or as a sql file that gets installed to a central db whenever this module is installed. Either way, what do we do when we need to upgrade these capabilities? Some capabilities might need refining/splitting later on. How do we control the &#039;version&#039; of a capability?&lt;br /&gt;
#Consider interface issues, especially how to manage conflicting role/exception rules.&lt;br /&gt;
#Upon logging in, we should use a cache to store capability, down to module level. How should that be structured?&lt;br /&gt;
#Consider the impact on backup/restore.&lt;br /&gt;
#Upgrade path for current users. The user information in table user_coursecreators, user_admins, user_teachers, and user_students will most likely be migrated to the new roles and capabilities tables. The users will most likely be assigned default roles that comes with default capabilities (e.g. teachers, admins, students, etc). The old tables themselves could possibly be dropped at the end of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This is a comprehensive list of capabilities, well, in the making. It is important that capability names are unique. Please edit. Should we distinguish canedit and candelete?&lt;br /&gt;
&lt;br /&gt;
What about a canview capability? Like for choice, where a person is allowed to see the choice question but not participate in it? --[[User:N Hansen|N Hansen]] 19:29, 16 May 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
Certainly need a canview or cansee capability for parents as linked to their child&#039;s data/contributions.&lt;br /&gt;
&lt;br /&gt;
Do we need to add canview and cansearch logs at site/course/user/group level?&lt;br /&gt;
&lt;br /&gt;
I could use a canview at a course level, if I understand what that means exactly.--[[User:N Hansen|N Hansen]] 19:43, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capabilitie names start with &#039;moodle/&#039;. The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
Do we still keep student view? What is a student view?&lt;br /&gt;
&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later)&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now)&lt;br /&gt;
#moodle/site:backup - can create a course backup&lt;br /&gt;
#moodle/site:restore - can restore into this context&lt;br /&gt;
#moodle/site:import - can import other courses into this context&lt;br /&gt;
#moodle/blog:view - read blogs&lt;br /&gt;
#moodle/blog:create - write new blog posts&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:managepersonaltags - create/delete official blog tags that others can use&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries&lt;br /&gt;
#moodle/course:create - create courses&lt;br /&gt;
#moodle/course:delete - create courses&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?)&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete&lt;br /&gt;
#moodle/course:visibility - hide/show courses&lt;br /&gt;
#moodle/category:create - create category&lt;br /&gt;
#moodle/category:delete - create category&lt;br /&gt;
#moodle/category:update - update category settings&lt;br /&gt;
#moodle/category:visibility - hide/show categories&lt;br /&gt;
#moodle/user:create - create user&lt;br /&gt;
#moodle/user:delete - create user&lt;br /&gt;
#moodle/user:update - update user settings&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;. The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:readentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewforum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:attachments&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:view - read entries&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:readrate - view rating?&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:view&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##TBD&lt;br /&gt;
#Lesson&lt;br /&gt;
##TBD&lt;br /&gt;
#Quiz&lt;br /&gt;
##TBD&lt;br /&gt;
#Resource&lt;br /&gt;
##mod/resource:view&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:view&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##Waiting on new wiki&lt;br /&gt;
#Workshop&lt;br /&gt;
##Waiting on new Workshop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Questions==&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in [http://www.moodle.org/bugs/bug.php?op=show&amp;amp;bugid=6118&amp;amp;pos= bug 6118].&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support:&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Has this one been missed?&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer (teacher)===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inpectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY) and Key Stage 1 (KS1) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 and 4 this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments.&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant. &lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
Is this the same as &#039;&#039;&#039;ALUMNI&#039;&#039;&#039; ? An ALUMNI should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a seperate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when a ALUMNI is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===PROCESS ROLES===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
&amp;lt;li&amp;gt;1. Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
&amp;lt;li&amp;gt;2. Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
&amp;lt;li&amp;gt;3. Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
&amp;lt;li&amp;gt;4. Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&amp;lt;li&amp;gt;5. ..&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture] forum discussion&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ru:Роли]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:UK_MoodleMoot_06_hackfest&amp;diff=13284</id>
		<title>Development:UK MoodleMoot 06 hackfest</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:UK_MoodleMoot_06_hackfest&amp;diff=13284"/>
		<updated>2006-07-21T11:10:44Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: Added MoodleSpeex&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Willkommen zum Hackfest&#039;&#039; (OK - I&#039;ve been watching too much WorldCup on TV). &lt;br /&gt;
&lt;br /&gt;
The first MoodleMoot hackfest is nearly upon us... and we don&#039;t have an agenda!&lt;br /&gt;
&lt;br /&gt;
This is an open source agenda for the hackfest. We&#039;ll have a day before the Moot to geek out on some code, maybe develop a feature or two, fix some bugs and generally make our favorite learning system a happier place. But I leave it up to you to tell me exactly what we should do. We have four or five rooms with internet connections, a few projectors, and I&#039;ll try to get pizza. &lt;br /&gt;
&lt;br /&gt;
Let&#039;s start by brainstorming some ideas here for a few days. If someone posts something you&#039;re interested in, put your name under it as a vote. The top votes become our central organizing ideas. For example&lt;br /&gt;
&lt;br /&gt;
==Practical arrangements==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date&#039;&#039;&#039;: Monday 24th July, 2006&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Time&#039;&#039;&#039;: From about 10:00am&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to get to the OU&#039;&#039;&#039;: http://www3.open.ac.uk/contact/locations.aspx&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Where to go first&#039;&#039;&#039;: You will need to report to main OU reception (in red on the [http://www3.open.ac.uk/contact/maps/wh-campus.gif campus map]) when you arrive to get signed in (I assume). I assume that Jason will have given reception a list of names, so they know who to expect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Where to go next&#039;&#039;&#039;: We will be in the Christodoulou Meeting rooms. On the map, find Walton Drive, and follow the line of that up.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What to bring&#039;&#039;&#039;: Please bring a laptop if you can. Food and drink are available on the OU campus, so you don&#039;t need to bring that.&lt;br /&gt;
&lt;br /&gt;
==1 Bug fixing==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s spend a few hours and hunt down as many outstanding bugs in 1.6 as possible. Bounties for most bugs killed, trickiest bug killed, and most unusual bug killed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Jason Cole&lt;br /&gt;
# skodak&lt;br /&gt;
# martin langhoff (auth &amp;amp; enrolment specifically).&lt;br /&gt;
# Martin Dougiamas&lt;br /&gt;
# Juliette White (arriving late though!)&lt;br /&gt;
# Dan Stowell&lt;br /&gt;
&lt;br /&gt;
(iarenaza) I won&#039;t be there, but here are a couple of bugs for Martin L., related to auth: #4648 and #5373. Very easy to fix :-)&lt;br /&gt;
&lt;br /&gt;
==2 What next for the quiz module?==&lt;br /&gt;
&lt;br /&gt;
If any other quizzy people are there, we should have a talk about where we see the quiz module going.&lt;br /&gt;
&lt;br /&gt;
I/the OU have the following priorities:&lt;br /&gt;
&lt;br /&gt;
# Make question type plugins really plug-in-able. At the moment there are some limitations:&lt;br /&gt;
#* All the lang strings are still in lang/en_utf8/quiz.php.&lt;br /&gt;
#* qtype plugins cannot easily feed CSS and Javascript into the page.&lt;br /&gt;
#* pluggable qtypes and pluggable inport/export filters don&#039;t play nicely together.&lt;br /&gt;
# Write some new question types.&lt;br /&gt;
# Make some improvements to existing question types.&lt;br /&gt;
# Get RQP working again, so our in-house question engine can talk to Moodle.&lt;br /&gt;
&lt;br /&gt;
I&#039;m not going to be there, but I think it would be helpful if you were to discuss ways in which the teacher&#039;s usage of the quiz module could be made more efficient, more in terms of grading than in creating quizzes (as there have already been a lot of improvements in that respect in 1.6). I&#039;ve submitted a lot of bug reports about this already but personally efficiency would be more of a priority to me than new question types.--[[User:N Hansen|N Hansen]] 08:27, 12 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Tim Hunt&lt;br /&gt;
# Jamie Pratt&lt;br /&gt;
&lt;br /&gt;
==Performance profiling==&lt;br /&gt;
&lt;br /&gt;
Pick a (memory|database) hog and put it on a diet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# martin langhoff&lt;br /&gt;
# dave scotson (particularly the TinyMCE performance issues mentioned recently by Martin D)&lt;br /&gt;
&lt;br /&gt;
(iarenaza) Once again, I won&#039;t be there, but here&#039;s an unfixed bug in 1.6.x and HEAD (was fixed in 1.5.x, but not applied to HEAD at the moment): bug #4591&lt;br /&gt;
&lt;br /&gt;
==Hacking on the OLPC Board==&lt;br /&gt;
&lt;br /&gt;
MartinL will be bringing the OLPC board (if it is booting, and customs allows!) for people to have a play with it. If we have any Mozilla/XUL experts in the house, he will want to explore building a limited cached Moodle UI with it for offline work.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; We will need some spare parts &amp;amp; hardware to get the board going. I will bring a power supply, but a VGA monitor, USB mouse + keyboard, USB ext disk, USB hub, and open wifi (no ethernet on the board) will be needed. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JC: We&#039;ll make sure you have the appropriate stuff. I need a USB disk anyway.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# martin langhoff&lt;br /&gt;
# Jason Cole&lt;br /&gt;
&lt;br /&gt;
==How to save/retrieve a complete section from stock?==&lt;br /&gt;
Now the sections become more and more accepted as the tasksets for a week, our teachers wish to have topic oriented stores (courses for the moment) as section stores and want to copy one/more sections form that task store to a clean course..&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(In the end we wish that students can select sections from the store to compose their own courses, until the teacher freezes their choice set and the learning game can begin.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
# Ger Tielemans (I arrive a little later, so start with the bugs first, please :))&lt;br /&gt;
# Jan Kater (same arrival=same message as Ger T.)&lt;br /&gt;
&lt;br /&gt;
==How to reveale files outside a course without using datadir for course 1?==&lt;br /&gt;
Can someone explain the right setup and use of the exception array: &lt;br /&gt;
- we want to show a student (after login) only his own file from that store&lt;br /&gt;
- we want to show a teacher/tutor only the files from the students in his course(s)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
# Ger Tielemans&lt;br /&gt;
# Jan Kater&lt;br /&gt;
&lt;br /&gt;
==How to repair the last bug in the old bookmark option ?==&lt;br /&gt;
We changed William&#039;s bookmark in a student only note-taking tool and (thanks Chardelle!) almost repaired the complete bookmark for 1.6. (and it can be accessed from My Page)&lt;br /&gt;
Bug: Only when the user tries to sort the heder in the overview, the text of the headers disappear.&lt;br /&gt;
Code clean-up: how to remove obsolete code and make the bookmark pages secure?&lt;br /&gt;
(Wish for new code: categories are privat, so allow a student to delete a self created category)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
Ger Tielemans&lt;br /&gt;
&lt;br /&gt;
==How to insert a HTML-editor in old code block and make it secure ?==&lt;br /&gt;
To make the set of student note-taking tools complete, I found old code to have a global private notebook.&lt;br /&gt;
(I group this with bookmarks in the calender, so the student has: 1. privat time-related-notes in the calendar, 2. a button for the overview of the privat page-related-notes under the calendar and 3. a global privat notebook for other scribbles..) &lt;br /&gt;
On this moment this piece of code has a flat text editor, would be nice to have HTML or even the new (Ajax?) miniWiki?) &lt;br /&gt;
&lt;br /&gt;
With the new &amp;quot;View as student button&amp;quot; check like if isstudent() {..show..} offers teachers and admins empty - only for real student - spots (so an error)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
# Ger Tielemans&lt;br /&gt;
# Jan Kater&lt;br /&gt;
&lt;br /&gt;
== Improve the way we integrate Rubrics in Moodle, like... ==&lt;br /&gt;
http://docs.subjectivemetrics.com/User/cam/rubistar/rs_overview.html (Warning! Has loud audio!)&lt;br /&gt;
&lt;br /&gt;
maybe with some flavors of...&lt;br /&gt;
&lt;br /&gt;
http://ipeer.apsc.ubc.ca/ipeer_site/&lt;br /&gt;
&lt;br /&gt;
== ImportOOI in Lesson==&lt;br /&gt;
KISS, a tweak of ImportPPT that just grabs the jpgs from a web folder created by Open Office  Impress and inserts them into page content of branch tables. No text.  Maybe as an option routine if it can&#039;t find the outline.htm file ? Or as a version of ImportPPT that only imports these jpg files. &lt;br /&gt;
&lt;br /&gt;
#chris collman  - wish I could join you and learn&lt;br /&gt;
&lt;br /&gt;
http://moodle.org/mod/forum/discuss.php?d=49714&lt;br /&gt;
&lt;br /&gt;
==Page-Based Chat Roster and Whiteboard ==&lt;br /&gt;
&lt;br /&gt;
The COVCELL project is developing a chat module (based on jabber) for Moodle. Chat rosters are to be generated on a per-page basis, so that anyone who is logged in and is viewing a particular page will be able to see who else is viewing that page and start a chat session with them. Group chat will be supported and it will be possible to use a whiteboard (based on Coccinella) in the chat.&lt;br /&gt;
&lt;br /&gt;
More information can be found at:&lt;br /&gt;
* http://covcell.cms.hu-berlin.de/tracov/wiki/Phase_I&lt;br /&gt;
* http://covcell.org/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Heinz Kuper&lt;br /&gt;
# Steinn Sigurðarson&lt;br /&gt;
# Jens-Martin Loebel&lt;br /&gt;
&lt;br /&gt;
==AV Conferencing and Recording ==&lt;br /&gt;
&lt;br /&gt;
The COVCELL project is developing a module to provide audio-visual conferencing functionality within Moodle. It shall also be possible to record streams. Our development is based on the Red5 project, which is an open source development of the Flash Comm server.&lt;br /&gt;
&lt;br /&gt;
More information can be found at:&lt;br /&gt;
* http://www.osflash.org/red5&lt;br /&gt;
* http://covcell.org/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Heinz Kuper&lt;br /&gt;
# Steinn Sigurðarson&lt;br /&gt;
# Jens-Martin Loebel&lt;br /&gt;
# Alex Little&lt;br /&gt;
# Dan Stowell&lt;br /&gt;
# Andrew Slaughter&lt;br /&gt;
&lt;br /&gt;
==MoodleSpeex voice messaging==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve developed a java applet framework for voice messaging called [http://moodle.org/mod/forum/discuss.php?d=50265 MoodleSpeex] (because it uses the [http://www.speex.org/ Speex codec]). It currently allows forums to be converted into speech-based forums, but there are other potential applications. If there are any Java coders in the house it would be great to get some improvements into that.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Dan Stowell&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Add your suggestion here ...==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Go on, you know you want to.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodlemoot.org/ http://moodlemoot.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/37/en/index.php?title=Development:UK_MoodleMoot_06_hackfest&amp;diff=13236</id>
		<title>Development:UK MoodleMoot 06 hackfest</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/37/en/index.php?title=Development:UK_MoodleMoot_06_hackfest&amp;diff=13236"/>
		<updated>2006-07-20T09:49:53Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* AV Conferencing and Recording */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Willkommen zum Hackfest&#039;&#039; (OK - I&#039;ve been watching too much WorldCup on TV). &lt;br /&gt;
&lt;br /&gt;
The first MoodleMoot hackfest is nearly upon us... and we don&#039;t have an agenda!&lt;br /&gt;
&lt;br /&gt;
This is an open source agenda for the hackfest. We&#039;ll have a day before the Moot to geek out on some code, maybe develop a feature or two, fix some bugs and generally make our favorite learning system a happier place. But I leave it up to you to tell me exactly what we should do. We have four or five rooms with internet connections, a few projectors, and I&#039;ll try to get pizza. &lt;br /&gt;
&lt;br /&gt;
Let&#039;s start by brainstorming some ideas here for a few days. If someone posts something you&#039;re interested in, put your name under it as a vote. The top votes become our central organizing ideas. For example&lt;br /&gt;
&lt;br /&gt;
==Practical arrangements==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date&#039;&#039;&#039;: Monday 24th July, 2006&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Time&#039;&#039;&#039;: From about 10:00am&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to get to the OU&#039;&#039;&#039;: http://www3.open.ac.uk/contact/locations.aspx&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Where to go first&#039;&#039;&#039;: You will need to report to main OU reception (in red on the [http://www3.open.ac.uk/contact/maps/wh-campus.gif campus map]) when you arrive to get signed in (I assume). I assume that Jason will have given reception a list of names, so they know who to expect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Where to go next&#039;&#039;&#039;: We will be in the Christodoulou Meeting rooms. On the map, find Walton Drive, and follow the line of that up.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What to bring&#039;&#039;&#039;: Please bring a laptop if you can. Food and drink are available on the OU campus, so you don&#039;t need to bring that.&lt;br /&gt;
&lt;br /&gt;
==1 Bug fixing==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s spend a few hours and hunt down as many outstanding bugs in 1.6 as possible. Bounties for most bugs killed, trickiest bug killed, and most unusual bug killed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Jason Cole&lt;br /&gt;
# skodak&lt;br /&gt;
# martin langhoff (auth &amp;amp; enrolment specifically).&lt;br /&gt;
# Martin Dougiamas&lt;br /&gt;
# Juliette White (arriving late though!)&lt;br /&gt;
# Dan Stowell&lt;br /&gt;
&lt;br /&gt;
(iarenaza) I won&#039;t be there, but here are a couple of bugs for Martin L., related to auth: #4648 and #5373. Very easy to fix :-)&lt;br /&gt;
&lt;br /&gt;
==2 What next for the quiz module?==&lt;br /&gt;
&lt;br /&gt;
If any other quizzy people are there, we should have a talk about where we see the quiz module going.&lt;br /&gt;
&lt;br /&gt;
I/the OU have the following priorities:&lt;br /&gt;
&lt;br /&gt;
# Make question type plugins really plug-in-able. At the moment there are some limitations:&lt;br /&gt;
#* All the lang strings are still in lang/en_utf8/quiz.php.&lt;br /&gt;
#* qtype plugins cannot easily feed CSS and Javascript into the page.&lt;br /&gt;
#* pluggable qtypes and pluggable inport/export filters don&#039;t play nicely together.&lt;br /&gt;
# Write some new question types.&lt;br /&gt;
# Make some improvements to existing question types.&lt;br /&gt;
# Get RQP working again, so our in-house question engine can talk to Moodle.&lt;br /&gt;
&lt;br /&gt;
I&#039;m not going to be there, but I think it would be helpful if you were to discuss ways in which the teacher&#039;s usage of the quiz module could be made more efficient, more in terms of grading than in creating quizzes (as there have already been a lot of improvements in that respect in 1.6). I&#039;ve submitted a lot of bug reports about this already but personally efficiency would be more of a priority to me than new question types.--[[User:N Hansen|N Hansen]] 08:27, 12 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Tim Hunt&lt;br /&gt;
# Jamie Pratt&lt;br /&gt;
&lt;br /&gt;
==Performance profiling==&lt;br /&gt;
&lt;br /&gt;
Pick a (memory|database) hog and put it on a diet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# martin langhoff&lt;br /&gt;
# dave scotson (particularly the TinyMCE performance issues mentioned recently by Martin D)&lt;br /&gt;
&lt;br /&gt;
(iarenaza) Once again, I won&#039;t be there, but here&#039;s an unfixed bug in 1.6.x and HEAD (was fixed in 1.5.x, but not applied to HEAD at the moment): bug #4591&lt;br /&gt;
&lt;br /&gt;
==Hacking on the OLPC Board==&lt;br /&gt;
&lt;br /&gt;
MartinL will be bringing the OLPC board (if it is booting, and customs allows!) for people to have a play with it. If we have any Mozilla/XUL experts in the house, he will want to explore building a limited cached Moodle UI with it for offline work.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; We will need some spare parts &amp;amp; hardware to get the board going. I will bring a power supply, but a VGA monitor, USB mouse + keyboard, USB ext disk, USB hub, and open wifi (no ethernet on the board) will be needed. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;JC: We&#039;ll make sure you have the appropriate stuff. I need a USB disk anyway.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# martin langhoff&lt;br /&gt;
# Jason Cole&lt;br /&gt;
&lt;br /&gt;
==How to save/retrieve a complete section from stock?==&lt;br /&gt;
Now the sections become more and more accepted as the tasksets for a week, our teachers wish to have topic oriented stores (courses for the moment) as section stores and want to copy one/more sections form that task store to a clean course..&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(In the end we wish that students can select sections from the store to compose their own courses, until the teacher freezes their choice set and the learning game can begin.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
# Ger Tielemans (I arrive a little later, so start with the bugs first, please :))&lt;br /&gt;
# Jan Kater (same arrival=same message as Ger T.)&lt;br /&gt;
&lt;br /&gt;
==How to reveale files outside a course without using datadir for course 1?==&lt;br /&gt;
Can someone explain the right setup and use of the exception array: &lt;br /&gt;
- we want to show a student (after login) only his own file from that store&lt;br /&gt;
- we want to show a teacher/tutor only the files from the students in his course(s)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
# Ger Tielemans&lt;br /&gt;
# Jan Kater&lt;br /&gt;
&lt;br /&gt;
==How to repair the last bug in the old bookmark option ?==&lt;br /&gt;
We changed William&#039;s bookmark in a student only note-taking tool and (thanks Chardelle!) almost repaired the complete bookmark for 1.6. (and it can be accessed from My Page)&lt;br /&gt;
Bug: Only when the user tries to sort the heder in the overview, the text of the headers disappear.&lt;br /&gt;
Code clean-up: how to remove obsolete code and make the bookmark pages secure?&lt;br /&gt;
(Wish for new code: categories are privat, so allow a student to delete a self created category)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
Ger Tielemans&lt;br /&gt;
&lt;br /&gt;
==How to insert a HTML-editor in old code block and make it secure ?==&lt;br /&gt;
To make the set of student note-taking tools complete, I found old code to have a global private notebook.&lt;br /&gt;
(I group this with bookmarks in the calender, so the student has: 1. privat time-related-notes in the calendar, 2. a button for the overview of the privat page-related-notes under the calendar and 3. a global privat notebook for other scribbles..) &lt;br /&gt;
On this moment this piece of code has a flat text editor, would be nice to have HTML or even the new (Ajax?) miniWiki?) &lt;br /&gt;
&lt;br /&gt;
With the new &amp;quot;View as student button&amp;quot; check like if isstudent() {..show..} offers teachers and admins empty - only for real student - spots (so an error)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m interested:&#039;&#039;&lt;br /&gt;
# Ger Tielemans&lt;br /&gt;
# Jan Kater&lt;br /&gt;
&lt;br /&gt;
== Improve the way we integrate Rubrics in Moodle, like... ==&lt;br /&gt;
http://docs.subjectivemetrics.com/User/cam/rubistar/rs_overview.html (Warning! Has loud audio!)&lt;br /&gt;
&lt;br /&gt;
maybe with some flavors of...&lt;br /&gt;
&lt;br /&gt;
http://ipeer.apsc.ubc.ca/ipeer_site/&lt;br /&gt;
&lt;br /&gt;
== ImportOOI in Lesson==&lt;br /&gt;
KISS, a tweak of ImportPPT that just grabs the jpgs from a web folder created by Open Office  Impress and inserts them into page content of branch tables. No text.  Maybe as an option routine if it can&#039;t find the outline.htm file ? Or as a version of ImportPPT that only imports these jpg files. &lt;br /&gt;
&lt;br /&gt;
#chris collman  - wish I could join you and learn&lt;br /&gt;
&lt;br /&gt;
http://moodle.org/mod/forum/discuss.php?d=49714&lt;br /&gt;
&lt;br /&gt;
==Page-Based Chat Roster and Whiteboard ==&lt;br /&gt;
&lt;br /&gt;
The COVCELL project is developing a chat module (based on jabber) for Moodle. Chat rosters are to be generated on a per-page basis, so that anyone who is logged in and is viewing a particular page will be able to see who else is viewing that page and start a chat session with them. Group chat will be supported and it will be possible to use a whiteboard (based on Coccinella) in the chat.&lt;br /&gt;
&lt;br /&gt;
More information can be found at:&lt;br /&gt;
* http://covcell.cms.hu-berlin.de/tracov/wiki/Phase_I&lt;br /&gt;
* http://covcell.org/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Heinz Kuper&lt;br /&gt;
# Steinn Sigurðarson&lt;br /&gt;
# Jens-Martin Loebel&lt;br /&gt;
&lt;br /&gt;
==AV Conferencing and Recording ==&lt;br /&gt;
&lt;br /&gt;
The COVCELL project is developing a module to provide audio-visual conferencing functionality within Moodle. It shall also be possible to record streams. Our development is based on the Red5 project, which is an open source development of the Flash Comm server.&lt;br /&gt;
&lt;br /&gt;
More information can be found at:&lt;br /&gt;
* http://www.osflash.org/red5&lt;br /&gt;
* http://covcell.org/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I&#039;m Interested:&#039;&#039;&lt;br /&gt;
# Heinz Kuper&lt;br /&gt;
# Steinn Sigurðarson&lt;br /&gt;
# Jens-Martin Loebel&lt;br /&gt;
# Alex Little&lt;br /&gt;
# Dan Stowell&lt;br /&gt;
&lt;br /&gt;
==Add your suggestion here ...==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Go on, you know you want to.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodlemoot.org/ http://moodlemoot.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
</feed>