Automatic Class Loading and Callback

1 篇文章 / 0 new
author
Automatic Class Loading and Callback
Automatic Class Loading
• 類別命名規則
核心類必須以前綴 core_ 開頭
插件類名稱必須以 plugintype_pluginname_ 之類的名稱開頭。例如:mod_forum_(以/ mod / forum為例)
每個類獨立一個檔案
類檔案名不含前綴名稱
例如,mod_forum_some_class 文件存儲在 mod/forum/classes/some_class.php
例如,核心類 core_frankenstyle 文件存儲在 lib/classes/frankenstyle.php中

引用範例
模組內一個 mod_forum_some_class
<?php
//檔案位置 mod/forum/classes/myclass.php
 
class mod_forum_myclass {
}
模組內自行引用此類 如mod/forum/lib.php
<?php
// no require_once() necessary here
$instance = new mod_forum_some_class();
其他地方引用此類
<?php
if (class_exists('mod_forum_some_class')) {
  // do something
}
Namespace 命名空間 :名稱則匹配到相應目錄內 classes 子目錄下
核心類
<?php
namespace core\event;
 
// file lib/classes/event/base.php
class base {
}
模組類
<?php
namespace mod_forum\event;
 
// file mod/forum/classes/event/post_read.php
class post_read extends \core\event\base {
}
引用
<?php
// in any file
\mod_forum\event\post_read::create($post->id, ...)->trigger();
Callback
Moodle沒有明確定義的Hooks API,但仍允許插件通過實現callback掛接到不同的進程中。參閱組件之間的通信

• 一對多 callback 列表

Callback Plugin type Version Comments
Navigation, see Navigation API
extend_navigation_course *   before Moodle 3.0 was only supported by report and tool plugin types
extend_settings_navigation local, booktool   Note, modules have a one-to-one callback with the same name, see below
extend_navigation local   Note, modules have a one-to-one callback with the same name, see below
extend_navigation_user_settings * 3.0+ before Moodle 3.0 was only supported by tool plugin types
extend_navigation_category_settings * 3.0+  
extend_navigation_frontpage * 3.1+  
extend_navigation_user * 3.1+  
Before-actions hooks
course_module_background_deletion_recommended * 3.2+ see upgrade.txt
pre_block_delete * 3.1+  
pre_course_category_delete * 3.1+  
pre_course_delete * 3.1+  
pre_course_module_delete * 3.1+  
pre_user_delete * 3.1+  
Login_callbacks
after_config * 3.8+ Triggered as soon as practical on every moodle bootstrap after config has been loaded. The $USER object is available at this point too.
after_require_login * 3.7+ eg Add permissions logic across a site or course
check_password_policy * 3.6+  
print_password_policy * 3.8+ (WIP)  
pre_signup_requests * 3.5 eg to do actions before sign up such as acceptance of policies, validations, etc
extend_change_password_form * 3.8+ (WIP) eg Injecting form elements into the change password form. Note: This hook is not compatible with the Webservices API or the Moodle mobile app. See MDL-66173 and MOBILE-3181 for more info.
extend_set_password_form * 3.8+ (WIP) eg Injecting form elements into the set password form. Note: This hook is not compatible with the Webservices API or the Moodle mobile app. See MDL-66173 and MOBILE-3181 for more info.
extend_forgot_password_form * 3.8+ (WIP) eg Injecting form elements into the forgot password form. Note: This hook is not compatible with the Webservices API or the Moodle mobile app. See MDL-66173 and MOBILE-3181 for more info.
extend_signup_form * 3.8+ (WIP) eg Injecting form elements into the signup form. Note: This hook is not compatible with the Webservices API or the Moodle mobile app. See MDL-66173 and MOBILE-3181 for more info.
validate_extend_change_password_form * 3.8+ (WIP) eg Adding additional validation to the change password form. Note: This hook is not compatible with the Webservices API or the Moodle mobile app. See MDL-66173 and MOBILE-3181 for more info.
validate_extend_set_password_form * 3.8+ (WIP) eg Adding additional validation to the set password form. Note: This hook is not compatible with the Webservices API or the Moodle mobile app. See MDL-66173 and MOBILE-3181 for more info.
validate_extend_forgot_password_form * 3.8+ (WIP) eg Adding additional validation to the forgot password form. Note: This hook is not compatible with the Webservices API or the Moodle mobile app. See MDL-66173 and MOBILE-3181 for more info.
validate_extend_signup_form * 3.8+ (WIP) eg Adding additional validation to the signup form. Note: This hook is not compatible with the Webservices API or the Moodle mobile app. See MDL-66173 and MOBILE-3181 for more info.
post_change_password_requests * 3.8+ (WIP) eg Fire additional actions after a user changes password.
post_set_password_requests * 3.8+ (WIP) eg Fire additional actions after a user resets password.
post_forgot_password_requests * 3.8+ (WIP) eg Fire additional actions after a user submits a password reset request.
post_signup_requests * 3.8+ (WIP) eg Fire additional actions after a user creates an account.
Page rendering, see Output_callbacks
add_htmlattributes * 3.3+ eg Add open graph xml namespace attributes
before_footer * 3.3+ eg injecting JS across the site, like analytics
before_http_headers * 3.3+ Setting http headers across the site like CSP
before_standard_html_head * 3.3+ A better API alternative to appending to $CFG->additionalhtmlhead
before_standard_top_of_body_html * 3.3+  
render_navbar_output * 3.2+  
Course module edit form
coursemodule_edit_post_actions * 3.1+  
coursemodule_standard_elements * 3.1+  
coursemodule_validation * 3.1+  
Modules
check_updates_since mod 3.2+ See NEWMODULE_Documentation
dndupload_register mod    
Admin
bulk_user_actions * 3.9+ Any plugin typically an admin tool can add new bulk user actions
Other
get_fontawesome_icon_map * 3.3+ https://docs.moodle.org/dev/Moodle_icons#Font_awesome_icons
get_question_bank_search_conditions local    
oauth2_system_scopes * 3.3+  
rss_get_feed *    
supports_logstore report    
get_shortcuts ltisource 3.1+  
before_launch ltisource 2.8+  
control_view_profile * 3.6+  
store_profiling_data * 3.6+  
override_webservice_execution * 3.6+  
Deprecated
cron *   See Task API
delete_course mod,report,
coursereport,format
  Replace with observer to course_contents_deleted event
