0byt3m1n1
Path:
/
data
/
applications
/
aps
/
mambo
/
4.6.5-1
/
standard
/
htdocs
/
mambots
/
content
/
[
Home
]
File: mospaging.php
<?php /** * @package Mambo * @author Mambo Foundation Inc see README.php * @copyright Mambo Foundation Inc. * See COPYRIGHT.php for copyright notices and details. * @license GNU/GPL Version 2, see LICENSE.php * Mambo is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 of the License. */ /** ensure this file is being included by a parent file */ defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); $this->registerFunction( 'onPrepareContent', 'botMosPaging' ); /** * Page break mambot * * <strong>Usage:</strong> * <code>{mospagebreak}</code> * <code>{mospagebreak title=The page title}</code> * or * <code>{mospagebreak heading=The first page}</code> * or * <code>{mospagebreak title=The page title&heading=The first page}</code> * or * <code>{mospagebreak heading=The first page&title=The page title}</code> * */ function botMosPaging( $published, &$row, &$cparams, $page=0, $params ) { global $mainframe, $Itemid, $database, $configuration; if (strtolower(get_class($row)) != 'mosextendedcontent') return; // expression to search for $regex = '/{(mospagebreak)\s*(.*?)}/i'; if (!$published || $cparams->get( 'intro_only' )|| $cparams->get( 'popup' )) { $row->text = preg_replace( $regex, '', $row->text ); return; } // find all instances of mambot and put in $matches $matches = array(); preg_match_all( $regex, $row->text, $matches, PREG_SET_ORDER ); // split the text around the mambot $text = preg_split( $regex, $row->text ); $matches[0][2] = @html_entity_decode ( $matches[0][2], ENT_QUOTES, strtoupper($configuration->current_language->charset) ); // count the number of pages $n = count( $text ); // we have found at least one mambot, therefore at least 2 pages if ($n > 1) { // load mambot params info $title = $params->def( 'title', 1 ); // adds heading or title to <site> Title if ( $title ) { $page_text = $page + 1; $row->page_title = T_('Page') .' '. $page_text; if ( !$page ) { // processing for first page parse_str( $matches[0][2], $args ); if ( @$args['heading'] ) { $row->page_title = $args['heading']; } else { $row->page_title = ''; } } else if ( $matches[$page-1][2] ) { parse_str( $matches[$page-1][2], $args ); if ( @$args['title'] ) { $row->page_title = $args['title']; } } } // reset the text, we already hold it in the $text array $row->text = ''; $hasToc = $mainframe->getCfg( 'multipage_toc' ); if ( $hasToc ) { // display TOC createTOC( $row, $matches, $page ); } else { $row->toc = ''; } // traditional mos page navigation require_once( $GLOBALS['mosConfig_absolute_path'] . '/includes/pageNavigation.php' ); $pageNav = new mosPageNav( $n, $page, 1 ); // page counter $row->text .= '<div class="pagenavcounter">'; $row->text .= $pageNav->writeLeafsCounter(); $row->text .= '</div>'; // page text $row->text .= $text[$page]; $row->text .= '<br />'; $row->text .= '<div class="pagenavbar">'; // adds navigation between pages to bottom of text if ( $hasToc ) { createNavigation( $row, $page, $n ); } // page links shown at bottom of page if TOC disabled if (!$hasToc) { $row->text .= $pageNav->writePagesLinks( 'index.php?option=com_content&task=view&id='. $row->id .'&Itemid='. $Itemid ); } $row->text .= '</div><br />'; } return true; } function createTOC( &$row, &$matches, &$page ) { global $Itemid; $nonseflink = 'index.php?option=com_content&task=view&id='. $row->id .'&Itemid='. $Itemid; $link = 'index.php?option=com_content&task=view&id='. $row->id .'&Itemid='. $Itemid; $link = sefRelToAbs( $link ); $heading = $row->title; // allows customization of first page title by checking for `heading` attribute in first bot if ( @$matches[0][2] ) { parse_str( $matches[0][2], $args ); if ( @$args['heading'] ) { $heading = $args['heading']; } } // TOC Header $row->toc = ' <table cellpadding="0" cellspacing="0" class="contenttoc" align="right"> <tr> <th>' . T_('Article Index') . '</th> </tr> '; // TOC First Page link $row->toc .= ' <tr> <td> <a href="'. $link .'" class="toclink">' . $heading . '</a> </td> </tr> '; $i = 2; $args2 = array(); foreach ( $matches as $bot ) { $link = $nonseflink .'&limit=1&limitstart='. ($i-1); $link = sefRelToAbs( $link ); if ( @$bot[2] ) { parse_str( str_replace( '&', '&', $bot[2] ), $args2 ); if ( @$args2['title'] ) { $row->toc .= ' <tr> <td> <a href="'. $link .'" class="toclink">' . $args2['title'] . '</a> </td> </tr> '; } else { $row->toc .= ' <tr> <td> <a href="'. $link .'" class="toclink">' . T_('Page') .' '. $i . '</a> </td> </tr> '; } } else { $row->toc .= ' <tr> <td> <a href="'. $link .'" class="toclink">' . T_('Page') .' '. $i . '</a> </td> </tr> '; } $i++; } $row->toc .= '</table>'; } function createNavigation( &$row, $page, $n ) { global $Itemid; $link = 'index.php?option=com_content&task=view&id='. $row->id .'&Itemid='. $Itemid; if ( $page < $n-1 ) { $link_next = $link .'&limit=1&limitstart='. ( $page + 1 ); $link_next = sefRelToAbs( $link_next ); $next = '<a href="'. $link_next .'">' .T_('Next').' »</a>'; } else { $next = T_('Next'); } if ( $page > 0 ) { $link_prev = $link .'&limit=1&limitstart='. ( $page - 1 ); $link_prev = sefRelToAbs( $link_prev ); $prev = '<a href="'. $link_prev .'">« '. T_('Previous') .'</a>'; } else { $prev = T_('Previous'); } $row->text .= '<div>' . $prev . ' - ' . $next .'</div>'; } ?>