Note:

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

Conditional activities API: Difference between revisions

From MoodleDocs
No edit summary
Line 85: Line 85:
</code>
</code>
== See Also ==
== See Also ==
[https://docs.moodle.org/en/Conditional_activities Conditional Activities]


[https://docs.moodle.org/en/Conditional_activities_settings Conditional Activities Settings]
* [[Conditional activities Adding module support]]
* [[Conditional activities]] - original specification for this feature.


[https://docs.moodle.org/en/Using_Conditional_activities Using Conditional Activities]
===User documentation===
* [https://docs.moodle.org/en/Conditional_activities Conditional Activities]
* [https://docs.moodle.org/en/Conditional_activities_settings Conditional Activities Settings]
* [https://docs.moodle.org/en/Using_Conditional_activities Using Conditional Activities]

Revision as of 13:30, 16 January 2012

Overview

Conditional Apis allow you to specify , if to show or hide an activity when the conditions associated with it are met/not met.

Files

The main file containing all important conditional stuff is located at lib/conditionlib.php

Functions

The class condition_info defined in lib/conditionlib.php is the main conditional API in Moodle. Following are some important methods of the above mentioned class.

fill_availability_conditions(&$cm)
get_full_course_module()
add_completion_condition($cmid, $requiredcompletion)
add_grade_condition($gradeitemid, $min, $max, $updateinmemory=false)
wipe_conditions()
get_full_information($modinfo=null)
is_available(&$information, $grabthelot=false, $userid=0, $modinfo=null)
show_availability()
update_cm_from_form($cm, $fromform, $wipefirst=true)
completion_value_used_as_condition($course, $cm)

The basic functionality of these methods can be classified as:-

  1. Fetching information related to conditions
  2. Adding conditional clauses to activities
  3. Deleting conditions attached to activities

Fetching information related to conditions

Following functions are normally used to fetch information regarding conditions associated with activities:- get_full_course_module(); get_full_information($modinfo=null); is_available(&$information, $grabthelot=false, $userid=0, $modinfo=null); show_availability();

get_full_course_module()

This method can fetches and returns all necessary information as a course module object which are required to determine the availability conditions.

Example:-

$cm->id = $id; $test = new condition_info($cm,CONDITION_MISSING_EVERYTHING); $fullcm = $test->get_full_course_module();

get_full_information()

This function returns a string which describes the various conditions in place for the activity in the given context.Some possible outputs can be:-

a) From 13:05 on 14 Oct until 12:10 on 17 Oct (exact, exact)
b) From 14 Oct until 12:11 on 17 Oct (midnight, exact)
c) From 13:05 on 14 Oct until 17 Oct (exact, midnight 18 Oct)

Please refer the inline documentation in the code for detailed explanation of the logic and all possible cases.

Example:- $ci = new condition_info($mod); $fullinfo = $ci->get_full_information();

is_available()

This function is used to check if a given course module is currently available or not. A thing worth noting is that this doesn't take "visibility settings" and "viewhiddenactivities" capability into account. That is these settings should be properly checked after the result of is_available(), before dumping any data to the user.

Example:- $ci = new condition_info((object)array('id'=>$cmid),CONDITION_MISSING_EVERYTHING); $bool = $ci->is_available($text,false,0);

show_availability()

This function is used to check if information regarding availability of the current module should be shown to the user or not.

Example:- $ci = new condition_info((object)array('id'=>$cmid),CONDITION_MISSING_EVERYTHING); $bool = $ci->show_availability();

Deleting conditions attached to activities

we have a simple function wipe_conditions() that can erase all conditions associated with the current activity. consider an example:-

$ci = new condition_info($cm, CONDITION_MISSING_EVERYTHING, false); $ci->wipe_conditions();

See Also

User documentation