<?php
/**
 * Este plugin tem por finalidade criar links para downloads de arquivos. 
 * Estes links não apontam para o arquivo que será baixado e sim para uma página que irá enviar o arquivo 
 * (útil para arquivos que estão no banco de dados). 
 * @package Smarty
 * @subpackage wf_plugins
 * @param array $params Array de parametros
 * - base_url : a URL que irá enviar o arquivo (tratar a requisição). 
 * - text : texto do link gerado 
 * - getParams : parâmetro(s) que identifica(m) o(s) download(s).
 * @param object &$smarty clever simulation of a method  
 * @return string $output link para uma página que irá enviar o arquivo 
 * @access public
 */
function smarty_function_wf_download_link($params, &$smarty)
{
	$requiredParams = array(
		'getParams');
	$defaultValues = array(
		'base_url' => $_SERVER['REQUEST_URI'],
		'text' => 'download',
		'getParams' => '');
	$extractParams = array(
		'base_url',
		'text',
		'getParams');
	
	/* verifica se todos os parâmetros obrigatórios foram passados */
	foreach ($requiredParams as $required)
		if (!array_key_exists($required, $params) || (empty($params[$required])))
			$smarty->trigger_error("[wf_download_link] missing required parameter(s): $required", E_USER_ERROR);
	
	/* atribui valores default para os parâmetros não passados */
	foreach ($defaultValues as $key => $value)
		if (!isset($params[$key]))
			$params[$key] = $value;
	
	/* extrai alguns parâmetros da matriz de parâmetros */
	foreach ($extractParams as $extract)
		$$extract = $params[$extract];
	
	/* parâmetros extras são "acumulados" em uma única matriz */
	$extraParams = array();
	foreach ($params as $key => $value)
		if (!in_array($key, $extractParams))
			$extraParams[] = $key . ' = "' . $value . '"';
	
	$base_url .= (strpos($base_url, '?') === false) ? '?' : '&';
	$getParams = '&' . $getParams;

	$output = '<a href="' . $base_url . 'download_mode=true' . $getParams . '" ' . implode(' ', $extraParams)  . '>' . $text . '</a>';
	return $output;
}
?>