Textová Captcha a zkratky pro Xoops 2.5.9

Datum 8. 05. 2018 v 8:46 | Rubrika: Zápisník pojídačky koláčů pro Xoops

     Před časem jsem napsala článek o úpravě funkce Captcha tak, aby tato funkce nechtěla jako odpověď číslo, ale slovo. S příchodem nové verze redakčního systému došlo k různým změnám uvnitř systému a tak tento systém přestal fungovat. Funkci bylo potřeba trošku upravit, ale nakonec se ukázalo, že to nebylo tak složité, jak to původně vypadalo. Ze stejného důvodu bylo potřeba změnit i dodělaný xoopscode pro zobrazení zkratek, čili [acr].



     Nejprve se tedy podíváme na tu captchu. V adresáři XOOPSROOT/CLASS/CAPTCHA najdeme soubor text.php a v něm tuto část:

/**
     * XoopsCaptchaText::loadText()
     *
     * @return string
     */
    
public function loadText()
    {
        return 
'<span style="font-style: normal; font-weight: bold; font-size: 100%; color: #333; border: 1px solid #333; padding: 1px 5px;">' $this->outputText '</span>';
    }

    protected function 
buildQuestion()
    {
        
$val_a mt_rand(09);
        
$val_b mt_rand(09);
        if (
$val_a $val_b) {
            
$expression "{$val_a} - {$val_b} = ?";
            
$this->code $val_a $val_b;
        } else {
            
$expression "{$val_a} + {$val_b} = ?";
            
$this->code $val_a $val_b;
        }

        
$this->outputText $expression;
    }


     Kterou je potřeba změna takto:

/**
     * XoopsCaptchaText::loadText()
     *
     * @return string
     */
    
public function loadText()
    {
        return 
'<span style="font-style: normal; font-weight: bold; font-size: 100%; color: #333; border: 1px solid #333; padding: 1px 5px;">' $this->outputText '</span>'
    }

    protected function 
buildQuestion()
    {
    
        
$capt_result=array("nula""jedna""dva""tři""čtyři""pět""šest""sedm""osm""devět""deset""jedenáct""dvanáct""třináct""čtrnáct""patnáct""šestnáct""sedmnáct""osmnáct");     
    
        
$val_a mt_rand(09); 
        
$val_b mt_rand(09); 
        if (
$val_a $val_b) { 
            
$expression "{$val_a} - {$val_b} = ? (slovem)"
            
$this->code $capt_result[($val_a $val_b)]; 
        } else { 
            
$expression "{$val_a} + {$val_b} = ? (slovem)"
            
$this->code $capt_result[($val_a $val_b)]; 
        }

        
$this->outputText $expression;
    }


     Zbytek zůstává stejný a všechno bude dále fungovat tak, jako doposavad.

     Znovu zprovoznění xoops kódu [acr] se provede změnou v souboru acr.php v adresáři XOOPSROOT/CLASS/TEXTSANITIZER/ACR.

     Změní se téměř celý, ale to jen proto, že je velmi krátký. Původní obsah:

defined('XOOPS_ROOT_PATH') or die('Restricted access');

class 
MytsAcr extends MyTextSanitizerExtension
{
    function 
load(&$ts)
    {

        
$ts->patterns[] = "/[acr](.*)[/acr]/sU";
        
$ts->replacements[] = '<acronym title="Zkratka bez zadaného významu">\1</acronym>';
    
        
$ts->patterns[] = "/[acr=(.*)](.*)[/acr]/sU";
        
$ts->replacements[] = '<acronym title="\1">\2</acronym>';
        return 
true;
    }
}


Změňte na:

defined('XOOPS_ROOT_PATH') || exit('Restricted access');

/**
 * Class MytsACR
 */
class MytsAcr extends MyTextSanitizerExtension
{
    
/**
     * @param $ts
     *
     * @return bool
     */
    
public function load($ts)
    {
        
$ts->patterns[] = "/[acr](.*)[/acr]/sU";
        
$ts->replacements[] = '<acronym title="Zkratka bez zadaného významu">\1</acronym>';
    
        
$ts->patterns[] = "/[acr=(.*)](.*)[/acr]/sU";
        
$ts->replacements[] = '<acronym title="\1">\2</acronym>';
        return 
true;
    }
}


     A všechno bude opět fungovat tak, jako ve verzi staré. Při nahrávání nové verze si člověk velmi často, a velmi snadno, přepíše původní konfigurační soubory. Pokud k tomu dojde, je potřeba si je upravit tak, jak je popisováno v původních článcích. Ať již ve článku o Zkratkách nebo o Captche.

     No a to je pro dnešek všechno. Jsem zvědavá, jestli narazím ještě na nějaké další podobné změny, které mi momentálně unikají, ale myslím si, že by snad být neměly. A také jsem zvědavá, kdy se zase změní XOOPS tak, aby podobný článek musel opět vzniknout. Nechme se překvapit



Článek pochází z webu Žirafoviny.cz
https://www.zirafoviny.cz

URL tohoto článku je:
https://www.zirafoviny.cz/modules/news/article.php?storyid=683