ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
SafeParam.php
Go to the documentation of this file.
1 <?php
2 
16 {
20  public $name = "SafeParam";
21 
25  private $uri;
26 
27  public function __construct()
28  {
29  $this->uri = new HTMLPurifier_AttrDef_URI(true); // embedded
30  $this->wmode = new HTMLPurifier_AttrDef_Enum(array('window', 'opaque', 'transparent'));
31  }
32 
39  public function transform($attr, $config, $context)
40  {
41  // If we add support for other objects, we'll need to alter the
42  // transforms.
43  switch ($attr['name']) {
44  // application/x-shockwave-flash
45  // Keep this synchronized with Injector/SafeObject.php
46  case 'allowScriptAccess':
47  $attr['value'] = 'never';
48  break;
49  case 'allowNetworking':
50  $attr['value'] = 'internal';
51  break;
52  case 'allowFullScreen':
53  if ($config->get('HTML.FlashAllowFullScreen')) {
54  $attr['value'] = ($attr['value'] == 'true') ? 'true' : 'false';
55  } else {
56  $attr['value'] = 'false';
57  }
58  break;
59  case 'wmode':
60  $attr['value'] = $this->wmode->validate($attr['value'], $config, $context);
61  break;
62  case 'movie':
63  case 'src':
64  $attr['name'] = "movie";
65  $attr['value'] = $this->uri->validate($attr['value'], $config, $context);
66  break;
67  case 'flashvars':
68  // we're going to allow arbitrary inputs to the SWF, on
69  // the reasoning that it could only hack the SWF, not us.
70  break;
71  // add other cases to support other param name/value pairs
72  default:
73  $attr['name'] = $attr['value'] = null;
74  }
75  return $attr;
76  }
77 }
78 
79 // vim: et sw=4 sts=4