If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Finding your way into the Moodle code

From MoodleDocs

Warning: This page is no longer in use. The information contained on the page should NOT be seen as relevant or reliable.

This article is aimed at people totally new to Moodle development and have some PHP experience. It is a few tips to help you get started with the mass of Moodle code. if you don't have experience with PHP please visit the PHP manual

Please feel free to add more tips here, but I think it is also good if we can keep this article quite short.

Developer documentation

If you have not already found it, the main source of developer documentation is Developer_documentation.

Finding a way in

For finding where to start, you need to know that when you are looking at, for example,, then the code for that is in /mod/forum/discuss.php, and you just need to follow through what it does.

It calls functions in the main Moodle libraries, and the three most important are:

  • lib/moodlelib.php - general stuff.
  • lib/weblib.php - things to do with output of HTML
  • lib/dmllib.php - things to do with getting data in and out of the database.

Understanding what you find

As you look at the code, it is often a good idea, to insert statements like

 debugging('In function require_login');

which will print the message above if it gets far enough so you know the code has not stalled before there, or


which will print out a variable, showing you what it contains.

Variable like $course are often objects with lots of fields. Seeing what they contain will help you understand what is going on. The first of these prints out whatever text you give it, and information about the sequence of function calls that the code took to get there. (It only works if you go to Administration > Server > Debugging, and turn the debug level to ALL or DEVELOPER.)

Tools that can help

  • Eclipse, for instance helps finding function definitions. You can hold down CTRL and click on the name of a function, it immediately jumps you to where that function is defined. (Setting_up_Eclipse)
  • Netbeans
  • Sublime 2
  • Emacs
  • Vim
  • TextMate

See also Developer documentation#Tools and Category:Developer tools.

See also