0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
joomla
/
1.5.3-1
/
htdocs
/
libraries
/
joomla
/
filter
/
[
Home
]
File: filteroutput.php
<?php /** * @version $Id:output.php 6961 2007-03-15 16:06:53Z tcp $ * @package Joomla.Framework * @subpackage Filter * @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant to the * GNU General Public License, and as distributed it includes or is derivative * of works licensed under the GNU General Public License or other free or open * source software licenses. See COPYRIGHT.php for copyright notices and * details. */ /** * JFilterOutput * * @static * @author Louis Landry <louis.landry@joomla.org> * @package Joomla.Framework * @subpackage Filter * @since 1.5 */ class JFilterOutput { /** * Makes an object safe to display in forms * * Object parameters that are non-string, array, object or start with underscore * will be converted * * @static * @param object An object to be parsed * @param int The optional quote style for the htmlspecialchars function * @param string|array An optional single field name or array of field names not * to be parsed (eg, for a textarea) * @since 1.5 */ function objectHTMLSafe( &$mixed, $quote_style=ENT_QUOTES, $exclude_keys='' ) { if (is_object( $mixed )) { foreach (get_object_vars( $mixed ) as $k => $v) { if (is_array( $v ) || is_object( $v ) || $v == NULL || substr( $k, 1, 1 ) == '_' ) { continue; } if (is_string( $exclude_keys ) && $k == $exclude_keys) { continue; } else if (is_array( $exclude_keys ) && in_array( $k, $exclude_keys )) { continue; } $mixed->$k = htmlspecialchars( $v, $quote_style, 'UTF-8' ); } } } /** * This method processes a string and replaces all instances of & with & in links only * * @static * @param string $input String to process * @return string Processed string * @since 1.5 */ function linkXHTMLSafe($input) { $regex = 'href="([^"]*(&(amp;){0})[^"]*)*?"'; return preg_replace_callback( "#$regex#i", array('JFilterOutput', '_ampReplaceCallback'), $input ); } /** * This method processes a string and replaces all accented UTF-8 characters by unaccented * ASCII-7 "equivalents", whitespaces are replaced by hyphens and the string is lowercased. * * @static * @param string $input String to process * @return string Processed string * @since 1.5 */ function stringURLSafe($string) { //remove any '-' from the string they will be used as concatonater $str = str_replace('-', ' ', $string); $lang =& JFactory::getLanguage(); $str = $lang->transliterate($str); // remove any duplicate whitespace, and ensure all characters are alphanumeric $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str); // lowercase and trim $str = trim(strtolower($str)); return $str; } /** * Replaces & with & for xhtml compliance * * @todo There must be a better way??? * * @static * @since 1.5 */ function ampReplace( $text ) { $text = str_replace( '&&', '*--*', $text ); $text = str_replace( '&#', '*-*', $text ); $text = str_replace( '&', '&', $text ); $text = preg_replace( '|&(?![\w]+;)|', '&', $text ); $text = str_replace( '*-*', '&#', $text ); $text = str_replace( '*--*', '&&', $text ); return $text; } /** * Callback method for replacing & with & in a string * * @static * @param string $m String to process * @return string Replaced string * @since 1.5 */ function _ampReplaceCallback( $m ) { $rx = '&(?!amp;)'; return preg_replace( '#'.$rx.'#', '&', $m[0] ); } /** * Cleans text of all formating and scripting code */ function cleanText ( &$text ) { $text = preg_replace( "'<script[^>]*>.*?</script>'si", '', $text ); $text = preg_replace( '/<a\s+.*?href="([^"]+)"[^>]*>([^<]+)<\/a>/is', '\2 (\1)', $text ); $text = preg_replace( '/<!--.+?-->/', '', $text ); $text = preg_replace( '/{.+?}/', '', $text ); $text = preg_replace( '/ /', ' ', $text ); $text = preg_replace( '/&/', ' ', $text ); $text = preg_replace( '/"/', ' ', $text ); $text = strip_tags( $text ); $text = htmlspecialchars( $text ); return $text; } }