<?php
/**
* SeekQuarry/Yioop --
* Open Source Pure PHP Search Engine, Crawler, and Indexer
*
* Copyright (C) 2009 - 2015 Chris Pollett chris@pollett.org
*
* LICENSE:
*
* This program 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, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* END LICENSE
*
* @author Chris Pollett chris@pollett.org
* @license http://www.gnu.org/licenses/ GPL3
* @link http://www.seekquarry.com/
* @copyright 2009 - 2015
* @filesource
*/
if(!defined('BASE_DIR')) {echo "BAD REQUEST"; exit();}
if(php_sapi_name() != 'cli') {
$locale_version = tl('view_locale_version11');
}
//base class for Element's needed for this View
require_once BASE_DIR."/views/elements/element.php";
//base class for Helper's needed for this View
require_once BASE_DIR."/views/helpers/helper.php";
//base class for Layout on which the View will be drawn
require_once BASE_DIR."/views/layouts/layout.php";
/**
* Base View Class. A View is used to display
* the output of controller activity
*
* @author Chris Pollett
* @package seek_quarry\view
*/
abstract class View
{
/** The name of the type of layout object that the view is drawn on
* @var string
*/
var $layout = "";
/** The reference to the layout object that the view is drawn on
* @var object
*/
var $layout_object;
/**
* Logo image text name
* @var string
*/
var $logo_alt_text;
/**
* The constructor reads in any Element and Helper subclasses which are
* needed to draw the view. It also reads in the Layout subclass on which
* the View will be drawn.
*
*/
function __construct()
{
$layout_name = ucfirst($this->layout)."Layout";
if($this->layout != "") {
if(file_exists(
APP_DIR."/views/layouts/".$this->layout."_layout.php")) {
require_once
APP_DIR."/views/layouts/".$this->layout."_layout.php";
} else {
require_once
BASE_DIR."/views/layouts/".$this->layout."_layout.php";
}
}
$this->logo_alt_text = tl('view_logo_alt_text');
$this->layout_object = new $layout_name($this);
}
/**
* Dynamic loader for Element objects which might live on the current
* View
*
* @param string $element name of Element to return
*/
function element($element)
{
if(!isset($this->element_instances[$element])) {
if(file_exists(APP_DIR."/views/elements/".$element."_element.php")){
require_once APP_DIR."/views/elements/".$element."_element.php";
} else {
require_once BASE_DIR.
"/views/elements/".$element."_element.php";
}
$element_name = ucfirst($element)."Element";
$this->element_instances[$element] = new $element_name($this);
}
return $this->element_instances[$element];
}
/**
* Dynamic loader for Helper objects which might live on the current
* View
*
* @param string $helper name of Helper to return
*/
function helper($helper)
{
if(!isset($this->helper_instances[$helper])) {
if(file_exists(APP_DIR."/views/helpers/".$helper."_helper.php")){
require_once APP_DIR."/views/helpers/".$helper."_helper.php";
} else {
require_once BASE_DIR."/views/helpers/".$helper."_helper.php";
}
$helper_name = ucfirst($helper)."Helper";
$this->helper_instances[$helper] = new $helper_name();
}
return $this->helper_instances[$helper];
}
/**
* This method is responsible for drawing both the layout and the view. It
* should not be modified to change the display of then view. Instead,
* implement renderView.
*
* @param array $data an array of values set up by a controller to be used
* in rendering the view
*/
function render($data) {
$this->layout_object->render($data);
}
/**
* This abstract method is implemented in sub classes with code which
* actually draws the view. The current layouts render method calls this
* function.
*
* @param array $data an array of values set up by a controller to be used
* in rendering the view
*/
abstract function renderView($data);
}
?>