T89foQ3sf-djZ4p<\.Bo3voB% " >wԟZV7ot@h ׳FU.8n;LhL 9př7A#l TSɜo!sz1@jnsmnZ7nP9*.<t nҢNz[lt$!y=Y@ӏ(P] 'Nf@▇NII~CD4-ĤDcPNj"}2 UAyĦ.R DCnnoZbuw8dР$ o,sfXt' QAh8 7 J#VBi -PK<9q]4C5:$ RO[~by$Viei@sdL[W^ZW]q",@v@$ $e{t ?uz-dQll#F.ɞr}A~,6:Sj'v2JZo@R~̕ej=B9K"!_\p/ л`,OeJX|%xy>-+u&Ú4IB7ʒ#$\V!#ZlN0$դf;qj v`fI ςG} msL]`GJm^r!~lubD3R?`آ1XC뢦pt~Ӵ9CҜ+ƌP![y)IGh)Z_1stB[-zZl{h %nldm[(6f#U8^f!3wOm'ɚqL2TqҶJVRV_ Do~঒C+bh37l|!_3Z|OdR@>gf6jb>MTawhiB!y+ '3ސt&d<0 # o:H%0wv([G+V Yf."HcuhjhdG i  }:>RYLn-7uaJFA? ųNFV޳uq*رmPyWRy:[* 5_D>^$XCe'7;sG:ZZ9)]UL\i2ߋ.ٽ[ ((.#=7ϷgwӮUz$6aڲziЏbä1eh6K(L'1f{ ܥ^d92SeWf$F;h/yV"rMJG+kƟ.C¼߁#u[A+D ɝﳕ0R P^a@w.*]b9QsF@'f .I#`GtE dV^b6bT>T>SȳoêU>%oGC\|2`&,}E/Cn*5LUOo֑ezP%Gcv/whBe7x0|/TT0y>KU؉kQru$U/ (;-ry40*z6CmcAC= 5WZ>¬a=b lgT\eB[^$7Òr:M!tr(_= UyʃԖLW"ƢuU2!4;blh$s:Qqi抅ipr;j.ف/̕3*- 5$}6i -Dž5a,}H,<}Ш ~g19&!Ty˂"]`56 /2ܣdet߶௰ *4 l48u;si oF] zވƒXD=I/%W"4 *o",kcboNm4Ppu n\0ax~9é_vI.#H s5pms{?߆k iɺ$l7KWL)aٳeΏVC^;1?Γڼ7PS@bxGttߪ1f& Yv@ @Rr =4PSE$r&= dVz \::9&kd@L?8γK܊ \K`ްFa#3fFrpt`h2"ႛʠ,x%t<uA|r_EJϨnLD<3:<ƅ4jqź%rT  HZUM2v.*( \ST&Pue5#A+KD.`,K?GD!3x˻V6܅y"TF"X}"D@u\d1Cx"+;*I̐)d8M6 - Ȫ=&:zI axRyHI[Pf(޳\= tة)[P% dn1ӈ.af 1PÐw GSބ3x+*CcN 0Q,I5ѝ  L#7N8hxwX5Lz+FMܫK<"1}F"k3E!\9 .)\6yiVjqź%rT ⟖i"5UgqԧaH'8BdW&qʺU!k8T,=t aPzr75קv.*AKV -_\PѨ $struct = $struct->getChild(HTMLPurifier_ErrorStruct::CSSPROP, $cssprop); if (!$struct->value) { // if we tokenize CSS this might be a little more difficult to do $struct->value = array($cssprop, 'PUT VALUE HERE'); } } // Ok, structs are all setup, now time to register the error $struct->addError($severity, $msg); } /** * Retrieves raw error data for custom formatter to use */ public function getRaw() { return $this->errors; } /** * Default HTML formatting implementation for error messages * @param HTMLPurifier_Config $config Configuration, vital for HTML output nature * @param array $errors Errors array to display; used for recursion. * @return string */ public function getHTMLFormatted($config, $errors = null) { $ret = array(); $this->generator = new HTMLPurifier_Generator($config, $this->context); if ($errors === null) { $errors = $this->errors; } // 'At line' message needs to be removed // generation code for new structure goes here. It needs to be recursive. foreach ($this->lines as $line => $col_array) { if ($line == -1) { continue; } foreach ($col_array as $col => $struct) { $this->_renderStruct($ret, $struct, $line, $col); } } if (isset($this->lines[-1])) { $this->_renderStruct($ret, $this->lines[-1]); } if (empty($errors)) { return '

' . $this->locale->getMessage('ErrorCollector: No errors') . '

'; } else { return '
  • ' . implode('
  • ', $ret) . '
'; } } private function _renderStruct(&$ret, $struct, $line = null, $col = null) { $stack = array($struct); $context_stack = array(array()); while ($current = array_pop($stack)) { $context = array_pop($context_stack); foreach ($current->errors as $error) { list($severity, $msg) = $error; $string = ''; $string .= '
'; // W3C uses an icon to indicate the severity of the error. $error = $this->locale->getErrorName($severity); $string .= "$error "; if (!is_null($line) && !is_null($col)) { $string .= "Line $line, Column $col: "; } else { $string .= 'End of Document: '; } $string .= '' . $this->generator->escape($msg) . ' '; $string .= '
'; // Here, have a marker for the character on the column appropriate. // Be sure to clip extremely long lines. //$string .= '
';
                //$string .= '';
                //$string .= '
'; $ret[] = $string; } foreach ($current->children as $array) { $context[] = $current; $stack = array_merge($stack, array_reverse($array, true)); for ($i = count($array); $i > 0; $i--) { $context_stack[] = $context; } } } } } // vim: et sw=4 sts=4