<?php

class Agro_Plugin_Variaveis extends Zend_Controller_Plugin_Abstract {
	
	public function preDispatch(Zend_Controller_Request_Abstract $request) {
		$Session = new Zend_Session_Namespace('variaveis');
		
		if (!$Session->defines) {
			$Variaveis = new Sistema_Model_Variaveis();
			
			foreach ($Variaveis->fetchAll() as $Variavel) {
				$v = $Variavel->ds_valor;
				
				if (strstr($v, '{')) {
					$tpl = substr($v, strpos($v, '{'), strpos($v, '}')+1);
					$def = str_replace('{', '', str_replace('}', '', $tpl));
					
					if (defined($def)) {
						$v = str_replace($tpl, constant($def), $v);
					}
				}
				
				$Session->defines[$Variavel->ds_nome] = $v;
			}
		}
		
		if (is_array($Session->defines) && count($Session->defines)) {
			foreach ($Session->defines as $constante => $valor) {
				$this->defineValue($constante, $valor);
			}
		}
	}
	
	public function defineValue($constante, $valor) {
		define(strtoupper($constante), $valor);
	}
}