* Invision Power Services * IP.Board v3.2.3 * IP.Content custom bbcode * Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $ * * * @author $author$ * @copyright (c) 2001 - 2009 Invision Power Services, Inc. * @license This is NULLED! * @package IP.Content * @link http://hatynka.in * @version $Rev: 8644 $ */ if( !class_exists('bbcode_parent_class') ) { require_once( IPS_ROOT_PATH . 'sources/classes/bbcode/custom/defaults.php' );/*noLibHook*/ } class bbcode_page extends bbcode_parent_class implements bbcodePlugin { /** * Constructor * * @access public * @param object Registry object * @return @e void */ public function __construct( ipsRegistry $registry ) { $this->currentBbcode = 'page'; parent::__construct( $registry ); } /** * Method that is run before the content is stored in the database * You are responsible for ensuring you mark the replaced text appropriately so that you * are able to unparse it, if you wish to have bbcode parsed on save * * @access public * @param string $txt BBCode text from submission to be stored in database * @return string Formatted content, ready for display */ public function preDbParse( $txt ) { return parent::preDbParse( $txt ); } /** * Method that is run before the content is displayed to the user * This is the safest method of parsing, as the original submitted text is left in tact. * No markers are necessary if you use parse on display. * * @access public * @param string $txt BBCode/parsed text from database to be displayed * @return string Formatted content, ready for display */ public function preDisplayParse( $txt ) { return parent::preDisplayParse( $txt ); } /** * Do the actual replacement * * @access protected * @param string $txt Parsed text from database to be edited * @return string BBCode content, ready for editing */ protected function _replaceText( $txt ) { //----------------------------------------- // INIT //----------------------------------------- $tag = '[' . $this->currentBbcode . ']'; $_curPage = $this->request['pg'] ? $this->request['pg'] : 1; $_ttlPages = 1; $_ttlPages += substr_count( $txt, $tag ); $_requestUri = rtrim( $_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI'] : @getenv('REQUEST_URI'), '/' ); $_reconstructed = ( ( $_SERVER['HTTPS'] and $_SERVER['HTTPS'] != 'off' ) ? "https://" : "http://" ) . str_replace( 'www.', '', $_SERVER['HTTP_HOST'] ) . ( substr( $_requestUri, 0, 1 ) == '/' ? $_requestUri : '/' . $_requestUri ); //----------------------------------------- // Get rid of existing pg= params //----------------------------------------- $_reconstructed = preg_replace( "/pg=(\d+)/", '', $_reconstructed ); $_reconstructed = rtrim($_reconstructed, '?&' ); $_reconstructed = str_replace( '&', '&', $_reconstructed ); //----------------------------------------- // Add on the parameter separator //----------------------------------------- if( $this->settings['url_type'] == 'query_string' ) { if( substr_count( $_reconstructed, '?' ) > 1 ) { $_reconstructed .= '&'; } else { $_reconstructed .= '?'; } } else { if( strpos( $_reconstructed, '?' ) !== false ) { $_reconstructed .= '&'; } else { $_reconstructed .= '?'; } } //----------------------------------------- // If no pages, no need to have links //----------------------------------------- if( $_ttlPages < 2 ) { return $txt; } //----------------------------------------- // Do replacements //----------------------------------------- if( !$_curPage ) { $txt = substr( $txt, 0, strpos( $txt, $tag ) ); } else { $bits = explode( $tag, $txt ); $txt = $bits[ $_curPage - 1 ]; } //----------------------------------------- // Clean up leading
tags //----------------------------------------- $txt = trim($txt); if( substr( $txt, 0, 15 ) == '~~~~~_____~~~~~' ) { $txt = substr( $txt, 15 ); } //----------------------------------------- // And start generating output //----------------------------------------- $txt .= $this->registry->output->getTemplate('ccs_global')->articlePages( $_ttlPages, $_curPage, $_reconstructed ); return $txt; } }