267 lines
6.2 KiB
PHP
267 lines
6.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* <pre>
|
|
* Invision Power Services
|
|
* IP.Board v3.4.8
|
|
* Editor Library: Core Class
|
|
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
|
* </pre>
|
|
*
|
|
* @author $Author: bfarber $
|
|
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
|
* @license http://www.invisionpower.com/company/standards.php#license
|
|
* @package IP.Board
|
|
* @link http://www.invisionpower.com
|
|
* @since 9th March 2005 11:03
|
|
* @version $Revision: 10721 $
|
|
*
|
|
* EXAMPLE USAGE
|
|
* <code>
|
|
* $han_editor = new han_editor();
|
|
*
|
|
* $han_editor->init();
|
|
*
|
|
* # To generate the HTML for the editor:
|
|
* $editor_html = $han_editor->showEditor( $raw_post, 'Post' );
|
|
*
|
|
* # $raw_post is either raw HTML for the rich text editor or raw BBCode tagged text when
|
|
* # using the standard editor. (See the document on the BBCode parser for more information)
|
|
* # 'Post' is the name of the form field you wish use. In this case it'll return $_POST['Post'].
|
|
*
|
|
* #To process the editor's text into tagged BBCode text:
|
|
* $post = $han_editor->processRawPost( 'Post' );
|
|
*
|
|
* #'Post' is the name of the form field you used when displaying the editor. As in $_POST['Post']
|
|
*
|
|
* # To use the HTML generated by editor class for displaying the actual editor (in our example; $editor_html)
|
|
* # you'll need to use it like this:
|
|
*
|
|
* <form id='postingform' onsubmit='return ValidateForm()' action="$url" method="post" name="REPLIER">
|
|
* {$editor_html}
|
|
* <br /><input type="submit" value="Post" /></div>
|
|
* </form>
|
|
*
|
|
* The form tag MUST have: id='postingform' onsubmit='return ValidateForm()' otherwise the editor will fail.
|
|
* </code>
|
|
*/
|
|
|
|
if ( ! defined( 'IN_IPB' ) )
|
|
{
|
|
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
|
|
exit();
|
|
}
|
|
|
|
class class_editor
|
|
{
|
|
/**
|
|
* Allow unicode setting
|
|
*
|
|
* @access public
|
|
* @var boolean
|
|
*/
|
|
public $allow_unicode;
|
|
|
|
/**
|
|
* Get magic quotes
|
|
*
|
|
* @access public
|
|
* @var boolean
|
|
*/
|
|
public $get_magic_quotes;
|
|
|
|
/**
|
|
* Reverse font sizes
|
|
*
|
|
* @access public
|
|
* @var array
|
|
*/
|
|
public $rev_font_sizes = array();
|
|
|
|
/**
|
|
* Registry object
|
|
*
|
|
* @access protected
|
|
* @var object
|
|
*/
|
|
protected $registry;
|
|
|
|
/**
|
|
* Database object
|
|
*
|
|
* @access protected
|
|
* @var object
|
|
*/
|
|
protected $DB;
|
|
|
|
/**
|
|
* Settings object
|
|
*
|
|
* @access protected
|
|
* @var object
|
|
*/
|
|
protected $settings;
|
|
|
|
/**
|
|
* Request object
|
|
*
|
|
* @access protected
|
|
* @var object
|
|
*/
|
|
protected $request;
|
|
|
|
/**
|
|
* Language object
|
|
*
|
|
* @access protected
|
|
* @var object
|
|
*/
|
|
protected $lang;
|
|
|
|
/**
|
|
* Member object
|
|
*
|
|
* @access protected
|
|
* @var object
|
|
*/
|
|
protected $member;
|
|
protected $memberData;
|
|
|
|
/**
|
|
* Cache object
|
|
*
|
|
* @access protected
|
|
* @var object
|
|
*/
|
|
protected $cache;
|
|
protected $caches;
|
|
|
|
/**
|
|
* Main font sizes
|
|
*
|
|
* @access protected
|
|
* @var array
|
|
*/
|
|
protected $font_sizes = array( 1 => 8,
|
|
2 => 10,
|
|
3 => 12,
|
|
4 => 14,
|
|
5 => 18,
|
|
6 => 24,
|
|
7 => 36 );
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @access public
|
|
* @param object Registry object
|
|
* @return @e void
|
|
*/
|
|
public function __construct( ipsRegistry $registry )
|
|
{
|
|
/* Make object */
|
|
$this->registry = $registry;
|
|
$this->DB = $this->registry->DB();
|
|
$this->settings =& $this->registry->fetchSettings();
|
|
$this->request =& $this->registry->fetchRequest();
|
|
$this->lang = $this->registry->getClass('class_localization');
|
|
$this->member = $this->registry->member();
|
|
$this->memberData =& $this->registry->member()->fetchMemberData();
|
|
$this->cache = $this->registry->cache();
|
|
$this->caches =& $this->registry->cache()->fetchCaches();
|
|
}
|
|
|
|
/**
|
|
* Main init: Prep font sizes
|
|
*
|
|
* @access public
|
|
* @return @e void
|
|
*/
|
|
public function editorInit( )
|
|
{
|
|
foreach( $this->font_sizes as $bbcode => $real )
|
|
{
|
|
$this->rev_font_sizes[ $real ] = $bbcode;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get BBCode font size from real PX size
|
|
*
|
|
* @access public
|
|
* @param integer PX Size
|
|
* @return integer BBCode size
|
|
*/
|
|
public function convertRealsizeToBbsize( $real )
|
|
{
|
|
$real = intval( $real );
|
|
|
|
if ( $this->rev_font_sizes[ $real ] )
|
|
{
|
|
return $this->rev_font_sizes[ $real ];
|
|
}
|
|
else
|
|
{
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Clean up and make the post safe for the DB
|
|
*
|
|
* @access protected
|
|
* @param string Raw text
|
|
* @return string Converted text
|
|
*/
|
|
protected function _cleanPost( $t )
|
|
{
|
|
if ( $t == "" )
|
|
{
|
|
return "";
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Make it safe
|
|
//-----------------------------------------
|
|
|
|
$t = str_replace( "&" , "&" , $t );
|
|
$t = str_replace( "<!--" , "<!--" , $t );
|
|
$t = str_replace( "-->" , "-->" , $t );
|
|
$t = str_ireplace( "<script" , "<script" , $t );
|
|
$t = str_replace( ">" , ">" , $t );
|
|
$t = str_replace( "<" , "<" , $t );
|
|
$t = str_replace( '"' , """ , $t );
|
|
$t = str_replace( "\n" , "<br />" , $t );
|
|
$t = str_replace( '$' , "$" , $t );
|
|
$t = str_replace( "\r" , "" , $t );
|
|
$t = str_replace( "!" , "!" , $t );
|
|
$t = str_replace( "'" , "'" , $t );
|
|
|
|
//-----------------------------------------
|
|
// Ensure unicode chars are OK
|
|
//-----------------------------------------
|
|
|
|
if ( $this->allow_unicode )
|
|
{
|
|
$t = preg_replace("/&#([0-9]+);/s", "&#\\1;", $t );
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Strip slashes if not already done so.
|
|
//-----------------------------------------
|
|
|
|
/*if ( $this->get_magic_quotes )
|
|
{
|
|
$t = stripslashes($t);
|
|
}*/
|
|
|
|
//-----------------------------------------
|
|
// Swap user inputted backslashes
|
|
//-----------------------------------------
|
|
|
|
$t = preg_replace( "/\\\(?!&#|\?#)/", "\", $t );
|
|
|
|
return $t;
|
|
}
|
|
|
|
} |