mNo edit summary |
mNo edit summary |
||
Line 16: | Line 16: | ||
== Specification == | == Specification == | ||
=== Class Definitions == | === Class Definitions === | ||
==== Data Field Definition Class ==== | ==== Data Field Definition Class ==== | ||
class data_field_define { | abstract class data_field_define { | ||
function applicable_formats { | |||
return array( | /// Constructor | ||
function __construct() { | |||
} | |||
/// Define the applicable formats | |||
abstract public function applicable_formats { | |||
return array(EXTCONTEXT_COURSE, EXTCONTEXT_GROUP); | |||
} | } | ||
abstract public edit_field_add(); | |||
public function display_data(); | |||
public function edit_field(); | |||
public function edit_after_data(); | |||
public function edit_save_data(); | |||
public function edit_validate_field(); | |||
public function edit_field_set_default(); | |||
public function edit_field_set_required(); | |||
public function edit_field_set_locked(); | |||
public_function edit_save_data_preprocess(); | |||
public function edit_load_data_object(); | |||
protected function set_instanceid(); | |||
protected function set_fieldid(); | |||
protected function load_data(); | |||
protected function is_visible(); | |||
protected function is_empty(); | |||
protected function is_required(); | |||
protected function is_locked(); | |||
protected function is_unique(); | |||
protected function is_signup_field(); | |||
} | } | ||
==== Data Field Class ==== | ==== Data Field Class ==== | ||
class data_field_base { | |||
=== API functions === | === API functions === | ||
function object_load_data() | |||
=== Database tables === | === Database tables === |
Revision as of 06:39, 1 June 2012
Note: This page is a work-in-progress. Feedback and suggested improvements are welcome. Please join the discussion on moodle.org or use the talk.
This is a draft specification outlining changes to the custom user profile fields to extend the functionality to generic custom data fields that may be applied to moodle objects
Description
We are seeing an increasing number of requests for adding additional fields to be associated with users and courses. Information to be stored against users can already be achieved through the custom user profile fields, although the interface is sadly lacking. However associated custom data with other areas of moodle, eg courses, currently requires hacking of the code. It is the goal of this document to provide a specification to allow the addition of custom data fields to be associated with any moodle objects with a consistent interface and API functions that allows for easy integration with existing and 3rd party plugins.
Moodle Objects
In this specification a moodle object refers to any one of the following: user, course, course category, file, group, cohort, activity module, block
Specification
Class Definitions
Data Field Definition Class
abstract class data_field_define {
/// Constructor function __construct() { }
/// Define the applicable formats abstract public function applicable_formats { return array(EXTCONTEXT_COURSE, EXTCONTEXT_GROUP); }
abstract public edit_field_add();
public function display_data();
public function edit_field();
public function edit_after_data();
public function edit_save_data();
public function edit_validate_field();
public function edit_field_set_default();
public function edit_field_set_required();
public function edit_field_set_locked();
public_function edit_save_data_preprocess();
public function edit_load_data_object();
protected function set_instanceid();
protected function set_fieldid();
protected function load_data();
protected function is_visible();
protected function is_empty();
protected function is_required();
protected function is_locked();
protected function is_unique();
protected function is_signup_field();
}
Data Field Class
class data_field_base {
API functions
function object_load_data()
Database tables
The database tables will closely reflect the existing custom user profile field tables
data_category
field | type | null | key | default | extra | description |
---|---|---|---|---|---|---|
id | int(10) | no | primary | null | auto_increment | |
extendedcontextid | int(10) | no | the (extended) context of data eg user, course, group, ... | |||
name | char(255) | no | ||||
sortorder | int(10) | no | 0 |
data_data
field | type | null | key | default | extra | description |
---|---|---|---|---|---|---|
id | int(10) | no | primary | null | auto_increment | |
extendedcontextid | int(10) | no | the (extended) context of data eg user, course, group, ... | |||
instanceid | int(10) | no | foreign | 0 | id for the particular extended context type instance | |
fieldid | int(10) | no | 0 | id from the data_field table | ||
data | text | no | the stored data for a given user | |||
dataformat | int(2) | no | 0 |
data_field
field | type | null | key | default | extra | description |
---|---|---|---|---|---|---|
id | int(10) | no | primary | null | auto_increment | |
shortname | char(255) | no | ||||
name | text | no | ||||
datatype | char(255) | no | the data field plugin | |||
description | text | no | yes | |||
descriptionformat | int(2) | no | 0 | |||
categoryid | int(10) | no | foreign | 0 | id from the data_category table | |
sortorder | int(10) | no | 0 | |||
required | int(2) | no | 0 | is the field required | ||
locked | int(2) | no | 0 | lock status of the data | ||
visible | int(4) | no | 0 | visibility status | ||
forceunique | int(2) | no | 0 | uniqueness requirement | ||
signup | int(2) | no | 0 | should the field appear on the signup page? | ||
defaultdata | text | yes | ||||
defaultdataformat | int(2) | no | 0 | |||
param1 | text | yes | generic field for the plugin to store information | |||
param2 | text | yes | generic field for the plugin to store information | |||
param3 | text | yes | generic field for the plugin to store information | |||
param4 | text | yes | generic field for the plugin to store information | |||
param5 | text | yes | generic field for the plugin to store information |