print_overview mod up to 3.2 New dashboard uses Calendar API to populate events on the timeline
report_extend_navigation coursereport   Plugin type coursereport is deprecated, plugin type report should be used instead

• 一對一 callbacks 列表
 
Callback Plugin type Version Comments
Comments support, see Comment API
comment_add *    
comment_display *    
comment_permissions *    
comment_template *    
comment_url *    
comment_validate *    
Gradebook
export_%_settings_definition gradeexport    % is a plugin name without prefix
import_%_settings_definition gradeimport    % is a plugin name without prefix
report_%_profilereport gradereport    % is a plugin name without prefix
report_%_settings_definition gradereport    % is a plugin name without prefix
Groups support, see Groups API
allow_group_member_remove *    
restore_group_member *   For plugins that create their own groups
Installation and upgrade
xmldb_%_install *   Located in db/install.php , % refer to the full plugin name, in case of modules without prefix
xmldb_%_install_recovery *   Located in db/install.php , % refer to the full plugin name, in case of modules without prefix
xmldb_%_uninstall *   Located in db/uninstall.php , % refer to the full plugin name, in case of modules without prefix
xmldb_%_upgrade *   Located in db/upgrade.php , % refer to the full plugin name, in case of modules without prefix
LTI source
add_instance_hook ltisource    
messagetype ltisource   Callback name is the type of the message
Question bank support, see Question API
question_pluginfile *    
question_preview_pluginfile *    
questions_in_use * since 3.7.5, 3.8.2 (previously only "mod")  
Ratings support, see Rating API
rating_can_see_item_ratings * 2.9.2+  
rating_can_see_item_ratings * 2.9.2+  
rating_get_item_fields *    
rating_permissions *    
rating_validate *    
Themes
$THEME->csspostprocess theme    
$THEME->extralesscallback theme    
$THEME->lessvariablescallback theme    
page_init theme    
Modules: Calendar and dashboard
core_calendar_event_action_shows_item_count mod 3.3+  
core_calendar_is_event_visible mod 3.3+  
core_calendar_provide_event_action mod 3.3+  
Modules: Course cache
cm_info_dynamic mod    
cm_info_view mod    
get_coursemodule_info mod    
Modules: Course reset
reset_course_form_defaults mod    
reset_course_form_definition mod    
reset_userdata mod    
Modules
delete_instance mod    
dndupload_handle mod    
export_contents mod   Used in WS get_course_contents
extend_settings_navigation mod,booktool    
extends_navigation mod    
get_completion_active_rule_descriptions mod 3.3+ Must be present for modules implementing custom completion rules
get_completion_state mod    
get_extra_capabilities mod    
get_file_areas mod    
get_recent_mod_activity mod    
get_shortcuts mod 3.1+  
grade_item_update mod    
grading_areas_list mod    
print_recent_activity mod    
print_recent_mod_activity mod    
refresh_events mod    
rescale_activity_grades mod 3.1+  
scale_used_anywhere mod    
update_grades mod    
user_complete mod    
user_outline mod    
Glossary formats
glossary_print_entry_% for glossary formats   Glossary formats is not a plugin type yet, however the list of formats is not hardcoded in the mod_glossary, instead the methods similar to callbacks are used for each subfolder in mod/glossar/format. % refer to the subfolder name, the functions are expected in lib.php
glossary_show_entry_% for glossary formats   - " -
glossary_show_entry_% for glossary formats   - " -
glossary_show_entry_% for glossary formats   - " -
Other
global_db_replace block    
inplace_editable *   See Inplace editable
output_fragment_* * 3.1+ see Fragment
page_type_list *   Used when displaying page types in block configuration
params_for_js atto    
pluginfile *   Callback checking permissions and preparing the file for serving plugin files, see File API. Note, in case of block plugins the list of arguments is slightly different
restore_role_assignment *   For plugins that create their own role assignments
strings_for_js atto    
supports *   Required for activity modules
Deprecated
ajax_section_move format up to 2.3 See Course formats
ajax_support format up to 2.3 See Course formats
delete_course mod up to 3.1 use event observer
display_content format up to 2.3 See Course formats
get_post_actions mod,booktool   Only called if legacy log is used on the site
get_section_name format up to 2.3 See Course formats
get_section_url format up to 2.3 See Course formats
get_types mod,ltisource up to 3.0 Replaced with get_shortcuts in 3.1
get_view_actions mod,booktool   Only called if legacy log is used on the site
load_content format up to 2.3 See Course formats
scale_used mod up to 3.0  
uses_sections format up to 2.3 See Course formats
question_list_instances mod up to 3.8 Use "questions_in_use" instead
Free Web Hosting