1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-17 20:58:30 +01:00

e107 class & API cahnges: initial work done. Related tasks

- tests
- review of marked with DEPRECATED commment areas
- (optional) e107_include* funcs to e107_class.php
- (optional) move all 'misc' functions to core_functions.php (new file in e_HANDLER)
- 'hide' more globals from the API through e107 methods/properties
- transfrom core/plugin templates (BC) to the new template variable standards
This commit is contained in:
secretr 2009-07-22 14:32:51 +00:00
parent 1eec0f7196
commit d002d0c4c4
2 changed files with 247 additions and 12 deletions

View File

@ -9,8 +9,8 @@
* General purpose file
*
* $Source: /cvs_backup/e107_0.8/class2.php,v $
* $Revision: 1.113 $
* $Date: 2009-07-22 00:49:34 $
* $Revision: 1.114 $
* $Date: 2009-07-22 14:32:51 $
* $Author: secretr $
*
*/
@ -1823,10 +1823,11 @@ function e107_require($fname)
return $ret;
}
//DEPRECATED - use e107::getLan();
function include_lan($path, $force = false)
{
global $pref;
return e107::getLan($path, $force);
/*global $pref;
if (!is_readable($path))
{
if (varsettrue($pref['noLanguageSubs']) || (e_LANGUAGE == 'English'))
@ -1836,7 +1837,7 @@ function include_lan($path, $force = false)
$path = str_replace(e_LANGUAGE, 'English', $path);
}
$ret = ($force) ? include($path) : include_once($path);
return (isset($ret)) ? $ret : "";
return (isset($ret)) ? $ret : "";*/
}
/*
@ -1865,10 +1866,12 @@ function include_lan_admin($path)
// Note - if the code knows precisely where the language file is located, use include_lan()
// $pref['noLanguageSubs'] can be set TRUE to prevent searching for the English files if the files for the current site language don't exist.
//DEPRECATED - use e107::loadLanFiles();
function loadLanFiles($unitName, $type='runtime')
{
global $pref;
return e107::loadLanFiles($unitName, $type);
/*global $pref;
switch ($type)
{
case 'runtime' :
@ -1909,7 +1912,7 @@ function loadLanFiles($unitName, $type='runtime')
return (isset($ret)) ? $ret : "";
}
}
return FALSE; // Nothing found
return FALSE; // Nothing found*/
}
@ -2117,11 +2120,13 @@ function e107_ini_set($var, $value)
}
// Return true if specified plugin installed, false if not
//DEPRECATED - use e107::isInstalled();
function plugInstalled($plugname)
{
global $pref;
return e107::isInstalled($plugname);
/*global $pref;
// Could add more checks here later if appropriate
return isset($pref['plug_installed'][$plugname]);
return isset($pref['plug_installed'][$plugname]);*/
}

View File

