about summary refs log tree commit diff stats
path: root/update/plugin/phpBB3/trunk/root/includes
Commit message (Collapse)AuthorAgeFilesLines
* Update: Continued to work on ACP for phpBB3 pluginKelly Rauchenberger2008-08-061-7/+11
| | | | | | | The module now has two working form elements, Subscription Title and Central Server (URL). They both read and write to the database. Refs #7
* Update: Started InstaDisc ACP for phpBB3 pluginKelly Rauchenberger2008-08-062-0/+83
Refs #7
n70'>70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
<?php
/*
       444444444  
      4::::::::4  
     4:::::::::4  
    4::::44::::4  
   4::::4 4::::4   Four Island
  4::::4  4::::4  
 4::::4   4::::4   Written and maintained by Starla Insigna
4::::444444::::444
4::::::::::::::::4  includes/template.php
4444444444:::::444
          4::::4   Please do not use, reproduce or steal the
          4::::4   contents of this file without explicit
          4::::4   permission from Hatkirby.
        44::::::44
        4::::::::4
        4444444444
*/

class FITemplate
{

	var $file;
	var $tags;
	var $blocks;
	var $refs;

	function FITemplate($filename)
	{
		$tfn = 'theme/' . $filename . '.tpl';
		if (file_exists($tfn))
		{
			$this->file = $tfn;
		} else {
			throw new Exception($tfn . ' does not exist');
		}
	}

	function add($name, $value)
	{
		$this->tags[$name] = $value;
	}

	function adds($tagarr)
	{
		foreach ($tagarr as $name => $value)
		{
			$this->add($name,$value);
		}
	}

	function adds_block($block, $tagarr)
	{
		if (!isset($this->blocks[$block]))
		{
			$this->blocks[$block] = array('count' => 1);
		}
		foreach ($tagarr as $name => $value)
		{
			$this->blocks[$block][$this->blocks[$block]['count']][$name] = $value;
		}
		$this->blocks[$block]['count']++;
	}

	function add_ref($id, $block, $tagarr)
	{
		$this->adds_block($block,$tagarr);
		$this->refs[$id] = &$this->blocks[$block][$this->blocks[$block]['count']-1];//'$this->blocks[\'' . $block . '\'][' . ($this->blocks[$block]['count']-1) . ']';
	}

	function adds_ref($id, $tagarr)
	{
		foreach ($tagarr as $name => $value)
		{
			$this->refs[$id][$name] = $value;
		}
	}

	function adds_ref_sub($id, $block, $tagarr)
	{
		if (!isset($this->refs[$id][$block]))
		{
			$this->refs[$id][$block] = array('count' => 1);
		}
		foreach ($tagarr as $name => $value)
		{
			$this->refs[$id][$block][$this->refs[$id][$block]['count']][$name] = $value;
		}
		$this->refs[$id][$block]['count']++;
	}

	function display()
	{
		$template = file_get_contents($this->file);
		while (preg_match('/<!--INCLUDE ([^>]*)-->/',$template) == 1)
		{
			preg_match('/<!--INCLUDE ([^>]*)-->/',$template,$mat);
			$fname = $mat[1];
			$itmp = new FITemplate($fname);
			$template = str_replace('<!--INCLUDE ' . $fname . '-->',file_get_contents($itmp->file),$template);
		}
		if (isset($this->tags))
		{
			foreach ($this->tags as $name => $value)
			{
				$template = str_replace('<!--' . $name . '-->',$value,$template);
			}
		}
		if (isset($this->blocks))
		{
			foreach ($this->blocks as $bname => $block)
			{
				$this->parseBlock($template, $bname, $block);
			}
		}
		while (preg_match('/<!--BEGIN ([^>]*)-->/',$template) == 1)
		{
			preg_match('/<!--BEGIN ([^>]*)-->/',$template,$mat);
			$bname = $mat[1];
			$start = strpos($template,'<!--BEGIN ' . $bname . '-->');
			$end = strpos($template,'<!--END ' . $bname . '-->');
			$template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),'',$template);
		}
		$template = preg_replace('/<!--([^>]*)-->/','',$template);
		echo($template);
	}

	function parseBlock(&$template, $bname, $block)
	{
		while (strpos($template,'<!--BEGIN ' . $bname . '-->') !== FALSE)
		{
			$start = strpos($template,'<!--BEGIN ' . $bname . '-->');
			$end = strpos($template,'<!--END ' . $bname . '-->');
			$gencont = substr($template,$start+strlen($bname)+13,$end-$start-strlen($bname)-13);
			$blockcont = '';
			foreach ($block as $lname => $blocktags)
			{
				if ($lname != 'count')
				{
					$scrcont = $gencont;
					foreach ($blocktags as $name => $value)
					{
						if (!is_array($value))
						{
							$scrcont = str_replace('<!--' . $bname . '.' . $name . '-->',$value,$scrcont);
						} else {
							$this->parseBlock($scrcont, $bname . '.' . $name, $value);
						}
					}
					$blockcont .= $scrcont;
				}
			}
			$template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),$blockcont,$template);
		}
	}

}

?>