@@ -398,6 +398,7 @@ class XpWikiTracker_field
398
398
var $ data ;
399
399
var $ sort_type = SORT_REGULAR ;
400
400
var $ id = 0 ;
401
+ var $ field_remover = '' ;
401
402
402
403
function XpWikiTracker_field (& $ xpwiki , $ field , $ base , $ refer , & $ config )
403
404
{
@@ -445,6 +446,15 @@ function get_value($value)
445
446
{
446
447
return $ value ; // Default: $value itself
447
448
}
449
+
450
+ function set_field_remover ()
451
+ {
452
+ $ fields = array ();
453
+ foreach ($ this ->config ->get ('fields ' ) as $ field ) {
454
+ $ fields [] = preg_quote ($ field [0 ], '/ ' );
455
+ }
456
+ $ this ->config ->put ('field_remover ' , array ('/\[(?: ' .join ('| ' , $ fields ).')\]/ ' ));
457
+ }
448
458
}
449
459
450
460
class XpWikiTracker_field_text extends XpWikiTracker_field
@@ -569,9 +579,26 @@ function format_value($str)
569
579
570
580
function get_style ($ str )
571
581
{
572
- $ key = $ this ->get_key ($ str );
582
+ $ key = $ this ->get_key (! $ this -> is_null_style ( $ str) );
573
583
return isset ($ this ->styles [$ key ]) ? $ this ->styles [$ key ] : '%s ' ;
574
584
}
585
+
586
+ function is_null_style ($ str )
587
+ {
588
+ if (! $ this ->config ->get ('field_remover ' )) {
589
+ $ this ->set_field_remover ();
590
+ }
591
+ $ arr = $ this ->config ->get ('field_remover ' );
592
+ $ this ->field_remover = $ arr [0 ];
593
+ if (isset ($ this ->formats ['IS NULL ' ])) {
594
+ $ null = $ this ->formats ['IS NULL ' ];
595
+ $ this ->func ->cleanup_template_source ($ null );
596
+ $ null = preg_replace ($ this ->field_remover , '' , $ null );
597
+ } else {
598
+ $ null = '' ;
599
+ }
600
+ return ($ str === $ null );
601
+ }
575
602
}
576
603
577
604
class XpWikiTracker_field_file extends XpWikiTracker_field_format
0 commit comments