+353 (0)1 602 4784
info@enovation.ie
  • Client Support
  • FR
  • PL
EnovationEnovationEnovationEnovation
+353 (0)1 602 4784
  • WHAT WE DO
    • OUR SERVICES
      • Consultancy
      • eLearning Content
      • Build & Design
      • Training
      • Moodle Educator Certification Program (MEC)
      • Hosting
      • Support & Maintenance
    • OUR SOLUTIONS
      • Aura Talent
      • Aura Perform
      • Moodle
      • Moodle Workplace
      • Totara’s Talent Experience Platform
        • Totara Learn
        • Totara Engage
        • Totara Perform
      • Mahara
  • WHO WE ARE
    • About Enovation
    • Careers
  • CASE STUDIES
  • OUR PARTNERS
    • Microsoft Teams
    • IntelliBoard
    • BigBlueButton
  • INSIGHTS
  • CONTACT US

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

    • Reflections on MEC Webinar Wednesday May 11th at 12:00UTC.

      Enovation Admin | News | 6 May, 2022

      Learn all about Moodle with free online courses Develop your career as a Moodle Educator, Administrator, Designer and Developer and learn all about online education with Moodle. Sign up to webinars, complete courses and getRead more

    • Enovation Sponsor The HEAnet 2022 Conference

      Enovation Admin | News | 2 March, 2022

      7 days to go! We are delighted to be sponsoring The 2022 HEAnet Conference.  The Conference is taking place on the 09th – 11th March 2022 in the Great Southern Hotel, Killarney. HEAnet is Ireland’s NationalRead more

    • Moodle on Mobile Update

      Enovation Admin | News | 14 February, 2022

      https://moodle.com/wp-content/uploads/2020/12/Moodle-App576.mp4 Although Moodle can work perfectly well on mobile browsers, there are times when an app provides a better experience on mobile devices. In order to give your learners mobile-native experiences like offline access andRead more

    • 4 Ways to Create Engaging Training

      Enovation Admin | News | 16 November, 2021

      According to Christine Fröhlich (Digital Learning Officer at Enovation), there are 4 ways to apply to attract and maintain the attention of learners.  Moodle LMS makes it possible sustain to these principles with ease. Find out the 4 ways to create engaging training.

    NextPrevious

    Latest Insights

    • 26 July, 2022
      Comments Off on Not quite ready for OKRs?

      Not quite ready for OKRs?

    • 27 June, 2022
      Comments Off on #ILC2022 with EASL and Enovation

      #ILC2022 with EASL and Enovation

    • 16 June, 2022
      Comments Off on Webinar: Transforming Teaching & Learning through Microsoft 365 & Enovation on Moodle

      Webinar: Transforming Teaching & Learning through Microsoft 365 & Enovation on Moodle

    • 8 June, 2022
      Comments Off on Webinar with OpenSesame: The Strategic Role of Learning and Development in DEI

      Webinar with OpenSesame: The Strategic Role of Learning and Development in DEI

    Archives

    • July 2022
    • June 2022
    • May 2022
    • April 2022
    • March 2022
    • February 2022
    • January 2022
    • December 2021
    • November 2021
    • October 2021
    • September 2021
    • August 2021
    • July 2021
    • June 2021
    • May 2021
    • April 2021
    • March 2021
    • February 2021
    • January 2021
    • December 2020
    • November 2020
    • October 2020
    • September 2020
    • August 2020
    • July 2020
    • June 2020
    • May 2020
    • April 2020
    • March 2020
    • January 2020
    • November 2019
    • October 2019
    • September 2019
    • August 2019
    • July 2019
    • June 2019
    • May 2019
    • March 2019
    • February 2019
    • January 2019
    • December 2018
    • November 2018
    • October 2018
    • September 2018
    • August 2018
    • July 2018
    • June 2018
    • May 2018
    • April 2018
    • March 2018
    • February 2018
    • January 2018
    • December 2017
    • 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
    • January 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 to get our insights direct to your inbox

      Enovation Square

      Enovation Solutions Ltd.,
      The Friary,
      Bow Street,
      Dublin, D07 X680,
      T: +353 (0) 1 602 4784

      Partners, Awards & Certifications

      Moodle Partner Logo

      Latest Insights

      • Not quite ready for OKRs?

        Consider using the simpler MSC framework deployed using Enovation’s Aura Perform solution

        26 July, 2022
      • #ILC2022 with EASL and Enovation

        International Liver Congress™ 2022 EASL’s International Liver Congress™ in London was a

        27 June, 2022
      • Webinar: Transforming Teaching & Learning through Microsoft 365 & Enovation on Moodle

        Join Enovation and Microsoft Education for a webinar on how your tools

        16 June, 2022

      Latest Tweets

      Tweets by @EnovationIRE
      • Legal Information
      © 2022 Enovation Your eLearning Partner
      • WHAT WE DO
        • OUR SERVICES
          • Consultancy
          • eLearning Content
          • Build & Design
          • Training
          • Moodle Educator Certification Program (MEC)
          • Hosting
          • Support & Maintenance
        • OUR SOLUTIONS
          • Aura Talent
          • Aura Perform
          • Moodle
          • Moodle Workplace
          • Totara’s Talent Experience Platform
            • Totara Learn
            • Totara Engage
            • Totara Perform
          • Mahara
      • WHO WE ARE
        • About Enovation
        • Careers
      • CASE STUDIES
      • OUR PARTNERS
        • Microsoft Teams
        • IntelliBoard
        • BigBlueButton
      • INSIGHTS
      • CONTACT US
      Enovation
      +353 (0)1 602 4784