Example Plugin Source Listing The code in this section, for the Example plugin, is available for use, modification, and redistribution without any restrictions and without any warranty or implied warranties. You may use this code however you want. Example/ Example.php files/ foo.css lang/ strings_english.txt pages/ config_page.php config_update.php foo.php Example/Example.php Example/Example.php <?php class ExamplePlugin extends MantisPlugin { function register() { $this->name = 'Example'; # Proper name of plugin $this->description = ''; # Short description of the plugin $this->page = ''; # Default plugin page $this->version = '1.0'; # Plugin version string $this->requires = array( # Plugin dependencies, array of basename => version pairs 'MantisCore' => '1.2.0, <= 1.2.0', # Should always depend on an appropriate version of MantisBT ); $this->author = ''; # Author/team name $this->contact = ''; # Author/team e-mail address $this->url = ''; # Support webpage } function events() { return array( 'EVENT_EXAMPLE_FOO' => EVENT_TYPE_EXECUTE, 'EVENT_EXAMPLE_BAR' => EVENT_TYPE_CHAIN, ); } function hooks() { return array( 'EVENT_EXAMPLE_FOO' => 'foo', 'EVENT_EXAMPLE_BAR' => 'bar', ); } function config() { return array( 'foo_or_bar' => 'foo', ); } function foo( $p_event ) { echo 'In method foo(). '; } function bar( $p_event, $p_chained_param ) { return str_replace( 'foo', 'bar', $p_chained_param ); } } Example/files/foo.css Example/files/foo.css p.foo { color: red; } Example/lang/strings_english.txt Example/lang/strings_english.txt <?php $s_plugin_Example_configuration = "Configuration"; $s_plugin_Example_foo_or_bar = "Foo or Bar?"; $s_plugin_Example_reset = "Reset Value"; Example/page/config_page.php Example/pages/config_page.php <?php html_page_top( plugin_lang_get( 'configuration' ) ); $t_foo_or_bar = plugin_config_get( 'foo_or_bar' ); ?> <br/> <form action="<?php echo plugin_page( 'config_update' ) ?>" method="post"> <?php echo form_security_field( 'plugin_Example_config_update' ) ?> <table class="width60" align="center"> <tr> <td class="form-title" rowspan="2"><?php echo plugin_lang_get( 'configuration' ) ?></td> </tr> <tr <?php echo helper_alternate_class() ?>> <td class="category"><php echo plugin_lang_get( 'foo_or_bar' ) ?></td> <td><input name="foo_or_bar" value="<?php echo string_attribute( $t_foo_or_bar ) ?>"/></td> </tr> <tr <?php echo helper_alternate_class() ?>> <td class="category"><php echo plugin_lang_get( 'reset' ) ?></td> <td><input type="checkbox" name="reset"/></td> </tr> <tr> <td class="center" rowspan="2"><input type="submit"/></td> </tr> </table> </form> <?php html_page_bottom(); Example/pages/config_update.php Example/pages/config_update.php <?php form_security_validate( 'plugin_Example_config_update' ); $f_foo_or_bar = gpc_get_string( 'foo_or_bar' ); $f_reset = gpc_get_bool( 'reset', false ); if ( $f_reset ) { plugin_config_delete( 'foo_or_bar' ); } else { if ( $f_foo_or_bar == 'foo' || $f_foo_or_bar == 'bar' ) { plugin_config_set( 'foo_or_bar', $f_foo_or_bar ); } } form_security_purge( 'plugin_Example_config_update' ); print_successful_redirect( plugin_page( 'foo', true ) ); Example/page/foo.php Example/pages/foo.php <?php echo '<p>Here is a link to <a href="', plugin_page( 'foo' ), '">page foo</a>.</p>'; '<link rel="stylesheet" type="text/css" href="', plugin_file( 'foo.css' ), '"/>', '<p class="foo">'; event_signal( 'EVENT_EXAMPLE_FOO' ); $t_string = 'A sentence with the word "foo" in it.'; $t_new_string = event_signal( 'EVENT_EXAMPLE_BAR', array( $t_string ) ); echo $t_new_string, '</p>';