@ -9,8 +9,8 @@
* e107 Main
*
* $Source: /cvs_backup/e107_0.8/e107_handlers/e107_class.php,v $
* $Revision: 1.30 $
* $Date: 2009-07-22 00:49:35 $
* $Revision: 1.31 $
* $Date: 2009-07-22 14:32:50 $
* $Author: secretr $
*/
@ -306,6 +306,21 @@ class e107
return self::getSingleton('eURL', e_HANDLER.'e107Url.php');
}
/**
* Retrieve file handler singleton or new fresh object
*
* @param boolean $singleton
* @return e_file
*/
public static function getFile($singleton = true)
{
if($singleton)
{
return self::getSingleton('e_file', e_HANDLER.'file_class.php');
}
return self::getObject('e_file', null, e_HANDLER.'file_class.php');
}
/**
* Retrieve admin log singleton object
*
@ -326,6 +341,221 @@ class e107
return self::getSingleton('convert', e_HANDLER.'date_handler.php');
}
/**
* Get core template. Use this method for templates, which are following the
* new template standards:
* - template variables naming convetnions
* - one array variable per template only
* - theme override is made now by current_theme/templates/ folder
*
* <br><br>Results are cached (depending on $id and $override so it's safe to use
* this method e.g. in loop for retrieving a template string. If template (or template key) is not
* found, <b>null</b> is returned.<br><br>
*
* Example usage: <code>e107::getCoreTemplate('user', 'short_start');</code>
* Will search for:
* - e107_themes/current_frontend_theme/templates/user_template.php (if $override is true)
* - e107_themes/templates/user_template.php (if override not found or $override is false)
* - $USER_TEMPLATE array which contains all user templates
* - $USER_TEMPLATE['short_start'] (if key is null, $USER_TEMPLATE will be returned)
*
* @param string $id
* @param string|null $key
* @param boolean $override
*
* @return string|array
*/
public static function getCoreTemplate($id, $key = null, $override = true)
{
global $pref;
$reg_path = 'core/e107/templates';
$override_path = $override ? e_THEME.$pref['sitetheme'].'/templates/'.$id.'_template.php' : null;
$default_path = e_THEME.'/templates/'.$id.'_template.php';
return e107::_getTemplate($id, $key, $reg_path, $default_path, $override_path);
}
/**
* Get plugin template. Use this method for plugin templates, which are following the
* new template standards:
* - template variables naming convetnions
* - one array variable per template only
* - theme override is made now by current_theme/templates/plugin_name/ folder
*
* <br><br>Results are cached (depending on $id and $override so it's safe to use
* this method e.g. in loop for retrieving a template string. If template (or template key) is not
* found, <b>null</b> is returned.<br><br>
*
* Example usage: <code>e107::getTemplate('user', 'short_start');</code>
* Will search for:
* - e107_themes/current_frontend_theme/templates/user_template.php (if $override is true)
* - e107_themes/templates/user_template.php (if override not found or $override is false)
* - $USER_TEMPLATE array which contains all user templates
* - $USER_TEMPLATE['short_start'] (if key is null, $USER_TEMPLATE will be returned)
*
* @param string $plug_name
* @param string $id
* @param string|null $key
* @param boolean $override
*
* @return string|array
*/
public static function getTemplate($plug_name, $id, $key = null, $override = true)
{
global $pref;
$reg_path = 'plugin/'.$plug_name.'/templates';
$override_path = $override ? e_THEME.$pref['sitetheme'].'/templates/'.$plug_name.'/'.$id.'_template.php' : null;
$default_path = e_PLUGIN.$plug_name.'/templates/'.$id.'_template.php';
return e107::_getTemplate($id, $key, $reg_path, $default_path, $override_path);
}
/**
* More abstsract template loader, used
* internal in {@link getTemplate()} and {@link getCoreTemplate()} methods
*
* @param string $id
* @param string|null $key
* @param string $reg_path
* @param string $default_path
* @param string $override_path
* @return string|array
*/
public static function _getTemplate($id, $key = null, $reg_path, $default_path, $override_path = null)
{
$regPath = $reg_path.'/'.$id.($override_path ? '/ext' : '');
$var = strtoupper($id).'_TEMPLATE';
if(!e107::getRegistry($regPath))
{
if($override_path)
{
$path = $override_path.$id.'_template.php';
if(is_readable($path))
{
include_once($path);
if(isset($$var))
{
e107::setRegistry($regPath, $$var);
}
}
}
if(!isset($$var))
{
$path = $default_path.$id.'_template.php';
e107_include_once($path);
if(isset($$var))
{
e107::setRegistry($regPath, $$var);
}
}
}
if(!$key)
{
e107::getRegistry($regPath);
}
$ret = e107::getRegistry($regPath);
return ($ret && is_array($ret) && isset($ret[$key]) ? $ret[$key] : $ret);
}
/**
* Load language file, replacement of include_lan()
*
* @param string $path
* @param boolean $force
* @return string
*/
public static function getLan($path, $force = false)
{
global $pref;
if (!is_readable($path))
{
if (varsettrue($pref['noLanguageSubs']) || (e_LANGUAGE == 'English'))
{
return FALSE;
}
$path = str_replace(e_LANGUAGE, 'English', $path);
}
$ret = ($force) ? include($path) : include_once($path);
return (isset($ret)) ? $ret : "";
}
/**
* Routine looks in standard paths for language files associated with a plugin or
* theme - primarily for core routines, which won't know for sure where the author has put them.
* $unitName is the name (directory path) of the plugin or theme
* $type determines what is to be loaded:
* - 'runtime' - the standard runtime language file for a plugin
* - 'admin' - the standard admin language file for a plugin
* - 'theme' - the standard language file for a plugin (these are usually pretty small, so one is enough)
* Otherwise, $type is treated as part of a filename within the plugin's language directory,
* prefixed with the current language.
* Returns FALSE on failure (not found).
* Returns the include_once error return if there is one
* Otherwise returns an empty string.
* Note - if the code knows precisely where the language file is located, use {@link getLan()}
* $pref['noLanguageSubs'] can be set TRUE to prevent searching for the English files if
* the files for the current site language don't exist.
*
* @param string $unitName
* @param string $type predefined types are runtime|admin|theme
* @return boolean|string
*/
public static function loadLanFiles($unitName, $type='runtime')
{
global $pref;
switch ($type)
{
case 'runtime' :
$searchPath[1] = e_PLUGIN.$unitName.'/languages/'.e_LANGUAGE.'_'.$unitName.'.php';
$searchPath[2] = e_PLUGIN.$unitName.'/languages/'.e_LANGUAGE.'/'.$unitName.'.php';
break;
case 'admin' :
$searchPath[1] = e_PLUGIN.$unitName.'/languages/'.e_LANGUAGE.'_admin_'.$unitName.'.php';
$searchPath[2] = e_PLUGIN.$unitName.'/languages/'.e_LANGUAGE.'/'.'admin_'.$unitName.'.php';
break;
case 'theme' :
$searchPath[1] = e_THEME.$unitName.'/languages/'.e_LANGUAGE.'_'.$unitName.'.php';
$searchPath[2] = e_THEME.$unitName.'/languages/'.e_LANGUAGE.'/'.$unitName.'.php';
break;
default :
$searchPath[1] = e_PLUGIN.$unitName.'/languages/'.e_LANGUAGE.'_'.$type.'.php';
$searchPath[2] = e_PLUGIN.$unitName.'/languages/'.e_LANGUAGE.'/'.$type.'.php';
}
foreach ($searchPath as $s) // Look for files in current language first - should usually be found
{
if (is_readable($s))
{
$ret = include_once($s);
return (isset($ret)) ? $ret : "";
}
}
if (varsettrue($pref['noLanguageSubs']) || (e_LANGUAGE == 'English'))
{
return FALSE; // No point looking for the English files twice
}
foreach ($searchPath as $s) // Now look for the English files
{
$s = str_replace(e_LANGUAGE, 'English', $s);
if (is_readable($s))
{
$ret = include_once($s);
return (isset($ret)) ? $ret : "";
}
}
return FALSE; // Nothing found
}
public static function isInstalled($plugname)
{
global $pref;
// Could add more checks here later if appropriate
return isset($pref['plug_installed'][$plugname]);
}
/**
* @return e107
*/