15         $definition = 
$config->getHTMLDefinition();
 
   19         $escape_invalid_tags = 
$config->get(
'Core.EscapeInvalidTags');
 
   20         $remove_invalid_img  = 
$config->get(
'Core.RemoveInvalidImg');
 
   23         $trusted = 
$config->get(
'HTML.Trusted');
 
   25         $remove_script_contents = 
$config->get(
'Core.RemoveScriptContents');
 
   26         $hidden_elements     = 
$config->get(
'Core.HiddenElements');
 
   29         if ($remove_script_contents === 
true) {
 
   30             $hidden_elements[
'script'] = 
true;
 
   31         } elseif ($remove_script_contents === 
false && isset($hidden_elements[
'script'])) {
 
   32             unset($hidden_elements[
'script']);
 
   38         $remove_until = 
false;
 
   41         $textify_comments = 
false;
 
   44         $context->register(
'CurrentToken', $token);
 
   47         if (
$config->get(
'Core.CollectErrors')) {
 
   48             $e =& $context->get(
'ErrorCollector');
 
   51         foreach($tokens as $token) {
 
   53                 if (empty($token->is_tag) || $token->name !== $remove_until) {
 
   57             if (!empty( $token->is_tag )) {
 
   62                     isset($definition->info_tag_transform[$token->name])
 
   64                     $original_name = $token->name;
 
   67                     $token = $definition->
 
   68                                 info_tag_transform[$token->name]->
 
   69                                     transform($token, 
$config, $context);
 
   70                     if ($e) $e->send(E_NOTICE, 
'Strategy_RemoveForeignElements: Tag transform', $original_name);
 
   73                 if (isset($definition->info[$token->name])) {
 
   79                         $definition->info[$token->name]->required_attr &&
 
   80                         ($token->name != 
'img' || $remove_invalid_img) 
 
   82                         $attr_validator->validateToken($token, 
$config, $context);
 
   84                         foreach ($definition->info[$token->name]->required_attr as $name) {
 
   85                             if (!isset($token->attr[$name])) {
 
   91                             if ($e) $e->send(E_ERROR, 
'Strategy_RemoveForeignElements: Missing required attribute', $name);
 
   94                         $token->armor[
'ValidateAttributes'] = 
true;
 
   98                         $textify_comments = $token->name;
 
  100                         $textify_comments = 
false;
 
  103                 } elseif ($escape_invalid_tags) {
 
  105                     if ($e) $e->send(E_WARNING, 
'Strategy_RemoveForeignElements: Foreign element to text');
 
  107                         $generator->generateFromToken($token)
 
  112                     if (isset($hidden_elements[$token->name])) {
 
  114                             $remove_until = $token->name;
 
  118                             $remove_until = 
false;
 
  120                         if ($e) $e->send(E_ERROR, 
'Strategy_RemoveForeignElements: Foreign meta element removed');
 
  122                         if ($e) $e->send(E_ERROR, 
'Strategy_RemoveForeignElements: Foreign element removed');
 
  128                 if ($textify_comments !== 
false) {
 
  129                     $data = $token->data;
 
  131                 } elseif ($trusted) {
 
  135                         if (substr($token->data, -1) == 
'-') {
 
  136                             $e->send(E_NOTICE, 
'Strategy_RemoveForeignElements: Trailing hyphen in comment removed');
 
  139                     $token->data = rtrim($token->data, 
'-');
 
  140                     $found_double_hyphen = 
false;
 
  141                     while (strpos($token->data, 
'--') !== 
false) {
 
  142                         if ($e && !$found_double_hyphen) {
 
  143                             $e->send(E_NOTICE, 
'Strategy_RemoveForeignElements: Hyphens in comment collapsed');
 
  145                         $found_double_hyphen = 
true; 
 
  146                         $token->data = str_replace(
'--', 
'-', $token->data);
 
  150                     if ($e) $e->send(E_NOTICE, 
'Strategy_RemoveForeignElements: Comment removed');
 
  159         if ($remove_until && $e) {
 
  161             $e->send(E_ERROR, 
'Strategy_RemoveForeignElements: Token removed to end', $remove_until);
 
  164         $context->destroy(
'CurrentToken');