/4.8/mambots/content/mosloadposition.php
PHP | 98 lines | 53 code | 19 blank | 26 comment | 9 complexity | ba8b79995b97b86e537737aa61ff2bd0 MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0, LGPL-2.0
- <?php
- /**
- * @package MiaCMS
- * @author MiaCMS see README.php
- * @copyright see README.php
- * See COPYRIGHT.php for copyright notices and details.
- * @license GNU/GPL Version 2, see LICENSE.php
- * MiaCMS 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.' );
- $_MAMBOTS->registerFunction( 'onPrepareContent', 'botMosLoadPosition' );
- /**
- * Mambot that loads module positions within content
- */
- function botMosLoadPosition( $published, &$row, &$cparams, $page=0, $params ) {
- global $database;
- // expression to search for
- $regex = '/{mosloadposition\s*.*?}/i';
- if (is_callable(array($row, 'getText'))) $localtext = $row->getText();
- else $localtext = $row->text;
- // find all instances of mambot and put in $matches
- preg_match_all( $regex, $localtext, $matches );
- // Number of mambots
- $count = count( $matches[0] );
- // mambot only processes if there are any instances of the mambot in the text
- if ( $count ) {
- // load mambot params info
- /*$query = "SELECT id FROM #__mambots WHERE element = 'mosloadposition' AND folder = 'content'";
- $database->setQuery( $query );
- $id = $database->loadResult();
- $mambot = new mosMambot( $database );
- $mambot->load( $id );*/
- $mambots =& mosMambotHandler::getInstance();
- $mambot = $mambots->getBot('mosloadposition','content');
- $params =& new mosParameters( (isset($mambot->params)?$mambot->params:'') );
- $style = $params->def( 'style', -2 );
- processPositions( $localtext, $matches, $count, $regex, $style );
- }
- // Save the results of processing
- if (is_callable(array($row, 'saveText'))) $row->saveText($localtext);
- else $row->text = $localtext;
- }
- function processPositions ( &$text, &$matches, $count, $regex, $style ) {
- global $database;
- $query = "SELECT position"
- . "\n FROM #__template_positions"
- . "\n ORDER BY position"
- ;
- $database->setQuery( $query );
- $positions = $database->loadResultArray();
- for ( $i=0; $i < $count; $i++ ) {
- $load = str_replace( 'mosloadposition', '', $matches[0][$i] );
- $load = str_replace( '{', '', $load );
- $load = str_replace( '}', '', $load );
- $load = trim( $load );
- foreach ( $positions as $position ) {
- if ( $position == @$load ) {
- $modules = loadPosition( $load, $style );
- $text = preg_replace( '{'. $matches[0][$i] .'}', $modules, $text );
- break;
- }
- }
- }
- // removes tags without matching module positions
- $text = preg_replace( $regex, '', $text );
- }
- function loadPosition( $position, $style=-2 ) {
- $modules = '';
- if ( mosCountModules( $position ) ) {
- ob_start();
- mosLoadModules ( $position, $style );
- $modules = ob_get_contents();
- ob_end_clean();
- }
- return $modules;
- }