<?php
class BritaBehavior extends ModelBehavior
{
var $__settings = array();
var $__texy = array();
var $__default = array(
'TidyLevel' => 'heavy',
'Allowed' => '*[color|style|size],strong,em,p,img[src|width|height|alt|title],li,ul,ol,sup,sub',
'Doctype' => 'XHTML 1.0 Transitional',
'Encoding' => 'UTF-8',
'strip' => array('span')
);
function setup(&$Model, $settings = array())
{
if (!isset($this->__settings[$Model->alias]))
{
if (!empty($settings))
{
foreach($settings as $field=>$options)
{
$this->__settings[$Model->alias][$field] = am($this->__default, $options);
}
}
else
{
exit;
}
}
}
function beforeSave(&$Model)
{
foreach($this->__settings[$Model->alias] as $field => $options)
{
if(isset($Model->data[$Model->alias][$field]))
{
if(!App::import('Vendor','HTMLPurifier' ,array('file'=>'htmlpurifier-4.0.0'.DS.'library'.DS.'HTMLPurifier.auto.php')))
{
trigger_error('Could Not locate HTMLPurifier. Please Place it in app/vendors/HTMLPurifier', E_USER_WARNING);
return;
}
if ($options['strip'])
{
foreach($options['strip'] as $tag)
{
$Model->data[$Model->alias][$field] = preg_replace('/<' . $tag . '[^>]*>/i', '', $Model->data[$Model->alias][$field]);
$Model->data[$Model->alias][$field] = preg_replace('/<\/' . $tag . '[^>]*>/i', '', $Model->data[$Model->alias][$field]);
}
}
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML', 'DefinitionID', 'made by debugged interactive designs');
$config->set('HTML', 'DefinitionRev', 1);
$config->set('HTML', 'TidyLevel', 'heavy');
$config->set('HTML', 'Doctype', $options['Doctype']);
$config->set('Core', 'Encoding', $options['Allowed']);
$config->set('HTML', 'Allowed', $options['Allowed']);
$cleaner = new HTMLPurifier($config);
$Model->data[$Model->name][$field] = $clearer->purify($Model->data[$Model->name][$field]);
}
}
return parent::beforeSave($Model);
}
}
?>