creating moodle modules sam marshall. contents introduction to moodle system introduction to modules...
TRANSCRIPT
Creating Moodle modulessam marshall
Contents
• Introduction to Moodle system• Introduction to modules• Versions and database tables• Capabilities• Language files and help files• Forms• view.php
Introduction to Moodle system
• PHP • Database-driven
– Library of ‘simplifying’ database access functions– Every table has auto-increment id field
• Little persistent state– Session data exists, not heavily used
• Mainly functions, not object-oriented• Independent PHP scripts
Introduction to modules
• ‘Activities’• Appear on front page of course• Add using dropdown• Update settings• Link goes to module’s own PHP files• What’s in a module?
mod/name
• db– install.xml– access.php– update.php
• version.php • lang
– en_utf8• name.php• help
– mods.html
• lib.php• mod_form.php• styles.php• view.php
Database structure
• prefix_course_modules– An instance of a module in a particular course
• prefix_name– Your table. Must have id, name, course
• And index on course– $cm->instance == $name->id
• Variables– $cm, $name, $course
Versions and database tables
• install.xml– Used when installing for first time– Create with horrible editor (not by hand!)
• update.php– Used after code update on existing database– Code in PHP
• version.php– Module version e.g. 2007031600
Capabilities
• Define capabilities for your module– Array in access.php
• Specifies available capabilities and who has them by default
– mod/name:edit, mod/name:view,…• Check capabilities
– Get context object for current module instance– has_capability(‘mod/name:edit’,$context)
Language files
• All strings taken out into language files– Except system errors
• But not except user errors!– Why? Now or future contribution to community
• Language file goes in lang/en_utf8/name.php– $string[‘frogscanjump’]=‘Frogs can jump’;– $string[‘howhigh’]=‘How high? $a metres!’;
• A couple standard strings (module name)
Help files
• In lang/en_utf8/help• Basic XHTML content• One standard file mods.html• Add other files • Link to them with standard help button
– For example, in forms
Forms
• In case you’ve forgotten…
Forms
• mod_form.php• PHP QuickForm + Moodle extensions
– $mform->addElement('text', 'name', get_string('name'));
• Various types provided• Easy to add help buttons• Does formatting for you
– And accessibility (hopefully)
view.php
• Your own PHP code• Can do anything
– Should use Moodle standard functions where appropriate
– Header, footer, tabs, etc.• Other PHP scripts too (as needed)
– view.php is just where the link goes
Conclusion
• Standard platform features need to be used– Maintaining– Administration (capabilities)– Community sharing
• Initial design is important• Skills needed
– Database – PHP– And…
Bonus scare slide
• Security!!!!1!!1!!eleventy-one– Public Web application– Easy to make mistakes
• Check permission on action as well as when showing link• Avoid SQL injection
– Be careful!
To end on a positive note