xoops forums

SMEDrieben

Not too shy to talk
Posted on: 2015/10/16 15:14
SMEDrieben
SMEDrieben (Show more)
Not too shy to talk
Posts: 148
Since: 2009/6/17
#1

Bug in custom code in class textsanitizer

I have made a custom code in class textsanitizer. It worked fine till recently. I don't know if it went wrong after moving tot 2.5.7.1 of to php 5.4 (tested on 5.4.12 and 5.4.45-0+deb7u1).

This is the error:
Fatal errorCannot make static method MyTextSanitizerExtension::decode() non static in class MytsBldwz in C:wampwwwhttpdocsclasstextsanitizerbldwzbldwz.php on line 64


This is my custom code (bldwz.php) that is a modification of the readme.txt that is found in class/textsanitizer

<?php
class MytsBldwz extends MyTextSanitizerExtension
{
// The encode function for dhtml editor
    
function encode($textarea_id)
    {
        
// If the extension has config data, load it
        
$config parent::loadConfig(dirname(__FILE__));
        
// Make sure that the icon is available /images/form/mycode.gif
        
$code "<img src='{$this->image_path}/bldwz.gif' alt='Bladwijzer' title='Bladwijzer' onclick='xoopsCodeBldwz("{$textarea_id}","" . htmlspecialchars("Voer de term met bladwijzer in", ENT_QUOTES) . "");'  onmouseover='style.cursor="hand"'/>&nbsp;";
        
$javascript = <<<EOH
            function xoopsCodeBldwz(id, enterBldwzPhrase){
                if (enterBldwzPhrase == null) {
                    enterBldwzPhrase = "Enter the content for the code.";
                }
                var selection = xoopsGetSelect(id);
                if (selection.length > 0) {
                    var text = selection;
                }else {
                    var text = prompt(enterBldwzPhrase, "");
                }
                var domobj = xoopsGetElementById(id);
                if ( text != null && text != "" ) {
                    var result = "[bldwz]" + text + "[/bldwz]";
                    xoopsInsertText(domobj, result);
                }
                domobj.focus();
            }
EOH;
        
// Return the scripts to be displayed in editor form and the javascript for relevant actions
        
return array($code$javascript);
    }
    
    
// The code parser
    
function load(&$ts
    {
        
$ts->patterns[] = "/[bldwz](.*)[/bldwz]/sU";
        
$ts->replacements[] = '<a href="' XOOPS_URL '/search.php?query=\1&action=results" target="_top">\1</a>';
        
$ts->patterns[] = "/[bldwz def](.*)[/bldwz]/sU";
        
$ts->replacements[] = '<a href="' XOOPS_URL '/search.php?query=\1+Begrip:&andor=AND&mids%5B%5D=28&action=results" target="_top">\1</a>';
        
$ts->patterns[] = "/[bldwz stp](.*)[/bldwz]/sU";
        
$ts->replacements[] = '<a href="' XOOPS_URL '/search.php?query=\1&mids%5B%5D=28&action=results" target="_top">\1</a>';
        
$ts->patterns[] = "/[bldwz ([0-9]*)](.*)[/bldwz]/sU";
        
$ts->replacements[] = '<a href="' XOOPS_URL '/modules/smartfaq/faq.php?faqid=\1" target="_top">\2</a>';
        
$ts->patterns[] = "/[bldwz KKK=([0-9]*)](.*)[/bldwz]/sU";
        
$ts->replacements[] = '<a href="http://www.katholieknederland.nl/katholicisme/katechismus-van-de-katholieke-kerk/blok_FBlokNo\1.html" target="_blank">\2</a>';
        
$ts->patterns[] = "/[news ([0-9]*)](.*)[/news]/sU";
        
$ts->replacements[] = '<a href="' XOOPS_URL '/modules/news/article.php?storyid=\1" target="_top">\2</a>';
        
$ts->patterns[] = "/[smeb ([0-9]*)](.*)[/smeb]/sU";
        
$ts->replacements[] = '<a href="' XOOPS_URL '/modules/publisher/category.php?categoryid=\1" target="_top">\2</a>';
        
$ts->patterns[] = "/[smehf ([0-9]*)](.*)[/smehf]/sU";
        
$ts->replacements[] = '<a href="' XOOPS_URL '/modules/publisher/item.php?itemid=\1" target="_top">\2</a>';
    }
    
    
// Processing the text
    
function decode($text)
    {
        
// Load config data if any
        
$config parent::loadConfigdirname(__FILE__) );
        if ( empty(
$text) || empty($config['enabled']) ) return $text;
        
$ret someFunctionToConvertTheTextToDefinedFormat($text);
        return 
$ret;
    }
}
?>


Line 64 is almost the latest with only "}".

Any idea what is wrong ?

Thanks !

SMEDrieben

Mamba

Moderator
Posted on: 2015/10/17 5:58
Mamba
Mamba (Show more)
Moderator
Posts: 10346
Since: 2004/4/23
#2

Re: Bug in custom code in class textsanitizer

If the function is declared "static" in the parent as in:

static function decode()

you cannot then re-declare it as non-static:

function decode($text)

You need to declare "static" as it was done in the parent, i.e.
static function decode($text)
Please support XOOPS & DONATE
Use 2.5.8 | Debug | Requests | Bugs

SMEDrieben

Not too shy to talk
Posted on: 2015/10/17 7:43
SMEDrieben
SMEDrieben (Show more)
Not too shy to talk
Posts: 148
Since: 2009/6/17
#3

Re: Bug in custom code in class textsanitizer

Thanks Mamba ! This solves the problem.

The php-code I used was copied from the class/texsanitizer/readme.txt. It should be changed there as well.

SMEDrieben

Mamba

Moderator
Posted on: 2015/10/17 14:00
Mamba
Mamba (Show more)
Moderator
Posts: 10346
Since: 2004/4/23
#4

Re: Bug in custom code in class textsanitizer

Quote:
The php-code I used was copied from the class/texsanitizer/readme.txt. It should be changed there as well.

Thanks for letting us know about it - it has been updated now in SVN.

Thank you!
Please support XOOPS & DONATE
Use 2.5.8 | Debug | Requests | Bugs