148 lines
3.7 KiB
PHP
148 lines
3.7 KiB
PHP
<?php
|
|
/**
|
|
* <pre>
|
|
* Invision Power Services
|
|
* IP.Board v3.4.6
|
|
* IP.Content custom bbcode
|
|
* Last Updated: $Date: 2012-06-01 13:11:08 -0400 (Fri, 01 Jun 2012) $
|
|
* </pre>
|
|
*
|
|
* @author $author$
|
|
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
|
* @license http://www.invisionpower.com/company/standards.php#license
|
|
* @package IP.Content
|
|
* @link http://www.invisionpower.com
|
|
* @version $Rev: 10855 $
|
|
*/
|
|
|
|
if( !class_exists('bbcode_parent_main_class') )
|
|
{
|
|
require_once( IPS_ROOT_PATH . 'sources/classes/text/parser/bbcode/defaults.php' );/*noLibHook*/
|
|
}
|
|
|
|
class bbcode_plugin_page extends bbcode_parent_main_class
|
|
{
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @access public
|
|
* @param object Registry object
|
|
* @param object Parent
|
|
* @return @e void
|
|
*/
|
|
public function __construct( ipsRegistry $registry, $_parent=null )
|
|
{
|
|
$this->currentBbcode = 'page';
|
|
|
|
parent::__construct( $registry, $_parent );
|
|
}
|
|
|
|
/**
|
|
* 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 );
|
|
|
|
if( $this->caches['pagination_url'] )
|
|
{
|
|
$_reconstructed = rtrim( $this->caches['pagination_url'], '/' );
|
|
}
|
|
else
|
|
{
|
|
$_requestUri = rtrim( $_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI'] : @getenv('REQUEST_URI'), '/' );
|
|
$_reconstructed = ( ( $_SERVER['HTTPS'] and $_SERVER['HTTPS'] != 'off' ) ? "https://" : "http://" ) . $_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 <br /> 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;
|
|
}
|
|
} |