all-in-one-event-calendar/lib/theme/file/php.php
2017-11-09 17:36:04 +01:00

94 lines
2.8 KiB
PHP

<?php
/**
* Handle finding and parsing a PHP file.
*
* @author Time.ly Network Inc.
* @since 2.0
* @instantiator new
* @package AI1EC
* @subpackage AI1EC.Theme.File
*/
class Ai1ec_File_Php extends Ai1ec_File_Abstract {
/**
* @var string filename with the variables
*/
const USER_VARIABLES_FILE = 'user_variables';
/**
* @var array the arguments used by the PHP template.
*/
private $_args;
/**
* Initialize class specific variables.
*
* @parma Ai1ec_Registry_Object $registry
* @param string $name
* @param array $paths
* @param array $args
*/
public function __construct(
Ai1ec_Registry_Object $registry,
$name,
array $paths,
array $args
) {
parent::__construct( $registry, $name, $paths );
$this->_args = $args;
}
/* (non-PHPdoc)
* @see Ai1ec_File_Abstract::locate_file()
*/
public function process_file() {
// if the file was already processed just return.
if ( isset( $this->_content ) ) {
return true;
}
$files_to_check = array();
foreach ( array_values( $this->_paths ) as $path ) {
$files_to_check[] = $path . $this->_name;
}
foreach ( $files_to_check as $file ) {
if ( is_file( $file ) ) {
// Check if file is custom LESS variable definitions.
$user_variables_pattern = Ai1ec_File_Less::THEME_LESS_FOLDER .
'/' . self::USER_VARIABLES_FILE;
if ( strpos( $this->_name, $user_variables_pattern ) === 0 ) {
// It's a user variables file. We must handle the fact that it might
// be legacy.
if ( true === $this->_args['is_legacy_theme'] ) {
$content = ( require $file );
if ( isset( $less_user_variables ) ) {
$content = $less_user_variables;
}
$this->_content = $content;
} else {
$this->_content = require $file;
}
} else {
$this->_registry->get( 'compatibility.ob' )->start();
extract( $this->_args );
require $file;
$this->_content = $this->_registry
->get( 'compatibility.ob' )->get_clean();
}
return true;
}
}
return false;
}
/**
* Legacy function to keep conpatibility with 1.x themes.
*
* @param string $file
*/
public function get_theme_img_url( $file ) {
return $this->_registry->get( 'theme.loader' )
->get_file( $file, array(), false )->get_url();
}
}