This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
lnapp/classes/lnApp/HTMLRender.php

123 lines
2.6 KiB
PHP

<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class is the base used for common static methods that are used
* for rendering.
*
* @package lnApp
* @category Helpers
* @author Deon George
* @copyright (c) 2009-2013 Deon George
* @license http://dev.leenooks.net/license.html
*/
abstract class lnApp_HTMLRender {
protected $_unique_vals = array();
protected $_x = 0;
abstract protected function render();
public function __call($name,$args=NULL) {
if (! in_array($name,$this->_items))
throw new Kohana_Exception('Unknown call to :name',array(':name'=>$name));
$c = $this->_x;
if (! $args)
return static::$_data[$c][$name];
// Strip out unique values
if (in_array($name,$this->_unique_vals))
foreach ($args as $u)
foreach (static::$_data as $d)
if (isset($d[$name]) AND $d[$name] == $u) {
unset(static::$_data[$c]);
return $this;
}
static::$_data[$c][$name] = array_pop($args);
return $this;
}
public function __construct() {
$this->_x = ++static::$_c;
}
/**
* Return the HTML to render the header images
*/
public function __toString() {
if (! static::$_data)
return '';
if (empty(static::$_data[$this->_x]))
$this->record();
try {
return $this->render();
// Display the exception message
} catch (Exception $e) {
return $e->getMessage();
}
}
public static function factory() {
$x = get_called_class();
return new $x;
}
public function record($x=NULL) {
$this->_x = (is_null($x) OR empty(static::$_data[$x])) ? max(array_keys(static::$_data)) : $x;
return $this;
}
/**
* Render all of these items
*/
public function render_all() {
$output = '';
for ($x=0; $x<=static::$_c; $x++)
if (isset(static::$_data[$x])) {
$output .= (string)$this->record($x);
unset(static::$_data[$x]);
}
return $output;
}
/**
* Set the space used between rendering output
*/
public static function spacer($spacer) {
static::$_spacer = $spacer;
}
/**
* Add an item to be rendered
*
* @param array Item to be added
* @deprecated
*/
public static function add($item) {
static::$_c = count(static::$_data);
foreach (static::$_required_keys as $key)
if (! isset($item[$key]))
throw new Kohana_Exception('Missing key :key for image',array(':key'=>$key));
// Check for unique keys
if (isset(static::$_unique_vals) AND static::$_unique_vals)
foreach (static::$_unique_vals as $v=>$u)
foreach (static::$_data as $d)
if (isset($d[$u]) && $d['data'] == $item['data'])
return;
static::$_data[++static::$_c] = $item;
}
}
?>