Support Joomla!
Main
News
Help
Forum
Extensions
Shop
Developers
Joomla! 1.5 Documentation
Home
API reference wiki
Browse SVN repository
Packages
Select a package...
Unknown
Cache_Lite
com-tecnick-tcpdf
core
Joomla-Framework
OpenID
patError
patTemplate
PEAR
phpGACL
PHPMailer
PHP_Compat
utf8
Yadis
Package: patTemplate
Other documents
Changelog
To do
To do (2)
Element index (all)
Error log
Install
Copyright
License
Developer Network License
The Joomla! Developer Network content is © copyright 2006 by the individual contributors and can be used in accordance with the
Creative Commons License, Attribution- NonCommercial- ShareAlike 2.5
Source code for file /pattemplate/patTemplate/Reader/File.php
Documentation is available at
File.php
<?PHP
/**
* patTemplate Reader that reads from a file
*
* $Id: File.php 413 2005-08-05 13:51:01Z schst $
*
*
@package
patTemplate
*
@subpackage
Readers
*
@author
Stephan Schmidt <
[email protected]
>
*/
// Check to ensure this file is within the rest of the framework
defined
(
'JPATH_BASE'
)
or
die
(
)
;
/**
* patTemplate Reader that reads from a file
*
* $Id: File.php 413 2005-08-05 13:51:01Z schst $
*
*
@package
patTemplate
*
@subpackage
Readers
*
@author
Stephan Schmidt <
[email protected]
>
*/
class
patTemplate_Reader_File
extends
patTemplate_Reader
{
/**
* reader name
*
@access
private
*
@var
string
*/
var
$_name
=
'File'
;
/**
* flag to indicate, that current file is remote
*
*
@access
private
*
@var
boolean
*/
var
$_isRemote
=
false
;
/**
* all files, that have been opened
*
*
@access
private
*
@var
array
*/
var
$_files
=
array
(
)
;
/**
* read templates from any input
*
*
@final
*
@access
public
*
@param
string
file to parse
*
@return
array
templates
*/
function
readTemplates
(
$input
)
{
if
(
isset
(
$this
->
_rootAtts
[
'relative'
]
))
{
$relative
=
$this
->
_rootAtts
[
'relative'
]
;
}
else
{
$relative
=
false
;
}
if
(
$relative
===
false
)
{
$this
->
_currentInput
=
$input
;
}
else
{
$this
->
_currentInput
=
dirname
(
$relative
)
.
DIRECTORY_SEPARATOR
.
$input
;
}
$fullPath
=
$this
->
_resolveFullPath
(
$input
,
$relative
)
;
if
(
patErrorManager
::
isError
(
$fullPath
))
{
return
$fullPath
;
}
$content
=
$this
->
_getFileContents
(
$fullPath
)
;
if
(
patErrorManager
::
isError
(
$content
))
{
return
$content
;
}
$templates
=
$this
->
parseString
(
$content
)
;
return
$templates
;
}
/**
* load template from any input
*
* If the a template is loaded, the content will not get
* analyzed but the whole content is returned as a string.
*
*
@abstract
must be implemented in the template readers
*
@param
mixed
input to load from.
* This can be a string, a filename, a resource or whatever the derived class needs to read from
*
@return
string
template content
*/
function
loadTemplate
(
$input
)
{
if
(
isset
(
$this
->
_rootAtts
[
'relative'
]
))
{
$relative
=
$this
->
_rootAtts
[
'relative'
]
;
}
else
{
$relative
=
false
;
}
$fullPath
=
$this
->
_resolveFullPath
(
$input
,
$relative
)
;
if
(
patErrorManager
::
isError
(
$fullPath
) )
return
$fullPath
;
return
$this
->
_getFileContents
(
$fullPath
)
;
}
/**
* resolve path for a template
*
*
@access
private
*
@param
string
filename
*
@param
boolean
|
string
filename for relative path calculation
*
@return
string
full path
*/
function
_resolveFullPath
(
$filename
,
$relativeTo
=
false
)
{
if
(
preg_match
(
'/^[a-z]+:\/\//'
,
$filename
))
{
$this
->
_isRemote
=
true
;
return
$filename
;
}
else
{
$rootFolders
=
$this
->
getTemplateRoot
(
)
;
if
(
!
is_array
(
$rootFolders
))
{
$rootFolders
=
array
(
$rootFolders
)
;
}
foreach
(
$rootFolders
as
$root
)
{
if
(
$relativeTo
===
false
)
{
$baseDir
=
$root
;
}
else
{
$baseDir
=
$root
.
DIRECTORY_SEPARATOR
.
dirname
(
$relativeTo
)
;
}
$fullPath
=
$baseDir
.
DIRECTORY_SEPARATOR
.
$filename
;
if
(
file_exists
(
$fullPath
))
{
return
$fullPath
;
}
}
}
return
patErrorManager
::
raiseError
(
PATTEMPLATE_READER_ERROR_NO_INPUT
,
"
Could
not
load
templates
from
$filename
.
"
)
;
}
/**
* get the contents of a file
*
*
@access
private
*
@param
string
filename
*
@return
string
file contents
*/
function
_getFileContents
(
$file
)
{
if
(
!
$this
->
_isRemote
&&
(
!
file_exists
(
$file
)
||
!
is_readable
(
$file
)))
{
return
patErrorManager
::
raiseError
(
PATTEMPLATE_READER_ERROR_NO_INPUT
,
"
Could
not
load
templates
from
$file
.
"
)
;
}
if
(
function_exists
(
'file_get_contents'
))
{
$content
=
@
file_get_contents
(
$file
)
;
}
else
{
$content
=
implode
(
''
,
file
(
$file
))
;
}
/**
* store the file name
*/
array_push
(
$this
->
_files
,
$file
)
;
return
$content
;
}
}
?>
Documentation generated on Mon, 05 Mar 2007 20:58:35 +0000 by
phpDocumentor 1.3.1