Our Developer learning pathway, which launched in 2022, will build upon the fundamentals covered in Moodle Plugin Development Basics. The pathway will help PHP developers to get familiar with Moodle development essentials and set themselves up to contribute to Moodle’s open-source community. 
 Read more about the Developer pathway.

This course is designed for PHP developers who want to start developing Moodle plugins. You will learn about the Moodle developer community and set up a Moodle development environment. This is the first course in the Developer Pathway. Subsequent courses in the Developer Pathway will build on the knowledge gained in this course.

Estimated learning time: 3 hours
Level: Beginner

This course builds on the knowledge gained in the Moodle development environment course. In this course, we learn how to use Moodle's Page and Output APIs to display content in a local plugin. An introduction to localisation using language strings is also covered in this course. This is the second course in the Moodle developer pathway.

Estimated learning time: 2 hours
Level: Beginner

In this course we take a deeper look at Moodle's modular architecture and explore the use of common Moodle APIs. Some of the APIs covered in this course include: Navigation, Forms, Database access, Upgrade, Strings and Output APIs. Learners get hands-on practise on using these APIs in the form of developing a local plugin.

This is the third course in the Moodle Developer Basics program. 

Estimated learning time: 3 hours
Level: Beginner

In this course we look at access control and security aspects of a plugin. Through a set of tutorials, you will learn how to control access to your plugin using Moodle’s Access API. You will learn how to define capabilities in your plugin and how to determine if the user has the permission to access a page. This course also covers common security threats that developers need to be aware of.

This is the fourth course in the Moodle Developer Basics program.

Estimated learning time: 2 hours
Level: Beginner

In this course you will learn about accessibility standards and understand why they are important. You will identify the accessibility best practices used in Moodle, and use Moodle API and functions to produce more accessible pages in your plugins.

This is the fifth course in the Moodle Developer Basics program.

Estimated learning time: 2 hours
Level: Beginner

In this course, you will learn about the different types of testing conducted in Moodle. The course will cover unit testing in greater detail. Learners will set up PHPUnit on their local Moodle development environment, and write a PHP unit test.

This is the sixth course in the Moodle Developer Basics program.

Estimated learning time: 2 hours
Level: Beginner

This course will provide an overview of the new user experience introduced in Moodle 4.0. It will cover the relevant API changes that developers need to be aware of. Learners will get hands-on practice in updating some Moodle 3.x plugins to make them compatible with Moodle 4.0.

Estimated learning time: 3 hours
Level: Intermediate
Programs:

In this course, you will explore and become familiar with the components that make up Moodle LMS. You will also get an opportunity to explore different parts of Moodle's codebase. Through a set of hands-on exercises, learners will create two Moodle plugins - a text filter and block - and learn how Moodle's permission and internationalisation systems work.

Estimated learning time: 3 hours
Level: Intermediate
Programs:

In this course, you will learn how Moodle's database access libraries enable writing cross-database compatible queries. You will get hands-on practice with using the data definition and data manipulation libraries to interact with the Moodle database.

Estimated learning time: 2 hours
Level: Intermediate
Programs:

In this intermediate level course, you will learn how to create pages with appropriate layouts in your Moodle plugins. Moodle offers different layouts for pages serving different purposes. With practical and hands-on exercises throughout the course, learners will be able to understand how Moodle’s Page, Output and Navigation APIs work. You will learn to create pages using output renderers and mustache templates, as well as how to add items to the primary, secondary and tertiary navigations.

This course expects that learners have some prior knowledge of Moodle development. You can start with our Developer Basics program if you are new to Moodle development.

Estimated learning time: 2 hours
Level: Intermediate
Programs:

This intermediate-level secure development course is designed to equip developers with the skills to identify, understand, and mitigate common security vulnerabilities in Moodle code. The course covers writing secure code using Moodle's APIs, fixing security vulnerabilities, and procedures for reporting and fixing security issues. The course is ideal for developers looking to enhance their understanding of secure development practices in Moodle and improve the security of Moodle plugins.

This course expects that learners have some prior knowledge of Moodle development. You can start with our Developer Basics program if you are new to Moodle development.

Estimated learning time: 2 hours
Level: Intermediate
Programs:

In this course learners will gain an understanding of using Javascript in Moodle. The course will introduce the JavaScript development toolchain and provide learners with an opportunity to write effective JavaScript modules for Moodle. Learners will also learn about the different ways of using JavaScript in Moodle, such as in PHP code, AJAX, web services and Mustache templates.

Estimated learning time: 2 hours
Level: Intermediate
Programs:
In this course, you will identify how the Moodle app works and how it is different from a Moodle LMS site. The course will cover how to make plugins compatible with Moodle app. Learners will get hands-on practise on adding mobile app support to existing Moodle plugins.
Estimated learning time: 2 hours
Level: Intermediate
Programs:

This course is designed for developers who want to start developing MoodleNet packages and contribute to the MoodleNet community.

Estimated learning time: 2 hours
Level: Beginner
Programs: