array('osCommerce, Open Source E-Commerce Solutions'));
/**
* Holds javascript filenames to be included in the page
*
* The javascript files must be plain javascript files without any PHP logic, and are linked to from the page
*
* @var array
* @access private
*/
var $_javascript_filenames = array('includes/general.js');
/**
* Holds javascript PHP filenames to be included in the page
*
* The javascript PHP filenames can consist of PHP logic to produce valid javascript syntax, and is embedded in the page
*
* @var array
* @access private
*/
var $_javascript_php_filenames = array();
/**
* Holds blocks of javascript syntax to embedd into the page
*
* Each block must contain its relevant tags
*
* @var array
* @access private
*/
var $_javascript_blocks = array();
/**
* Defines if the requested page has a header
*
* @var boolean
* @access private
*/
var $_has_header = true;
/**
* Defines if the requested page has a footer
*
* @var boolean
* @access private
*/
var $_has_footer = true;
/**
* Defines if the requested page has box modules
*
* @var boolean
* @access private
*/
var $_has_box_modules = true;
/**
* Defines if the requested page has content modules
*
* @var boolean
* @access private
*/
var $_has_content_modules = true;
/**
* Defines if the requested page should display any debug messages
*
* @var boolean
* @access private
*/
var $_show_debug_messages = true;
/**
* Setup the template class with the requested page module
*
* @param string $module The default page module to setup
* @return object
*/
function &setup($module) {
$group = basename($_SERVER['SCRIPT_FILENAME']);
if (($pos = strrpos($group, '.')) !== false) {
$group = substr($group, 0, $pos);
}
if (empty($_GET) === false) {
$first_array = array_slice($_GET, 0, 1);
$_module = osc_sanitize_string(basename(key($first_array)));
if (file_exists('includes/content/' . $group . '/' . $_module . '.php')) {
$module = $_module;
}
}
include('includes/content/' . $group . '/' . $module . '.php');
$_page_module_name = 'osC_' . ucfirst($group) . '_' . ucfirst($module);
$object = new $_page_module_name();
if ( isset($_GET['action']) && !empty($_GET['action']) ) {
include('includes/classes/actions.php');
osC_Actions::parse($_GET['action']);
}
return $object;
}
/**
* Returns the template ID
*
* @access public
* @return int
*/
function getID() {
if (isset($this->_template) === false) {
$this->set();
}
return $this->_template_id;
}
/**
* Returns the template name
*
* @access public
* @return string
*/
function getCode($id = null) {
if (isset($this->_template) === false) {
$this->set();
}
if (is_numeric($id)) {
foreach ($this->getTemplates() as $template) {
if ($template['id'] == $id) {
return $template['code'];
}
}
} else {
return $this->_template;
}
}
/**
* Returns the page module name
*
* @access public
* @return string
*/
function getModule() {
return $this->_module;
}
/**
* Returns the page group name
*
* @access public
* @return string
*/
function getGroup() {
return $this->_group;
}
/**
* Returns the title of the page
*
* @access public
* @return string
*/
function getPageTitle() {
return $this->_page_title;
}
/**
* Returns the tags of the page separated by a comma
*
* @access public
* @return string
*/
function getPageTags() {
$tag_string = '';
foreach ($this->_page_tags as $key => $values) {
$tag_string .= '' . "\n";
}
return $tag_string . "\n";
}
/**
* Return the box modules assigned to the page
*
* @param string $group The group name of box modules to include that the template has provided
* @return array
*/
function getBoxModules($group) {
if (isset($this->osC_Modules_Boxes) === false) {
$this->osC_Modules_Boxes = new osC_Modules('boxes');
}
return $this->osC_Modules_Boxes->getGroup($group);
}
/**
* Return the content modules assigned to the page
*
* @param string $group The group name of content modules to include that the template has provided
* @return array
*/
function getContentModules($group) {
if (isset($this->osC_Modules_Content) === false) {
$this->osC_Modules_Content = new osC_Modules('content');
}
return $this->osC_Modules_Content->getGroup($group);
}
/**
* Returns the image of the page
*
* @access public
* @return string
*/
function getPageImage() {
return $this->_page_image;
}
/**
* Returns the content filename of the page
*
* @access public
* @return string
*/
function getPageContentsFilename() {
return $this->_page_contents;
}
/**
* Returns the javascript to link from or embedd to on the page
*
* @access public
* @return string
*/
function getJavascript() {
if (!empty($this->_javascript_filenames)) {
echo $this->_getJavascriptFilenames();
}
if (!empty($this->_javascript_php_filenames)) {
$this->_getJavascriptPhpFilenames();
}
if (!empty($this->_javascript_blocks)) {
echo $this->_getJavascriptBlocks();
}
}
/**
* Return all templates in an array
*
* @access public
* @return array
*/
function &getTemplates() {
global $osC_Database;
$templates = array();
$Qtemplates = $osC_Database->query('select id, code, title from :table_templates');
$Qtemplates->bindTable(':table_templates', TABLE_TEMPLATES);
$Qtemplates->setCache('templates');
$Qtemplates->execute();
while ($Qtemplates->next()) {
$templates[] = $Qtemplates->toArray();
}
$Qtemplates->freeResult();
return $templates;
}
/**
* Checks to see if the page has a title set
*
* @access public
* @return boolean
*/
function hasPageTitle() {
return !empty($this->_page_title);
}
/**
* Checks to see if the page has a meta tag set
*
* @access public
* @return boolean
*/
function hasPageTags() {
return !empty($this->_page_tags);
}
/**
* Checks to see if the page has javascript to link to or embedd from
*
* @access public
* @return boolean
*/
function hasJavascript() {
return (!empty($this->_javascript_filenames) || !empty($this->_javascript_php_filenames) || !empty($this->_javascript_blocks));
}
/**
* Checks to see if the page has a footer defined
*
* @access public
* @return boolean
*/
function hasPageFooter() {
return $this->_has_footer;
}
/**
* Checks to see if the page has a header defined
*
* @access public
* @return boolean
*/
function hasPageHeader() {
return $this->_has_header;
}
/**
* Checks to see if the page has content modules defined
*
* @access public
* @return boolean
*/
function hasPageContentModules() {
return $this->_has_content_modules;
}
/**
* Checks to see if the page has box modules defined
*
* @access public
* @return boolean
*/
function hasPageBoxModules() {
return $this->_has_box_modules;
}
/**
* Checks to see if the page show display debug messages
*
* @access public
* @return boolean
*/
function showDebugMessages() {
return $this->_show_debug_messages;
}
/**
* Sets the template to use
*
* @param string $code The code of the template to use
* @access public
*/
function set($code = null) {
if ( (isset($_SESSION['template']) === false) || !empty($code) || (isset($_GET['template']) && !empty($_GET['template'])) ) {
if ( !empty( $code ) ) {
$set_template = $code;
} else {
$set_template = (isset($_GET['template']) && !empty($_GET['template'])) ? $_GET['template'] : DEFAULT_TEMPLATE;
}
$data = array();
$data_default = array();
foreach ($this->getTemplates() as $template) {
if ($template['code'] == DEFAULT_TEMPLATE) {
$data_default = array('id' => $template['id'], 'code' => $template['code']);
} elseif ($template['code'] == $set_template) {
$data = array('id' => $template['id'], 'code' => $template['code']);
}
}
if (empty($data)) {
$data =& $data_default;
}
$_SESSION['template'] =& $data;
}
$this->_template_id =& $_SESSION['template']['id'];
$this->_template =& $_SESSION['template']['code'];
}
/**
* Sets the title of the page
*
* @param string $title The title of the page to set to
* @access public
*/
function setPageTitle($title) {
$this->_page_title = $title;
}
/**
* Sets the image of the page
*
* @param string $image The image of the page to set to
* @access public
*/
function setPageImage($image) {
$this->_page_image = $image;
}
/**
* Sets the content of the page
*
* @param string $filename The content filename to include on the page
* @access public
*/
function setPageContentsFilename($filename) {
$this->_page_contents = $filename;
}
/**
* Adds a tag to the meta keywords array
*
* @param string $key The keyword for the meta tag
* @param string $value The value for the meta tag using the key
* @access public
*/
function addPageTags($key, $value) {
$this->_page_tags[$key][] = $value;
}
/**
* Adds a javascript file to link to
*
* @param string $filename The javascript filename to link to
* @access public
*/
function addJavascriptFilename($filename) {
$this->_javascript_filenames[] = $filename;
}
/**
* Adds a PHP based javascript file to embedd on the page
*
* @param string $filename The PHP based javascript filename to embedd
* @access public
*/
function addJavascriptPhpFilename($filename) {
$this->_javascript_php_filenames[] = $filename;
}
/**
* Adds javascript logic to the page
*
* @param string $javascript The javascript block to add on the page
* @access public
*/
function addJavascriptBlock($javascript) {
$this->_javascript_blocks[] = $javascript;
}
/**
* Returns the javascript filenames to link to on the page
*
* @access private
* @return string
*/
function _getJavascriptFilenames() {
$js_files = '';
foreach ($this->_javascript_filenames as $filenames) {
$js_files .= '' . "\n";
}
return $js_files;
}
/**
* Returns the PHP javascript files to embedd on the page
*
* @access private
*/
function _getJavascriptPhpFilenames() {
foreach ($this->_javascript_php_filenames as $filenames) {
include($filenames);
}
}
/**
* Returns javascript blocks to add to the page
*
* @access private
* @return string
*/
function _getJavascriptBlocks() {
return implode("\n", $this->_javascript_blocks);
}
}
?>