<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/test/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/test/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Danstowell"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/Special:Contributions/Danstowell"/>
	<updated>2026-04-14T14:55:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/test/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/test/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/test/index.php?title=Development:Coding&amp;diff=21107</id>
		<title>Development:Coding</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Development:Coding&amp;diff=21106</id>
		<title>Development:Coding</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Development:Coding&amp;diff=21105</id>
		<title>Development:Coding</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Changing_some_of_the_words_used&amp;diff=17383</id>
		<title>Changing some of the words used</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Changing_some_of_the_words_used&amp;diff=17383"/>
		<updated>2006-10-22T11:52:46Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: cat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have installed Moodle and one to change one or two of the words Moodle uses (for example, if the word &amp;quot;course&amp;quot;/&amp;quot;courses&amp;quot; is not appropriate for your context), simply follow the [[Translation#Making_small_customisations|&amp;quot;Making small customisations&amp;quot;]] instructions in the [[Translation]] instructions. You can define your &amp;quot;localised&amp;quot; strings in a separate file, which means they won&#039;t be overwritten when you upgrade Moodle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Language]]&lt;br /&gt;
[[Category:Administrator]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=Translation&amp;diff=17382</id>
		<title>Translation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Translation&amp;diff=17382"/>
		<updated>2006-10-22T11:51:10Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Making small customisations */  bolding&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle has been designed for internationalisation. Each &#039;string&#039; or &#039;page&#039; of text that is displayed as part of the interface is drawn from a set of language files.&lt;br /&gt;
&lt;br /&gt;
== Structure of a Moodle language pack ==&lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
*All Moodle language packs may be found in the &#039;&#039;lang&#039;&#039; folder, with each language in a unique folder named the same as the language short name e.g. &#039;&#039;es&#039;&#039;, &#039;&#039;nl&#039;&#039;. From Moodle 1.6 upwards, the &#039;&#039;lang&#039;&#039; folder may be found in &#039;&#039;moodledata&#039;&#039;, with pack names indicating they are UTF-8 language packs e.g. &#039;&#039;es_utf8&#039;&#039;, &#039;&#039;nl_utf8&#039;&#039;. The default English language pack, &#039;&#039;en_utf8&#039;&#039;, remains in &#039;&#039;moodle/lang&#039;&#039;, along with a tiny non-UTF-8 version (&#039;&#039;en&#039;&#039;) for use in the 1.5 to 1.6 upgrade, prior to the database migration process.&lt;br /&gt;
&lt;br /&gt;
*All the main files are in the &#039;&#039;lang/xx_utf8&#039;&#039; folder, with .php extensions (eg &#039;&#039;moodle.php&#039;&#039;, &#039;&#039;resource.php&#039;&#039; etc).  These files contains short phrases, often called &amp;quot;strings&amp;quot;. Each string supports variable substitution, to support variable ordering in different languages.&lt;br /&gt;
&lt;br /&gt;
:e.g. &amp;lt;code&amp;gt;$strdueby = get_string(&amp;quot;assignmentdueby&amp;quot;, &amp;quot;assignment&amp;quot;, userdate($date));&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If a string doesn&#039;t exist in a particular language, then the equivalent in English will automatically be used instead.&lt;br /&gt;
&lt;br /&gt;
:There is also a &#039;&#039;help&#039;&#039; folder containing HTML pages for pop-up context-sensitive help.&lt;br /&gt;
&lt;br /&gt;
*Installation language packs may be found in the &#039;&#039;install/lang&#039;&#039; folder. These language packs contain only the strings needed for the installation process. The files are generated automatically every night by the download.moodle.org server and &#039;&#039;&#039;must not be changed manually&#039;&#039;&#039;. For translators this is a unusual experience, since changes you add to the strings used in the installation script will not be visible until 24 hours later in a new download of your 1.6 installation.&lt;br /&gt;
&lt;br /&gt;
==Creating a new language pack==&lt;br /&gt;
&lt;br /&gt;
If your language is not yet supported by Moodle, you may want to start a new translation.  If you are starting a new language, please contact [[User:koen roggemans|Koen Roggemans]] our Translation Coordinator (&#039;&#039;translation@moodle.org&#039;&#039;). You may also like to post in the Using Moodle [http://moodle.org/mod/forum/view.php?id=43 Languages Forum].&lt;br /&gt;
&lt;br /&gt;
All you need to do is create a new folder in the lang directory using the 2-letter code for your language. You can find these standard codes in &#039;&#039;lib/languages.php&#039;&#039;. If you are making a local variation of another language, use the code of that language with an underscore and a meaningful two letter extension (e.g. pt for Portuguese and pt_br for Brasilian variation of the Portuguese language pack).  If you are making a Unicode version add _utf8 at the end (eg sr_utf8). Language packs created with a new Moodle 1.6 or with a Moodle 1.6 in Unicode mode are always in Unicode and should get the _utf8 suffix.&lt;br /&gt;
&lt;br /&gt;
Next, copy the &#039;&#039;langconfig.php&#039;&#039; from another language into your new directory.  The one from the &amp;quot;en_utf8&amp;quot; folder is usually best.&lt;br /&gt;
&lt;br /&gt;
You are now ready to start inserting new strings by editing your language... see below for details on this.&lt;br /&gt;
&lt;br /&gt;
Note that your new language pack may not show up immediately on the dropdown list if under your site configuration you have langcache set to &amp;quot;Yes.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
Since Moodle 1.6, only UTF-8 is used as characterset. This setting is located in a string named &amp;quot;thischarset&amp;quot; in &#039;&#039;langconfig.php&#039;&#039; and should not be changed. All other settings for your language pack, as the notation of dates, the locale string, the direction etc. are in this file and can be changed there. Just be careful! ;-)&lt;br /&gt;
&lt;br /&gt;
==Editing an existing language pack==&lt;br /&gt;
&lt;br /&gt;
===Making small customisations===&lt;br /&gt;
&lt;br /&gt;
If you just want to change a few things in the interface to suit your own site better, don&#039;t start editing one of the standard language packs.  If you do then your changes will be overwritten next time you upgrade to a new Moodle.&lt;br /&gt;
&lt;br /&gt;
Instead, use the instructions above for making a brand new language pack, add a string &#039;parentlanguage&#039; (in &#039;&#039;&#039;&#039;&#039;langconfig.php&#039;&#039;&#039;&#039;&#039;) with the code of the language that is most similar to yours.  That language will be checked by Moodle for anything missing from yours. Here&#039;s an example of such a line:&lt;br /&gt;
&lt;br /&gt;
 $string[&#039;parentlanguage&#039;] = &#039;en_utf8&#039;;&lt;br /&gt;
&lt;br /&gt;
A good name for a local English variant could be &amp;quot;en_utf8_local&amp;quot;, and the parent language would be defined as &amp;quot;en_utf8&amp;quot; or &amp;quot;en_us_utf8&amp;quot;. &#039;&#039;(For Moodle 1.5 and earlier, omit the &amp;quot;_utf8&amp;quot; from the names, since older versions of Moodle don&#039;t use UTF8.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note that you also have to create a string &#039;thislanguage&#039; in &#039;&#039;&#039;&#039;&#039;moodle.php&#039;&#039;&#039;&#039;&#039; for your &amp;quot;en_utf8_local&amp;quot; language pack:&lt;br /&gt;
&lt;br /&gt;
 $string[&#039;thislanguage&#039;] = &#039;English at OCU&#039;;&lt;br /&gt;
&lt;br /&gt;
In Moodle 1.5.x and earlier you would have to then make sure everyone chooses your new language pack.  They can change it in their profiles or you can issue an SQL command to change everyone, and prevent them changing it by restricting the available languages on Administration &amp;gt;&amp;gt; Configuration &amp;gt;&amp;gt; [[Variables]].&lt;br /&gt;
&lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
Starting in Moodle 1.6, the very best method is just to create a new language directory called &amp;quot;xxxx_local&amp;quot; where xxxx is the name of the language pack you want to modify (eg es_utf8_local or ja_utf8_local).  This new local language pack will automatically be checked before the main one.   The local pack only needs to contain the local changes (you don&#039;t need a complete copy of the language you are modifying).  It will not appear in the language menus for selection and your users do not need to change their settings. &lt;br /&gt;
&lt;br /&gt;
The &#039;parentlanguage&#039; method described above for 1.5 still works, just in case you want to create more than one variant of one language.   In this case, you still have to add the  &#039;thislanguage&#039; string, except in 1.6 you add it to the &#039;&#039;langconfig.php&#039;&#039; and not to  &#039;&#039;moodle.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Translating the Moodle interface language files (the &amp;quot;string&amp;quot; files)===&lt;br /&gt;
&lt;br /&gt;
# Log on to your Moodle server as an administrator.&lt;br /&gt;
# Go to Administration &amp;gt;&amp;gt; Configuration &amp;gt;&amp;gt; [[Language]], which is the language administration page.&lt;br /&gt;
# On this page you can choose your language from the menu, then choose &amp;quot;Compare and Edit Language&amp;quot;.&lt;br /&gt;
# You should see forms you can edit for each file. If you do not, then you may have to make sure that the files are writeable - you may have to change file permissions in your web folder.&lt;br /&gt;
# The forms consist of three columns, the first is the name of each string, the second is that string in English, and the last is translation in the current language.&lt;br /&gt;
# Edit missing strings in each files (highlighted in colour), remembering to hit the &amp;quot;Save changes&amp;quot; button at the end of each form.&lt;br /&gt;
# It&#039;s OK to leave strings empty - Moodle will simply use the parent language for that string instead. You can define the parent language in langconfig.php, otherwise English is always used by default.&lt;br /&gt;
# A quick way to see all the missing strings is by using the button to &amp;quot;Check for missing strings&amp;quot;. Leave the untranslated strings completely empty or this handy tool won&#039;t work.&lt;br /&gt;
&lt;br /&gt;
===Translating the help files===&lt;br /&gt;
&lt;br /&gt;
There is a built-in editor in Moodle to translate the help files. It uses the en_utf8 language pack as a reference language. You are strongly advised to use this editor: it cleans out some possible problems, it warns you for old translations and it marks (with stars in the drop down list) wich files are out of date and takes care of Unicode.&lt;br /&gt;
If you want another language than English as a reference (wich is not a good idea), you copy a help file from the reference language pack and paste it on the same location in your own language pack. Then use a plain text editor with Unicode support to translate the file, making sure not to modify any code in the file (there usually is no code, just HTML-tags). (DON&#039;T USE A WORDPROCESSOR to write the help-files because these programs add too much rubbish to the files).&lt;br /&gt;
Don&#039;t leave untranslated help files or empty files in your language pack.&lt;br /&gt;
&lt;br /&gt;
Take care to write the helpfiles XHTML-compliant. This means in short:&lt;br /&gt;
&lt;br /&gt;
* All tags should be closed: &amp;lt;pre&amp;gt;&amp;lt;p&amp;gt;lalala&amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* All elements should be nested: &amp;lt;pre&amp;gt;&amp;lt;p&amp;gt; lalala &amp;lt;em&amp;gt;lalala&amp;lt;/em&amp;gt; &amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* All elements and attributes must be lower case&lt;br /&gt;
* All atributes should be written in full and with quotes : &amp;lt;pre&amp;gt;&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt; lalala &amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Empty elements must end with /&amp;gt;: &amp;lt;pre&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;hr /&amp;gt;&amp;lt;/pre&amp;gt;. You should add an extra space before the &amp;quot;/&amp;quot; symbol.&lt;br /&gt;
* An &amp;lt;img should have an alt=&amp;quot;&amp;quot; (it can be empty) en must be closed like other empty elements with a space and /&amp;gt; like &amp;lt;pre&amp;gt;&amp;lt;img alt=&amp;quot;&amp;quot; src=&amp;quot;picture.gif&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;?= and &amp;lt;? should be &amp;lt;pre&amp;gt;&amp;lt;?php&amp;lt;/pre&amp;gt;&lt;br /&gt;
* There should not be ANY font tags at all. &amp;lt;pre&amp;gt;&amp;lt;p&amp;gt;&amp;lt;em&amp;gt; &amp;lt;h1&amp;gt; &amp;lt;h2&amp;gt;&amp;lt;/pre&amp;gt; etc should be enough for the language files ...&lt;br /&gt;
&lt;br /&gt;
None of the files in the help folder need a doc type, html, body, head opening and closing tags - these files are included with &#039;&#039;help.php&#039;&#039;. The script will take care of welforming the pages. This means also there is not much room for HTML creativity! Please stick to the English example.&lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
The files in the docs folder must be completely XHTML compliant, including doc type, header etc. From Moodle 1.6 they will be moved to this wiki.&lt;br /&gt;
&lt;br /&gt;
Clicking on &amp;quot;Check for missing strings&amp;quot; in the language administration screen will also show you what files you are missing. If you have missing files then Moodle will use the parent language instead, so don&#039;t leave copies of untranslated help files in your language pack or this handy tool won&#039;t work.&lt;br /&gt;
&lt;br /&gt;
==Submitting your language pack to the Moodle project==&lt;br /&gt;
&lt;br /&gt;
Sharing your translation with Moodle will ensure that you help other people who speak your language. Your interface language will be available in future versions of Moodle.&lt;br /&gt;
&lt;br /&gt;
Simply archive your whole new language directory as a zip file and email it to &#039;&#039;translation@moodle.org&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We will get back to you with further details.&lt;br /&gt;
&lt;br /&gt;
Checklist you can use before committing:&lt;br /&gt;
&lt;br /&gt;
* No empty files?&lt;br /&gt;
* No untranslated files or strings?&lt;br /&gt;
* Help files not edited with a wordprocessor?&lt;br /&gt;
* README file contains language, name and emailadress of the translator?&lt;br /&gt;
* Foldername is the right language code (check &#039;&#039;moodle\lib\languages.php&#039;&#039;)?&lt;br /&gt;
* Does the language pack run errorfree on a testsite?&lt;br /&gt;
* Are the strings and files XHTML compliant?&lt;br /&gt;
* Does &#039;&#039;langconfig.php&#039;&#039; exists and is it correct?&lt;br /&gt;
&lt;br /&gt;
==Maintenance of a standard language pack==&lt;br /&gt;
&lt;br /&gt;
If you are committed to maintaining a language in Moodle, it&#039;s best to use [[CVS for Developers|Moodle CVS]] so that you have an up-to-date version of Moodle, and can easily &amp;quot;check in&amp;quot; your changes directly into the Moodle project. &lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
You should always use HEAD to do translation. Instead of modifying the lang pack within your main code tree as it was until Moodle 1.6, you will now be modifying the one within your dataroot/lang directory.&lt;br /&gt;
&lt;br /&gt;
* Always check out the very latest Moodle code&lt;br /&gt;
* Upgrade your site. Of course you use a NON-PRODUCTION server for this.  &lt;br /&gt;
* Go to your dataroot directory and check out the new lang directory from CVS there like this on Unix/Linux&lt;br /&gt;
&lt;br /&gt;
   cd moodledata    (for example)&lt;br /&gt;
   cvs -z3 -d:ext:me@moodle.cvs.sourceforge.net:/cvsroot/moodle co lang&lt;br /&gt;
&lt;br /&gt;
or like this with Tortoise on Windows, &lt;br /&gt;
&lt;br /&gt;
   right click on your dataroot folder, choose &amp;quot;CVS Checkout&amp;quot;, &lt;br /&gt;
   CVSROOT field:  :ext:sfusername@moodle.cvs.sourceforge.net:/cvsroot/moodle&lt;br /&gt;
   Module: lang&lt;br /&gt;
&lt;br /&gt;
* Continue editing languages from within the Moodle GUI as you did before Moodle 1.6.  &lt;br /&gt;
&lt;br /&gt;
To check them into CVS, just go into the dataroot/lang directory and commit your changes.&lt;br /&gt;
&lt;br /&gt;
If you really want to continue updating the language packs for 1.5.x or earlier, then you should zip the folder of your langpack and mail it to &#039;&#039;translation@moodle.org&#039;&#039;. CVS write access on moodle/lang/xx will be moved to lang/xx_utf8.&lt;br /&gt;
&lt;br /&gt;
Please contact &#039;&#039;translation@moodle.org&#039;&#039; if you need help setting this up.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/view.php?id=43 Languages Forum] - news and discussion about issues that affect translations&lt;br /&gt;
*[[Translation credits]]&lt;br /&gt;
*To keep in touch with changes in the project on a day-to-day basis it is recommended that you subscribe to the [http://sourceforge.net/mail/?group_id=30935 CVS mailing list]. This helps to keep your translation as close to the English text as possible.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Language]]&lt;br /&gt;
&lt;br /&gt;
[[es:Traducciones]]&lt;br /&gt;
[[fr:Traduction]]&lt;br /&gt;
[[nl:Vertalen]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=Translation&amp;diff=17381</id>
		<title>Translation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Translation&amp;diff=17381"/>
		<updated>2006-10-22T11:43:01Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Making small customisations */ Updating information so it&amp;#039;s more oriented towards 1.6 and later, also reworked it slightly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moodle has been designed for internationalisation. Each &#039;string&#039; or &#039;page&#039; of text that is displayed as part of the interface is drawn from a set of language files.&lt;br /&gt;
&lt;br /&gt;
== Structure of a Moodle language pack ==&lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
*All Moodle language packs may be found in the &#039;&#039;lang&#039;&#039; folder, with each language in a unique folder named the same as the language short name e.g. &#039;&#039;es&#039;&#039;, &#039;&#039;nl&#039;&#039;. From Moodle 1.6 upwards, the &#039;&#039;lang&#039;&#039; folder may be found in &#039;&#039;moodledata&#039;&#039;, with pack names indicating they are UTF-8 language packs e.g. &#039;&#039;es_utf8&#039;&#039;, &#039;&#039;nl_utf8&#039;&#039;. The default English language pack, &#039;&#039;en_utf8&#039;&#039;, remains in &#039;&#039;moodle/lang&#039;&#039;, along with a tiny non-UTF-8 version (&#039;&#039;en&#039;&#039;) for use in the 1.5 to 1.6 upgrade, prior to the database migration process.&lt;br /&gt;
&lt;br /&gt;
*All the main files are in the &#039;&#039;lang/xx_utf8&#039;&#039; folder, with .php extensions (eg &#039;&#039;moodle.php&#039;&#039;, &#039;&#039;resource.php&#039;&#039; etc).  These files contains short phrases, often called &amp;quot;strings&amp;quot;. Each string supports variable substitution, to support variable ordering in different languages.&lt;br /&gt;
&lt;br /&gt;
:e.g. &amp;lt;code&amp;gt;$strdueby = get_string(&amp;quot;assignmentdueby&amp;quot;, &amp;quot;assignment&amp;quot;, userdate($date));&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:If a string doesn&#039;t exist in a particular language, then the equivalent in English will automatically be used instead.&lt;br /&gt;
&lt;br /&gt;
:There is also a &#039;&#039;help&#039;&#039; folder containing HTML pages for pop-up context-sensitive help.&lt;br /&gt;
&lt;br /&gt;
*Installation language packs may be found in the &#039;&#039;install/lang&#039;&#039; folder. These language packs contain only the strings needed for the installation process. The files are generated automatically every night by the download.moodle.org server and &#039;&#039;&#039;must not be changed manually&#039;&#039;&#039;. For translators this is a unusual experience, since changes you add to the strings used in the installation script will not be visible until 24 hours later in a new download of your 1.6 installation.&lt;br /&gt;
&lt;br /&gt;
==Creating a new language pack==&lt;br /&gt;
&lt;br /&gt;
If your language is not yet supported by Moodle, you may want to start a new translation.  If you are starting a new language, please contact [[User:koen roggemans|Koen Roggemans]] our Translation Coordinator (&#039;&#039;translation@moodle.org&#039;&#039;). You may also like to post in the Using Moodle [http://moodle.org/mod/forum/view.php?id=43 Languages Forum].&lt;br /&gt;
&lt;br /&gt;
All you need to do is create a new folder in the lang directory using the 2-letter code for your language. You can find these standard codes in &#039;&#039;lib/languages.php&#039;&#039;. If you are making a local variation of another language, use the code of that language with an underscore and a meaningful two letter extension (e.g. pt for Portuguese and pt_br for Brasilian variation of the Portuguese language pack).  If you are making a Unicode version add _utf8 at the end (eg sr_utf8). Language packs created with a new Moodle 1.6 or with a Moodle 1.6 in Unicode mode are always in Unicode and should get the _utf8 suffix.&lt;br /&gt;
&lt;br /&gt;
Next, copy the &#039;&#039;langconfig.php&#039;&#039; from another language into your new directory.  The one from the &amp;quot;en_utf8&amp;quot; folder is usually best.&lt;br /&gt;
&lt;br /&gt;
You are now ready to start inserting new strings by editing your language... see below for details on this.&lt;br /&gt;
&lt;br /&gt;
Note that your new language pack may not show up immediately on the dropdown list if under your site configuration you have langcache set to &amp;quot;Yes.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
Since Moodle 1.6, only UTF-8 is used as characterset. This setting is located in a string named &amp;quot;thischarset&amp;quot; in &#039;&#039;langconfig.php&#039;&#039; and should not be changed. All other settings for your language pack, as the notation of dates, the locale string, the direction etc. are in this file and can be changed there. Just be careful! ;-)&lt;br /&gt;
&lt;br /&gt;
==Editing an existing language pack==&lt;br /&gt;
&lt;br /&gt;
===Making small customisations===&lt;br /&gt;
&lt;br /&gt;
If you just want to change a few things in the interface to suit your own site better, don&#039;t start editing one of the standard language packs.  If you do then your changes will be overwritten next time you upgrade to a new Moodle.&lt;br /&gt;
&lt;br /&gt;
Instead, use the instructions above for making a brand new language pack, add a string &#039;parentlanguage&#039; (in &#039;&#039;langconfig.php&#039;&#039;) with the code of the language that is most similar to yours.  That language will be checked by Moodle for anything missing from yours. Here&#039;s an example of such a line:&lt;br /&gt;
&lt;br /&gt;
 $string[&#039;parentlanguage&#039;] = &#039;en_utf8&#039;;&lt;br /&gt;
&lt;br /&gt;
A good name for a local English variant could be &amp;quot;en_utf8_local&amp;quot;, and the parent language would be defined as &amp;quot;en_utf8&amp;quot; or &amp;quot;en_us_utf8&amp;quot;. &#039;&#039;(For Moodle 1.5 and earlier, omit the &amp;quot;_utf8&amp;quot; from the names, since older versions of Moodle don&#039;t use UTF8.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Note that you also have to create a string &#039;thislanguage&#039; in &#039;&#039;moodle.php&#039;&#039; for your &amp;quot;en_utf8_local&amp;quot; language pack:&lt;br /&gt;
&lt;br /&gt;
 $string[&#039;thislanguage&#039;] = &#039;English at OCU&#039;;&lt;br /&gt;
&lt;br /&gt;
In Moodle 1.5.x and earlier you would have to then make sure everyone chooses your new language pack.  They can change it in their profiles or you can issue an SQL command to change everyone, and prevent them changing it by restricting the available languages on Administration &amp;gt;&amp;gt; Configuration &amp;gt;&amp;gt; [[Variables]].&lt;br /&gt;
&lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
Starting in Moodle 1.6, the very best method is just to create a new language directory called &amp;quot;xxxx_local&amp;quot; where xxxx is the name of the language pack you want to modify (eg es_utf8_local or ja_utf8_local).  This new local language pack will automatically be checked before the main one.   The local pack only needs to contain the local changes (you don&#039;t need a complete copy of the language you are modifying).  It will not appear in the language menus for selection and your users do not need to change their settings. &lt;br /&gt;
&lt;br /&gt;
The &#039;parentlanguage&#039; method described above for 1.5 still works, just in case you want to create more than one variant of one language.   In this case, you still have to add the  &#039;thislanguage&#039; string, except in 1.6 you add it to the &#039;&#039;langconfig.php&#039;&#039; and not to  &#039;&#039;moodle.php&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Translating the Moodle interface language files (the &amp;quot;string&amp;quot; files)===&lt;br /&gt;
&lt;br /&gt;
# Log on to your Moodle server as an administrator.&lt;br /&gt;
# Go to Administration &amp;gt;&amp;gt; Configuration &amp;gt;&amp;gt; [[Language]], which is the language administration page.&lt;br /&gt;
# On this page you can choose your language from the menu, then choose &amp;quot;Compare and Edit Language&amp;quot;.&lt;br /&gt;
# You should see forms you can edit for each file. If you do not, then you may have to make sure that the files are writeable - you may have to change file permissions in your web folder.&lt;br /&gt;
# The forms consist of three columns, the first is the name of each string, the second is that string in English, and the last is translation in the current language.&lt;br /&gt;
# Edit missing strings in each files (highlighted in colour), remembering to hit the &amp;quot;Save changes&amp;quot; button at the end of each form.&lt;br /&gt;
# It&#039;s OK to leave strings empty - Moodle will simply use the parent language for that string instead. You can define the parent language in langconfig.php, otherwise English is always used by default.&lt;br /&gt;
# A quick way to see all the missing strings is by using the button to &amp;quot;Check for missing strings&amp;quot;. Leave the untranslated strings completely empty or this handy tool won&#039;t work.&lt;br /&gt;
&lt;br /&gt;
===Translating the help files===&lt;br /&gt;
&lt;br /&gt;
There is a built-in editor in Moodle to translate the help files. It uses the en_utf8 language pack as a reference language. You are strongly advised to use this editor: it cleans out some possible problems, it warns you for old translations and it marks (with stars in the drop down list) wich files are out of date and takes care of Unicode.&lt;br /&gt;
If you want another language than English as a reference (wich is not a good idea), you copy a help file from the reference language pack and paste it on the same location in your own language pack. Then use a plain text editor with Unicode support to translate the file, making sure not to modify any code in the file (there usually is no code, just HTML-tags). (DON&#039;T USE A WORDPROCESSOR to write the help-files because these programs add too much rubbish to the files).&lt;br /&gt;
Don&#039;t leave untranslated help files or empty files in your language pack.&lt;br /&gt;
&lt;br /&gt;
Take care to write the helpfiles XHTML-compliant. This means in short:&lt;br /&gt;
&lt;br /&gt;
* All tags should be closed: &amp;lt;pre&amp;gt;&amp;lt;p&amp;gt;lalala&amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* All elements should be nested: &amp;lt;pre&amp;gt;&amp;lt;p&amp;gt; lalala &amp;lt;em&amp;gt;lalala&amp;lt;/em&amp;gt; &amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* All elements and attributes must be lower case&lt;br /&gt;
* All atributes should be written in full and with quotes : &amp;lt;pre&amp;gt;&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt; lalala &amp;lt;/p&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Empty elements must end with /&amp;gt;: &amp;lt;pre&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;hr /&amp;gt;&amp;lt;/pre&amp;gt;. You should add an extra space before the &amp;quot;/&amp;quot; symbol.&lt;br /&gt;
* An &amp;lt;img should have an alt=&amp;quot;&amp;quot; (it can be empty) en must be closed like other empty elements with a space and /&amp;gt; like &amp;lt;pre&amp;gt;&amp;lt;img alt=&amp;quot;&amp;quot; src=&amp;quot;picture.gif&amp;quot; /&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;?= and &amp;lt;? should be &amp;lt;pre&amp;gt;&amp;lt;?php&amp;lt;/pre&amp;gt;&lt;br /&gt;
* There should not be ANY font tags at all. &amp;lt;pre&amp;gt;&amp;lt;p&amp;gt;&amp;lt;em&amp;gt; &amp;lt;h1&amp;gt; &amp;lt;h2&amp;gt;&amp;lt;/pre&amp;gt; etc should be enough for the language files ...&lt;br /&gt;
&lt;br /&gt;
None of the files in the help folder need a doc type, html, body, head opening and closing tags - these files are included with &#039;&#039;help.php&#039;&#039;. The script will take care of welforming the pages. This means also there is not much room for HTML creativity! Please stick to the English example.&lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
The files in the docs folder must be completely XHTML compliant, including doc type, header etc. From Moodle 1.6 they will be moved to this wiki.&lt;br /&gt;
&lt;br /&gt;
Clicking on &amp;quot;Check for missing strings&amp;quot; in the language administration screen will also show you what files you are missing. If you have missing files then Moodle will use the parent language instead, so don&#039;t leave copies of untranslated help files in your language pack or this handy tool won&#039;t work.&lt;br /&gt;
&lt;br /&gt;
==Submitting your language pack to the Moodle project==&lt;br /&gt;
&lt;br /&gt;
Sharing your translation with Moodle will ensure that you help other people who speak your language. Your interface language will be available in future versions of Moodle.&lt;br /&gt;
&lt;br /&gt;
Simply archive your whole new language directory as a zip file and email it to &#039;&#039;translation@moodle.org&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We will get back to you with further details.&lt;br /&gt;
&lt;br /&gt;
Checklist you can use before committing:&lt;br /&gt;
&lt;br /&gt;
* No empty files?&lt;br /&gt;
* No untranslated files or strings?&lt;br /&gt;
* Help files not edited with a wordprocessor?&lt;br /&gt;
* README file contains language, name and emailadress of the translator?&lt;br /&gt;
* Foldername is the right language code (check &#039;&#039;moodle\lib\languages.php&#039;&#039;)?&lt;br /&gt;
* Does the language pack run errorfree on a testsite?&lt;br /&gt;
* Are the strings and files XHTML compliant?&lt;br /&gt;
* Does &#039;&#039;langconfig.php&#039;&#039; exists and is it correct?&lt;br /&gt;
&lt;br /&gt;
==Maintenance of a standard language pack==&lt;br /&gt;
&lt;br /&gt;
If you are committed to maintaining a language in Moodle, it&#039;s best to use [[CVS for Developers|Moodle CVS]] so that you have an up-to-date version of Moodle, and can easily &amp;quot;check in&amp;quot; your changes directly into the Moodle project. &lt;br /&gt;
{{Moodle 1.6}}&lt;br /&gt;
You should always use HEAD to do translation. Instead of modifying the lang pack within your main code tree as it was until Moodle 1.6, you will now be modifying the one within your dataroot/lang directory.&lt;br /&gt;
&lt;br /&gt;
* Always check out the very latest Moodle code&lt;br /&gt;
* Upgrade your site. Of course you use a NON-PRODUCTION server for this.  &lt;br /&gt;
* Go to your dataroot directory and check out the new lang directory from CVS there like this on Unix/Linux&lt;br /&gt;
&lt;br /&gt;
   cd moodledata    (for example)&lt;br /&gt;
   cvs -z3 -d:ext:me@moodle.cvs.sourceforge.net:/cvsroot/moodle co lang&lt;br /&gt;
&lt;br /&gt;
or like this with Tortoise on Windows, &lt;br /&gt;
&lt;br /&gt;
   right click on your dataroot folder, choose &amp;quot;CVS Checkout&amp;quot;, &lt;br /&gt;
   CVSROOT field:  :ext:sfusername@moodle.cvs.sourceforge.net:/cvsroot/moodle&lt;br /&gt;
   Module: lang&lt;br /&gt;
&lt;br /&gt;
* Continue editing languages from within the Moodle GUI as you did before Moodle 1.6.  &lt;br /&gt;
&lt;br /&gt;
To check them into CVS, just go into the dataroot/lang directory and commit your changes.&lt;br /&gt;
&lt;br /&gt;
If you really want to continue updating the language packs for 1.5.x or earlier, then you should zip the folder of your langpack and mail it to &#039;&#039;translation@moodle.org&#039;&#039;. CVS write access on moodle/lang/xx will be moved to lang/xx_utf8.&lt;br /&gt;
&lt;br /&gt;
Please contact &#039;&#039;translation@moodle.org&#039;&#039; if you need help setting this up.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*Using Moodle [http://moodle.org/mod/forum/view.php?id=43 Languages Forum] - news and discussion about issues that affect translations&lt;br /&gt;
*[[Translation credits]]&lt;br /&gt;
*To keep in touch with changes in the project on a day-to-day basis it is recommended that you subscribe to the [http://sourceforge.net/mail/?group_id=30935 CVS mailing list]. This helps to keep your translation as close to the English text as possible.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Language]]&lt;br /&gt;
&lt;br /&gt;
[[es:Traducciones]]&lt;br /&gt;
[[fr:Traduction]]&lt;br /&gt;
[[nl:Vertalen]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=Changing_some_of_the_words_used&amp;diff=17380</id>
		<title>Changing some of the words used</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Changing_some_of_the_words_used&amp;diff=17380"/>
		<updated>2006-10-22T11:31:35Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: I think it&amp;#039;s worth having this page since the instructions are otherwise &amp;quot;buried&amp;quot; in the Translation page. It took me ages to find the instructions just now!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have installed Moodle and one to change one or two of the words Moodle uses (for example, if the word &amp;quot;course&amp;quot;/&amp;quot;courses&amp;quot; is not appropriate for your context), simply follow the [[Translation#Making_small_customisations|&amp;quot;Making small customisations&amp;quot;]] instructions in the [[Translation]] instructions. You can define your &amp;quot;localised&amp;quot; strings in a separate file, which means they won&#039;t be overwritten when you upgrade Moodle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Language]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/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/test/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/test/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/test/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/test/index.php?title=IMS&amp;diff=16307</id>
		<title>IMS</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=IMS&amp;diff=16306</id>
		<title>IMS</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=IMS&amp;diff=16305</id>
		<title>IMS</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=1.7&amp;diff=16290</id>
		<title>1.7</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=1.7&amp;diff=16290"/>
		<updated>2006-09-25T14:16:05Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please see the [[Roadmap]] for general information, or the category for articles about 1.7-specific details: [[Category:Moodle 1.7]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=1.7&amp;diff=16289</id>
		<title>1.7</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=1.7&amp;diff=16289"/>
		<updated>2006-09-25T14:15:23Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please see the category: [[Category:Moodle 1.7]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=1.7&amp;diff=16288</id>
		<title>1.7</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=1.7&amp;diff=16288"/>
		<updated>2006-09-25T14:14:27Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please see [[Category:Moodle 1.7]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=1.7&amp;diff=16287</id>
		<title>1.7</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=1.7&amp;diff=16287"/>
		<updated>2006-09-25T14:09:25Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Category:Moodle 1.7]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=Projects_for_new_developers&amp;diff=16285</id>
		<title>Projects for new developers</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Projects_for_new_developers&amp;diff=16285"/>
		<updated>2006-09-25T14:03:40Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Integration with bibliographic systems such as Wikindx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are often asked to suggest Moodle development projects suitable for students to attempt.  &lt;br /&gt;
&lt;br /&gt;
Here is our current list of projects.&lt;br /&gt;
&lt;br /&gt;
==Projects needing programmers==&lt;br /&gt;
===Calendar export to iCal===&lt;br /&gt;
==== Background ====&lt;br /&gt;
iCal is the standard format for &amp;quot;streaming&amp;quot; event data, like RSS for calendars. &lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct a solution for producing public and private iCal files from the events in Moodle&#039;s calendar.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# it should be efficient and only updated when new events have been added and only when the ical file has been requested at least once&lt;br /&gt;
# calendars should be produced for each course, for each user, and for the whole site (public view and private view)&lt;br /&gt;
# the iCal files should be standard and compatible with, say, Google Calendar.&lt;br /&gt;
# for some measure of security, calendar URLs should include a long unique encrypted string that is difficult to guess.&lt;br /&gt;
# For extra points, implement an optional method of publishing direct to Google calendar (see [http://code.google.com/apis/gdata/calendar.html Google Calendar API])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [http://moodle.org/mod/forum/discuss.php?d=37393#221976 this forum post] too&lt;br /&gt;
&lt;br /&gt;
===Integration with bibliographic systems such as Wikindx===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Managing references and citing them is an important behaviour in university education and research. Bibliographic facilities are quite complicated and go beyond the capabilities of Moodle built-in technology (e.g. the database activity). Integrating Moodle with open-source bibliographic software such as [http://wikindx.sourceforge.net/ Wikindx] could much facilitate this practice within Moodle.&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct an integration with Wikindx (or other open-source bibliographic tools, if appropriate).&lt;br /&gt;
==== Details ====&lt;br /&gt;
Teachers should be able to easily refer to wikindx bibliography items throughout a Moodle course, and be able to:&lt;br /&gt;
&lt;br /&gt;
* Generate correctly-formatted in-place references (using standard styles e.g. Harvard, IPA) for the commonly-cited reference types (e.g. journal article, book chapter, book). It may be possible to delegate the formatting directly to wikindx (since it already performs functions like these) rather than implementing a whole new set of logic in the Moodle integration.&lt;br /&gt;
** Possibly, allow some kind of direct searching of a wikindx database from within Moodle, so as to make it easier to refer to items&lt;br /&gt;
* Generate reading lists / bibliographies&lt;br /&gt;
* Allow export of the above into common machine-readable formats such as Bibtex or RIS. (Wikindx can perform this so again it&#039;s a question of hooking into, or expanding, wikindx functionality.)&lt;br /&gt;
&lt;br /&gt;
See also [[Development:Wikindx]] and [http://moodle.org/mod/forum/discuss.php?d=23022 this forum discussion] too&lt;br /&gt;
&lt;br /&gt;
==Projects under development==&lt;br /&gt;
&lt;br /&gt;
===Global search===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Currently Moodle has forum searching, glossary searching and database searching, all independent.  There is no way to search for everything else in a course, though, such as resources, wiki pages, activity info (eg assignments) and especially not to do it all in one search. &lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct a modular solution for global search in Moodle.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# it should be fast and accurate &lt;br /&gt;
# it should allow modules to expose their data structures to the core search via the usual API (function in lib.php) allowing any module to include itself in the search&lt;br /&gt;
# it should allow the kinds of search parameters that the forum search does now (or better!)&lt;br /&gt;
# people should not be able to search things they couldn&#039;t normally see&lt;br /&gt;
# it should utilise the new tags system as much as possible&lt;br /&gt;
# (extra points) it should be able to rank results by relevance and combine results in different modules&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Michael Champanis|Michael Champanis]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Global search|Global search project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Presets for Database module===&lt;br /&gt;
==== Background ====&lt;br /&gt;
The [[Database module]] is a new module in Moodle 1.6 that allows teachers to create repositories for structured data entry by students.  Something like Filemaker Pro, it allows a lot of flexibility in the types of data and formatting of input and output screens.  Here is [http://moodle.org/mod/data/view.php?d=13 an example] and [http://moodle.org/mod/data/view.php?d=26 another one].&lt;br /&gt;
==== Overview ====&lt;br /&gt;
Implement presets for the Database module using files similar to [http://cvs.sourceforge.net/viewcvs.py/moodle/moodle/mod/data/preset/imagegallery/ this example].  This will allow people to quickly set up commonly-used applications.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# Each directory of files will fully define the templates and fields for a particular application of the Database module. &lt;br /&gt;
# It should be easy to export current settings as a preset (in a zip file), or load new presets (uploaded as a zip file or from the [[moodledata]] folder)&lt;br /&gt;
# A &amp;quot;glossary&amp;quot; preset should replicate the old Glossary module as much as possible (this may require some extensions to the core Database module)&lt;br /&gt;
# The &amp;quot;Image gallery&amp;quot; preset should implement a really nice photo gallery application.&lt;br /&gt;
# (extra points) devise a way to publish these directly to another site (for example a database on moodle.org)&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Tom Flannaghan|Tom Flannaghan]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Presets for Database module|Presets for Database module project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Integrated bug tracker===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Many sites need a way to &amp;quot;track&amp;quot; contact with students or participants via a sort of &amp;quot;helpdesk&amp;quot; for personalised communication with the teachers or admins.   There are other cases where it would be useful to track issues using a sort of workflow, moving issues through a series of states depending on input from various people.&lt;br /&gt;
====Overview====&lt;br /&gt;
Create a new &amp;quot;tracker&amp;quot; or &amp;quot;workflow&amp;quot; module from scratch to integrate it inside Moodle as an activity module, using normal Moodle authentication, text filters, mail subscriptions and so on.  It may be possible to extend the current database module, but performance is important.&lt;br /&gt;
====Details====&lt;br /&gt;
# It should allow teachers to add flags/fields as necessary.&lt;br /&gt;
# Email subscription to individual bugs should work similar to Moodle forums.&lt;br /&gt;
# Issues should be able to be referenced using a simple URL like http://moodle.org/mod/tracker/view.php?issue=3455&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Clifford Tham|Clifford Tham]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Integrated bug tracker|Integrated bug tracker project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===AJAX course format===&lt;br /&gt;
==== Background ====&lt;br /&gt;
The current course formats are designed to work on lower browsers and older technologies.  They are highly compatible with browsers but can really slow down the course creation process.&lt;br /&gt;
====Overview====&lt;br /&gt;
Design a clean, extensible method for implementing a course format using AJAX.  This may require development of a web service to service the Javascript front end.&lt;br /&gt;
====Details====&lt;br /&gt;
# It should be optional and accessible, so that it can drop back to the current interface on browsers that are incapable of dealing with dynamic pages.&lt;br /&gt;
# Blocks can be dragged and dropped.&lt;br /&gt;
# Sections can be dragged and dropped, made hidden or visible.&lt;br /&gt;
# Activities and resources can be dragged and dropped, made hidden or visible, have the group status changed, etc.&lt;br /&gt;
&lt;br /&gt;
Mentors:  [[Martin Dougiamas]] and [[User:UrsHunkler|Urs Hunkler]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Ed Coyne|Ed Coyne]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/AJAX course format|AJAX course format project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Admin page cleanup===&lt;br /&gt;
====Background====&lt;br /&gt;
Over the years more and more settings have been added to the admin page, and it is starting to outgrow the original simple design.  In particular the Variables page is mess and it&#039;s hard to find settings.&lt;br /&gt;
====Overview====&lt;br /&gt;
Design a new clean, extensible method for implementing the administration page, which contains hundreds of variables and settings for all the many modules in Moodle.&lt;br /&gt;
====Details====&lt;br /&gt;
# Settings should be organised in a way that is obvious and uncluttered, perhaps using tabs or some other  organising structure.&lt;br /&gt;
# New modules should have their settings appear automatically in the admin interface.&lt;br /&gt;
# Define a new plugin structure for arbitrary new admin features under admin/other or something.  Moodle 1.6 already has something like this for reports (admin/report).&lt;br /&gt;
# AJAX can be used, it should be optional and accessible, so that it can drop back to the current interface on browsers that are incapable of dealing with dynamic pages.&lt;br /&gt;
# Add bookmarks to each page, so that often-used pages can be added to the admin block on the home page.&lt;br /&gt;
&lt;br /&gt;
Mentors:  [[Martin Dougiamas]] and [[User:UrsHunkler|Urs Hunkler]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Vincenzo K. Marcovecchio|Vincenzo K. Marcovecchio]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Admin page cleanup|Admin page cleanup project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=Projects_for_new_developers&amp;diff=16278</id>
		<title>Projects for new developers</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Projects_for_new_developers&amp;diff=16278"/>
		<updated>2006-09-25T12:14:54Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are often asked to suggest Moodle development projects suitable for students to attempt.  &lt;br /&gt;
&lt;br /&gt;
Here is our current list of projects.&lt;br /&gt;
&lt;br /&gt;
==Projects needing programmers==&lt;br /&gt;
===Calendar export to iCal===&lt;br /&gt;
==== Background ====&lt;br /&gt;
iCal is the standard format for &amp;quot;streaming&amp;quot; event data, like RSS for calendars. &lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct a solution for producing public and private iCal files from the events in Moodle&#039;s calendar.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# it should be efficient and only updated when new events have been added and only when the ical file has been requested at least once&lt;br /&gt;
# calendars should be produced for each course, for each user, and for the whole site (public view and private view)&lt;br /&gt;
# the iCal files should be standard and compatible with, say, Google Calendar.&lt;br /&gt;
# for some measure of security, calendar URLs should include a long unique encrypted string that is difficult to guess.&lt;br /&gt;
# For extra points, implement an optional method of publishing direct to Google calendar (see [http://code.google.com/apis/gdata/calendar.html Google Calendar API])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [http://moodle.org/mod/forum/discuss.php?d=37393#221976 this forum post] too&lt;br /&gt;
&lt;br /&gt;
===Integration with bibliographic systems such as Wikindx===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Managing references and citing them is an important behaviour in university education and research. Bibliographic facilities are quite complicated and go beyond the capabilities of Moodle built-in technology (e.g. the database activity). Integrating Moodle with open-source bibliographic software such as [http://wikindx.sourceforge.net/ Wikindx] could much facilitate this practice within Moodle.&lt;br /&gt;
&lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct an integration with Wikindx (or other open-source bibliographic tools, if appropriate).&lt;br /&gt;
==== Details ====&lt;br /&gt;
Teachers should be able to easily refer to wikindx bibliography items throughout a Moodle course, and be able to:&lt;br /&gt;
&lt;br /&gt;
* Generate correctly-formatted in-place references (using standard styles e.g. Harvard, IPA) for the commonly-cited reference types (e.g. journal article, book chapter, book). It may be possible to delegate the formatting directly to wikindx (since it already performs functions like these) rather than implementing a whole new set of logic in the Moodle integration.&lt;br /&gt;
** Possibly, allow some kind of direct searching of a wikindx database from within Moodle, so as to make it easier to refer to items&lt;br /&gt;
* Generate reading lists / bibliographies&lt;br /&gt;
* Allow export of the above into common machine-readable formats such as Bibtex or RIS. (Wikindx can perform this so again it&#039;s a question of hooking into, or expanding, wikindx functionality.)&lt;br /&gt;
&lt;br /&gt;
See [http://moodle.org/mod/forum/discuss.php?d=23022 this forum discussion] too&lt;br /&gt;
&lt;br /&gt;
==Projects under development==&lt;br /&gt;
&lt;br /&gt;
===Global search===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Currently Moodle has forum searching, glossary searching and database searching, all independent.  There is no way to search for everything else in a course, though, such as resources, wiki pages, activity info (eg assignments) and especially not to do it all in one search. &lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct a modular solution for global search in Moodle.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# it should be fast and accurate &lt;br /&gt;
# it should allow modules to expose their data structures to the core search via the usual API (function in lib.php) allowing any module to include itself in the search&lt;br /&gt;
# it should allow the kinds of search parameters that the forum search does now (or better!)&lt;br /&gt;
# people should not be able to search things they couldn&#039;t normally see&lt;br /&gt;
# it should utilise the new tags system as much as possible&lt;br /&gt;
# (extra points) it should be able to rank results by relevance and combine results in different modules&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Michael Champanis|Michael Champanis]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Global search|Global search project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Presets for Database module===&lt;br /&gt;
==== Background ====&lt;br /&gt;
The [[Database module]] is a new module in Moodle 1.6 that allows teachers to create repositories for structured data entry by students.  Something like Filemaker Pro, it allows a lot of flexibility in the types of data and formatting of input and output screens.  Here is [http://moodle.org/mod/data/view.php?d=13 an example] and [http://moodle.org/mod/data/view.php?d=26 another one].&lt;br /&gt;
==== Overview ====&lt;br /&gt;
Implement presets for the Database module using files similar to [http://cvs.sourceforge.net/viewcvs.py/moodle/moodle/mod/data/preset/imagegallery/ this example].  This will allow people to quickly set up commonly-used applications.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# Each directory of files will fully define the templates and fields for a particular application of the Database module. &lt;br /&gt;
# It should be easy to export current settings as a preset (in a zip file), or load new presets (uploaded as a zip file or from the [[moodledata]] folder)&lt;br /&gt;
# A &amp;quot;glossary&amp;quot; preset should replicate the old Glossary module as much as possible (this may require some extensions to the core Database module)&lt;br /&gt;
# The &amp;quot;Image gallery&amp;quot; preset should implement a really nice photo gallery application.&lt;br /&gt;
# (extra points) devise a way to publish these directly to another site (for example a database on moodle.org)&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Tom Flannaghan|Tom Flannaghan]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Presets for Database module|Presets for Database module project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Integrated bug tracker===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Many sites need a way to &amp;quot;track&amp;quot; contact with students or participants via a sort of &amp;quot;helpdesk&amp;quot; for personalised communication with the teachers or admins.   There are other cases where it would be useful to track issues using a sort of workflow, moving issues through a series of states depending on input from various people.&lt;br /&gt;
====Overview====&lt;br /&gt;
Create a new &amp;quot;tracker&amp;quot; or &amp;quot;workflow&amp;quot; module from scratch to integrate it inside Moodle as an activity module, using normal Moodle authentication, text filters, mail subscriptions and so on.  It may be possible to extend the current database module, but performance is important.&lt;br /&gt;
====Details====&lt;br /&gt;
# It should allow teachers to add flags/fields as necessary.&lt;br /&gt;
# Email subscription to individual bugs should work similar to Moodle forums.&lt;br /&gt;
# Issues should be able to be referenced using a simple URL like http://moodle.org/mod/tracker/view.php?issue=3455&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Clifford Tham|Clifford Tham]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Integrated bug tracker|Integrated bug tracker project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===AJAX course format===&lt;br /&gt;
==== Background ====&lt;br /&gt;
The current course formats are designed to work on lower browsers and older technologies.  They are highly compatible with browsers but can really slow down the course creation process.&lt;br /&gt;
====Overview====&lt;br /&gt;
Design a clean, extensible method for implementing a course format using AJAX.  This may require development of a web service to service the Javascript front end.&lt;br /&gt;
====Details====&lt;br /&gt;
# It should be optional and accessible, so that it can drop back to the current interface on browsers that are incapable of dealing with dynamic pages.&lt;br /&gt;
# Blocks can be dragged and dropped.&lt;br /&gt;
# Sections can be dragged and dropped, made hidden or visible.&lt;br /&gt;
# Activities and resources can be dragged and dropped, made hidden or visible, have the group status changed, etc.&lt;br /&gt;
&lt;br /&gt;
Mentors:  [[Martin Dougiamas]] and [[User:UrsHunkler|Urs Hunkler]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Ed Coyne|Ed Coyne]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/AJAX course format|AJAX course format project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Admin page cleanup===&lt;br /&gt;
====Background====&lt;br /&gt;
Over the years more and more settings have been added to the admin page, and it is starting to outgrow the original simple design.  In particular the Variables page is mess and it&#039;s hard to find settings.&lt;br /&gt;
====Overview====&lt;br /&gt;
Design a new clean, extensible method for implementing the administration page, which contains hundreds of variables and settings for all the many modules in Moodle.&lt;br /&gt;
====Details====&lt;br /&gt;
# Settings should be organised in a way that is obvious and uncluttered, perhaps using tabs or some other  organising structure.&lt;br /&gt;
# New modules should have their settings appear automatically in the admin interface.&lt;br /&gt;
# Define a new plugin structure for arbitrary new admin features under admin/other or something.  Moodle 1.6 already has something like this for reports (admin/report).&lt;br /&gt;
# AJAX can be used, it should be optional and accessible, so that it can drop back to the current interface on browsers that are incapable of dealing with dynamic pages.&lt;br /&gt;
# Add bookmarks to each page, so that often-used pages can be added to the admin block on the home page.&lt;br /&gt;
&lt;br /&gt;
Mentors:  [[Martin Dougiamas]] and [[User:UrsHunkler|Urs Hunkler]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Vincenzo K. Marcovecchio|Vincenzo K. Marcovecchio]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Admin page cleanup|Admin page cleanup project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=Projects_for_new_developers&amp;diff=16277</id>
		<title>Projects for new developers</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Projects_for_new_developers&amp;diff=16277"/>
		<updated>2006-09-25T12:13:38Z</updated>

		<summary type="html">&lt;p&gt;Danstowell: /* Projects needing programmers */ Added Wikindx&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are often asked to suggest Moodle development projects suitable for students to attempt.  &lt;br /&gt;
&lt;br /&gt;
Here is our current list of projects.&lt;br /&gt;
&lt;br /&gt;
==Projects needing programmers==&lt;br /&gt;
===Calendar export to iCal===&lt;br /&gt;
==== Background ====&lt;br /&gt;
iCal is the standard format for &amp;quot;streaming&amp;quot; event data, like RSS for calendars. &lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct a solution for producing public and private iCal files from the events in Moodle&#039;s calendar.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# it should be efficient and only updated when new events have been added and only when the ical file has been requested at least once&lt;br /&gt;
# calendars should be produced for each course, for each user, and for the whole site (public view and private view)&lt;br /&gt;
# the iCal files should be standard and compatible with, say, Google Calendar.&lt;br /&gt;
# for some measure of security, calendar URLs should include a long unique encrypted string that is difficult to guess.&lt;br /&gt;
# For extra points, implement an optional method of publishing direct to Google calendar (see [http://code.google.com/apis/gdata/calendar.html Google Calendar API])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [http://moodle.org/mod/forum/discuss.php?d=37393#221976 this forum post] too&lt;br /&gt;
&lt;br /&gt;
===Integration with bibliographic systems such as Wikindx===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Managing references and citing them is an important behaviour in university education and research. Bibliographic facilities are quite complicated and so go beyond Moodle built-in technology (e.g. the database activity). Integrating Moodle with open-source bibliographic software such as [http://wikindx.sourceforge.net/ Wikindx] could much facilitate this practice within Moodle.&lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct an integration with Wikindx (or other open-source bibliographic tools, if appropriate).&lt;br /&gt;
==== Details ====&lt;br /&gt;
Teachers should be able to easily refer to wikindx bibliography items throughout a Moodle course, and be able to:&lt;br /&gt;
&lt;br /&gt;
* Generate correctly-formatted in-place references (using standard styles e.g. Harvard, IPA) for the commonly-cited reference types (e.g. journal article, book chapter, book). It may be possible to delegate the formatting directly to wikindx (since it already performs functions like these) rather than implementing a whole new set of logic in the Moodle integration.&lt;br /&gt;
** Possibly, allow some kind of direct searching of a wikindx database from within Moodle, so as to make it easier to refer to items&lt;br /&gt;
* Generate reading lists / bibliographies&lt;br /&gt;
* Allow export of the above into common machine-readable formats such as Bibtex or RIS. (Wikindx can perform this so again it&#039;s a question of hooking into, or expanding, wikindx functionality.)&lt;br /&gt;
&lt;br /&gt;
See [http://moodle.org/mod/forum/discuss.php?d=23022 this forum discussion] too&lt;br /&gt;
&lt;br /&gt;
==Projects under development==&lt;br /&gt;
&lt;br /&gt;
===Global search===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Currently Moodle has forum searching, glossary searching and database searching, all independent.  There is no way to search for everything else in a course, though, such as resources, wiki pages, activity info (eg assignments) and especially not to do it all in one search. &lt;br /&gt;
==== Overview ====&lt;br /&gt;
Design and construct a modular solution for global search in Moodle.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# it should be fast and accurate &lt;br /&gt;
# it should allow modules to expose their data structures to the core search via the usual API (function in lib.php) allowing any module to include itself in the search&lt;br /&gt;
# it should allow the kinds of search parameters that the forum search does now (or better!)&lt;br /&gt;
# people should not be able to search things they couldn&#039;t normally see&lt;br /&gt;
# it should utilise the new tags system as much as possible&lt;br /&gt;
# (extra points) it should be able to rank results by relevance and combine results in different modules&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Michael Champanis|Michael Champanis]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Global search|Global search project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Presets for Database module===&lt;br /&gt;
==== Background ====&lt;br /&gt;
The [[Database module]] is a new module in Moodle 1.6 that allows teachers to create repositories for structured data entry by students.  Something like Filemaker Pro, it allows a lot of flexibility in the types of data and formatting of input and output screens.  Here is [http://moodle.org/mod/data/view.php?d=13 an example] and [http://moodle.org/mod/data/view.php?d=26 another one].&lt;br /&gt;
==== Overview ====&lt;br /&gt;
Implement presets for the Database module using files similar to [http://cvs.sourceforge.net/viewcvs.py/moodle/moodle/mod/data/preset/imagegallery/ this example].  This will allow people to quickly set up commonly-used applications.&lt;br /&gt;
==== Details ====&lt;br /&gt;
# Each directory of files will fully define the templates and fields for a particular application of the Database module. &lt;br /&gt;
# It should be easy to export current settings as a preset (in a zip file), or load new presets (uploaded as a zip file or from the [[moodledata]] folder)&lt;br /&gt;
# A &amp;quot;glossary&amp;quot; preset should replicate the old Glossary module as much as possible (this may require some extensions to the core Database module)&lt;br /&gt;
# The &amp;quot;Image gallery&amp;quot; preset should implement a really nice photo gallery application.&lt;br /&gt;
# (extra points) devise a way to publish these directly to another site (for example a database on moodle.org)&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Tom Flannaghan|Tom Flannaghan]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Presets for Database module|Presets for Database module project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Integrated bug tracker===&lt;br /&gt;
==== Background ====&lt;br /&gt;
Many sites need a way to &amp;quot;track&amp;quot; contact with students or participants via a sort of &amp;quot;helpdesk&amp;quot; for personalised communication with the teachers or admins.   There are other cases where it would be useful to track issues using a sort of workflow, moving issues through a series of states depending on input from various people.&lt;br /&gt;
====Overview====&lt;br /&gt;
Create a new &amp;quot;tracker&amp;quot; or &amp;quot;workflow&amp;quot; module from scratch to integrate it inside Moodle as an activity module, using normal Moodle authentication, text filters, mail subscriptions and so on.  It may be possible to extend the current database module, but performance is important.&lt;br /&gt;
====Details====&lt;br /&gt;
# It should allow teachers to add flags/fields as necessary.&lt;br /&gt;
# Email subscription to individual bugs should work similar to Moodle forums.&lt;br /&gt;
# Issues should be able to be referenced using a simple URL like http://moodle.org/mod/tracker/view.php?issue=3455&lt;br /&gt;
&lt;br /&gt;
Mentor:  [[Martin Dougiamas]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Clifford Tham|Clifford Tham]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Integrated bug tracker|Integrated bug tracker project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===AJAX course format===&lt;br /&gt;
==== Background ====&lt;br /&gt;
The current course formats are designed to work on lower browsers and older technologies.  They are highly compatible with browsers but can really slow down the course creation process.&lt;br /&gt;
====Overview====&lt;br /&gt;
Design a clean, extensible method for implementing a course format using AJAX.  This may require development of a web service to service the Javascript front end.&lt;br /&gt;
====Details====&lt;br /&gt;
# It should be optional and accessible, so that it can drop back to the current interface on browsers that are incapable of dealing with dynamic pages.&lt;br /&gt;
# Blocks can be dragged and dropped.&lt;br /&gt;
# Sections can be dragged and dropped, made hidden or visible.&lt;br /&gt;
# Activities and resources can be dragged and dropped, made hidden or visible, have the group status changed, etc.&lt;br /&gt;
&lt;br /&gt;
Mentors:  [[Martin Dougiamas]] and [[User:UrsHunkler|Urs Hunkler]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Ed Coyne|Ed Coyne]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/AJAX course format|AJAX course format project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Admin page cleanup===&lt;br /&gt;
====Background====&lt;br /&gt;
Over the years more and more settings have been added to the admin page, and it is starting to outgrow the original simple design.  In particular the Variables page is mess and it&#039;s hard to find settings.&lt;br /&gt;
====Overview====&lt;br /&gt;
Design a new clean, extensible method for implementing the administration page, which contains hundreds of variables and settings for all the many modules in Moodle.&lt;br /&gt;
====Details====&lt;br /&gt;
# Settings should be organised in a way that is obvious and uncluttered, perhaps using tabs or some other  organising structure.&lt;br /&gt;
# New modules should have their settings appear automatically in the admin interface.&lt;br /&gt;
# Define a new plugin structure for arbitrary new admin features under admin/other or something.  Moodle 1.6 already has something like this for reports (admin/report).&lt;br /&gt;
# AJAX can be used, it should be optional and accessible, so that it can drop back to the current interface on browsers that are incapable of dealing with dynamic pages.&lt;br /&gt;
# Add bookmarks to each page, so that often-used pages can be added to the admin block on the home page.&lt;br /&gt;
&lt;br /&gt;
Mentors:  [[Martin Dougiamas]] and [[User:UrsHunkler|Urs Hunkler]]&lt;br /&gt;
&lt;br /&gt;
Programmer:  [[User:Vincenzo K. Marcovecchio|Vincenzo K. Marcovecchio]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Student projects/Admin page cleanup|Admin page cleanup project notes]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Project]]&lt;/div&gt;</summary>
		<author><name>Danstowell</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/test/index.php?title=Performance&amp;diff=15889</id>
		<title>Performance</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Performance&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/test/index.php?title=Performance&amp;diff=15888</id>
		<title>Performance</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=Performance&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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/index.php?title=Roadmap&amp;diff=15052</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Roadmap&amp;diff=15051</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Assign_roles&amp;diff=15021</id>
		<title>Assign roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/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/test/index.php?title=Roadmap&amp;diff=14258</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Database_fields&amp;diff=14257</id>
		<title>Database fields</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Roadmap&amp;diff=14254</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Roadmap&amp;diff=14253</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Development:Wikindx&amp;diff=14096</id>
		<title>Development:Wikindx</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Development:Wikindx&amp;diff=14095</id>
		<title>Development:Wikindx</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Development:Wikindx&amp;diff=14094</id>
		<title>Development:Wikindx</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Development:Wikindx&amp;diff=14093</id>
		<title>Development:Wikindx</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Speech_tools&amp;diff=14052</id>
		<title>Speech tools</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=2.1:Language_teaching&amp;diff=48850</id>
		<title>2.1:Language teaching</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/index.php?title=2.1:Language_teaching&amp;diff=48850"/>
		<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/test/index.php?title=Language_teaching&amp;diff=13979</id>
		<title>Language teaching</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Voice_tools&amp;diff=13978</id>
		<title>Voice tools</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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/test/index.php?title=Audioconferencing&amp;diff=13977</id>
		<title>Audioconferencing</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/test/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>
</feed>