1 (800) 474-9640
[email protected]
  • Client Support
  • EN
  • FR
  • PL
EnovationEnovationEnovationEnovation
1 (800) 474-9640
  • WHAT WE DO
    • OUR SERVICES
      • Consultancy
      • Training
      • Hosting
      • Content Creation
      • Build & Design
      • Support & Maintenance
    • OUR SOLUTIONS
      • Totara’s Talent Experience Platform
        • Totara Learn
        • Totara Engage
        • Totara Perform
      • Aura Talent
      • Moodle
      • Moodle Workplace
  • WHO WE ARE
    • About Enovation
    • O Enovation
  • CASE STUDIES
    • UDG Healthcare
    • Mercury Engineering
    • Tata Chemicals Europe
    • Aer Lingus
    • Sagemcom
    • HVACRedu
  • OUR PARTNERS
    • Microsoft Teams
    • IntelliBoard
    • BigBlueButton
  • #KeepLearningStrong
  • INSIGHTS
  • CONTACT US
    • Skontaktuj się z nami

Creating simple filter in Moodle 2

    Home Blog Creating simple filter in Moodle 2

    Creating simple filter in Moodle 2

    Tomek Muras | Blog, News | 8 December, 2010

    Filters in Moodle are pluggable elements that can convert an output text to some other text. This is currently used for the functionality like:

    • replacing text based emoticons with images (emoticon filter)
    • generating images for mathematical expressions (tex filer)
    • converting plain text URLs (http://…) into proper HTML links
    • and much more

    In this tutorial we will create a simple, stand-alone filter for Moodle 2. The simplest case is actually so simple, that nearly all functionality can be coded in just few lines of code, like:

    [sourcecode language=”php”]
    defined(‘MOODLE_INTERNAL’) || die();

    class filter_tidy extends moodle_text_filter {
    function filter($text, array $options = array()) {
    $text = tidy_repair_string($text, $tidyoptions, ‘utf8’);
    return $text;
    }
    }
    [/sourcecode]

    All we need to do is inherit class moodle_text_filter and implement it’s abstract method:

    [sourcecode language=”php”]
    public abstract function filter($text, array $options = array());
    [/sourcecode]

    The example above is copied and shortened code from the standard “tex” filter. For our tutorial we will create a simple filter for removing (censoring) “bad words”. There is a similar module in core Moodle called censor, we will create a new version of it. First, create a new directory named censor2. Inside create a file filter.php with full basic functionality of our filter:

    [sourcecode language=”php”]
    <?php
    defined(‘MOODLE_INTERNAL’) || die();

    class filter_censor2 extends moodle_text_filter {
    function filter($text, array $options = array()){
    $badwords = array(‘badword1′,’badword2’);

    foreach ($badwords as $badword) {
    $badword = trim($badword);
    $words[] = new filterobject($badword, ‘<span class=”censoredtext” title=”censored”>’,
    ‘</span>’, false, false,”****”);
    }

    return filter_phrases($text, $words);
    }
    }
    [/sourcecode]

    We only need one more file: censor2/lang/en/filter_censor2.php that will contain just a name of our plugin:

    [sourcecode language=”php”]
    <?php

    $string[‘filtername’] = ‘Word Censorship 2’;
    [/sourcecode]

    In our filter_censor2, we have used a filter_phrases function provided by Moodle API and defined in lib/filterlib.php. The function takes two arguments:

    • a full text for filtering – we simply pass our $text argument here
    • a list of filterobject objects

    Each filterobject is a very simple object that stores following information (in the same order as arguments for constructor):

    • $phrase – the phrase to be matched
    • $hreftagbegin – the text to be put before the matched text (default: <span class=”highlight”>)
    • $hreftagend – the text to be added after the match (default: <span class=”highlight”>)
    • $casesensitive – should matching $phrase be case sensitive (default: false)
    • $fullmatch – should we match only full words (default: false)
    • $replacementphrase – a string for replacing matched phrase (default NULL – meaning don’t replace the $phrase)

    Only the first argument is required, all the others have sensible default values.

    At this point we have a very simple but fully functional Moodle 2 filter! All that is left is to deploy it: copy whole censor2 directory into <your_Moodle_installation>/filter, go to Site administration -> Plugins -> Filters -> Manage filters and enable new filter. You can  download full source code.

    Next Previous
    Filter, Moodle+, Moodle2

    Related Post

    • Whats new in Moodle 2.0

      Mark Melia | Blog, News | 5 December, 2010

      Moodle 2.0, the long awaited next generation of Moodle was released on the 24th of November to much aclaim. In this blog post I am going to have a quick look at some of theRead more

    • Hybrid Working: The Future of Work

      Emma Cronin | News | 9 June, 2021

      Hybrid Working seems to be the buzzword of the moment for obvious reasons. While we (try to) avoid the term ” the new normal” as much as possible, it does appears that hybrid is growingRead more

    • Moodle Resources

      Enovation Admin | Blog, eLearning, Enovation News, Events, Featured News, Media, Moodle, News | 13 May, 2021

      What is a Resource? A resource is an item that a teacher can use to support learning, such as a file or link. Moodle supports a range of resource types that teachers can add toRead more

    • Moodle Activities

      Enovation Admin | Blog, eLearning, Enovation News, Events, Featured News, Media, Moodle, News | 19 March, 2021

        For those of you who aren’t familiar with Moodle terminology, an activity is a general name for a group of features in a Moodle course. Usually, an activity is something that a student willRead more

    • Our 2020 Highlights-It’s been quite a year!

      Enovation Admin | Blog, eLearning, Enovation News, Featured News, News | 31 December, 2020

      2020 is a year that we will never forget. We have adapted to new ways of working and together we have come through this challenging time by working together. Although it has been a difficultRead more

    NextPrevious

    Latest Insights

    • Wiodący Partner Premium Moodle, Enovation Rozszerza Działalność na Polskę
      16 February, 2022
      Comments Off on Wiodący Partner Premium Moodle, Enovation Rozszerza Działalność na Polskę

      Wiodący Partner Premium Moodle, Enovation Rozszerza Działalność na Polskę

    • 28 June, 2021
      Comments Off on Hybrid Work: Performance Appraisal

      Hybrid Work: Performance Appraisal

    • 28 June, 2021
      Comments Off on Hybrid Work: Training in the age of Hybrid Work

      Hybrid Work: Training in the age of Hybrid Work

    • 9 June, 2021
      Comments Off on Hybrid Working: The Future of Work

      Hybrid Working: The Future of Work

    Archives

    • February 2022
    • June 2021
    • May 2021
    • April 2021
    • March 2021
    • February 2021
    • January 2021
    • December 2020
    • October 2020
    • September 2020
    • July 2020
    • June 2020
    • May 2020
    • April 2020
    • March 2020
    • February 2020
    • January 2020
    • November 2019
    • October 2019
    • September 2019
    • August 2019
    • July 2019
    • June 2019
    • May 2019
    • March 2019
    • January 2019
    • December 2018
    • October 2018
    • September 2018
    • July 2018
    • June 2018
    • May 2018
    • April 2018
    • March 2018
    • February 2018
    • January 2018
    • November 2017
    • October 2017
    • September 2017
    • August 2017
    • July 2017
    • June 2017
    • May 2017
    • April 2017
    • March 2017
    • January 2017
    • November 2016
    • October 2016
    • June 2016
    • March 2016
    • February 2016
    • January 2016
    • December 2015
    • November 2015
    • October 2015
    • September 2015
    • July 2015
    • June 2015
    • May 2015
    • March 2015
    • February 2015
    • January 2015
    • December 2014
    • November 2014
    • September 2014
    • June 2014
    • May 2014
    • January 2014
    • August 2013
    • April 2013
    • March 2013
    • February 2013
    • September 2012
    • July 2012
    • May 2012
    • April 2012
    • February 2012
    • December 2011
    • November 2011
    • June 2011
    • May 2011
    • April 2011
    • March 2011
    • February 2011
    • January 2011
    • December 2010

    Sign up for our newsletter today to receive free hints and tips straight to your inbox.

      Enovation Square

      Enovation Solutions Ltd.,
      T: +1 800-474-9640

      Partners & Certifications

      Totara Partner Logo

      Latest Insights

      • Wiodący Partner Premium Moodle, Enovation Rozszerza Działalność na Polskę

        Wiodący Partner Premium Moodle, Enovation Rozszerza Działalność na Polskę

        Enovation jest wielokrotnie nagradzanym i certyfikowanym dostawcą usług Moodle w Irlandii oraz

        16 February, 2022
      • Hybrid Work: Performance Appraisal

        Managers say that some of the challenges of remote and hybrid work

        28 June, 2021
      • Hybrid Work: Training in the age of Hybrid Work

        The rising popularity of hybrid work has most HR and L&D departments

        28 June, 2021

      Latest Tweets

      Tweets by @EnovationUSA
      • Legal Information
      © 2022 Enovation Your eLearning Partner
      • WHAT WE DO
        • OUR SERVICES
          • Consultancy
          • Training
          • Hosting
          • Content Creation
          • Build & Design
          • Support & Maintenance
        • OUR SOLUTIONS
          • Totara’s Talent Experience Platform
            • Totara Learn
            • Totara Engage
            • Totara Perform
          • Aura Talent
          • Moodle
          • Moodle Workplace
      • WHO WE ARE
        • About Enovation
        • O Enovation
      • CASE STUDIES
        • UDG Healthcare
        • Mercury Engineering
        • Tata Chemicals Europe
        • Aer Lingus
        • Sagemcom
        • HVACRedu
      • OUR PARTNERS
        • Microsoft Teams
        • IntelliBoard
        • BigBlueButton
      • #KeepLearningStrong
      • INSIGHTS
      • CONTACT US
        • Skontaktuj się z nami
      Enovation
      1 (800) 474-9640