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(0, 9);
         $val_b = mt_rand(0, 9);
         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(0, 9); 
         $val_b = mt_rand(0, 9); 
         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  
 
  |